<?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>120439</bug_id>
          
          <creation_ts>2013-08-28 15:08:46 -0700</creation_ts>
          <short_desc>[CSS Shapes] Revise the ShapeInterval set operations&apos; implementation</short_desc>
          <delta_ts>2013-09-04 08:42:29 -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>CSS</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>120211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922208</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-28 15:08:46 -0700</bug_when>
    <thetext>The ShapeInterval set operation implementations aren&apos;t as efficient or straightforward as they could be. In many cases they needlessly allocate temporary Vector storage, and the implementations are a bit clumsy when it comes to Vector operations. For example the unitVector() method could be simplified as follows:

    static void uniteVectors(const ShapeIntervalVector&amp; a, const ShapeIntervalVector&amp; b, ShapeIntervalVector&amp; result)
    {
        if (a.isEmpty()) {
            result.append(b);
            return;
        }

        if (b.isEmpty()) {
            result.append(a);
            return;
        }

        const_iterator aNext = a.begin();
        const_iterator bNext = b.begin();

        while(aNext != a.end() || bNext != b.end()) {
            const_iterator next = (bNext == b.end() || (aNext != a.end() &amp;&amp; *aNext &lt; *bNext)) ? aNext++ : bNext++;
            if (result.empty() || !result.last().overlaps(*next))
                result.append(*next);
            else 
                result.last().set(result.last().x1(), std::max&lt;T&gt;(result.last().x2(), next-&gt;x2()));
        }
    }

All of the ShapeInterval set operations assume that their input parameters are sorted vectors of disjoint intervals. Currently this important invariant isn&apos;t checked; but it should be.  For example:

template &lt;typename T&gt;
class ShapeInterval { 
public:
...
#ifndef NDEBUG
    static bool isValidVector(const IntervalVector&amp; v)
    {
        for(int i = 1; i &lt; v.size(); i++)
            if (v[i - 1].x2() &gt; v[i].x1())
                return false;
        return true;
    }
#endif

...

    static void uniteVectors(const ShapeIntervalVector&amp; a, const ShapeIntervalVector&amp; b, ShapeIntervalVector&amp; result)
    {
        ASSERT(isValidVector(a) &amp;&amp; isValidVector(b));
        ...
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923213</commentid>
    <comment_count>1</comment_count>
      <attachid>210168</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-30 15:25:11 -0700</bug_when>
    <thetext>Created attachment 210168
Patch

Revised the ShapeIntervals unite, intersect, and subtract operations to improve efficiency and clarity.

No new tests are required, this is just an internal refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923227</commentid>
    <comment_count>2</comment_count>
      <attachid>210172</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-30 16:04:44 -0700</bug_when>
    <thetext>Created attachment 210172
Patch

Renamed the ShapeIntervals fooVectors() methods to fooShapeIntervals().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924115</commentid>
    <comment_count>3</comment_count>
      <attachid>210172</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-09-03 11:30:19 -0700</bug_when>
    <thetext>Comment on attachment 210172
Patch

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

I would like to remove the operator&lt; and operator &gt; from the float intervals. I know you use it for sorting, but for that case I would rather have a separate comparator. The comparator is confusing as it could be interpreted as comparing left, right, both or just the length.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:90
&gt;      {

I think we should assert that the two intervals are already sorted.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:129
&gt; +            if (working-&gt;overlaps(*next)) {

This only works if the intervals in both vectors are not self-overlapping. I think we need to enforce that with an assert. Also, assert that the two are sorted.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:138
&gt; +    static void subtractShapeIntervals(const ShapeIntervals&amp; a, const ShapeIntervals&amp; b, ShapeIntervals&amp; result)

Assert the expectations of the function (ie. intervals are sorted and not overlapping)

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:165
&gt; +                if (aValue &lt; bValue) {

I don&apos;t like using the operator &lt; here. I think the actual members instead of the operator &quot;&lt;&quot; would be less confusing. In this case it can be interpreted two ways: a) aValue.x2 &lt; bValue.x1 or b) aValue.x1  &lt; bValue.x1.

You&apos;ve used this pattern in multiple place, please update all of them and remove the operators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924150</commentid>
    <comment_count>4</comment_count>
      <attachid>210401</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-03 12:25:56 -0700</bug_when>
    <thetext>Created attachment 210401
Patch

Made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924155</commentid>
    <comment_count>5</comment_count>
      <attachid>210402</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-03 12:35:08 -0700</bug_when>
    <thetext>Created attachment 210402
Patch

Resync</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924159</commentid>
    <comment_count>6</comment_count>
      <attachid>210403</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-03 12:43:13 -0700</bug_when>
    <thetext>Created attachment 210403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924215</commentid>
    <comment_count>7</comment_count>
      <attachid>210403</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-09-03 16:57:27 -0700</bug_when>
    <thetext>Comment on attachment 210403
Patch

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924216</commentid>
    <comment_count>8</comment_count>
      <attachid>210403</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-09-03 17:00:57 -0700</bug_when>
    <thetext>Comment on attachment 210403
Patch

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

&gt; Source/WebCore/rendering/shapes/PolygonShape.cpp:324
&gt; +        if (thisInterval.overlaps(previousInterval)) {

nit: You can rewrite this with the ++i first to make it easier to read:
if (!thisInterval.overlaps(previousInterval)) {
    ++i;
    continue;
}
previousInterval.setX2(std::max&lt;float&gt;(previousInterval.x2(), thisInterval.x2()));
intervals.remove(i);

&gt; Source/WebCore/rendering/shapes/PolygonShape.cpp:326
&gt; +            intervals.remove(i);

nit: Depending on our use-cases, this call might end up making lots of copies. Might be useful to rewrite this to do only one truncation at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924445</commentid>
    <comment_count>9</comment_count>
      <attachid>210403</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-04 08:42:27 -0700</bug_when>
    <thetext>Comment on attachment 210403
Patch

Clearing flags on attachment: 210403

Committed r155043: &lt;http://trac.webkit.org/changeset/155043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924446</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-04 08:42:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210168</attachid>
            <date>2013-08-30 15:25:11 -0700</date>
            <delta_ts>2013-08-30 16:04:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>10276</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmViNTI4Li5jMjQ3NTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDgtMzAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFJldmlzZSB0aGUgU2hhcGVJbnRlcnZhbCBzZXQgb3BlcmF0aW9ucycg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJldmlzZWQgdGhlIFNoYXBlSW50ZXJ2YWxzIHVuaXRlLCBpbnRlcnNlY3QsIGFuZCBz
dWJ0cmFjdCBvcGVyYXRpb25zIHRvCisgICAgICAgIGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgY2xh
cml0eS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIHJlcXVpcmVkLCB0aGlzIGlzIGp1c3Qg
YW4gaW50ZXJuYWwgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlT3ZlcmxhcHBpbmdFZGdl
WFByb2plY3Rpb25zKTogUmVtb3ZlZCBjYWxsIHRvIFNoYXBlSW50ZXJ2YWw8VD5zb3J0VmVjdG9y
KCksIHNpbmNlIGNhbGxpbmcgc3RkOjpzb3J0IGRpcmVjdGx5IGlzIHNpbXBsZXIuCisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZUludGVydmFsOjpjb250YWlucyk6IFRydWUgaWYgdGhlIGludGVydmFsIHBhcmFtZXRlciBp
cyB3aXRoaW4gdGhpcyBpbnRlcnZhbC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6
OmludGVyc2VjdCk6IFN1YnN0YW50aWFsbHkgcmV2aXNlZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5h
bCBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdFZlY3Rv
cnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0VmVj
dG9ycyk6IERpdHRvLgorCiAyMDEzLTA4LTMwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQnJlYWtwb2ludHMgc2hvdWxkIGhh
dmUgQXV0b21hdGljYWxseSBDb250aW51ZSBPcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAppbmRleCA2ZDMwZmNhLi4xMDJiMDBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3Bw
CkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQ
cm9qZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2EKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoRmxvYXRTaGFwZUludGVydmFsKHgxLCB4MikpOwogICAgIH0KIAotICAg
IEZsb2F0U2hhcGVJbnRlcnZhbDo6c29ydFZlY3RvcihyZXN1bHQpOworICAgIHN0ZDo6c29ydChy
ZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKIH0KIAogdm9pZCBQb2x5Z29uU2hhcGU6Omdl
dEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCA0MjBhMmQ2Li5iMzlmNmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwu
aApAQCAtNzEsMTI4ICs3MSwxMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4geDIoKSA+PSBp
bnRlcnZhbC54MSgpICYmIHgxKCkgPD0gaW50ZXJ2YWwueDIoKTsKICAgICB9CiAKLSAgICBib29s
IGludGVyc2VjdChjb25zdCBTaGFwZUludGVydmFsPFQ+JiBpLCBTaGFwZUludGVydmFsPFQ+JiBy
dikgY29uc3QKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVy
dmFsKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKHgyKCkgPCBpLngxKCkgfHwgeDEoKSA+IGku
eDIoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcnYuc2V0KHN0ZDo6bWF4
KHgxKCksIGkueDEoKSksIHN0ZDo6bWluKHgyKCksIGkueDIoKSkpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIHgxKCkgPD0gaW50ZXJ2YWwueDEoKSAmJiB4MigpID49IGlu
dGVydmFsLngyKCk7CisgICAgfQorCisgICAgU2hhcGVJbnRlcnZhbDxUPiBpbnRlcnNlY3QoY29u
c3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQob3ZlcmxhcHMoaW50ZXJ2YWwpKTsKKyAgICAgICAgcmV0dXJuIFNoYXBlSW50ZXJ2YWw8VD4o
c3RkOjptYXg8VD4oeDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWluPFQ+KHgyKCksIGludGVy
dmFsLngyKCkpKTsKICAgICB9CiAKICAgICB0eXBlZGVmIFZlY3RvcjxTaGFwZUludGVydmFsPFQ+
ID4gU2hhcGVJbnRlcnZhbHM7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTaGFwZUludGVydmFsczo6
Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTaGFw
ZUludGVydmFsczo6aXRlcmF0b3IgaXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgdm9pZCBzb3J0VmVj
dG9yKFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMpCisgICAgc3RhdGljIHZvaWQgdW5pdGVWZWN0
b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBhLCBjb25zdCBTaGFwZUludGVydmFscyYgYiwgU2hh
cGVJbnRlcnZhbHMmIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHN0ZDo6c29ydChpbnRlcnZhbHMu
YmVnaW4oKSwgaW50ZXJ2YWxzLmVuZCgpKTsKLSAgICB9CisgICAgICAgIGlmIChhLmlzRW1wdHko
KSB8fCBhID09IGIpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRSYW5nZShiLmJlZ2luKCks
IGIuZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCB1bml0ZVZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYxLCBjb25zdCBTaGFwZUlu
dGVydmFscyYgdjIsIFNoYXBlSW50ZXJ2YWxzJiBydikKLSAgICB7Ci0gICAgICAgIGlmICghdjEu
c2l6ZSgpKQotICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjIuYmVnaW4oKSwgdjIuZW5kKCkp
OwotICAgICAgICBlbHNlIGlmICghdjIuc2l6ZSgpKQotICAgICAgICAgICAgcnYuYXBwZW5kUmFu
Z2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNo
YXBlSW50ZXJ2YWxzIHYodjEuc2l6ZSgpICsgdjIuc2l6ZSgpKTsKLSAgICAgICAgICAgIFNoYXBl
SW50ZXJ2YWw8VD4qIGludGVydmFsID0gMDsKLQotICAgICAgICAgICAgc3RkOjptZXJnZSh2MS5i
ZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVnaW4oKSk7Ci0KLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykgewotICAgICAg
ICAgICAgICAgIGlmICghaW50ZXJ2YWwpCi0gICAgICAgICAgICAgICAgICAgIGludGVydmFsID0g
JnZbaV07Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAodltpXS54MSgpID49IGludGVydmFsLT54
MSgpICYmIHZbaV0ueDEoKSA8PSBpbnRlcnZhbC0+eDIoKSkgLy8gRklYTUU6IDFzdCA8PSB0ZXN0
IG5vdCBuZWVkZWQ/Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsLT5zZXQoaW50ZXJ2YWwt
PngxKCksIHN0ZDo6bWF4PFQ+KGludGVydmFsLT54MigpLCB2W2ldLngyKCkpKTsKLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7
Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQorICAgICAgICBpZiAoYi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRSYW5nZShhLmJlZ2luKCksIGEuZW5kKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChpbnRlcnZhbCkKLSAgICAgICAgICAg
ICAgICBydi5hcHBlbmQoKmludGVydmFsKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgY29uc3Rf
aXRlcmF0b3IgYU5leHQgPSBhLmJlZ2luKCk7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJOZXh0
ID0gYi5iZWdpbigpOworCisgICAgICAgIHdoaWxlIChhTmV4dCAhPSBhLmVuZCgpIHx8IGJOZXh0
ICE9IGIuZW5kKCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIG5leHQgPSAoYk5leHQg
PT0gYi5lbmQoKSB8fCAoYU5leHQgIT0gYS5lbmQoKSAmJiAqYU5leHQgPCAqYk5leHQpKSA/IGFO
ZXh0KysgOiBiTmV4dCsrOworICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0VtcHR5KCkgfHwgIXJl
c3VsdC5sYXN0KCkub3ZlcmxhcHMoKm5leHQpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoKm5leHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0
KCkuc2V0WDIoc3RkOjptYXg8VD4ocmVzdWx0Lmxhc3QoKS54MigpLCBuZXh0LT54MigpKSk7Cisg
ICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBpbnRlcnNlY3RWZWN0b3JzKGNvbnN0
IFNoYXBlSW50ZXJ2YWxzJiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYyLCBTaGFwZUludGVy
dmFscyYgcnYpCisgICAgc3RhdGljIHZvaWQgaW50ZXJzZWN0VmVjdG9ycyhjb25zdCBTaGFwZUlu
dGVydmFscyYgYSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIGIsIFNoYXBlSW50ZXJ2YWxzJiByZXN1
bHQpCiAgICAgewotICAgICAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOwotICAgICAgICBz
aXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOwotCi0gICAgICAgIGlmICghdjFTaXplIHx8ICF2MlNp
emUpCisgICAgICAgIGlmIChhLmlzRW1wdHkoKSB8fCBiLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBTaGFwZUludGVydmFsPFQ+IGludGVydmFsOwotICAgICAgICBi
b29sIG92ZXJsYXAgPSBmYWxzZTsKLSAgICAgICAgc2l6ZV90IGkxID0gMDsKLSAgICAgICAgc2l6
ZV90IGkyID0gMDsKLQotICAgICAgICB3aGlsZSAoaTEgPCB2MVNpemUgJiYgaTIgPCB2MlNpemUp
IHsKLSAgICAgICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4gdjEyOwotICAgICAgICAgICAgaWYgKHYx
W2kxXS5pbnRlcnNlY3QodjJbaTJdLCB2MTIpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFvdmVy
bGFwIHx8ICF2MTIuaW50ZXJzZWN0KGludGVydmFsLCBpbnRlcnZhbCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG92ZXJsYXApCi0gICAgICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQo
aW50ZXJ2YWwpOwotICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IHYxMjsKLSAgICAgICAg
ICAgICAgICAgICAgb3ZlcmxhcCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmICh2MVtpMV0ueDIoKSA8IHYyW2kyXS54MigpKQotICAgICAgICAgICAgICAgICAg
ICBpMSsrOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaTIrKzsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXApCi0gICAg
ICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgb3Zl
cmxhcCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmICh2MVtpMV0ueDEoKSA8IHYyW2kyXS54
MSgpKQotICAgICAgICAgICAgICAgICAgICBpMSsrOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgaTIrKzsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGEgPT0g
YikgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKGEuYmVnaW4oKSwgYS5lbmQoKSk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAob3ZlcmxhcCkK
LSAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGFOZXh0ID0gYS5iZWdpbigpOworICAgICAgICBjb25zdF9pdGVyYXRvciBiTmV4dCA9IGIuYmVn
aW4oKTsKKyAgICAgICAgY29uc3RfaXRlcmF0b3Igd29ya2luZyA9ICphTmV4dCA8ICpiTmV4dCA/
IGFOZXh0KysgOiBiTmV4dCsrOworCisgICAgICAgIHdoaWxlIChhTmV4dCAhPSBhLmVuZCgpIHx8
IGJOZXh0ICE9IGIuZW5kKCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIG5leHQgPSAo
Yk5leHQgPT0gYi5lbmQoKSB8fCAoYU5leHQgIT0gYS5lbmQoKSAmJiAqYU5leHQgPCAqYk5leHQp
KSA/IGFOZXh0KysgOiBiTmV4dCsrOworICAgICAgICAgICAgaWYgKHdvcmtpbmctPm92ZXJsYXBz
KCpuZXh0KSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQod29ya2luZy0+aW50ZXJz
ZWN0KCpuZXh0KSk7CisgICAgICAgICAgICAgICAgaWYgKG5leHQtPngyKCkgPiB3b3JraW5nLT54
MigpKQorICAgICAgICAgICAgICAgICAgICB3b3JraW5nID0gbmV4dDsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIHdvcmtpbmcgPSBuZXh0OworICAgICAgICB9CiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgc3VidHJhY3RWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiB2
MSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYyLCBTaGFwZUludGVydmFscyYgcnYpCisgICAgc3Rh
dGljIHZvaWQgc3VidHJhY3RWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBhLCBjb25zdCBT
aGFwZUludGVydmFscyYgYiwgU2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkKICAgICB7Ci0gICAgICAg
IHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgICAgIHNpemVfdCB2MlNpemUgPSB2Mi5z
aXplKCk7CisgICAgICAgIGlmIChhLmlzRW1wdHkoKSB8fCBhID09IGIpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKCF2MVNpemUpCisgICAgICAgIGlmIChiLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKGEuYmVnaW4oKSwgYS5lbmQoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBpZiAoIXYyU2l6ZSkKLSAg
ICAgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBzaXplX3QgaTEgPSAwLCBpMiA9IDA7Ci0gICAgICAgICAgICBy
di5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Ci0KLSAgICAgICAgICAgIHdoaWxl
IChpMSA8IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAgICAgIFNoYXBl
SW50ZXJ2YWw8VD4mIGludGVydmFsMSA9IHJ2W2kxXTsKLSAgICAgICAgICAgICAgICBjb25zdCBT
aGFwZUludGVydmFsPFQ+JiBpbnRlcnZhbDIgPSB2MltpMl07Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoaW50ZXJ2YWwyLngxKCkgPD0gaW50ZXJ2YWwxLngxKCkgJiYgaW50ZXJ2YWwyLngyKCkgPj0g
aW50ZXJ2YWwxLngyKCkpCi0gICAgICAgICAgICAgICAgICAgIHJ2LnJlbW92ZShpMSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDEoKSkKLSAg
ICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRl
cnZhbDIueDEoKSA+IGludGVydmFsMS54MigpKQotICAgICAgICAgICAgICAgICAgICBpMSArPSAx
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MSgpID4gaW50ZXJ2YWwxLngx
KCkgJiYgaW50ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDIoKSkgewotICAgICAgICAgICAgICAg
ICAgICBydi5pbnNlcnQoaTEsIFNoYXBlSW50ZXJ2YWwoaW50ZXJ2YWwxLngxKCksIGludGVydmFs
Mi54MSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngy
KCksIGludGVydmFsMS54MigpKTsKLSAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFsMS54MSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVy
dmFsMS54MigpKTsKLSAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgIHsgLy8gKGludGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQotICAgICAg
ICAgICAgICAgICAgICBpbnRlcnZhbDEuc2V0KGludGVydmFsMS54MSgpLCBpbnRlcnZhbDIueDEo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGFOZXh0ID0gYS5iZWdpbigpOworICAgICAgICBjb25zdF9pdGVyYXRvciBiTmV4dCA9IGIuYmVn
aW4oKTsKKyAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiBhVmFsdWUgPSAqYU5leHQ7CisgICAgICAg
IFNoYXBlSW50ZXJ2YWw8VD4gYlZhbHVlID0gKmJOZXh0OworCisgICAgICAgIHdoaWxlIChhTmV4
dCAhPSBhLmVuZCgpICYmIGJOZXh0ICE9IGIuZW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChiVmFs
dWUuY29udGFpbnMoYVZhbHVlKSkgeworICAgICAgICAgICAgICAgIGFWYWx1ZSA9ICorK2FOZXh0
OworICAgICAgICAgICAgfSBlbHNlIGlmIChhVmFsdWUuY29udGFpbnMoYlZhbHVlKSkgeworICAg
ICAgICAgICAgICAgIGlmIChiVmFsdWUueDEoKSA+IGFWYWx1ZS54MSgpKQorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKFNoYXBlSW50ZXJ2YWw8VD4oYVZhbHVlLngxKCksIGJWYWx1
ZS54MSgpKSk7CisgICAgICAgICAgICAgICAgaWYgKGFWYWx1ZS54MigpID4gYlZhbHVlLngyKCkp
CisgICAgICAgICAgICAgICAgICAgIGFWYWx1ZS5zZXRYMShiVmFsdWUueDIoKSk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhVmFsdWUgPSAqKythTmV4dDsKKyAg
ICAgICAgICAgICAgICBiVmFsdWUgPSAqKytiTmV4dDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
YVZhbHVlLm92ZXJsYXBzKGJWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYVZhbHVlIDwg
YlZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZh
bDxUPihhVmFsdWUueDEoKSwgYlZhbHVlLngxKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYVZh
bHVlID0gKisrYU5leHQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgYVZhbHVlLnNldFgxKGJWYWx1ZS54MigpKTsKKyAgICAgICAgICAgICAgICAgICAgYlZh
bHVlID0gKisrYk5leHQ7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoYVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlID0g
KisrYU5leHQ7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJW
YWx1ZSA9ICorK2JOZXh0OwogICAgICAgICAgICAgfQorCisgICAgICAgIH0KKworICAgICAgICBp
ZiAoYU5leHQgIT0gYS5lbmQoKSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChhVmFsdWUp
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKCsrYU5leHQsIGEuZW5kKCkpOwogICAg
ICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210172</attachid>
            <date>2013-08-30 16:04:44 -0700</date>
            <delta_ts>2013-09-03 12:25:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>12143</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmViNTI4Li5jMjQ3NTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDgtMzAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFJldmlzZSB0aGUgU2hhcGVJbnRlcnZhbCBzZXQgb3BlcmF0aW9ucycg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJldmlzZWQgdGhlIFNoYXBlSW50ZXJ2YWxzIHVuaXRlLCBpbnRlcnNlY3QsIGFuZCBz
dWJ0cmFjdCBvcGVyYXRpb25zIHRvCisgICAgICAgIGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgY2xh
cml0eS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIHJlcXVpcmVkLCB0aGlzIGlzIGp1c3Qg
YW4gaW50ZXJuYWwgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlT3ZlcmxhcHBpbmdFZGdl
WFByb2plY3Rpb25zKTogUmVtb3ZlZCBjYWxsIHRvIFNoYXBlSW50ZXJ2YWw8VD5zb3J0VmVjdG9y
KCksIHNpbmNlIGNhbGxpbmcgc3RkOjpzb3J0IGRpcmVjdGx5IGlzIHNpbXBsZXIuCisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZUludGVydmFsOjpjb250YWlucyk6IFRydWUgaWYgdGhlIGludGVydmFsIHBhcmFtZXRlciBp
cyB3aXRoaW4gdGhpcyBpbnRlcnZhbC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6
OmludGVyc2VjdCk6IFN1YnN0YW50aWFsbHkgcmV2aXNlZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5h
bCBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdFZlY3Rv
cnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0VmVj
dG9ycyk6IERpdHRvLgorCiAyMDEzLTA4LTMwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQnJlYWtwb2ludHMgc2hvdWxkIGhh
dmUgQXV0b21hdGljYWxseSBDb250aW51ZSBPcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAppbmRleCA2ZDMwZmNhLi5lNzMwOTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3Bw
CkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQ
cm9qZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2EKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoRmxvYXRTaGFwZUludGVydmFsKHgxLCB4MikpOwogICAgIH0KIAotICAg
IEZsb2F0U2hhcGVJbnRlcnZhbDo6c29ydFZlY3RvcihyZXN1bHQpOworICAgIHN0ZDo6c29ydChy
ZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKIH0KIAogdm9pZCBQb2x5Z29uU2hhcGU6Omdl
dEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdApAQCAtMzYwLDEzICszNjAsMTMg
QEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9s
eWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFs
cyBtZXJnZWRJbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMo
eTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMsIG1lcmdlZEludGVydmFscyk7CisgICAgRmxvYXRT
aGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50ZXJ2YWxzKHkxWEludGVydmFscywgeTJYSW50ZXJ2
YWxzLCBtZXJnZWRJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBlZGdlSW50
ZXJ2YWxzOwogICAgIGNvbXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJvamVjdGlvbnMocG9seWdvbiwg
eTEsIHkyLCBlZGdlSW50ZXJ2YWxzKTsKIAogICAgIEZsb2F0U2hhcGVJbnRlcnZhbHMgZXhjbHVk
ZWRJbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMobWVyZ2Vk
SW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBleGNsdWRlZEludGVydmFscyk7CisgICAgRmxvYXRT
aGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50ZXJ2YWxzKG1lcmdlZEludGVydmFscywgZWRnZUlu
dGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZsb2F0U2hhcGVJ
bnRlcnZhbCBpbnRlcnZhbCA9IGV4Y2x1ZGVkSW50ZXJ2YWxzW2ldOwpAQCAtMzg4LDEzICszODgs
MTMgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQg
bG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMo
cG9seWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVy
dmFscyBjb21tb25JbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjppbnRlcnNlY3RW
ZWN0b3JzKHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzLCBjb21tb25JbnRlcnZhbHMpOworICAg
IEZsb2F0U2hhcGVJbnRlcnZhbDo6aW50ZXJzZWN0U2hhcGVJbnRlcnZhbHMoeTFYSW50ZXJ2YWxz
LCB5MlhJbnRlcnZhbHMsIGNvbW1vbkludGVydmFscyk7CiAKICAgICBGbG9hdFNoYXBlSW50ZXJ2
YWxzIGVkZ2VJbnRlcnZhbHM7CiAgICAgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9u
cyhwb2x5Z29uLCB5MSwgeTIsIGVkZ2VJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVy
dmFscyBpbmNsdWRlZEludGVydmFsczsKLSAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0
VmVjdG9ycyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxz
KTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29tbW9u
SW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5jbHVkZWRJbnRlcnZhbHMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgY29uc3QgRmxvYXRTaGFwZUludGVydmFsJiBpbnRlcnZhbCA9IGluY2x1ZGVkSW50ZXJ2
YWxzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2
YWwuaAppbmRleCA0MjBhMmQ2Li5lMDlmMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaApAQCAtNzEsMTI5ICs3MSwxMTcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4geDIoKSA+PSBpbnRlcnZhbC54MSgpICYmIHgxKCkgPD0gaW50ZXJ2
YWwueDIoKTsKICAgICB9CiAKLSAgICBib29sIGludGVyc2VjdChjb25zdCBTaGFwZUludGVydmFs
PFQ+JiBpLCBTaGFwZUludGVydmFsPFQ+JiBydikgY29uc3QKKyAgICBib29sIGNvbnRhaW5zKGNv
bnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVydmFsKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYg
KHgyKCkgPCBpLngxKCkgfHwgeDEoKSA+IGkueDIoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcnYuc2V0KHN0ZDo6bWF4KHgxKCksIGkueDEoKSksIHN0ZDo6bWluKHgyKCks
IGkueDIoKSkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHgxKCkgPD0g
aW50ZXJ2YWwueDEoKSAmJiB4MigpID49IGludGVydmFsLngyKCk7CisgICAgfQorCisgICAgU2hh
cGVJbnRlcnZhbDxUPiBpbnRlcnNlY3QoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob3ZlcmxhcHMoaW50ZXJ2YWwpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXBlSW50ZXJ2YWw8VD4oc3RkOjptYXg8VD4oeDEoKSwgaW50ZXJ2YWwueDEo
KSksIHN0ZDo6bWluPFQ+KHgyKCksIGludGVydmFsLngyKCkpKTsKICAgICB9CiAKICAgICB0eXBl
ZGVmIFZlY3RvcjxTaGFwZUludGVydmFsPFQ+ID4gU2hhcGVJbnRlcnZhbHM7CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBTaGFwZUludGVydmFsczo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTaGFwZUludGVydmFsczo6aXRlcmF0b3IgaXRlcmF0b3I7
CiAKLSAgICBzdGF0aWMgdm9pZCBzb3J0VmVjdG9yKFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMp
CisgICAgc3RhdGljIHZvaWQgdW5pdGVTaGFwZUludGVydmFscyhjb25zdCBTaGFwZUludGVydmFs
cyYgYSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIGIsIFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnNvcnQoaW50ZXJ2YWxzLmJlZ2luKCksIGludGVydmFscy5lbmQo
KSk7Ci0gICAgfQorICAgICAgICBpZiAoYS5pc0VtcHR5KCkgfHwgYSA9PSBiKSB7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYi5iZWdpbigpLCBiLmVuZCgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgdW5pdGVWZWN0b3JzKGNvbnN0
IFNoYXBlSW50ZXJ2YWxzJiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYyLCBTaGFwZUludGVy
dmFscyYgcnYpCi0gICAgewotICAgICAgICBpZiAoIXYxLnNpemUoKSkKLSAgICAgICAgICAgIHJ2
LmFwcGVuZFJhbmdlKHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKLSAgICAgICAgZWxzZSBpZiAoIXYy
LnNpemUoKSkKLSAgICAgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgp
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTaGFwZUludGVydmFscyB2KHYxLnNpemUo
KSArIHYyLnNpemUoKSk7Ci0gICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+KiBpbnRlcnZhbCA9
IDA7Ci0KLSAgICAgICAgICAgIHN0ZDo6bWVyZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCksIHYyLmJl
Z2luKCksIHYyLmVuZCgpLCB2LmJlZ2luKCkpOwotCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIWludGVydmFs
KQotICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9ICZ2W2ldOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHZbaV0ueDEoKSA+PSBpbnRlcnZhbC0+eDEoKSAmJiB2W2ldLngxKCkgPD0gaW50
ZXJ2YWwtPngyKCkpIC8vIEZJWE1FOiAxc3QgPD0gdGVzdCBub3QgbmVlZGVkPwotICAgICAgICAg
ICAgICAgICAgICBpbnRlcnZhbC0+c2V0KGludGVydmFsLT54MSgpLCBzdGQ6Om1heDxUPihpbnRl
cnZhbC0+eDIoKSwgdltpXS54MigpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOwotICAgICAgICAgICAgICAgICAgICBp
bnRlcnZhbCA9ICZ2W2ldOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAg
ICAgaWYgKGIuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYS5i
ZWdpbigpLCBhLmVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoaW50ZXJ2YWwpCi0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZh
bCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGFOZXh0ID0gYS5iZWdp
bigpOworICAgICAgICBjb25zdF9pdGVyYXRvciBiTmV4dCA9IGIuYmVnaW4oKTsKKworICAgICAg
ICB3aGlsZSAoYU5leHQgIT0gYS5lbmQoKSB8fCBiTmV4dCAhPSBiLmVuZCgpKSB7CisgICAgICAg
ICAgICBjb25zdF9pdGVyYXRvciBuZXh0ID0gKGJOZXh0ID09IGIuZW5kKCkgfHwgKGFOZXh0ICE9
IGEuZW5kKCkgJiYgKmFOZXh0IDwgKmJOZXh0KSkgPyBhTmV4dCsrIDogYk5leHQrKzsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpIHx8ICFyZXN1bHQubGFzdCgpLm92ZXJsYXBzKCpu
ZXh0KSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpuZXh0KTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQubGFzdCgpLnNldFgyKHN0ZDo6bWF4PFQ+KHJl
c3VsdC5sYXN0KCkueDIoKSwgbmV4dC0+eDIoKSkpOworICAgICAgICB9CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgaW50ZXJzZWN0VmVjdG9ycyhjb25zdCBTaGFwZUludGVydmFscyYgdjEsIGNv
bnN0IFNoYXBlSW50ZXJ2YWxzJiB2MiwgU2hhcGVJbnRlcnZhbHMmIHJ2KQorICAgIHN0YXRpYyB2
b2lkIGludGVyc2VjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBhLCBjb25z
dCBTaGFwZUludGVydmFscyYgYiwgU2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkKICAgICB7Ci0gICAg
ICAgIHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgICAgIHNpemVfdCB2MlNpemUgPSB2
Mi5zaXplKCk7Ci0KLSAgICAgICAgaWYgKCF2MVNpemUgfHwgIXYyU2l6ZSkKKyAgICAgICAgaWYg
KGEuaXNFbXB0eSgpIHx8IGIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIFNoYXBlSW50ZXJ2YWw8VD4gaW50ZXJ2YWw7Ci0gICAgICAgIGJvb2wgb3ZlcmxhcCA9IGZh
bHNlOwotICAgICAgICBzaXplX3QgaTEgPSAwOwotICAgICAgICBzaXplX3QgaTIgPSAwOwotCi0g
ICAgICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAg
U2hhcGVJbnRlcnZhbDxUPiB2MTI7Ci0gICAgICAgICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2
MltpMl0sIHYxMikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW92ZXJsYXAgfHwgIXYxMi5pbnRl
cnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAob3Zl
cmxhcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGludGVydmFsID0gdjEyOwotICAgICAgICAgICAgICAgICAgICBvdmVy
bGFwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHYxW2kx
XS54MigpIDwgdjJbaTJdLngyKCkpCi0gICAgICAgICAgICAgICAgICAgIGkxKys7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBpMisrOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgICAgICAgICAgICAg
cnYuYXBwZW5kKGludGVydmFsKTsKLSAgICAgICAgICAgICAgICBvdmVybGFwID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgaWYgKHYxW2kxXS54MSgpIDwgdjJbaTJdLngxKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGkxKys7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICBpMisrOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoYSA9PSBiKSB7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kUmFuZ2UoYS5iZWdpbigpLCBhLmVuZCgpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChvdmVybGFwKQotICAgICAgICAgICAgcnYu
YXBwZW5kKGludGVydmFsKTsKKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYU5leHQgPSBhLmJlZ2lu
KCk7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJOZXh0ID0gYi5iZWdpbigpOworICAgICAgICBj
b25zdF9pdGVyYXRvciB3b3JraW5nID0gKmFOZXh0IDwgKmJOZXh0ID8gYU5leHQrKyA6IGJOZXh0
Kys7CisKKyAgICAgICAgd2hpbGUgKGFOZXh0ICE9IGEuZW5kKCkgfHwgYk5leHQgIT0gYi5lbmQo
KSkgeworICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgbmV4dCA9IChiTmV4dCA9PSBiLmVuZCgp
IHx8IChhTmV4dCAhPSBhLmVuZCgpICYmICphTmV4dCA8ICpiTmV4dCkpID8gYU5leHQrKyA6IGJO
ZXh0Kys7CisgICAgICAgICAgICBpZiAod29ya2luZy0+b3ZlcmxhcHMoKm5leHQpKSB7CisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh3b3JraW5nLT5pbnRlcnNlY3QoKm5leHQpKTsKKyAg
ICAgICAgICAgICAgICBpZiAobmV4dC0+eDIoKSA+IHdvcmtpbmctPngyKCkpCisgICAgICAgICAg
ICAgICAgICAgIHdvcmtpbmcgPSBuZXh0OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgd29ya2luZyA9IG5leHQ7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBzdWJ0cmFjdFZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYxLCBjb25zdCBTaGFwZUlu
dGVydmFscyYgdjIsIFNoYXBlSW50ZXJ2YWxzJiBydikKKyAgICBzdGF0aWMgdm9pZCBzdWJ0cmFj
dFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBhLCBjb25zdCBTaGFwZUludGVy
dmFscyYgYiwgU2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHNpemVfdCB2
MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7Cisg
ICAgICAgIGlmIChhLmlzRW1wdHkoKSB8fCBhID09IGIpCisgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKCF2MVNpemUpCisgICAgICAgIGlmIChiLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKGEuYmVnaW4oKSwgYS5lbmQoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBpZiAoIXYyU2l6ZSkKLSAgICAgICAgICAg
IHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBzaXplX3QgaTEgPSAwLCBpMiA9IDA7Ci0gICAgICAgICAgICBydi5hcHBlbmRS
YW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChpMSA8IHJ2
LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAgICAgIFNoYXBlSW50ZXJ2YWw8
VD4mIGludGVydmFsMSA9IHJ2W2kxXTsKLSAgICAgICAgICAgICAgICBjb25zdCBTaGFwZUludGVy
dmFsPFQ+JiBpbnRlcnZhbDIgPSB2MltpMl07Ci0KLSAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2
YWwyLngxKCkgPD0gaW50ZXJ2YWwxLngxKCkgJiYgaW50ZXJ2YWwyLngyKCkgPj0gaW50ZXJ2YWwx
LngyKCkpCi0gICAgICAgICAgICAgICAgICAgIHJ2LnJlbW92ZShpMSk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDEoKSkKLSAgICAgICAgICAg
ICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEo
KSA+IGludGVydmFsMS54MigpKQotICAgICAgICAgICAgICAgICAgICBpMSArPSAxOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MSgpID4gaW50ZXJ2YWwxLngxKCkgJiYgaW50
ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDIoKSkgewotICAgICAgICAgICAgICAgICAgICBydi5p
bnNlcnQoaTEsIFNoYXBlSW50ZXJ2YWwoaW50ZXJ2YWwxLngxKCksIGludGVydmFsMi54MSgpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVy
dmFsMS54MigpKTsKLSAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFsMS54MSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVydmFsMS54Migp
KTsKLSAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
IHsgLy8gKGludGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQotICAgICAgICAgICAgICAg
ICAgICBpbnRlcnZhbDEuc2V0KGludGVydmFsMS54MSgpLCBpbnRlcnZhbDIueDEoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGFOZXh0ID0g
YS5iZWdpbigpOworICAgICAgICBjb25zdF9pdGVyYXRvciBiTmV4dCA9IGIuYmVnaW4oKTsKKyAg
ICAgICAgU2hhcGVJbnRlcnZhbDxUPiBhVmFsdWUgPSAqYU5leHQ7CisgICAgICAgIFNoYXBlSW50
ZXJ2YWw8VD4gYlZhbHVlID0gKmJOZXh0OworCisgICAgICAgIHdoaWxlIChhTmV4dCAhPSBhLmVu
ZCgpICYmIGJOZXh0ICE9IGIuZW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChiVmFsdWUuY29udGFp
bnMoYVZhbHVlKSkgeworICAgICAgICAgICAgICAgIGFWYWx1ZSA9ICorK2FOZXh0OworICAgICAg
ICAgICAgfSBlbHNlIGlmIChhVmFsdWUuY29udGFpbnMoYlZhbHVlKSkgeworICAgICAgICAgICAg
ICAgIGlmIChiVmFsdWUueDEoKSA+IGFWYWx1ZS54MSgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKFNoYXBlSW50ZXJ2YWw8VD4oYVZhbHVlLngxKCksIGJWYWx1ZS54MSgpKSk7
CisgICAgICAgICAgICAgICAgaWYgKGFWYWx1ZS54MigpID4gYlZhbHVlLngyKCkpCisgICAgICAg
ICAgICAgICAgICAgIGFWYWx1ZS5zZXRYMShiVmFsdWUueDIoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBhVmFsdWUgPSAqKythTmV4dDsKKyAgICAgICAgICAg
ICAgICBiVmFsdWUgPSAqKytiTmV4dDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYVZhbHVlLm92
ZXJsYXBzKGJWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZhbDxUPihhVmFs
dWUueDEoKSwgYlZhbHVlLngxKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlID0gKisr
YU5leHQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYVZh
bHVlLnNldFgxKGJWYWx1ZS54MigpKTsKKyAgICAgICAgICAgICAgICAgICAgYlZhbHVlID0gKisr
Yk5leHQ7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoYVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlID0gKisrYU5leHQ7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJWYWx1ZSA9ICor
K2JOZXh0OwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYgKGFOZXh0ICE9
IGEuZW5kKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYVZhbHVlKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRSYW5nZSgrK2FOZXh0LCBhLmVuZCgpKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikg
Y29uc3QgeyByZXR1cm4geDEoKSA9PSBvdGhlci54MSgpICYmIHgyKCkgPT0gb3RoZXIueDIoKTsg
fQo=
</data>
<flag name="review"
          id="232295"
          type_id="1"
          status="-"
          setter="achicu"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210401</attachid>
            <date>2013-09-03 12:25:56 -0700</date>
            <delta_ts>2013-09-03 12:35:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>12143</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmViNTI4Li5jMjQ3NTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDgtMzAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFJldmlzZSB0aGUgU2hhcGVJbnRlcnZhbCBzZXQgb3BlcmF0aW9ucycg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJldmlzZWQgdGhlIFNoYXBlSW50ZXJ2YWxzIHVuaXRlLCBpbnRlcnNlY3QsIGFuZCBz
dWJ0cmFjdCBvcGVyYXRpb25zIHRvCisgICAgICAgIGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgY2xh
cml0eS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIHJlcXVpcmVkLCB0aGlzIGlzIGp1c3Qg
YW4gaW50ZXJuYWwgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlT3ZlcmxhcHBpbmdFZGdl
WFByb2plY3Rpb25zKTogUmVtb3ZlZCBjYWxsIHRvIFNoYXBlSW50ZXJ2YWw8VD5zb3J0VmVjdG9y
KCksIHNpbmNlIGNhbGxpbmcgc3RkOjpzb3J0IGRpcmVjdGx5IGlzIHNpbXBsZXIuCisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZUludGVydmFsOjpjb250YWlucyk6IFRydWUgaWYgdGhlIGludGVydmFsIHBhcmFtZXRlciBp
cyB3aXRoaW4gdGhpcyBpbnRlcnZhbC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6
OmludGVyc2VjdCk6IFN1YnN0YW50aWFsbHkgcmV2aXNlZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5h
bCBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdFZlY3Rv
cnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0VmVj
dG9ycyk6IERpdHRvLgorCiAyMDEzLTA4LTMwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQnJlYWtwb2ludHMgc2hvdWxkIGhh
dmUgQXV0b21hdGljYWxseSBDb250aW51ZSBPcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAppbmRleCA2ZDMwZmNhLi5lNzMwOTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3Bw
CkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQ
cm9qZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2EKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoRmxvYXRTaGFwZUludGVydmFsKHgxLCB4MikpOwogICAgIH0KIAotICAg
IEZsb2F0U2hhcGVJbnRlcnZhbDo6c29ydFZlY3RvcihyZXN1bHQpOworICAgIHN0ZDo6c29ydChy
ZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKIH0KIAogdm9pZCBQb2x5Z29uU2hhcGU6Omdl
dEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdApAQCAtMzYwLDEzICszNjAsMTMg
QEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9s
eWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFs
cyBtZXJnZWRJbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMo
eTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMsIG1lcmdlZEludGVydmFscyk7CisgICAgRmxvYXRT
aGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50ZXJ2YWxzKHkxWEludGVydmFscywgeTJYSW50ZXJ2
YWxzLCBtZXJnZWRJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBlZGdlSW50
ZXJ2YWxzOwogICAgIGNvbXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJvamVjdGlvbnMocG9seWdvbiwg
eTEsIHkyLCBlZGdlSW50ZXJ2YWxzKTsKIAogICAgIEZsb2F0U2hhcGVJbnRlcnZhbHMgZXhjbHVk
ZWRJbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMobWVyZ2Vk
SW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBleGNsdWRlZEludGVydmFscyk7CisgICAgRmxvYXRT
aGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50ZXJ2YWxzKG1lcmdlZEludGVydmFscywgZWRnZUlu
dGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZsb2F0U2hhcGVJ
bnRlcnZhbCBpbnRlcnZhbCA9IGV4Y2x1ZGVkSW50ZXJ2YWxzW2ldOwpAQCAtMzg4LDEzICszODgs
MTMgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQg
bG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMo
cG9seWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVy
dmFscyBjb21tb25JbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjppbnRlcnNlY3RW
ZWN0b3JzKHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzLCBjb21tb25JbnRlcnZhbHMpOworICAg
IEZsb2F0U2hhcGVJbnRlcnZhbDo6aW50ZXJzZWN0U2hhcGVJbnRlcnZhbHMoeTFYSW50ZXJ2YWxz
LCB5MlhJbnRlcnZhbHMsIGNvbW1vbkludGVydmFscyk7CiAKICAgICBGbG9hdFNoYXBlSW50ZXJ2
YWxzIGVkZ2VJbnRlcnZhbHM7CiAgICAgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9u
cyhwb2x5Z29uLCB5MSwgeTIsIGVkZ2VJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVy
dmFscyBpbmNsdWRlZEludGVydmFsczsKLSAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0
VmVjdG9ycyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxz
KTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29tbW9u
SW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5jbHVkZWRJbnRlcnZhbHMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgY29uc3QgRmxvYXRTaGFwZUludGVydmFsJiBpbnRlcnZhbCA9IGluY2x1ZGVkSW50ZXJ2
YWxzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2
YWwuaAppbmRleCA0MjBhMmQ2Li5lMDlmMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaApAQCAtNzEsMTI5ICs3MSwxMTcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4geDIoKSA+PSBpbnRlcnZhbC54MSgpICYmIHgxKCkgPD0gaW50ZXJ2
YWwueDIoKTsKICAgICB9CiAKLSAgICBib29sIGludGVyc2VjdChjb25zdCBTaGFwZUludGVydmFs
PFQ+JiBpLCBTaGFwZUludGVydmFsPFQ+JiBydikgY29uc3QKKyAgICBib29sIGNvbnRhaW5zKGNv
bnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVydmFsKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYg
KHgyKCkgPCBpLngxKCkgfHwgeDEoKSA+IGkueDIoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcnYuc2V0KHN0ZDo6bWF4KHgxKCksIGkueDEoKSksIHN0ZDo6bWluKHgyKCks
IGkueDIoKSkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHgxKCkgPD0g
aW50ZXJ2YWwueDEoKSAmJiB4MigpID49IGludGVydmFsLngyKCk7CisgICAgfQorCisgICAgU2hh
cGVJbnRlcnZhbDxUPiBpbnRlcnNlY3QoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob3ZlcmxhcHMoaW50ZXJ2YWwpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXBlSW50ZXJ2YWw8VD4oc3RkOjptYXg8VD4oeDEoKSwgaW50ZXJ2YWwueDEo
KSksIHN0ZDo6bWluPFQ+KHgyKCksIGludGVydmFsLngyKCkpKTsKICAgICB9CiAKICAgICB0eXBl
ZGVmIFZlY3RvcjxTaGFwZUludGVydmFsPFQ+ID4gU2hhcGVJbnRlcnZhbHM7CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBTaGFwZUludGVydmFsczo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTaGFwZUludGVydmFsczo6aXRlcmF0b3IgaXRlcmF0b3I7
CiAKLSAgICBzdGF0aWMgdm9pZCBzb3J0VmVjdG9yKFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMp
CisgICAgc3RhdGljIHZvaWQgdW5pdGVTaGFwZUludGVydmFscyhjb25zdCBTaGFwZUludGVydmFs
cyYgYSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIGIsIFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnNvcnQoaW50ZXJ2YWxzLmJlZ2luKCksIGludGVydmFscy5lbmQo
KSk7Ci0gICAgfQorICAgICAgICBpZiAoYS5pc0VtcHR5KCkgfHwgYSA9PSBiKSB7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYi5iZWdpbigpLCBiLmVuZCgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgdW5pdGVWZWN0b3JzKGNvbnN0
IFNoYXBlSW50ZXJ2YWxzJiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYyLCBTaGFwZUludGVy
dmFscyYgcnYpCi0gICAgewotICAgICAgICBpZiAoIXYxLnNpemUoKSkKLSAgICAgICAgICAgIHJ2
LmFwcGVuZFJhbmdlKHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKLSAgICAgICAgZWxzZSBpZiAoIXYy
LnNpemUoKSkKLSAgICAgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgp
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTaGFwZUludGVydmFscyB2KHYxLnNpemUo
KSArIHYyLnNpemUoKSk7Ci0gICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+KiBpbnRlcnZhbCA9
IDA7Ci0KLSAgICAgICAgICAgIHN0ZDo6bWVyZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCksIHYyLmJl
Z2luKCksIHYyLmVuZCgpLCB2LmJlZ2luKCkpOwotCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIWludGVydmFs
KQotICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9ICZ2W2ldOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHZbaV0ueDEoKSA+PSBpbnRlcnZhbC0+eDEoKSAmJiB2W2ldLngxKCkgPD0gaW50
ZXJ2YWwtPngyKCkpIC8vIEZJWE1FOiAxc3QgPD0gdGVzdCBub3QgbmVlZGVkPwotICAgICAgICAg
ICAgICAgICAgICBpbnRlcnZhbC0+c2V0KGludGVydmFsLT54MSgpLCBzdGQ6Om1heDxUPihpbnRl
cnZhbC0+eDIoKSwgdltpXS54MigpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOwotICAgICAgICAgICAgICAgICAgICBp
bnRlcnZhbCA9ICZ2W2ldOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAg
ICAgaWYgKGIuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYS5i
ZWdpbigpLCBhLmVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoaW50ZXJ2YWwpCi0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZh
bCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGFOZXh0ID0gYS5iZWdp
bigpOworICAgICAgICBjb25zdF9pdGVyYXRvciBiTmV4dCA9IGIuYmVnaW4oKTsKKworICAgICAg
ICB3aGlsZSAoYU5leHQgIT0gYS5lbmQoKSB8fCBiTmV4dCAhPSBiLmVuZCgpKSB7CisgICAgICAg
ICAgICBjb25zdF9pdGVyYXRvciBuZXh0ID0gKGJOZXh0ID09IGIuZW5kKCkgfHwgKGFOZXh0ICE9
IGEuZW5kKCkgJiYgKmFOZXh0IDwgKmJOZXh0KSkgPyBhTmV4dCsrIDogYk5leHQrKzsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpIHx8ICFyZXN1bHQubGFzdCgpLm92ZXJsYXBzKCpu
ZXh0KSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpuZXh0KTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQubGFzdCgpLnNldFgyKHN0ZDo6bWF4PFQ+KHJl
c3VsdC5sYXN0KCkueDIoKSwgbmV4dC0+eDIoKSkpOworICAgICAgICB9CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgaW50ZXJzZWN0VmVjdG9ycyhjb25zdCBTaGFwZUludGVydmFscyYgdjEsIGNv
bnN0IFNoYXBlSW50ZXJ2YWxzJiB2MiwgU2hhcGVJbnRlcnZhbHMmIHJ2KQorICAgIHN0YXRpYyB2
b2lkIGludGVyc2VjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBhLCBjb25z
dCBTaGFwZUludGVydmFscyYgYiwgU2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkKICAgICB7Ci0gICAg
ICAgIHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgICAgIHNpemVfdCB2MlNpemUgPSB2
Mi5zaXplKCk7Ci0KLSAgICAgICAgaWYgKCF2MVNpemUgfHwgIXYyU2l6ZSkKKyAgICAgICAgaWYg
KGEuaXNFbXB0eSgpIHx8IGIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIFNoYXBlSW50ZXJ2YWw8VD4gaW50ZXJ2YWw7Ci0gICAgICAgIGJvb2wgb3ZlcmxhcCA9IGZh
bHNlOwotICAgICAgICBzaXplX3QgaTEgPSAwOwotICAgICAgICBzaXplX3QgaTIgPSAwOwotCi0g
ICAgICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAg
U2hhcGVJbnRlcnZhbDxUPiB2MTI7Ci0gICAgICAgICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2
MltpMl0sIHYxMikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW92ZXJsYXAgfHwgIXYxMi5pbnRl
cnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAob3Zl
cmxhcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGludGVydmFsID0gdjEyOwotICAgICAgICAgICAgICAgICAgICBvdmVy
bGFwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHYxW2kx
XS54MigpIDwgdjJbaTJdLngyKCkpCi0gICAgICAgICAgICAgICAgICAgIGkxKys7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBpMisrOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgICAgICAgICAgICAg
cnYuYXBwZW5kKGludGVydmFsKTsKLSAgICAgICAgICAgICAgICBvdmVybGFwID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgaWYgKHYxW2kxXS54MSgpIDwgdjJbaTJdLngxKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGkxKys7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICBpMisrOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoYSA9PSBiKSB7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kUmFuZ2UoYS5iZWdpbigpLCBhLmVuZCgpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChvdmVybGFwKQotICAgICAgICAgICAgcnYu
YXBwZW5kKGludGVydmFsKTsKKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYU5leHQgPSBhLmJlZ2lu
KCk7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJOZXh0ID0gYi5iZWdpbigpOworICAgICAgICBj
b25zdF9pdGVyYXRvciB3b3JraW5nID0gKmFOZXh0IDwgKmJOZXh0ID8gYU5leHQrKyA6IGJOZXh0
Kys7CisKKyAgICAgICAgd2hpbGUgKGFOZXh0ICE9IGEuZW5kKCkgfHwgYk5leHQgIT0gYi5lbmQo
KSkgeworICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgbmV4dCA9IChiTmV4dCA9PSBiLmVuZCgp
IHx8IChhTmV4dCAhPSBhLmVuZCgpICYmICphTmV4dCA8ICpiTmV4dCkpID8gYU5leHQrKyA6IGJO
ZXh0Kys7CisgICAgICAgICAgICBpZiAod29ya2luZy0+b3ZlcmxhcHMoKm5leHQpKSB7CisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh3b3JraW5nLT5pbnRlcnNlY3QoKm5leHQpKTsKKyAg
ICAgICAgICAgICAgICBpZiAobmV4dC0+eDIoKSA+IHdvcmtpbmctPngyKCkpCisgICAgICAgICAg
ICAgICAgICAgIHdvcmtpbmcgPSBuZXh0OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgd29ya2luZyA9IG5leHQ7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBzdWJ0cmFjdFZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYxLCBjb25zdCBTaGFwZUlu
dGVydmFscyYgdjIsIFNoYXBlSW50ZXJ2YWxzJiBydikKKyAgICBzdGF0aWMgdm9pZCBzdWJ0cmFj
dFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBhLCBjb25zdCBTaGFwZUludGVy
dmFscyYgYiwgU2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHNpemVfdCB2
MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7Cisg
ICAgICAgIGlmIChhLmlzRW1wdHkoKSB8fCBhID09IGIpCisgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKCF2MVNpemUpCisgICAgICAgIGlmIChiLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKGEuYmVnaW4oKSwgYS5lbmQoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBpZiAoIXYyU2l6ZSkKLSAgICAgICAgICAg
IHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBzaXplX3QgaTEgPSAwLCBpMiA9IDA7Ci0gICAgICAgICAgICBydi5hcHBlbmRS
YW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChpMSA8IHJ2
LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAgICAgIFNoYXBlSW50ZXJ2YWw8
VD4mIGludGVydmFsMSA9IHJ2W2kxXTsKLSAgICAgICAgICAgICAgICBjb25zdCBTaGFwZUludGVy
dmFsPFQ+JiBpbnRlcnZhbDIgPSB2MltpMl07Ci0KLSAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2
YWwyLngxKCkgPD0gaW50ZXJ2YWwxLngxKCkgJiYgaW50ZXJ2YWwyLngyKCkgPj0gaW50ZXJ2YWwx
LngyKCkpCi0gICAgICAgICAgICAgICAgICAgIHJ2LnJlbW92ZShpMSk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDEoKSkKLSAgICAgICAgICAg
ICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEo
KSA+IGludGVydmFsMS54MigpKQotICAgICAgICAgICAgICAgICAgICBpMSArPSAxOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MSgpID4gaW50ZXJ2YWwxLngxKCkgJiYgaW50
ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDIoKSkgewotICAgICAgICAgICAgICAgICAgICBydi5p
bnNlcnQoaTEsIFNoYXBlSW50ZXJ2YWwoaW50ZXJ2YWwxLngxKCksIGludGVydmFsMi54MSgpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVy
dmFsMS54MigpKTsKLSAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFsMS54MSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVydmFsMS54Migp
KTsKLSAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
IHsgLy8gKGludGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQotICAgICAgICAgICAgICAg
ICAgICBpbnRlcnZhbDEuc2V0KGludGVydmFsMS54MSgpLCBpbnRlcnZhbDIueDEoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGFOZXh0ID0g
YS5iZWdpbigpOworICAgICAgICBjb25zdF9pdGVyYXRvciBiTmV4dCA9IGIuYmVnaW4oKTsKKyAg
ICAgICAgU2hhcGVJbnRlcnZhbDxUPiBhVmFsdWUgPSAqYU5leHQ7CisgICAgICAgIFNoYXBlSW50
ZXJ2YWw8VD4gYlZhbHVlID0gKmJOZXh0OworCisgICAgICAgIHdoaWxlIChhTmV4dCAhPSBhLmVu
ZCgpICYmIGJOZXh0ICE9IGIuZW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChiVmFsdWUuY29udGFp
bnMoYVZhbHVlKSkgeworICAgICAgICAgICAgICAgIGFWYWx1ZSA9ICorK2FOZXh0OworICAgICAg
ICAgICAgfSBlbHNlIGlmIChhVmFsdWUuY29udGFpbnMoYlZhbHVlKSkgeworICAgICAgICAgICAg
ICAgIGlmIChiVmFsdWUueDEoKSA+IGFWYWx1ZS54MSgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKFNoYXBlSW50ZXJ2YWw8VD4oYVZhbHVlLngxKCksIGJWYWx1ZS54MSgpKSk7
CisgICAgICAgICAgICAgICAgaWYgKGFWYWx1ZS54MigpID4gYlZhbHVlLngyKCkpCisgICAgICAg
ICAgICAgICAgICAgIGFWYWx1ZS5zZXRYMShiVmFsdWUueDIoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBhVmFsdWUgPSAqKythTmV4dDsKKyAgICAgICAgICAg
ICAgICBiVmFsdWUgPSAqKytiTmV4dDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYVZhbHVlLm92
ZXJsYXBzKGJWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZhbDxUPihhVmFs
dWUueDEoKSwgYlZhbHVlLngxKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlID0gKisr
YU5leHQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYVZh
bHVlLnNldFgxKGJWYWx1ZS54MigpKTsKKyAgICAgICAgICAgICAgICAgICAgYlZhbHVlID0gKisr
Yk5leHQ7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoYVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlID0gKisrYU5leHQ7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJWYWx1ZSA9ICor
K2JOZXh0OwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYgKGFOZXh0ICE9
IGEuZW5kKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYVZhbHVlKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRSYW5nZSgrK2FOZXh0LCBhLmVuZCgpKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikg
Y29uc3QgeyByZXR1cm4geDEoKSA9PSBvdGhlci54MSgpICYmIHgyKCkgPT0gb3RoZXIueDIoKTsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210402</attachid>
            <date>2013-09-03 12:35:08 -0700</date>
            <delta_ts>2013-09-03 12:43:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>1525640</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggMTk4Mjc0
NC4uMjgxZjk0YSAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTY3LDIzICs2NywxNyBAQCBmaW5kX3BhY2thZ2UoUnVieSAxLjguNykKICMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICMgRGV0ZXJtaW5lIHRoZSB0YXJnZXQgcHJvY2Vzc29yCiAjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0jIFVzZSBNU1ZDX0NYWF9BUkNISVRFQ1RVUkVfSUQgaW5zdGVhZCBv
ZiBDTUFLRV9TWVNURU1fUFJPQ0VTU09SIHdoZW4gZGVmaW5lZCwKLSMgc2luY2UgdGhlIGxhdGVy
IG9uZSBqdXN0IHJlc29sdmVzIHRvIHRoZSBob3N0IHByb2Nlc3NvciBvbiBXaW5kb3dzLgotaWYg
KE1TVkNfQ1hYX0FSQ0hJVEVDVFVSRV9JRCkKLSAgICBzdHJpbmcoVE9MT1dFUiAke01TVkNfQ1hY
X0FSQ0hJVEVDVFVSRV9JRH0gTE9XRVJDQVNFX0NNQUtFX1NZU1RFTV9QUk9DRVNTT1IpCi1lbHNl
ICgpCi0gICAgc3RyaW5nKFRPTE9XRVIgJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09SfSBMT1dFUkNB
U0VfQ01BS0VfU1lTVEVNX1BST0NFU1NPUikKLWVuZGlmICgpCitzdHJpbmcoVE9MT1dFUiAke0NN
QUtFX1NZU1RFTV9QUk9DRVNTT1J9IExPV0VSQ0FTRV9DTUFLRV9TWVNURU1fUFJPQ0VTU09SKQog
aWYgKExPV0VSQ0FTRV9DTUFLRV9TWVNURU1fUFJPQ0VTU09SIE1BVENIRVMgIl5hcm0iKQogICAg
IHNldChXVEZfQ1BVX0FSTSAxKQogZWxzZWlmIChMT1dFUkNBU0VfQ01BS0VfU1lTVEVNX1BST0NF
U1NPUiBNQVRDSEVTICJebWlwcyIpCiAgICAgc2V0KFdURl9DUFVfTUlQUyAxKQotZWxzZWlmIChM
T1dFUkNBU0VfQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBNQVRDSEVTICIoeDY0fHg4Nl82NHxhbWQ2
NCkiKQorZWxzZWlmIChMT1dFUkNBU0VfQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBNQVRDSEVTICIo
eDg2XzY0fGFtZDY0KSIpCiAgICAgc2V0KFdURl9DUFVfWDg2XzY0IDEpCiBlbHNlaWYgKExPV0VS
Q0FTRV9DTUFLRV9TWVNURU1fUFJPQ0VTU09SIE1BVENIRVMgIihpWzMtNl04Nnx4ODYpIikKICAg
ICBzZXQoV1RGX0NQVV9YODYgMSkKIGVsc2UgKCkKLSAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJV
bmtub3duIENQVSAnJHtMT1dFUkNBU0VfQ01BS0VfU1lTVEVNX1BST0NFU1NPUn0nIikKKyAgICBt
ZXNzYWdlKEZBVEFMX0VSUk9SICJVbmtub3duIENQVSAnJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09S
fSciKQogZW5kaWYgKCkKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDE0Y2IzNWUuLjM1ZjM4ZWQgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMTUgKzEsMyBAQAotMjAxMy0wOS0wMyAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBbQ01ha2VdIEZp
eCBkZXRlY3Rpb24gb2YgeDg2XzY0IHBsYXRmb3JtIHdpdGggTVNWQwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NjYyCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgR3l1eW91bmcgS2ltLgotCi0gICAgICAgIFVzZSAke01TVkNfQ1hYX0FSQ0hJVEVDVFVS
RV9JRH0gaW5zdGVhZCBvZiAke0NNQUtFX1NZU1RFTV9QUk9DRVNTT1J9LCBzaW5jZQotICAgICAg
ICB0aGUgbGF0ZXIgb25lIGp1c3QgcmVzb2x2ZXMgdG8gdGhlIGhvc3QgcHJvY2Vzc29yIG9uIFdp
bmRvd3MuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKLQogMjAxMy0wOC0yOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBFTkFCTEUgZ3VhcmRzIGZvciBQ
cm9taXNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDhiMDE5ODUuLjE1MGQ1MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMzcyICsxLDMgQEAK
LTIwMTMtMDgtMjggIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+Ci0K
LSAgICAgICAgW0NTUyBHcmlkIExheW91dF0gQWRkIHBhcnNpbmcgZm9yIG5hbWVkIGdyaWQgbGlu
ZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTU0
MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgRnJvbSBC
bGluayByMTUwMzgxLHIxNTA1ODcgYnkgPGpjaGFmZnJhaXhAY2hyb21pdW0ub3JnPgotCi0gICAg
ICAgIEFkZGVkIHNldmVyYWwgbmV3IHRlc3QgY2FzZXMgd2hpY2ggaW5jbHVkZSBkaWZmZXJlbnQg
dHlwZXMgb2YKLSAgICAgICAgbmFtZWQgZ3JpZCBsaW5lcywgdGhpcyBtZWFucyBpbmNsdWRpbmcg
dGhlIG5hbWVzIGF0IGRpZmZlcmVudAotICAgICAgICBwb3NpdGlvbnMsIG11bHRpcGxlIG5hbWVz
IHBlciBsaW5lIG9yIG1peGluZyBuYW1lcyB3aXRoIGtleXdvcmRzCi0gICAgICAgIGxpa2UgJ3Nw
YW4nLgotCi0gICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLWNvbHVtbi1y
b3ctZ2V0LXNldC1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
Z3JpZC1pdGVtLWNvbHVtbi1yb3ctZ2V0LXNldC5odG1sOgotCi0yMDEzLTA5LTAzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFtNYWNdIEh5cGhlbmF0aW9u
IHJlc3BlY3RzIHJlZ2lvbmFsIGZvcm1hdCBzZXR0aW5ncyBsYW5ndWFnZSBpbnN0ZWFkIG9mIHBy
aW1hcnkgbGFuZ3VhZ2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDY0MQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCi0KLSAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2h5cGhlbmF0ZS1sb2NhbGUtZXhwZWN0ZWQu
cG5nOiBBZGRlZCwgdGhpcyB0ZXN0IG9ubHkgaGFkCi0gICAgICAgIGV4cGVjdGVkIHBpeGVsIHJl
c3VsdHMgaW4gbWFjLWxpb24gZG9yZWN0b3J5LgotCi0yMDEzLTA5LTAzICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXF1aXJlIGxheW91dCB3aGVuIC13ZWJr
aXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIGNoYW5nZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDUzNQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgIEFkZCBhIHRlc3QgdG8gZW5zdXJlIHdlIHBlcmZvcm0gYSBsYXlv
dXQgYW5kIHJlcGFpbnQgd2hlbiB0aGUKLSAgICAgICAgdmFsdWUgb2YgLXdlYmtpdC1vdmVyZmxv
dy1zY3JvbGxpbmcgY2hhbmdlcyBvbiBhbiBlbGVtZW50LgotCi0gICAgICAgIEF0IHRoZSB0aW1l
IG9mIHdyaXRpbmcsIHRoZSBpT1MgcG9ydCBlbmFibGVzIEFDQ0VMRVJBVEVEX09WRVJGTE9XX1ND
Uk9MTElORy4KLQotICAgICAgICAqIGZhc3QvcmVwYWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gt
cmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGZhc3QvcmVwYWludC9vdmVy
Zmxvdy1zY3JvbGwtdG91Y2gtcmVwYWludC5odG1sOiBBZGRlZC4KLSAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0ZXN0IGZhc3QvcmVwYWludC9vdmVyZmxvdy1z
Y3JvbGwtdG91Y2gtcmVwYWludC5odG1sCi0gICAgICAgIHNpbmNlIHRoaXMgcGxhdGZvcm0gZG9l
c24ndCBlbmFibGUgQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HLgotICAgICAgICAqIHBs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KLSAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9uczogRGl0dG8uCi0gICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9uczogRGl0dG8uCi0gICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnM6IERpdHRvLgotICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6
IERpdHRvLgotCi0yMDEzLTA5LTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgot
Ci0gICAgICAgIFN1cHBvcnQgdGhlICJqc29uIiByZXNwb25zZVR5cGUgYW5kIEpTT04gcmVzcG9u
c2UgZW50aXR5IGluIFhIUgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM2NDgKLQotICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KLQotICAg
ICAgICBBZGQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2Ugb2Yg
dHlwZSAnanNvbicuCi0KLSAgICAgICAgVHdvIG9mIHRoZXNlIHRlc3RzICh2YWxpZCAmIGludmFs
aWQpIGNvbWUgZnJvbSBKYXJyZWQgTmljaG9sbHMncyBvcmlnaW5hbCBwYXRjaC4KLQotICAgICAg
ICAqIGZhc3QveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LXJlc3BvbnNl
dHlwZS1qc29uLXV0Zi0xNi5qc29uOiBBZGRlZC4KLSAgICAgICAgKiBmYXN0L3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1yZXNwb25zZXR5cGUtanNvbi5qc29uOiBBZGRl
ZC4KLSAgICAgICAgKiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNl
dHlwZS1qc29uLWludmFsaWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBmYXN0L3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29uLWludmFsaWQuaHRt
bDogQWRkZWQuCi0gICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1y
ZXNwb25zZXR5cGUtanNvbi11dGYxNi1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGZh
c3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24tdXRmMTYu
aHRtbDogQWRkZWQuCi0gICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1yZXNwb25zZXR5cGUtanNvbi12YWxpZC1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAq
IGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24tdmFs
aWQuaHRtbDogQWRkZWQuCi0KLTIwMTMtMDktMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTQ4ODEu
Ci0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NDg4MQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjQzCi0KLSAgICAg
ICAgQ3Jhc2hlcyBvbiBtYWN3b3JsZC5jb20gKFJlcXVlc3RlZCBieSBrbGluZyBvbiAjd2Via2l0
KS4KLQotICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvc2V0QXR0cmlidXRlTm9kZS1mb3ItZXhp
c3RpbmctYXR0cmlidXRlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBmYXN0L2Rv
bS9FbGVtZW50L3NldEF0dHJpYnV0ZU5vZGUtZm9yLWV4aXN0aW5nLWF0dHJpYnV0ZS5odG1sOiBS
ZW1vdmVkLgotCi0yMDEzLTA5LTAzICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29t
PgotCi0gICAgICAgIFtDU1NSZWdpb25zXSBQc2V1ZG8tZWxlbWVudHMgYXMgcmVnaW9ucyBzaG91
bGQgbm90IGJlIGV4cG9zZWQgdG8gSlMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDYzMwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xp
bmcuCi0KLSAgICAgICAgQWRkIHRlc3RzIHdpdGggcHNldWRvLWVsZW1lbnRzIGFzIHJlZ2lvbnMg
Y2hlY2tpbmcgdGhlIGZvbGxvd2luZyBBUEk6Ci0gICAgICAgIFdlYktpdE5hbWVkRmxvdzo6Z2V0
UmVnaW9ucygpLCBXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQoKQotICAgICAg
ICBCZWNhdXNlIHdlIGRvIG5vdCByZXR1cm4gdGhlIHBzZXVkby1lbGVtZW50cyBhcyByZWdpb25z
IGluIHRoZSByZWdpb24gbGlzdCwKLSAgICAgICAgaSBtb2RpZmllZCBXZWJLaXROYW1lZEZsb3c6
OmZpcnN0RW1wdHlSZWdpb25JbmRleCB0byBza2lwIHRoZXNlIHJlZ2lvbnMgdG9vLiAKLQotICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9ucy1ieS1jb250ZW50LXBzZXVkby1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9nZXQtcmVnaW9ucy1ieS1jb250
ZW50LXBzZXVkby5odG1sOiBBZGRlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvd2Via2l0LW5h
bWVkLWZsb3ctZ2V0LXJlZ2lvbnMtcHNldWRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAg
ICogZmFzdC9yZWdpb25zL3dlYmtpdC1uYW1lZC1mbG93LWdldC1yZWdpb25zLXBzZXVkby5odG1s
OiBBZGRlZC4KLQotMjAxMy0wOS0wMyAgw4Fkw6FtIEthbGxhaSAgPGthZGFtQGluZi51LXN6ZWdl
ZC5odT4KLQotICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBTa2lwIHNvbWUgZmFp
bGluZyB0ZXN0cy4KLQotICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMS9UZXN0RXhwZWN0YXRpb25z
OgotICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6Ci0KLTIwMTMtMDktMDMg
IEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0VGTF0g
YWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwgaXMgZmFpbGluZwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDI3Ci0K
LSAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5nLgotCi0gICAgICAgIGFjY2Vzc2liaWxp
dHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sIHBhc3NlcyBhZnRlciByMTU0OTc2Lgot
Ci0gICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgotCi0yMDEzLTA5
LTAzICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNAY29sbGFib3Jh
LmNvLnVrPgotCi0gICAgICAgIFtnc3RyZWFtZXJdIERpc2FibGUgSFRUUCByZXF1ZXN0ICJBY2Nl
cHQtRW5jb2Rpbmc6IiBoZWFkZXIgZmllbGQgb24gZ3N0cmVhbWVyIHNvdXJjZSBlbGVtZW50IHRv
IGF2b2lkIHJlY2VpdmluZyB0aGUgd3Jvbmcgc2l6ZSB3aGVuIHJldHJpZXZpbmcgZGF0YQotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MzU0Ci0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KLQotICAgICAgICBBZGQgdGVzdCB0
byBjaGVjayB0aGF0IHZpZGVvIHJlcXVlc3RzIHdpbGwgc2VuZCBubyAiQWNjZXB0LUVuY29kaW5n
IiBoZWFkZXIuCi0KLSAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWFjY2VwdC1lbmNv
ZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tYWNjZXB0LWVuY29kaW5nLmNnaTogQWRkZWQuCi0gICAgICAgICogaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1hY2NlcHQtZW5jb2RpbmcuaHRtbDogQWRkZWQuCi0KLTIwMTMtMDktMDMgIEtyenlz
enRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0FYXVtBVEtdIEFk
ZGVkIHN1cHBvcnQgZm9yIHNvcnQgYW5kIGhlbHAgYXR0cmlidXRlcwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNDU2Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQ2hyaXMgRmxlaXphY2guCi0KLSAgICAgICAgU2hhcmluZyBhcmlhLXNvcnQuaHRtbCBz
cGVjaWZpYyBtYWMgdGVzdCB3aXRoIGVmbCBhbmQgZ3RrLgotICAgICAgICBDaGFuZ2luZyBzcGVj
aWZpYyBleHBlY3RhdGlvbnMgb2Ygc29tZSBhY2Nlc3NpYmlsaXR5IHRlc3RzLgotCi0gICAgICAg
ICogYWNjZXNzaWJpbGl0eS9hcmlhLXNvcnQtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS1zb3J0LWV4cGVjdGVkLnR4
dC4KLSAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtc29ydC5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS1zb3J0Lmh0bWwuCi0g
ICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgotICAgICAgICAqIHBs
YXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dDoKLSAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMi1leHBlY3Rl
ZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNl
bGwtc3BhbnMtZXhwZWN0ZWQudHh0OgotICAgICAgICAqIHBsYXRmb3JtL2VmbC13azIvYWNjZXNz
aWJpbGl0eS90YWJsZS1jZWxscy1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vZ3Rr
L2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMi1leHBlY3RlZC50eHQ6Ci0gICAgICAgICog
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1zcGFucy1leHBlY3RlZC50eHQ6
Ci0gICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMtZXhwZWN0
ZWQudHh0OgotCi0yMDEzLTA5LTAzICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29t
PgotCi0gICAgICAgIFtDU1MgUmVnaW9uc10gcG9zaXRpb246IGZpeGVkIGlzIGNvbXB1dGVkIHJl
bGF0aXZlIHRvIHRoZSBmaXJzdCByZWdpb24sIG5vdCB0aGUgdmlld3BvcnQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTE3NgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IERhdmlkIEh5YXR0LgotCi0gICAgICAgIEFkZGVkIG5ldyB0ZXN0cyBhbmQgY2hh
bmdlZCB0aGUgZXhpc3Rpbmcgb25lcyB0aGF0IHdlcmUgcmVseWluZyBvbiBpbmNvcnJlY3QgcG9z
aXRpb25pbmcKLSAgICAgICAgZm9yIGZpeGVkIGVsZW1lbnRzLgotCi0gICAgICAgICogZmFzdC9y
ZWdpb25zL2VsZW1lbnQtaW4tbmFtZWQtZmxvdy1hYnNvbHV0ZS1mcm9tLWZpeGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2VsZW1lbnQtaW4tbmFtZWQtZmxv
dy1hYnNvbHV0ZS1mcm9tLWZpeGVkLmh0bWw6IEFkZGVkLgotICAgICAgICAqIGZhc3QvcmVnaW9u
cy9lbGVtZW50LWluLW5hbWVkLWZsb3ctZml4ZWQtZnJvbS1hYnNvbHV0ZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9lbGVtZW50LWluLW5hbWVkLWZsb3ctZml4
ZWQtZnJvbS1hYnNvbHV0ZS5odG1sOiBBZGRlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZWxl
bWVudC1pbmZsb3ctZml4ZWQtZnJvbS1vdXRmbG93LXN0YXRpYy1leHBlY3RlZC50eHQ6IEFkZGVk
LgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9lbGVtZW50LWluZmxvdy1maXhlZC1mcm9tLW91dGZs
b3ctc3RhdGljLmh0bWw6IEFkZGVkLgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9lbGVtZW50LW91
dGZsb3ctc3RhdGljLWZyb20taW5mbG93LWZpeGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAg
ICAgICogZmFzdC9yZWdpb25zL2VsZW1lbnQtb3V0Zmxvdy1zdGF0aWMtZnJvbS1pbmZsb3ctZml4
ZWQuaHRtbDogQWRkZWQuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2ZpeGVkLWVsZW1lbnQtdHJh
bnNmb3JtZWQtcGFyZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogZmFzdC9yZWdp
b25zL2ZpeGVkLWVsZW1lbnQtdHJhbnNmb3JtZWQtcGFyZW50Lmh0bWw6IEFkZGVkLgotICAgICAg
ICAqIGZhc3QvcmVnaW9ucy9maXhlZC1pbi1uYW1lZC1mbG93LXNjcm9sbC1leHBlY3RlZC50eHQ6
IEFkZGVkLgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9maXhlZC1pbi1uYW1lZC1mbG93LXNjcm9s
bC5odG1sOiBBZGRlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZml4ZWQtaW5zaWRlLWZpeGVk
LWluLW5hbWVkLWZsb3ctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCi0gICAgICAgICogZmFzdC9yZWdp
b25zL2ZpeGVkLWluc2lkZS1maXhlZC1pbi1uYW1lZC1mbG93Lmh0bWw6IEFkZGVkLgotICAgICAg
ICAqIGZhc3QvcmVnaW9ucy9maXhlZC1pbnNpZGUtbmFtZWQtZmxvdy16SW5kZXgtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2ZpeGVkLWluc2lkZS1uYW1lZC1m
bG93LXpJbmRleC5odG1sOiBBZGRlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZml4ZWQtcG9z
LWVsZW0taW4tbmFtZWRmbG93LW5vcmVnaW9ucy1leHBlY3RlZC5odG1sOiBBZGRlZC4KLSAgICAg
ICAgKiBmYXN0L3JlZ2lvbnMvZml4ZWQtcG9zLWVsZW0taW4tbmFtZWRmbG93LW5vcmVnaW9ucy5o
dG1sOiBBZGRlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZml4ZWQtcG9zLWVsZW0taW4tcmVn
aW9uLWV4cGVjdGVkLmh0bWw6Ci0gICAgICAgICogZmFzdC9yZWdpb25zL2ZpeGVkLXBvcy1lbGVt
LWluLXJlZ2lvbi5odG1sOgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9maXhlZC1wb3MtcmVnaW9u
LWluLW5lc3RlZC1mbG93LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgotICAgICAgICAqIGZhc3QvcmVn
aW9ucy9maXhlZC1wb3MtcmVnaW9uLWluLW5lc3RlZC1mbG93Lmh0bWw6IEFkZGVkLgotCi0yMDEz
LTA5LTAyICBBbnRvbiBPYnpoaXJvdiAgPGEub2J6aGlyb3ZAc2Ftc3VuZy5jb20+Ci0KLSAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzk4MzUwPiBbR1RLXSBhY2Nlc3NpYmlsaXR5L2FyaWEt
aW52YWxpZC5odG1sIHRpbWVzIG91dAotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmlvIFNhbmNo
ZXogUHJhZGEuCi0KLSAgICAgICAgVW5za2lwcGVkIGFjY2Vzc2liaWxpdHkvYXJpYS1pbnZhbGlk
Lmh0bWwgd2hpY2ggaXMgcGFzc2luZyBub3cuCi0KLSAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9uczogUmVtb3ZlZCBwYXNzaW5nIHRlc3QuCi0gICAgICAgICogcGxhdGZvcm0v
Z3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBBZGRlZCB0ZXN0IHRpbWluZyBvdXQgaW4gV0syIG9u
bHkuCi0KLTIwMTMtMDktMDIgIMOBZMOhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1zemVnZWQuaHU+
Ci0KLSAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4gU2tpcCBzb21lIGZhaWxpbmcg
dGVzdHMuCi0KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zOgotCi0yMDEz
LTA5LTAyICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgVXNlIGVk
Z2VNb2RlPWR1cGxpY2F0ZSBmb3IgYmx1cnJpbmcgb24gZmlsdGVyKCkgZnVuY3Rpb24KLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU5MAotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgIEFkZGVkIHRlc3QgdG8g
Y2hlY2sgdGhhdCBmaWx0ZXIoPGltYWdlPiwgYmx1cig8dmFsdWU+KSkgdGFrZXMKLSAgICAgICAg
dGhlIGVkZ2VNb2RlICdkdXBsaWNhdGUnIGluc3RlYWQgb2Ygbm9uZS4KLQotICAgICAgICAqIGZh
c3QvZmlsdGVyLWltYWdlL2ZpbHRlci1pbWFnZS1ibHVyLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgot
ICAgICAgICAqIGZhc3QvZmlsdGVyLWltYWdlL2ZpbHRlci1pbWFnZS1ibHVyLmh0bWw6IEFkZGVk
LgotICAgICAgICAqIGZhc3QvZmlsdGVyLWltYWdlL3Jlc291cmNlcy9zdmctYmx1ci5zdmc6IEFk
ZGVkLgotICAgICAgICAqIGZhc3QvZmlsdGVyLWltYWdlL3Jlc291cmNlcy9zdmctbm9ibHVyLnN2
ZzogQWRkZWQuCi0KLTIwMTMtMDktMDIgIEdhYm9yIEFicmFoYW0gPGFicmhtQGluZi51LXN6ZWdl
ZC5odT4KLQotICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTk1Ci0KLSAgICAgICAgKiBw
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zOiBTa2lwcGluZyBmYWlsaW5nIHhzcy1ERU5JRUQg
dGVzdHMuCi0KLTIwMTMtMDktMDEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KLQot
ICAgICAgICBBZGQgZWRnZU1vZGUgYXR0cmlidHVlLgotCi0gICAgICAgIEFkZCAnZWRnZU1vZGUn
IGF0dHJpYnV0ZSB0byBTVkdGRUdhdXNzaWFuQmx1cgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTgyCi0KLSAgICAgICAgQWRkZWQgRE9NIGFuZCBT
VkdET00gdGVzdHMgZm9yIHRoZSBhdHRyaWJ1dGUgJ2VkZ2VNb2RlJy4KLSAgICAgICAgQWxzbyBh
ZGRlZCBhIHJlZnRlc3QgdG8gdGVzdCBlZGdlTW9kZT0nZHVwbGljYXRlJy4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBSb2IgQnVpcy4KLQotICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvZHluYW1p
Yy11cGRhdGVzL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC1zdmdkb20tZWRnZU1vZGUtcHJvcC1l
eHBlY3RlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LWRvbS1lZGdlTW9kZS1hdHRyLWV4cGVjdGVkLnR4dDogQWRkZWQu
Ci0gICAgICAgICogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQt
ZG9tLWVkZ2VNb2RlLWF0dHIuaHRtbDogQWRkZWQuCi0gICAgICAgICogc3ZnL2R5bmFtaWMtdXBk
YXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtc3ZnZG9tLWVkZ2VNb2RlLXByb3AtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC1zdmdkb20tZWRnZU1vZGUtcHJvcC5odG1sOiBBZGRlZC4KLSAgICAgICAg
KiBzdmcvZHluYW1pYy11cGRhdGVzL3NjcmlwdC10ZXN0cy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQtZG9tLWVkZ2VNb2RlLWF0dHIuanM6IEFkZGVkLgotICAgICAgICAocmVwYWludFRlc3QpOgot
ICAgICAgICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvc2NyaXB0LXRlc3RzL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC1zdmdkb20tZWRnZU1vZGUtcHJvcC5qczogQWRkZWQuCi0gICAgICAgIChyZXBh
aW50VGVzdCk6Ci0gICAgICAgICogc3ZnL2ZpbHRlcnMvc3ZnLWdhdXNzaWFuYmx1ci1lZGdlTW9k
ZS1kdXBsaWNhdGUtZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KLSAgICAgICAgKiBzdmcvZmlsdGVycy9z
dmctZ2F1c3NpYW5ibHVyLWVkZ2VNb2RlLWR1cGxpY2F0ZS5zdmc6IEFkZGVkLgotCi0yMDEzLTA5
LTAxICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+Ci0KLSAg
ICAgICAgVm9sdW1lIHNsaWRlciB2YWx1ZSBzaG91bGQgYmUgMCB3aGVuIGF1ZGlvIGlzIG11dGVk
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1NTMK
LQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCi0KLSAgICAgICAgQWRkZWQgdGVz
dCB0byBjaGVjayBpZiB0aGUgdm9sdW1lIHNsaWRlciB2YWx1ZSBpcyAwIHdoZW4gdGhlCi0gICAg
ICAgIGVsZW1lbnQgaXMgbXV0ZWQgZXZlbiBpZiB2b2x1bWUgaXMgc2V0IHRvIHNvbWV0aGluZyBl
bHNlLgotCi0gICAgICAgICogbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11
dGVkLmh0bWw6IEFkZGVkLgotCi0yMDEzLTA5LTAxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+Ci0KLSAgICAgICAgV2ViIEluc3BlY3RvcjogQSBsaXR0bGUgbW9yZSB0ZXN0
IGNsZWFudXAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDU3NQotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAg
ICBHaXZlIHRlc3RzIG5hbWVzIGFuZCByZW1vdmUgdW5uZWNlc3Nhcnkgc2NyaXB0IHR5cGUgYXR0
cmlidXRlcy4KLQotICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9yZW1vdmVC
cmVha3BvaW50LWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVi
dWdnZXIvcmVtb3ZlQnJlYWtwb2ludC5odG1sOgotICAgICAgICAqIGluc3BlY3Rvci1wcm90b2Nv
bC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWF1dG9Db250aW51ZS1leHBlY3RlZC50eHQ6Ci0gICAg
ICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYXV0b0NvbnRp
bnVlLmh0bWw6Ci0gICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFr
cG9pbnQtY29sdW1uLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wv
ZGVidWdnZXIvc2V0QnJlYWtwb2ludC1jb2x1bW4uaHRtbDoKLSAgICAgICAgKiBpbnNwZWN0b3It
cHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1jb25kaXRpb24tZXhwZWN0ZWQudHh0Ogot
ICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWNvbmRp
dGlvbi5odG1sOgotICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVh
a3BvaW50LWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdn
ZXIvc2V0QnJlYWtwb2ludC5odG1sOgotCi0yMDEzLTA5LTAxICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgRml4ZWQgdHlwbyBpbiBtZWRp
YS92aWRlby12b2x1bWUtc2xpZGVyLmh0bWwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMDU3OAotCi0gICAgICAgIFVucmV2aWV3ZWQuCi0KLSAgICAg
ICAgKiBtZWRpYS92aWRlby12b2x1bWUtc2xpZGVyLmh0bWw6IEZpeGVkIHR5cG8uCi0gICAgICAg
ICogcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLXZvbHVtZS1zbGlkZXItZXhwZWN0ZWQucG5nOgot
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9tZWRpYS92aWRlby12b2x1bWUtc2xpZGVyLWV4cGVjdGVk
LnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tdm9sdW1lLXNsaWRlci1l
eHBlY3RlZC5wbmc6Ci0gICAgICAgICogcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLXZvbHVtZS1z
bGlkZXItZXhwZWN0ZWQudHh0OiBOZXcKLSAgICAgICAgYmFzZWxpbmVzLgotCi0yMDEzLTA4LTMx
ICBSb2IgQnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KLQotICAgICAgICBYTUxTZXJpYWxpemVy
LWF0dHJpYnV0ZS1uYW1lc3BhY2UtcHJlZml4LWNvbmZsaWN0cyBjYW4ndCBwcm9kdWNlIHJlbGlh
YmxlIHJlc3VsdHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDQ5MAotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAg
ICBVbnNraXAgdGhlc2UgcHJldmlvdXNseSBmYWlsaW5nIHRlc3RzLgotCi0gICAgICAgICogVGVz
dEV4cGVjdGF0aW9uczoKLQotMjAxMy0wOC0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KLQotICAgICAgICBGaXggdGhlIE1hYyByZXN1bHRzLgotCi0gICAgICAgICog
cGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLW9iamVjdC1maXQtZXhwZWN0ZWQu
dHh0OgotCi0yMDEzLTA4LTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgotCi0gICAgICAgIFZpZGVvIHdpdGggb2JqZWN0LWZpdDogY292ZXIgY2FuIHNwaWxsIG91dHNp
ZGUgdGhlIGJveAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTIxMDMKLQotICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCi0gICAgICAgIAot
ICAgICAgICBUZXN0IGNhc2VzIGZvciBkaXJlY3RseSBjb21wb3NpdGVkIGltYWdlIHdpdGggb2Jq
ZWN0LWZpdCwgdGhlIHNhbWUgd2l0aAotICAgICAgICByZWZsZWN0aW9ucywgYW5kIG9uZSB3aXRo
IHZpZGVvLgotICAgICAgICAKLSAgICAgICAgVGVzdHMgZHVtcCBjb250ZW50IEdyYXBoaWNzTGF5
ZXJzLCBzbyBoYXZlIHBsYXRmb3JtLXNwZWNpZmljIHJlc3VsdHMuCi0KLSAgICAgICAgKiBjb21w
b3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLW9iamVjdC1maXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KLSAgICAgICAgKiBjb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLW9iamVjdC1maXQu
aHRtbDogQWRkZWQuCi0gICAgICAgICogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvZGlyZWN0LWlt
YWdlLW9iamVjdC1maXQtcmVmbGVjdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICog
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvZGlyZWN0LWltYWdlLW9iamVjdC1maXQtcmVmbGVjdGVk
Lmh0bWw6IEFkZGVkLgotICAgICAgICAqIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLW9iamVjdC1m
aXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBjb21wb3NpdGluZy92aWRlby92aWRl
by1vYmplY3QtZml0Lmh0bWw6IEFkZGVkLgotICAgICAgICAqIG1lZGlhL3ZpZGVvLW9iamVjdC1m
aXQtY2hhbmdlLmh0bWw6IEZpeGVkCi0gICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnM6IFVuc2tpcCB0d28gdGVzdHMuCi0gICAgICAgICogcGxhdGZvcm0vbWFjL2NvbXBvc2l0
aW5nL2ltYWdlcy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1leHBlY3RlZC50eHQ6IEFkZGVkLgot
ICAgICAgICAqIHBsYXRmb3JtL21hYy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9kaXJlY3QtaW1h
Z2Utb2JqZWN0LWZpdC1yZWZsZWN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tb2JqZWN0LWZpdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgotCi0yMDEzLTA4LTMwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+
Ci0KLSAgICAgICAgRml4IGV4cGVjdGVkIG91dHB1dAotCi0gICAgICAgICogZmFzdC9qcy9iYXNp
Yy1zZXQtZXhwZWN0ZWQudHh0OgotCi0yMDEzLTA4LTMwICBEZWFuIEphY2tzb24gIDxkaW5vQGFw
cGxlLmNvbT4KLQotICAgICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzEyMDQ5MAotICAgICAgICBT
a2lwIHNvbWUgWE1MIG5hbWVzcGFjZSBzZXJpYWxpemF0aW9uIHRlc3RzIHRlbXBvcmFyaWx5Lgot
Ci0gICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0aGVzZSBvbiBkZWJ1ZyBidWlsZHM6
Ci0gICAgICAgIGZhc3QvZG9tL1hNTFNlcmlhbGl6ZXItYXR0cmlidXRlLW5hbWVzcGFjZS1wcmVm
aXgtY29uZmxpY3RzLmh0bWwKLSAgICAgICAgZmFzdC9kb20vWE1MU2VyaWFsaXplci1zYW1lLXBy
ZWZpeC1kaWZmZXJlbnQtbmFtZXNwYWNlcy1jb25mbGljdC5odG1sCi0gICAgICAgIGZhc3QvZG9t
L1hNTFNlcmlhbGl6ZXItc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLW5vLXByZWZpeC5odG1sCi0g
ICAgICAgIHN2Zy9jdXN0b20veGxpbmstcHJlZml4LWdlbmVyYXRpb24taW4tYXR0cmlidXRlcy5o
dG1sCi0KLTIwMTMtMDgtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAg
ICAgICBJbXBsZW1lbnQgRVM2IFNldCBjbGFzcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTQ5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAg
UGl6bG8uCi0KLSAgICAgICAgQWRkIHRlc3RzCi0KLSAgICAgICAgKiBmYXN0L2pzL2Jhc2ljLXNl
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGZhc3QvanMvYmFzaWMtc2V0Lmh0bWw6
IEFkZGVkLgotICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLXNldC5qczogQWRk
ZWQuCi0gICAgICAgIChzZXQgbmV3KToKLSAgICAgICAgKG90aGVyU3RyaW5nLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnNldCBhZGQpOgotICAgICAgICAodHJ5LnNldCBmb3JFYWNoKToKLSAgICAgICAg
KHNldCBmb3JFYWNoKToKLSAgICAgICAgKHNldCBnYyk6Ci0KIDIwMTMtMDgtMzAgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBp
bnNwZWN0b3Ivc3RvcmFnZS1wYW5lbC1kb20tc3RvcmFnZS11cGRhdGUuaHRtbCBpcyBmbGFrZXkg
b24gdGhlIGJvdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFhZmFhZWIuLmM0NGU4MDIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMzgsMyArMzgsNCBAQCB3ZWJraXQub3JnL2IvMTE5MDk0IGZhc3Qv
Zm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQuaHRtbCBbIENyYXNoIFBhcwog
IyBUaGlzIHRlc3Qgd2lsbCBydW4gc2xvd2x5IGluIGRlYnVnIG1vZGUsIGJ1dCBpcyBwbGVudHkg
ZmFzdCBpbiByZWxlYXNlLgogWyBEZWJ1ZyBdIGZhc3QvanMvcmVncmVzcy9lbXNjcmlwdGVuLW1l
bW9wcy5odG1sIFsgU2tpcCBdCiAKK3dlYmtpdC5vcmcvYi8xMjA0OTAgZmFzdC9kb20vWE1MU2Vy
aWFsaXplci1hdHRyaWJ1dGUtbmFtZXNwYWNlLXByZWZpeC1jb25mbGljdHMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc29y
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc29ydC1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOWFiZGIuLjAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNvcnQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotYnV0dG9uCi1jb2x1bW4KLXJvdwotVGhpcyB0
ZXN0cyB0aGF0IGFyaWEtc29ydCB3aWxsIGJlIGV4cG9zZWQgY29ycmVjdGx5IHRvIHRoZSBNYWMg
YWNjZXNzaWJpbGl0eSBBUEkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNT
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LnN0cmluZ0F0dHJpYnV0ZVZh
bHVlKCdBWFNvcnREaXJlY3Rpb24nKSBpcyAnQVhVbmtub3duU29ydERpcmVjdGlvbicKLVBBU1Mg
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuc3RyaW5nQXR0cmlidXRlVmFs
dWUoJ0FYU29ydERpcmVjdGlvbicpIGlzICdBWEFzY2VuZGluZ1NvcnREaXJlY3Rpb24nCi1QQVNT
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LnN0cmluZ0F0dHJpYnV0ZVZh
bHVlKCdBWFNvcnREaXJlY3Rpb24nKSBpcyAnQVhEZXNjZW5kaW5nU29ydERpcmVjdGlvbicKLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc29ydC5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNvcnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzFlYjMwNy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Fy
aWEtc29ydC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Ci0KLTxkaXYgdGFiaW5kZXg9IjAiIGlkPSJidXR0b24i
IHJvbGU9ImJ1dHRvbiI+YnV0dG9uPC9kaXY+Ci0KLTxkaXYgcm9sZT0iZ3JpZCI+Ci08ZGl2IHJv
bGU9InJvdyI+Ci08ZGl2IHJvbGU9ImNvbHVtbmhlYWRlciIgYXJpYS1zb3J0PSJhc2NlbmRpbmci
IHRhYmluZGV4PSIwIiBpZD0iY29sdW1uIj5jb2x1bW48L2Rpdj4KLTxkaXYgcm9sZT0icm93aGVh
ZGVyIiBhcmlhLXNvcnQ9ImRlc2NlbmRpbmciIHRhYmluZGV4PSIwIiBpZD0icm93Ij5yb3c8L2Rp
dj4gCi08L2Rpdj4KLTwvZGl2PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0PgotCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhhdCBhcmlhLXNvcnQgd2lsbCBiZSBleHBvc2VkIGNvcnJlY3RseSB0byB0aGUgTWFjIGFj
Y2Vzc2liaWxpdHkgQVBJLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewotCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24iKS5mb2N1
cygpOwotICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYU29ydERpcmVjdGlvbicpIiwgIidBWFVua25v
d25Tb3J0RGlyZWN0aW9uJyIpOwotCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b2x1bW4iKS5mb2N1cygpOwotICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYU29ydERpcmVjdGlvbicp
IiwgIidBWEFzY2VuZGluZ1NvcnREaXJlY3Rpb24nIik7Ci0KLSAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJvdyIpLmZvY3VzKCk7Ci0gICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhTb3J0
RGlyZWN0aW9uJykiLCAiJ0FYRGVzY2VuZGluZ1NvcnREaXJlY3Rpb24nIik7Ci0gICAgfQotCi08
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLW9iamVjdC1maXQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1vYmplY3QtZml0
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ3YTFhM2QuLjAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1v
YmplY3QtZml0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQot
KEdyYXBoaWNzTGF5ZXIKLSAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQotICAoY2hpbGRyZW4gMQot
ICAgIChHcmFwaGljc0xheWVyCi0gICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCi0gICAgICAo
Y29udGVudHNPcGFxdWUgMSkKLSAgICAgIChjaGlsZHJlbiAzCi0gICAgICAgIChHcmFwaGljc0xh
eWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDU4LjAwIDIwLjAwKQotICAgICAgICAgIChib3VuZHMg
MjAwLjAwIDEyMC4wMCkKLSAgICAgICAgKQotICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAg
ICAgIChwb3NpdGlvbiA1OC4wMCAxNjAuMDApCi0gICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMTIw
LjAwKQotICAgICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0
aW9uIDU4LjAwIDMwMC4wMCkKLSAgICAgICAgICAoYm91bmRzIDIwMC4wMCAxMjAuMDApCi0gICAg
ICAgICkKLSAgICAgICkKLSAgICApCi0gICkKLSkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1vYmplY3QtZml0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLW9iamVjdC1maXQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJiMjI3ZTEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1vYmplY3QtZml0Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci0gICAgPHN0eWxlPgotICAgICAgICBpbWcgewotICAgICAgICAgICAgZGlzcGxheTogYmxv
Y2s7Ci0gICAgICAgICAgICBoZWlnaHQ6IDEyMHB4OwotICAgICAgICAgICAgd2lkdGg6IDIwMHB4
OwotICAgICAgICAgICAgbWFyZ2luOiAyMHB4IDUwcHg7Ci0gICAgICAgIH0KLSAgICAgICAgLmNv
bXBvc2l0ZWQgewotICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7
Ci0gICAgICAgIH0KLSAgICA8L3N0eWxlPgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0g
ICAgICAgIGZ1bmN0aW9uIGRvVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHRzJykuaW5uZXJUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9j
dW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0NPTlRFTlRfTEFZRVJTKTsKLSAg
ICAgICAgfQotICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwg
ZmFsc2UpOwotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPGltZyBjbGFzcz0i
Y29tcG9zaXRlZCIgc3JjPSIuLi8uLi9mYXN0L2Nzcy9yZXNvdXJjZXMvY2lyY2xlcy1sYW5kc2Nh
cGUucG5nIiBzdHlsZT0ib2JqZWN0LWZpdDogY292ZXIiPjwvZGl2PgotICAgIDxpbWcgY2xhc3M9
ImNvbXBvc2l0ZWQiIHNyYz0iLi4vLi4vZmFzdC9jc3MvcmVzb3VyY2VzL2NpcmNsZXMtbGFuZHNj
YXBlLnBuZyIgc3R5bGU9Im9iamVjdC1maXQ6IGNvbnRhaW4iPjwvZGl2PgotICAgIDxpbWcgY2xh
c3M9ImNvbXBvc2l0ZWQiIHNyYz0iLi4vLi4vZmFzdC9jc3MvcmVzb3VyY2VzL2NpcmNsZXMtbGFu
ZHNjYXBlLnBuZyIgc3R5bGU9Im9iamVjdC1maXQ6IG5vbmUiPjwvZGl2PgotPHByZSBpZD0icmVz
dWx0cyI+PC9wcmU+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9yZWZsZWN0aW9ucy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1yZWZsZWN0ZWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvZGlyZWN0
LWltYWdlLW9iamVjdC1maXQtcmVmbGVjdGVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzYwOTg3OS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9yZWZsZWN0aW9ucy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1yZWZsZWN0ZWQtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotICAgIAotKEdyYXBoaWNzTGF5
ZXIKLSAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQotICAoY2hpbGRyZW4gMQotICAgIChHcmFwaGlj
c0xheWVyCi0gICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCi0gICAgICAoY29udGVudHNPcGFx
dWUgMSkKLSAgICAgIChjaGlsZHJlbiAzCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAg
ICAgKHBvc2l0aW9uIDI4LjAwIDI4LjAwKQotICAgICAgICAgIChib3VuZHMgMjAwLjAwIDEyMC4w
MCkKLSAgICAgICAgICAocmVwbGljYSBsYXllcikKLSAgICAgICAgICAgIChHcmFwaGljc0xheWVy
Ci0gICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDEyMC4wMCkKLSAgICAgICAgICAgICAgKHRy
YW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgLTEuMDAgMC4wMCAwLjAwXSBbMC4w
MCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMTQwLjAwIDAuMDAgMS4wMF0pCi0gICAgICAgICAgICAg
IChyZXBsaWNhdGVkIGxheWVyKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgICAgIChH
cmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDI3Mi4wMCAyOC4wMCkKLSAgICAgICAg
ICAoYm91bmRzIDIwMC4wMCAxMjAuMDApCi0gICAgICAgICAgKHJlcGxpY2EgbGF5ZXIpCi0gICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgICAgICAoYm91bmRzIDIwMC4wMCAxMjAu
MDApCi0gICAgICAgICAgICAgICh0cmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAw
IC0xLjAwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDE0MC4wMCAwLjAw
IDEuMDBdKQotICAgICAgICAgICAgICAocmVwbGljYXRlZCBsYXllcikKLSAgICAgICAgICAgICkK
LSAgICAgICAgKQotICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiA1
MTYuMDAgMjguMDApCi0gICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMTIwLjAwKQotICAgICAgICAg
IChyZXBsaWNhIGxheWVyKQotICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAg
ICAgKGJvdW5kcyAyMDAuMDAgMTIwLjAwKQotICAgICAgICAgICAgICAodHJhbnNmb3JtIFsxLjAw
IDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAtMS4wMCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAw
LjAwXSBbMC4wMCAxNDAuMDAgMC4wMCAxLjAwXSkKLSAgICAgICAgICAgICAgKHJlcGxpY2F0ZWQg
bGF5ZXIpCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICkKLSAgICApCi0gICkKLSkK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvZGlyZWN0
LWltYWdlLW9iamVjdC1maXQtcmVmbGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9yZWZsZWN0aW9ucy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1yZWZsZWN0ZWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUyMjBjOC4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1yZWZs
ZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c3R5bGU+Ci0gICAgICAgIGltZyB7Ci0gICAgICAgICAg
ICBoZWlnaHQ6IDEyMHB4OwotICAgICAgICAgICAgd2lkdGg6IDIwMHB4OwotICAgICAgICAgICAg
bWFyZ2luOiAyMHB4OwotICAgICAgICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDogYmVsb3cgMjBw
eDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW1nOmhvdmVyIHsKLSAgICAgICAgICAg
IGhlaWdodDogMTYwcHg7Ci0gICAgICAgIH0KLQotICAgICAgICAuY29tcG9zaXRlZCB7Ci0gICAg
ICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKLSAgICAgICAgfQotICAg
IDwvc3R5bGU+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLSAgICAgICAgZnVuY3Rpb24g
ZG9UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0g
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKS5pbm5lclRl
eHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCwgaW50ZXJuYWxz
LkxBWUVSX1RSRUVfSU5DTFVERVNfQ09OVEVOVF9MQVlFUlMpOwotICAgICAgICB9Ci0gICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7Ci0gICAgPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8aW1nIGNsYXNzPSJjb21wb3NpdGVkIiBzcmM9
Ii4uLy4uL2Zhc3QvY3NzL3Jlc291cmNlcy9jaXJjbGVzLWxhbmRzY2FwZS5wbmciIHN0eWxlPSJv
YmplY3QtZml0OiBjb3ZlciI+PC9kaXY+Ci0gICAgPGltZyBjbGFzcz0iY29tcG9zaXRlZCIgc3Jj
PSIuLi8uLi9mYXN0L2Nzcy9yZXNvdXJjZXMvY2lyY2xlcy1sYW5kc2NhcGUucG5nIiBzdHlsZT0i
b2JqZWN0LWZpdDogY29udGFpbiI+PC9kaXY+Ci0gICAgPGltZyBjbGFzcz0iY29tcG9zaXRlZCIg
c3JjPSIuLi8uLi9mYXN0L2Nzcy9yZXNvdXJjZXMvY2lyY2xlcy1sYW5kc2NhcGUucG5nIiBzdHls
ZT0ib2JqZWN0LWZpdDogbm9uZSI+PC9kaXY+Ci08cHJlIGlkPSJyZXN1bHRzIj48L3ByZT4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVv
L3ZpZGVvLW9iamVjdC1maXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
dmlkZW8vdmlkZW8tb2JqZWN0LWZpdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdjMGZlNzAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
dmlkZW8vdmlkZW8tb2JqZWN0LWZpdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0
OSArMCwwIEBACi0gICAKLShHcmFwaGljc0xheWVyCi0gIChib3VuZHMgNzg1LjAwIDc3NS4wMCkK
LSAgKGNoaWxkcmVuIDEKLSAgICAoR3JhcGhpY3NMYXllcgotICAgICAgKGJvdW5kcyA3ODUuMDAg
Nzc1LjAwKQotICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAoY2hpbGRyZW4gNgotICAg
ICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiAxMy4wMCAxMy4wMCkKLSAg
ICAgICAgICAoYm91bmRzIDEyNC4wMCAyMDQuMDApCi0gICAgICAgICAgKGNvbnRlbnRzT3BhcXVl
IDEpCi0gICAgICAgICAgKGRyYXdzQ29udGVudCAxKQotICAgICAgICApCi0gICAgICAgIChHcmFw
aGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDE1MS4wMCAxMy4wMCkKLSAgICAgICAgICAo
Ym91bmRzIDEyNC4wMCAyMDQuMDApCi0gICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAg
ICAgICAgKGRyYXdzQ29udGVudCAxKQotICAgICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVy
Ci0gICAgICAgICAgKHBvc2l0aW9uIDI4OS4wMCAxMy4wMCkKLSAgICAgICAgICAoYm91bmRzIDEy
NC4wMCAyMDQuMDApCi0gICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAgICAgKGRy
YXdzQ29udGVudCAxKQotICAgICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAg
ICAgKHBvc2l0aW9uIDEzLjAwIDIzMS4wMCkKLSAgICAgICAgICAoYm91bmRzIDM1NC4wMCAzMDQu
MDApCi0gICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAgICAgKGRyYXdzQ29udGVu
dCAxKQotICAgICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0
aW9uIDEzLjAwIDU2OS4wMCkKLSAgICAgICAgICAoYm91bmRzIDQwNC4wMCAxODQuMDApCi0gICAg
ICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAgICAgKGRyYXdzQ29udGVudCAxKQotICAg
ICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDQzMS4w
MCA1NDkuMDApCi0gICAgICAgICAgKGJvdW5kcyAxMjQuMDAgMjA0LjAwKQotICAgICAgICAgIChj
b250ZW50c09wYXF1ZSAxKQotICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKLSAgICAgICAgKQot
ICAgICAgKQotICAgICkKLSAgKQotKQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy92aWRlby92aWRlby1vYmplY3QtZml0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy92aWRlby92aWRlby1vYmplY3QtZml0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDZmYmEzNmEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8v
dmlkZW8tb2JqZWN0LWZpdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHN0eWxlPgotICB2aWRlbyB7Ci0vKiAgICBk
aXNwbGF5OiBibG9jazsqLwotICAgIHdpZHRoOiAxMjBweDsKLSAgICBoZWlnaHQ6IDIwMHB4Owot
ICAgIG1hcmdpbjogNXB4OwotICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsdWU7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JheTsKLSAgfQotICAKLSAgLmJpZyB7Ci0gICAgICBoZWlnaHQ6IDMwMHB4
OwotICAgICAgd2lkdGg6IDM1MHB4OwotICB9Ci0gIC5zbWFsbGVyIHsKLSAgICAgIGhlaWdodDog
MTgwcHg7Ci0gICAgICB3aWR0aDogNDAwcHg7Ci0gIH0KLTwvc3R5bGU+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vbWVkaWEvbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
aW5pdCgpCi0gICAgewotICAgICAgICBzZXRTcmNCeVRhZ05hbWUoInZpZGVvIiwgZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAiLi4vLi4vbWVkaWEvY29udGVudC90ZXN0IikpOwotCi0gICAgICAgIHZh
ciB0b3RhbENvdW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJykubGVu
Z3RoOwotICAgICAgICB2YXIgY291bnQgPSB0b3RhbENvdW50OwotICAgICAgICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjYW5wbGF5dGhyb3VnaCIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgIGlmICghLS1jb3VudCkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzJykuaW5uZXJUZXh0ID0g
d2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlF
Ul9UUkVFX0lOQ0xVREVTX0NPTlRFTlRfTEFZRVJTKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgICAgICAgICB9LCB0b3RhbENv
dW50ICogMTUwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwgdHJ1ZSk7Ci0KLSAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ0ZBSUwnKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICAgICAgICAgIH0sIDE1MDApOwotICAgICAgICB9Ci0gICAgfQotPC9zY3JpcHQ+Ci0KLTwvaGVh
ZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpOyI+Ci0gICAgPHZpZGVvIHN0eWxlPSJvYmplY3QtZml0
OiBmaWxsIj48L3ZpZGVvPgotICAgIDx2aWRlbyBzdHlsZT0ib2JqZWN0LWZpdDogY292ZXIiPjwv
dmlkZW8+Ci0gICAgPHZpZGVvIHN0eWxlPSJvYmplY3QtZml0OiBjb250YWluIj48L3ZpZGVvPgot
ICAgIDx2aWRlbyBjbGFzcz0iYmlnIiBzdHlsZT0ib2JqZWN0LWZpdDogc2NhbGUtZG93biI+PC92
aWRlbz4KLSAgICA8dmlkZW8gY2xhc3M9InNtYWxsZXIiIHN0eWxlPSJvYmplY3QtZml0OiBzY2Fs
ZS1kb3duIj48L3ZpZGVvPgotICAgIDx2aWRlbyBzdHlsZT0ib2JqZWN0LWZpdDogbm9uZSI+PC92
aWRlbz4KLTxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLWNvbHVtbi1y
b3ctZ2V0LXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9ncmlkLWl0ZW0tY29sdW1uLXJvdy1nZXQtc2V0LWV4cGVjdGVkLnR4dAppbmRleCBmYTAxYWU0
Li4wNTg4OGFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWl0ZW0tY29sdW1uLXJvdy1nZXQtc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tY29sdW1uLXJvdy1nZXQtc2V0LWV4cGVj
dGVkLnR4dApAQCAtNzYsMjQgKzc2LDYgQEAgUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVt
V2l0aE5vU3BhY2VFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC0KIFBBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbVdpdGhOb1NwYWNlRWxlbWVudCwgJycpLmdldFByb3Bl
cnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiNSAvIGF1dG8iCiBQQVNTIGdldENvbXB1
dGVkU3R5bGUoZ3JpZEl0ZW1XaXRoTm9TcGFjZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgIjUiCiBQQVNTIGdldENvbXB1dGVkU3R5bGUo
Z3JpZEl0ZW1XaXRoTm9TcGFjZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LWdyaWQtcm93LWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVt
V2l0aFN0cmluZywgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBp
cyAiMSBmaXJzdCAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW1XaXRoU3Ry
aW5nLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlz
ICIxIGZpcnN0IgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtV2l0aFN0cmluZywgJycp
LmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tZW5kJykgaXMgImF1dG8iCi1Q
QVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW1XaXRoU3RyaW5nLCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlzICIxIGxhc3QgLyBhdXRvIgotUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGdyaWRJdGVtV2l0aFN0cmluZywgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJr
aXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAiMSBsYXN0IgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdy
aWRJdGVtV2l0aFN0cmluZywgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ct
ZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW1XaXRoU3BhblN0
cmluZywgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiMSAv
IHNwYW4gMSBmaXJzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbVdpdGhTcGFuU3Ry
aW5nLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlz
ICIxIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtV2l0aFNwYW5TdHJpbmcsICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLWVuZCcpIGlzICJzcGFuIDEgZmly
c3QiCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW1XaXRoU3BhblN0cmluZywgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiLTEgLyBzcGFuIDEgbGFzdCIK
LVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbVdpdGhTcGFuU3RyaW5nLCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1zdGFydCcpIGlzICItMSIKLVBBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShncmlkSXRlbVdpdGhTcGFuU3RyaW5nLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAic3BhbiAxIGxhc3QiCi1QQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZEl0ZW1XaXRoU3Bhbk51bWJlclN0cmluZywgJycpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiMSAvIHNwYW4gMyBmaXJzdCIKLVBBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShncmlkSXRlbVdpdGhTcGFuTnVtYmVyU3RyaW5nLCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlzICIxIgotUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRJdGVtV2l0aFNwYW5OdW1iZXJTdHJpbmcsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtY29sdW1uLWVuZCcpIGlzICJzcGFuIDMgZmlyc3QiCi1QQVNTIGdldENv
bXB1dGVkU3R5bGUoZ3JpZEl0ZW1XaXRoU3Bhbk51bWJlclN0cmluZywgJycpLmdldFByb3BlcnR5
VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiLTEgLyBzcGFuIDIgbGFzdCIKLVBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShncmlkSXRlbVdpdGhTcGFuTnVtYmVyU3RyaW5nLCAnJykuZ2V0UHJvcGVy
dHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1zdGFydCcpIGlzICItMSIKLVBBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkSXRlbVdpdGhTcGFuTnVtYmVyU3RyaW5nLCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAic3BhbiAyIGxhc3QiCiAKIFRlc3QgdGhlIGlu
aXRpYWwgdmFsdWUKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVy
dHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbicpIGlzICdhdXRvIC8gYXV0bycKQEAgLTE1OCwz
MCArMTQwLDYgQEAgUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVy
dHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1lbmQnKQogUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlzICI1
IC8gc3BhbiAxIgogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVy
dHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1zdGFydCcpIGlzICI1IgogUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1l
bmQnKSBpcyAic3BhbiAxIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbicpIGlzICJzcGFuIDEgZmlyc3QgLyAz
IgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlzICJzcGFuIDEgZmlyc3QiCi1QQVNTIGdldENv
bXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
Y29sdW1uLWVuZCcpIGlzICIzIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJyku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlzICI1IC8gc3BhbiAxIGxhc3Qi
Ci1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgIjUiCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3Jp
ZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVuZCcpIGlzICJz
cGFuIDEgbGFzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3Bl
cnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiMSBmaXJzdCAvIDEgbGFzdCIKLVBB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJr
aXQtZ3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAiMSBmaXJzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tZW5k
JykgaXMgIjEgbGFzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiMSBuYXYgLyBzcGFuIDEgbGFzdCIK
LVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAiMSBuYXYiCi1QQVNTIGdldENvbXB1dGVkU3R5bGUo
Z3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVuZCcpIGlz
ICJzcGFuIDEgbGFzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiMyBmaXJzdCAvIDIgbGFzdCIK
LVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAiMyBmaXJzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4t
ZW5kJykgaXMgIjIgbGFzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiNSBuYXYgLyBzcGFuIDcgbGFz
dCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAiNSBuYXYiCi1QQVNTIGdldENvbXB1dGVkU3R5
bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVuZCcp
IGlzICJzcGFuIDcgbGFzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAic3BhbiAzIGZpcnN0IC8g
LTMgbGFzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5
VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAic3BhbiAzIGZpcnN0IgotUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLWNvbHVtbi1lbmQnKSBpcyAiLTMgbGFzdCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShn
cmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAic3Bh
biAyIGxhc3QgLyAtMSBuYXYiCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgInNwYW4gMiBsYXN0
IgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAiLTEgbmF2IgogCiBUZXN0IHNldHRpbmcgZ3JpZC1j
b2x1bW4gYW5kIGdyaWQtcm93IGJhY2sgdG8gJ2F1dG8nIHRocm91Z2ggSlMKIFBBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNv
bHVtbicpIGlzICcxOCAvIDE5JwpAQCAtMjcwLDEzOCArMjI4LDYgQEAgUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVt
bi1lbmQnKQogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlzICJhdXRvIC8gYXV0byIKIFBBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ct
c3RhcnQnKSBpcyAiYXV0byIKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctZW5kJykgaXMgImF1dG8iCi1QQVNTIGdl
dENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtY29sdW1uJykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJ
dGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlz
ICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cn
KSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgImF1dG8iCi1QQVNT
IGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LWdyaWQtcm93LWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVt
LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbicpIGlzICJhdXRvIC8g
YXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1
bW4tZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93JykgaXMgImF1dG8gLyBhdXRvIgotUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLXJvdy1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJ
dGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAiYXV0
byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1u
LXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLWVuZCcpIGlzICJhdXRvIgotUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLXJvdycpIGlzICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlk
SXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAi
YXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1yb3ctZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5
bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uJykg
aXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlzICJhdXRvIgotUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLWNvbHVtbi1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlk
SXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiYXV0byAv
IGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVu
ZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbicpIGlzICJhdXRvIC8gYXV0byIKLVBBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlk
SXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tZW5kJykgaXMg
ImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtcm93JykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1z
dGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1jb2x1bW4nKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0
ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLXN0YXJ0JykgaXMg
ImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtY29sdW1uLWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycp
IGlzICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAiYXV0byIKLVBBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1yb3ctZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0s
ICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uJykgaXMgImF1dG8gLyBh
dXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVt
bi1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNT
IGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LWdyaWQtcm93LXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0
ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVuZCcpIGlzICJhdXRv
IgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLWNvbHVtbicpIGlzICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4t
c3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tZW5kJykgaXMgImF1dG8iCi1QQVNT
IGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LWdyaWQtcm93JykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJ
dGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1zdGFydCcpIGlzICJh
dXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBp
cyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLXN0YXJ0JykgaXMgImF1dG8iCi1QQVNT
IGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LWdyaWQtY29sdW1uLWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJ
dGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlzICJhdXRvIC8g
YXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctZW5k
JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uJykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLWNvbHVtbi1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJ
dGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1lbmQnKSBpcyAi
YXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LXN0
YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRD
b21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LWNvbHVtbicpIGlzICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRl
bSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAi
YXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93Jykg
aXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXJvdy1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwg
JycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiYXV0byAvIGF1
dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtY29sdW1uLXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1u
LWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlzICJhdXRvIC8gYXV0byIKLVBBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1yb3ctc3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRl
bSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctZW5kJykgaXMgImF1dG8i
Ci1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtY29sdW1uJykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0
eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1z
dGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1lbmQnKSBpcyAiYXV0byIKLVBBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1yb3cnKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0
ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgImF1
dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtcm93LWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbicpIGlz
ICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAiYXV0byIKLVBBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1jb2x1bW4tZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0
ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93JykgaXMgImF1dG8gLyBh
dXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXJvdy1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0
eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1lbmQn
KSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3Bl
cnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdl
dENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtY29sdW1uLXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0
ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLWVuZCcpIGlzICJh
dXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlzICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctc3Rh
cnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENv
bXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
Y29sdW1uJykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVt
LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlzICJh
dXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBp
cyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdl
dENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtcm93LWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAn
JykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbicpIGlzICJhdXRvIC8gYXV0
byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC1jb2x1bW4tc3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4t
ZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93JykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXJvdy1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVt
LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAiYXV0byIK
LVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC1jb2x1bW4nKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5
bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLXN0
YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLWVuZCcpIGlzICJhdXRvIgotUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXJvdycpIGlzICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRl
bSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAiYXV0
byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC1yb3ctZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUo
Z3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uJykgaXMg
ImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLWNvbHVtbi1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRl
bSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiYXV0byAvIGF1
dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtcm93LXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5
bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVuZCcp
IGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVy
dHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbicpIGlzICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1jb2x1bW4tc3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRl
bSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW4tZW5kJykgaXMgImF1
dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtcm93JykgaXMgImF1dG8gLyBhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0
eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1zdGFy
dCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdy1lbmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1j
b2x1bW4nKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0s
ICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uLXN0YXJ0JykgaXMgImF1
dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtY29sdW1uLWVuZCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0
eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvdycpIGlz
ICJhdXRvIC8gYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3ctc3RhcnQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1yb3ctZW5kJykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcn
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1uJykgaXMgImF1dG8gLyBhdXRv
IgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLWNvbHVtbi1zdGFydCcpIGlzICJhdXRvIgotUEFTUyBnZXRDb21wdXRlZFN0
eWxlKGdyaWRJdGVtLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbi1l
bmQnKSBpcyAiYXV0byIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkSXRlbSwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3cnKSBpcyAiYXV0byAvIGF1dG8iCi1QQVNTIGdl
dENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0sICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtcm93LXN0YXJ0JykgaXMgImF1dG8iCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEl0ZW0s
ICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93LWVuZCcpIGlzICJhdXRvIgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tY29sdW1uLXJv
dy1nZXQtc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0
ZW0tY29sdW1uLXJvdy1nZXQtc2V0Lmh0bWwKaW5kZXggYmZjMTBhMS4uOTUwZTJiYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLWNvbHVtbi1y
b3ctZ2V0LXNldC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dy
aWQtaXRlbS1jb2x1bW4tcm93LWdldC1zZXQuaHRtbApAQCAtNTEsMTggKzUxLDYgQEAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IGF1dG8vMTsKICAgICAt
d2Via2l0LWdyaWQtcm93OiA1L2F1dG87CiB9Ci0uZ3JpZEl0ZW1XaXRoU3RyaW5nIHsKLSAgICAt
d2Via2l0LWdyaWQtY29sdW1uOiAiZmlyc3QiOwotICAgIC13ZWJraXQtZ3JpZC1yb3c6ICJsYXN0
IjsKLX0KLS5ncmlkSXRlbVdpdGhTcGFuU3RyaW5nIHsKLSAgICAtd2Via2l0LWdyaWQtY29sdW1u
OiAxIC9zcGFuICJmaXJzdCI7Ci0gICAgLXdlYmtpdC1ncmlkLXJvdzogLTEgLyBzcGFuICJsYXN0
IjsKLX0KLS5ncmlkSXRlbVdpdGhTcGFuTnVtYmVyU3RyaW5nIHsKLSAgICAtd2Via2l0LWdyaWQt
Y29sdW1uOiAxIC9zcGFuIDMgImZpcnN0IjsKLSAgICAtd2Via2l0LWdyaWQtcm93OiAtMSAvICJs
YXN0IiAyIHNwYW4gOwotfQogPC9zdHlsZT4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgpAQCAtODAsOSArNjgsNiBAQCBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCiA8ZGl2IGNsYXNzPSJncmlkSXRlbVdpdGgyT25seVNwYW4iIGlk
PSJncmlkSXRlbVdpdGgyT25seVNwYW5FbGVtZW50Ij48L2Rpdj4KIDxkaXYgY2xhc3M9ImdyaWRJ
dGVtV2l0aE5lZ2F0aXZlUG9zaXRpdmVJbnRlZ2VyIGdyaWRJdGVtV2l0aEJvdGhMb25nSGFuZCIg
aWQ9ImdyaWRJdGVtV2l0aEJvdGhTaG9ydExvbmdIYW5kRWxlbWVudCI+PC9kaXY+CiA8ZGl2IGNs
YXNzPSJncmlkSXRlbVdpdGhOb1NwYWNlIiBpZD0iZ3JpZEl0ZW1XaXRoTm9TcGFjZUVsZW1lbnQi
PjwvZGl2PgotPGRpdiBjbGFzcz0iZ3JpZEl0ZW1XaXRoU3RyaW5nIiBpZD0iZ3JpZEl0ZW1XaXRo
U3RyaW5nIj48L2Rpdj4KLTxkaXYgY2xhc3M9ImdyaWRJdGVtV2l0aFNwYW5TdHJpbmciIGlkPSJn
cmlkSXRlbVdpdGhTcGFuU3RyaW5nIj48L2Rpdj4KLTxkaXYgY2xhc3M9ImdyaWRJdGVtV2l0aFNw
YW5OdW1iZXJTdHJpbmciIGlkPSJncmlkSXRlbVdpdGhTcGFuTnVtYmVyU3RyaW5nIj48L2Rpdj4K
IDxzY3JpcHQ+CiAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBzZXR0aW5nIGFuZCBnZXR0aW5n
IGdyaWQtY29sdW1uIGFuZCBncmlkLXJvdyB3b3JrcyBhcyBleHBlY3RlZCcpOwogCkBAIC05OSw5
ICs4NCw2IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0Q29sdW1uUm93Q1NTUGFy
c2luZygiZ3JpZEl0ZW1XaXRoMkF1dG9FbGVtZW50IiwgImF1dG8gLyBhdXRvIiAsICJhdXRvIC8g
YXV0byIpOwogICAgIHRlc3RDb2x1bW5Sb3dDU1NQYXJzaW5nKCJncmlkSXRlbVdpdGhCb3RoU2hv
cnRMb25nSGFuZEVsZW1lbnQiLCAiMTAgLyAxMSIsICI0IC8gNSIpOwogICAgIHRlc3RDb2x1bW5S
b3dDU1NQYXJzaW5nKCJncmlkSXRlbVdpdGhOb1NwYWNlRWxlbWVudCIsICJhdXRvIC8gMSIsICI1
IC8gYXV0byIpOwotICAgIHRlc3RDb2x1bW5Sb3dDU1NQYXJzaW5nKCJncmlkSXRlbVdpdGhTdHJp
bmciLCAiMSBmaXJzdCAvIGF1dG8iLCAiMSBsYXN0IC8gYXV0byIpOwotICAgIHRlc3RDb2x1bW5S
b3dDU1NQYXJzaW5nKCJncmlkSXRlbVdpdGhTcGFuU3RyaW5nIiwgIjEgLyBzcGFuIDEgZmlyc3Qi
LCAiLTEgLyBzcGFuIDEgbGFzdCIpOwotICAgIHRlc3RDb2x1bW5Sb3dDU1NQYXJzaW5nKCJncmlk
SXRlbVdpdGhTcGFuTnVtYmVyU3RyaW5nIiwgIjEgLyBzcGFuIDMgZmlyc3QiLCAiLTEgLyBzcGFu
IDIgbGFzdCIpOwogCiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJUZXN0IHRoZSBpbml0aWFs
IHZhbHVlIik7CkBAIC0xMjUsMTAgKzEwNyw2IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAg
ICB0ZXN0Q29sdW1uUm93SlNQYXJzaW5nKCI0IC8gYXV0byIsICI1IC8gYXV0byIpOwogICAgIHRl
c3RDb2x1bW5Sb3dKU1BhcnNpbmcoImF1dG8gLyA1IiwgImF1dG8gLyA4Iik7CiAgICAgdGVzdENv
bHVtblJvd0pTUGFyc2luZygic3BhbiAvIDMiLCAiNSAvIHNwYW4iLCAic3BhbiAxIC8gMyIsICI1
IC8gc3BhbiAxIik7Ci0gICAgdGVzdENvbHVtblJvd0pTUGFyc2luZygiJ2ZpcnN0JyBzcGFuIC8g
MyIsICI1IC8gJ2xhc3QnIHNwYW4iLCAic3BhbiAxIGZpcnN0IC8gMyIsICI1IC8gc3BhbiAxIGxh
c3QiKTsKLSAgICB0ZXN0Q29sdW1uUm93SlNQYXJzaW5nKCInZmlyc3QnIC8gJ2xhc3QnIiwgIidu
YXYnIC8gJ2xhc3QnIHNwYW4iLCAiMSBmaXJzdCAvIDEgbGFzdCIsICIxIG5hdiAvIHNwYW4gMSBs
YXN0Iik7Ci0gICAgdGVzdENvbHVtblJvd0pTUGFyc2luZygiMyAnZmlyc3QnIC8gMiAnbGFzdCci
LCAiNSAnbmF2JyAvICdsYXN0JyA3IHNwYW4iLCAiMyBmaXJzdCAvIDIgbGFzdCIsICI1IG5hdiAv
IHNwYW4gNyBsYXN0Iik7Ci0gICAgdGVzdENvbHVtblJvd0pTUGFyc2luZygiMyAnZmlyc3QnIHNw
YW4gLyAtMyAnbGFzdCciLCAiJ2xhc3QnIDIgc3BhbiAvIC0xICduYXYnIiwgInNwYW4gMyBmaXJz
dCAvIC0zIGxhc3QiLCAic3BhbiAyIGxhc3QgLyAtMSBuYXYiKTsKIAogICAgIGRlYnVnKCIiKTsK
ICAgICBkZWJ1ZygiVGVzdCBzZXR0aW5nIGdyaWQtY29sdW1uIGFuZCBncmlkLXJvdyBiYWNrIHRv
ICdhdXRvJyB0aHJvdWdoIEpTIik7CkBAIC0xNjUsMzggKzE0MywxMiBAQCBpZiAod2luZG93LnRl
c3RSdW5uZXIpCiAKICAgICB0ZXN0Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygic3BhbiBzcGFu
IC8gc3BhbiBzcGFuIiwgInNwYW4gc3BhbiAvIHNwYW4gc3BhbiIpOwogCi0gICAgLy8gTW9yZSB0
aGFuIDEgPGludGVnZXI+IGFuZCAvIG9yIDxzdHJpbmc+LgotICAgIHRlc3RDb2x1bW5Sb3dJbnZh
bGlkSlNQYXJzaW5nKCI1IDUgLyBzcGFuIDIiLCAiNCA0IC8gMyBzcGFuIik7Ci0gICAgdGVzdENv
bHVtblJvd0ludmFsaWRKU1BhcnNpbmcoIjUgJ2ZpcnN0JyAnbGFzdCcgLyBzcGFuIDIiLCAiJ2Zp
cnN0JyA0ICdsYXN0JyAvIDMgc3BhbiIpOwotICAgIHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQYXJz
aW5nKCI1IC8gJ2ZpcnN0JyAnbGFzdCcgMiIsICI0IC8gJ2ZpcnN0JyAzICdsYXN0JyIpOwotICAg
IHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQYXJzaW5nKCInZmlyc3QnICdsYXN0JyAvIHNwYW4gMiIs
ICInZmlyc3QnICdsYXN0JyAvIDMgc3BhbiIpOwotICAgIHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQ
YXJzaW5nKCI1IC8gJ2ZpcnN0JyAnbGFzdCciLCAiNCAvICdmaXJzdCcgJ2xhc3QnIik7Ci0gICAg
dGVzdENvbHVtblJvd0ludmFsaWRKU1BhcnNpbmcoIjUgNSBzcGFuIC8gMiIsICJzcGFuIDQgNCAv
IDMiKTsKLSAgICB0ZXN0Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygic3BhbiAzIDUgLyAxIiwg
IjUgc3BhbiA0IC8gMyIpOwotICAgIHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQYXJzaW5nKCJzcGFu
ICdsYXN0JyAnZmlyc3QnIC8gMSIsICJzcGFuICdmaXJzdCcgJ2xhc3QnIC8gMyIpOwotICAgIHRl
c3RDb2x1bW5Sb3dJbnZhbGlkSlNQYXJzaW5nKCIyIC8gc3BhbiAnbGFzdCcgJ2ZpcnN0JyIsICIz
IC8gc3BhbiAnZmlyc3QnICdsYXN0JyIpOwotICAgIHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQYXJz
aW5nKCJzcGFuIDEgJ2xhc3QnICdmaXJzdCcgLyAxIiwgInNwYW4gJ2ZpcnN0JyAnbGFzdCcgNyAv
IDMiKTsKLSAgICB0ZXN0Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygiMiAvIHNwYW4gJ2xhc3Qn
IDMgJ2ZpcnN0JyIsICIzIC8gc3BhbiAnZmlyc3QnIDUgJ2xhc3QnIik7Ci0gICAgdGVzdENvbHVt
blJvd0ludmFsaWRKU1BhcnNpbmcoIjEgc3BhbiAyICdmaXJzdCcgLyAxIiwgIjEgc3BhbiAnbGFz
dCcgNyAvIDMiKTsKLSAgICB0ZXN0Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygiMiAvIDMgc3Bh
biAzICdmaXJzdCciLCAiMyAvIDUgc3BhbiAnZmlyc3QnIDUiKTsKLQotICAgIC8vIE5lZ2F0aXZl
IGludGVnZXIgb3IgMCBhcmUgaW52YWxpZCBmb3Igc3BhbnMuCi0gICAgdGVzdENvbHVtblJvd0lu
dmFsaWRKU1BhcnNpbmcoInNwYW4gLTEgLyAtMiIsICItMyBzcGFuIC8gLTQiKTsKLSAgICB0ZXN0
Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygiLTEgLyAtMiBzcGFuIiwgIi0zIC8gc3BhbiAtNCIp
OwotICAgIHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQYXJzaW5nKCIwIHNwYW4gLyAwIiwgInNwYW4g
MCAvIDAiKTsKLSAgICB0ZXN0Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygiMCAvIHNwYW4gMCIs
ICIwIC8gMCBzcGFuIik7Ci0gICAgdGVzdENvbHVtblJvd0ludmFsaWRKU1BhcnNpbmcoInNwYW4g
LTMgJ2ZpcnN0JyAvIDMgJ2xhc3QnIiwgIidsYXN0JyAtMiBzcGFuIC8gMSAnbmF2JyIpOworICAg
IC8vIE5lZ2F0aXZlIGludGVnZXIgb3IgMCBhcmUgaW52YWxpZC4KKyAgICB0ZXN0Q29sdW1uUm93
SW52YWxpZEpTUGFyc2luZygic3BhbiAtMSAvIC0yIHNwYW4iLCAiLTMgc3BhbiAvIHNwYW4gLTQi
KTsKKyAgICB0ZXN0Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygiMCBzcGFuIC8gc3BhbiAwIiwg
InNwYW4gMCAvIDAgc3BhbiIpOwogCiAgICAgLy8gU3BhbnMgZm9yIGJvdGggaW5pdGlhbCAvIGVu
ZCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLgogICAgIHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQYXJz
aW5nKCI1IHNwYW4gLyBzcGFuIDIiLCAic3BhbiA0IC8gMyBzcGFuIik7Ci0gICAgdGVzdENvbHVt
blJvd0ludmFsaWRKU1BhcnNpbmcoIidmaXJzdCcgc3BhbiAvIHNwYW4gJ2xhc3QnIiwgInNwYW4g
NCAnZmlyc3QnIC8gMyBzcGFuICdsYXN0JyIpOwotICAgIHRlc3RDb2x1bW5Sb3dJbnZhbGlkSlNQ
YXJzaW5nKCInZmlyc3QnIDMgc3BhbiAvIHNwYW4gJ2xhc3QnIiwgInNwYW4gJ2ZpcnN0JyAvIDIg
c3BhbiAnbGFzdCciKTsKLSAgICB0ZXN0Q29sdW1uUm93SW52YWxpZEpTUGFyc2luZygiJ2ZpcnN0
JyAtMSBzcGFuIC8gc3BhbiAnbGFzdCciLCAic3BhbiAtMiAnZmlyc3QnIC8gc3BhbiAnbGFzdCci
KTsKLQotICAgIC8vIFdlIGRvbid0IGFsbG93IHNwYW4gdG8gYmUgYmV0d2VlbiB0aGUgPGludGVn
ZXI+IGFuZCB0aGUgPHN0cmluZz4uCi0gICAgdGVzdENvbHVtblJvd0ludmFsaWRKU1BhcnNpbmco
IidmaXJzdCcgc3BhbiAxIC8gJ2xhc3QnIiwgIjIgc3BhbiAnZmlyc3QnIC8gJ2xhc3QnIik7Ci0g
ICAgdGVzdENvbHVtblJvd0ludmFsaWRKU1BhcnNpbmcoIjMgJ2ZpcnN0JyAvIDIgc3BhbiAnbGFz
dCciLCAiNSAnbmF2JyAvICdsYXN0JyBzcGFuIDciKTsKLSAgICB0ZXN0Q29sdW1uUm93SW52YWxp
ZEpTUGFyc2luZygiMyAvIDEgc3BhbiAyIiwgIjUgLyAzIHNwYW4gMyIpOwogPC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3NldEF0dHJp
YnV0ZU5vZGUtZm9yLWV4aXN0aW5nLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9FbGVtZW50L3NldEF0dHJpYnV0ZU5vZGUtZm9yLWV4aXN0aW5nLWF0dHJpYnV0
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY3NDY5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2V0QXR0
cmlidXRlTm9kZS1mb3ItZXhpc3RpbmctYXR0cmlidXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKK1Rlc3RjYXNlIGZvciBidWcgMTIwMjkzOiBzZXRBdHRyaWJ1dGVOb2RlKCkgZG9lcyBu
b3Qgc2V0IHRoZSBuZXcgdmFsdWUgdG8gYW4gZXhpc3RpbmcgYXR0cmlidXRlIGlmIHNwZWNpZmll
ZCBhdHRyaWJ1dGUgaXMgaW4gYSBkaWZmZXJlbnQgY2FzZS5cblRoZSBpc3N1ZSBjYW4gYmUgbWFu
dWFsbHkgdmVyaWZpZWQgYnkgYXNjZXJ0YWluaW5nIHRoYXQgYSBncmVlbiBjb2xvcmVkIGJsb2Nr
IGlzIGRpc3BsYXllZCBpbnN0ZWFkIG9mIGEgcmVkIG9uZS4KK8KgCitiYWNrZ3JvdW5kLWNvbG9y
IHNwZWNpZmllZCB3aXRoIGxvd2VyY2FzZSBzdHlsZSBhdHRyaWJ1dGUgd2FzOiByZWQgYW5kIHNw
ZWNpZmllZCB3aXRoIHVwcGVyY2FzZSBzdHlsZSBhdHRyaWJ1dGUgaXM6IGdyZWVuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3NldEF0dHJpYnV0ZU5vZGUtZm9yLWV4
aXN0aW5nLWF0dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zZXRB
dHRyaWJ1dGVOb2RlLWZvci1leGlzdGluZy1hdHRyaWJ1dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xZDEzNTA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRWxlbWVudC9zZXRBdHRyaWJ1dGVOb2RlLWZvci1leGlzdGluZy1hdHRyaWJ1
dGUuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAKKyAgICB2YXIg
dGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworICAgIHZhciB0
ZXN0RWxlbWVudEJnQ29sb3IgPSB0ZXN0RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kOworICAgIAor
ICAgIHZhciBuZXdBdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCJTVFlMRSIpOworICAg
IG5ld0F0dHIudmFsdWUgPSAiYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iOworICAgIHRlc3RFbGVt
ZW50LnNldEF0dHJpYnV0ZU5vZGUobmV3QXR0cik7CisgICAgdmFyIHRlc3RFbGVtZW50QmdDb2xv
ckFmdGVyUmVzZXQgPSB0ZXN0RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kOworICAgIAorICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiYmFja2dyb3VuZC1j
b2xvciBzcGVjaWZpZWQgd2l0aCBsb3dlcmNhc2Ugc3R5bGUgYXR0cmlidXRlIHdhczogIit0ZXN0
RWxlbWVudEJnQ29sb3IrIiBhbmQgc3BlY2lmaWVkIHdpdGggdXBwZXJjYXNlIHN0eWxlIGF0dHJp
YnV0ZSBpczogIit0ZXN0RWxlbWVudEJnQ29sb3JBZnRlclJlc2V0OworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj5UZXN0Y2FzZSBmb3IgYnVn
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyOTMi
PjEyMDI5MzwvYT46IHNldEF0dHJpYnV0ZU5vZGUoKSBkb2VzIG5vdCBzZXQgdGhlIG5ldyB2YWx1
ZSB0byBhbiBleGlzdGluZyBhdHRyaWJ1dGUgaWYgc3BlY2lmaWVkIGF0dHJpYnV0ZSBpcyBpbiBh
IGRpZmZlcmVudCBjYXNlLlxuVGhlIGlzc3VlIGNhbiBiZSBtYW51YWxseSB2ZXJpZmllZCBieSBh
c2NlcnRhaW5pbmcgdGhhdCBhIGdyZWVuIGNvbG9yZWQgYmxvY2sgaXMgZGlzcGxheWVkIGluc3Rl
YWQgb2YgYSByZWQgb25lLjwvZGl2PgorPGRpdiBpZD0idGVzdCIgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IHJlZDsiLz4mbmJzcDs8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9m
aWx0ZXItaW1hZ2UtYmx1ci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXIt
aW1hZ2UvZmlsdGVyLWltYWdlLWJsdXItZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjA0MzYyNy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRl
ci1pbWFnZS9maWx0ZXItaW1hZ2UtYmx1ci1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci0KLTxodG1sPgotPGhlYWQ+Ci0gIDxzdHls
ZT4KLSAgICBkaXYgewotICAgICAgd2lkdGg6IDIwMHB4OwotICAgICAgaGVpZ2h0OiAxMDBweDsK
LSAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChyZXNvdXJjZXMvc3ZnLWJsdXIuc3ZnKTsKLSAg
ICB9Ci0gIDwvc3R5bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXY+Ci08L2Rpdj4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsdGVyLWltYWdlL2ZpbHRl
ci1pbWFnZS1ibHVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9maWx0ZXIt
aW1hZ2UtYmx1ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzQ1NmRkLi4w
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsdGVyLWltYWdlL2ZpbHRlci1pbWFnZS1i
bHVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LQotPGh0bWw+Ci08aGVhZD4KLSAgPHN0eWxlPgotICAgIGRpdiB7Ci0gICAgICB3aWR0aDogMjAw
cHg7Ci0gICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtp
dC1maWx0ZXIodXJsKHJlc291cmNlcy9zdmctbm9ibHVyLnN2ZyksIGJsdXIoM3B4KSk7Ci0gICAg
fQotICA8L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9yZXNvdXJj
ZXMvc3ZnLWJsdXIuc3ZnIGIvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvcmVzb3VyY2Vz
L3N2Zy1ibHVyLnN2ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1OTkzOC4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9yZXNvdXJjZXMvc3ZnLWJs
dXIuc3ZnCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+Ci08ZGVmcz4KLTxmaWx0ZXIgaWQ9ImJs
dXIiPgotPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgZWRnZU1vZGU9ImR1cGxpY2F0
ZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIi8+Ci08L2ZpbHRlcj4KLTwvZGVm
cz4KLTxnIGZpbHRlcj0idXJsKCNibHVyKSI+Ci08cmVjdCB4PSItMzAiIHk9Ii0zMCIgd2lkdGg9
IjI2MCIgaGVpZ2h0PSIyNjAiIGZpbGw9ImdyZWVuIi8+Ci08cmVjdCB4PSI1MCIgeT0iNTAiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJibHVlIi8+Ci08L2c+Ci08L3N2Zz4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRl
ci1pbWFnZS9yZXNvdXJjZXMvc3ZnLW5vYmx1ci5zdmcgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRl
ci1pbWFnZS9yZXNvdXJjZXMvc3ZnLW5vYmx1ci5zdmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJkZjhiNjUuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1h
Z2UvcmVzb3VyY2VzL3N2Zy1ub2JsdXIuc3ZnCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBA
Ci08c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIyMDAiPgotPHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImdyZWVuIi8+
Ci08cmVjdCB4PSI1MCIgeT0iNTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJibHVl
Ii8+Ci08L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL2Jhc2ljLXNldC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQ1NjM5ZjUuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zZXQtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLVRlc3RzIGJhc2ljIGNv
cnJlY3RuZXNzIG9mIEVTIFNldCBvYmplY3QKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLVBBU1MgU2V0IGluc3RhbmNlb2YgU2V0IGlzIGZhbHNlCi1QQVNTIFNldC5wcm90b3R5cGUg
aW5zdGFuY2VvZiBTZXQgaXMgZmFsc2UKLVBBU1MgU2V0KCkgaW5zdGFuY2VvZiBTZXQgaXMgdHJ1
ZQotUEFTUyBuZXcgU2V0KCkgaW5zdGFuY2VvZiBTZXQgaXMgdHJ1ZQotUEFTUyBTZXQobnVsbCkg
aW5zdGFuY2VvZiBTZXQgaXMgdHJ1ZQotUEFTUyBTZXQodW5kZWZpbmVkKSBpbnN0YW5jZW9mIFNl
dCBpcyB0cnVlCi1QQVNTIFNldCh1bmRlZmluZWQsIHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBTZXQg
aXMgdHJ1ZQotUEFTUyBTZXQobnVsbCwgdW5kZWZpbmVkKSBpbnN0YW5jZW9mIFNldCBpcyB0cnVl
Ci1QQVNTIFNldCgxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBTZXQgZG9lcyBub3QgYWNj
ZXB0IGFyZ3VtZW50cyB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgotUEFTUyBTZXQodHJ1ZSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogU2V0IGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMg
d2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KLVBBU1MgU2V0KFtdKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBTZXQgZG9lcyBub3QgYWNjZXB0IGFyZ3VtZW50cyB3aGVuIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLgotUEFTUyBTZXQoe30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFNldCBk
b2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCi1QQVNT
IFNldCh1bmRlZmluZWQsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBJbnZhbGlk
IGNvbXBhcmF0b3IgZnVuY3Rpb24uCi1QQVNTIFNldCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNl
cHRpb24gUmFuZ2VFcnJvcjogSW52YWxpZCBjb21wYXJhdG9yIGZ1bmN0aW9uLgotMQotdW5kZWZp
bmVkCi10cnVlCi02Ci0xCi0wCi1bb2JqZWN0IE9iamVjdF0KLVBBU1MgT2JqZWN0Lmhhc093blBy
b3BlcnR5KHNldCwgJ3NpemUnKSBpcyBmYWxzZQotUEFTUyBTZXQucHJvdG90eXBlLmhhc093blBy
b3BlcnR5KCdzaXplJykgaXMgdHJ1ZQotUEFTUyBNYXAucHJvdG90eXBlLnNpemUgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3Qu
Ci1QQVNTIHNldC5zaXplIGlzIDAKLVBBU1Mgc2V0LmFkZCgtMCkgaXMgc2V0Ci1QQVNTIHNldC5h
ZGQoMCkgaXMgc2V0Ci1QQVNTIHNldC5hZGQoSW5maW5pdHkpIGlzIHNldAotUEFTUyBzZXQuYWRk
KC1JbmZpbml0eSkgaXMgc2V0Ci1QQVNTIHNldC5hZGQoTmFOKSBpcyBzZXQKLVBBU1Mgc2V0LmFk
ZCgnMCcpIGlzIHNldAotUEFTUyBzZXQuYWRkKDAuMSkgaXMgc2V0Ci1QQVNTIHNldC5zaXplIGlz
IDcKLVBBU1Mgc2V0LmhhcygtMCkgaXMgdHJ1ZQotUEFTUyBzZXQuaGFzKDApIGlzIHRydWUKLVBB
U1Mgc2V0LmhhcyhJbmZpbml0eSkgaXMgdHJ1ZQotUEFTUyBzZXQuaGFzKC1JbmZpbml0eSkgaXMg
dHJ1ZQotUEFTUyBzZXQuaGFzKE5hTikgaXMgdHJ1ZQotUEFTUyBzZXQuaGFzKCcwJykgaXMgdHJ1
ZQotUEFTUyBzZXQuaGFzKDAuMSkgaXMgdHJ1ZQotUEFTUyBzZXQuZGVsZXRlKC0wKSBpcyB0cnVl
Ci1QQVNTIHNldC5kZWxldGUoMCkgaXMgdHJ1ZQotUEFTUyBzZXQuZGVsZXRlKEluZmluaXR5KSBp
cyB0cnVlCi1QQVNTIHNldC5kZWxldGUoLUluZmluaXR5KSBpcyB0cnVlCi1QQVNTIHNldC5kZWxl
dGUoTmFOKSBpcyB0cnVlCi1QQVNTIHNldC5kZWxldGUoJzAnKSBpcyB0cnVlCi1QQVNTIHNldC5k
ZWxldGUoMC4xKSBpcyB0cnVlCi1QQVNTIHNldC5kZWxldGUoLTApIGlzIGZhbHNlCi1QQVNTIHNl
dC5kZWxldGUoMCkgaXMgZmFsc2UKLVBBU1Mgc2V0LmRlbGV0ZShJbmZpbml0eSkgaXMgZmFsc2UK
LVBBU1Mgc2V0LmRlbGV0ZSgtSW5maW5pdHkpIGlzIGZhbHNlCi1QQVNTIHNldC5kZWxldGUoTmFO
KSBpcyBmYWxzZQotUEFTUyBzZXQuZGVsZXRlKCcwJykgaXMgZmFsc2UKLVBBU1Mgc2V0LmRlbGV0
ZSgwLjEpIGlzIGZhbHNlCi1QQVNTIHNldC5oYXMoc2ltcGxlU3RyaW5nKSBpcyB0cnVlCi1QQVNT
IHNldC5oYXMob3RoZXJTdHJpbmcpIGlzIHRydWUKLVBBU1Mgc2V0LmNsZWFyKCkgaXMgdW5kZWZp
bmVkLgotUEFTUyBzZXQuc2l6ZSBpcyAwCi1QQVNTIHNldC5hZGQoMCkgaXMgc2V0Ci1QQVNTIHNl
dC5hZGQoJzAnKSBpcyBzZXQKLVBBU1Mgc2V0LmFkZCgxKSBpcyBzZXQKLVBBU1Mgc2V0LmFkZCgn
MScpIGlzIHNldAotUEFTUyBzZXQuYWRkKDIpIGlzIHNldAotUEFTUyBzZXQuYWRkKCcyJykgaXMg
c2V0Ci1QQVNTIHNldC5hZGQoMykgaXMgc2V0Ci1QQVNTIHNldC5hZGQoJzMnKSBpcyBzZXQKLVBB
U1Mgc2V0LmFkZCg0KSBpcyBzZXQKLVBBU1Mgc2V0LmFkZCgnNCcpIGlzIHNldAotUEFTUyBzZXQu
YWRkKDUpIGlzIHNldAotUEFTUyBzZXQuYWRkKCc1JykgaXMgc2V0Ci1QQVNTIHNldC5hZGQoNikg
aXMgc2V0Ci1QQVNTIHNldC5hZGQoJzYnKSBpcyBzZXQKLVBBU1Mgc2V0LnNpemUgaXMgMTQKLWZv
ckVhY2ggIzAKLVBBU1MgdGVzdFRoaXMgaXMgdW5kZWZpbmVkLgotMAotZm9yRWFjaCAjMQotUEFT
UyB0ZXN0VGhpcyBpcyB0aGlzVmFsdWUKLTEKLTAKLTAKLTEKLTEKLTIKLTIKLTMKLTMKLTQKLTQK
LTUKLTUKLTYKLTYKLVBBU1Mgc2V0LmZvckVhY2goZGVidWcpIGlzIHVuZGVmaW5lZC4KLTAgOiBu
dW1iZXIKLTAgOiBzdHJpbmcKLTEgOiBudW1iZXIKLTEgOiBzdHJpbmcKLTIgOiBudW1iZXIKLTIg
OiBzdHJpbmcKLTMgOiBzdHJpbmcKLTQgOiBzdHJpbmcKLTUgOiBudW1iZXIKLTUgOiBzdHJpbmcK
LTYgOiBudW1iZXIKLTYgOiBzdHJpbmcKLTQgOiBudW1iZXIKLVBBU1Mgc2V0LmhhcygwKSBpcyB0
cnVlCi1QQVNTIHNldC5oYXMoIjAiKSBpcyB0cnVlCi1QQVNTIHNldC5oYXMoMSkgaXMgdHJ1ZQot
UEFTUyBzZXQuaGFzKCIxIikgaXMgdHJ1ZQotUEFTUyBzZXQuaGFzKCIzIikgaXMgdHJ1ZQotUEFT
UyBzZXQuaGFzKCI0IikgaXMgdHJ1ZQotUEFTUyBzZXQuaGFzKDUpIGlzIHRydWUKLVBBU1Mgc2V0
LmhhcygiNSIpIGlzIHRydWUKLVBBU1Mgc2V0Lmhhcyg2KSBpcyB0cnVlCi1QQVNTIHNldC5oYXMo
IjYiKSBpcyB0cnVlCi1QQVNTIHNldC5oYXMoNCkgaXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvanMvYmFzaWMtc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjAxYmQzLi4wMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc2V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYmFz
aWMtc2V0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvanMvcmVncmVzcy9iYXNpYy1zZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL2Jhc2ljLXNldC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVjMTZhMGMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL2Jhc2ljLXNldC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBA
Ci1KU1JlZ3Jlc3MvYmFzaWMtc2V0Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jl
c3MvYmFzaWMtc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvYmFzaWMtc2V0
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNmY2ZTcuLjAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL2Jhc2ljLXNldC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvYmFzaWMtc2V0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVz
cy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYmFzaWMtc2V0LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9iYXNpYy1zZXQuanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJhZTNlNTguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9iYXNpYy1zZXQuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwyMiArMCwwIEBACi12YXIgc2V0ID0gbmV3IFNldDsKLWZvciAodmFyIGkgPSAwOyBpIDwgODAw
MDsgKytpKSB7Ci0gICAgc2V0LmFkZChpKTsKLSAgICBzZXQuYWRkKCIiICsgaSkKLSAgICBzZXQu
YWRkKHt9KQotICAgIHNldC5hZGQoaSArIC41KQotfQotCi12YXIgcmVzdWx0ID0gMDsKLQotc2V0
LmZvckVhY2goZnVuY3Rpb24oayl7IHJlc3VsdCArPSBzZXQuc2l6ZTsgfSkKLWZvciAodmFyIGkg
PSA4MDAwOyBpID49IDA7IC0taSkgewotICAgIHNldC5kZWxldGUoaSkKLSAgICBzZXQuaGFzKCIi
ICsgaSkKLSAgICBzZXQuYWRkKGkgKyAuNSkKLX0KLXNldC5mb3JFYWNoKGZ1bmN0aW9uKGspeyBy
ZXN1bHQgKz0gc2V0LnNpemU7IH0pCi0KLWlmIChyZXN1bHQgIT0gMTYwMDA3MjAwMikKLSAgICB0
aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1zZXQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9iYXNpYy1zZXQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDlkZDFjNDcuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
YmFzaWMtc2V0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLWRlc2NyaXB0aW9u
KCJUZXN0cyBiYXNpYyBjb3JyZWN0bmVzcyBvZiBFUyBTZXQgb2JqZWN0Iik7Ci0KLS8vIEN1cnJl
bnRseSB3ZSBkb24ndCBzdXBwb3J0IGl0ZXJhdG9ycywgc28gd2UgdGhyb3cKLS8vIG9uIGFueSBu
b24tdGhyb3dpbmcgcGFyYW1ldGVycwotc2hvdWxkQmVGYWxzZSgiU2V0IGluc3RhbmNlb2YgU2V0
Iik7Ci1zaG91bGRCZUZhbHNlKCJTZXQucHJvdG90eXBlIGluc3RhbmNlb2YgU2V0Iik7Ci1zaG91
bGRCZVRydWUoIlNldCgpIGluc3RhbmNlb2YgU2V0Iik7Ci1zaG91bGRCZVRydWUoIm5ldyBTZXQo
KSBpbnN0YW5jZW9mIFNldCIpOwotc2hvdWxkQmVUcnVlKCJTZXQobnVsbCkgaW5zdGFuY2VvZiBT
ZXQiKTsKLXNob3VsZEJlVHJ1ZSgiU2V0KHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBTZXQiKTsKLXNo
b3VsZEJlVHJ1ZSgiU2V0KHVuZGVmaW5lZCwgdW5kZWZpbmVkKSBpbnN0YW5jZW9mIFNldCIpOwot
c2hvdWxkQmVUcnVlKCJTZXQobnVsbCwgdW5kZWZpbmVkKSBpbnN0YW5jZW9mIFNldCIpOwotCi1z
aG91bGRUaHJvdygiU2V0KDEpIik7Ci1zaG91bGRUaHJvdygiU2V0KHRydWUpIik7Ci1zaG91bGRU
aHJvdygiU2V0KFtdKSIpOwotc2hvdWxkVGhyb3coIlNldCh7fSkiKTsKLXNob3VsZFRocm93KCJT
ZXQodW5kZWZpbmVkLCBudWxsKSIpOwotc2hvdWxkVGhyb3coIlNldCh1bmRlZmluZWQsIHt9KSIp
OwotCi0vLyBCYXNpYyB0ZXN0IGZvciBjb25zdHJ1Y3RvcgotdmFyIHNldCA9IG5ldyBTZXQoMSwg
dW5kZWZpbmVkLCB0cnVlLCA2LCB0cnVlLCAiMSIsIDAsIHt9KQotc2V0LmZvckVhY2goZGVidWcp
OwotCi12YXIgc2V0ID0gbmV3IFNldDsKLXNob3VsZEJlRmFsc2UoIk9iamVjdC5oYXNPd25Qcm9w
ZXJ0eShzZXQsICdzaXplJykiKQotc2hvdWxkQmVUcnVlKCJTZXQucHJvdG90eXBlLmhhc093blBy
b3BlcnR5KCdzaXplJykiKQotc2hvdWxkVGhyb3coIk1hcC5wcm90b3R5cGUuc2l6ZSIpCi1zaG91
bGRCZSgic2V0LnNpemUiLCAiMCIpCi1zaG91bGRCZSgic2V0LmFkZCgtMCkiLCAic2V0IikKLXNo
b3VsZEJlKCJzZXQuYWRkKDApIiwgInNldCIpCi1zaG91bGRCZSgic2V0LmFkZChJbmZpbml0eSki
LCAic2V0IikKLXNob3VsZEJlKCJzZXQuYWRkKC1JbmZpbml0eSkiLCAic2V0IikKLXNob3VsZEJl
KCJzZXQuYWRkKE5hTikiLCAic2V0IikKLXNob3VsZEJlKCJzZXQuYWRkKCcwJykiLCAic2V0IikK
LXNob3VsZEJlKCJzZXQuYWRkKDAuMSkiLCAic2V0IikKLXNob3VsZEJlKCJzZXQuc2l6ZSIsICI3
IikKLQotc2hvdWxkQmVUcnVlKCJzZXQuaGFzKC0wKSIpCi1zaG91bGRCZVRydWUoInNldC5oYXMo
MCkiKQotc2hvdWxkQmVUcnVlKCJzZXQuaGFzKEluZmluaXR5KSIpCi1zaG91bGRCZVRydWUoInNl
dC5oYXMoLUluZmluaXR5KSIpCi1zaG91bGRCZVRydWUoInNldC5oYXMoTmFOKSIpCi1zaG91bGRC
ZVRydWUoInNldC5oYXMoJzAnKSIpCi1zaG91bGRCZVRydWUoInNldC5oYXMoMC4xKSIpCi0KLXNo
b3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgtMCkiKQotc2hvdWxkQmVUcnVlKCJzZXQuZGVsZXRlKDAp
IikKLXNob3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZShJbmZpbml0eSkiKQotc2hvdWxkQmVUcnVlKCJz
ZXQuZGVsZXRlKC1JbmZpbml0eSkiKQotc2hvdWxkQmVUcnVlKCJzZXQuZGVsZXRlKE5hTikiKQot
c2hvdWxkQmVUcnVlKCJzZXQuZGVsZXRlKCcwJykiKQotc2hvdWxkQmVUcnVlKCJzZXQuZGVsZXRl
KDAuMSkiKQotCi1zaG91bGRCZUZhbHNlKCJzZXQuZGVsZXRlKC0wKSIpCi1zaG91bGRCZUZhbHNl
KCJzZXQuZGVsZXRlKDApIikKLXNob3VsZEJlRmFsc2UoInNldC5kZWxldGUoSW5maW5pdHkpIikK
LXNob3VsZEJlRmFsc2UoInNldC5kZWxldGUoLUluZmluaXR5KSIpCi1zaG91bGRCZUZhbHNlKCJz
ZXQuZGVsZXRlKE5hTikiKQotc2hvdWxkQmVGYWxzZSgic2V0LmRlbGV0ZSgnMCcpIikKLXNob3Vs
ZEJlRmFsc2UoInNldC5kZWxldGUoMC4xKSIpCi0KLXZhciBzaW1wbGVTdHJpbmcgPSAiYWFhYWEi
OwotdmFyIG90aGVyU3RyaW5nID0gIiI7Ci1mb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykKLQlv
dGhlclN0cmluZyArPSAiYSIKLXNldC5hZGQoc2ltcGxlU3RyaW5nLCB7fSk7Ci1zaG91bGRCZVRy
dWUoInNldC5oYXMoc2ltcGxlU3RyaW5nKSIpCi1zaG91bGRCZVRydWUoInNldC5oYXMob3RoZXJT
dHJpbmcpIik7Ci0KLQotCi1zaG91bGRCZVVuZGVmaW5lZCgic2V0LmNsZWFyKCkiKTsKLXNob3Vs
ZEJlKCJzZXQuc2l6ZSIsICIwIikKLXZhciBjb3VudCA9IDc7Ci1mb3IgKHZhciBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKLSAgICBzaG91bGRCZSgic2V0LmFkZCgiICsgaSArICIpIiwgInNldCIp
Ci0gICAgc2hvdWxkQmUoInNldC5hZGQoJyIgKyBpICsgIicpIiwgInNldCIpCi19Ci0KLXNob3Vs
ZEJlKCJzZXQuc2l6ZSIsICIxNCIpCi0KLXZhciB0aGlzVmFsdWUgPSAweGYwMAotdmFyIHRlc3RU
aGlzOwotdmFyIGNvdW50ID0gMDsKLQotdHJ5IHsKLQlzZXQuZm9yRWFjaChmdW5jdGlvbigpIHsg
InVzZSBzdHJpY3QiOyBkZWJ1ZygiZm9yRWFjaCAjMCIpOyB0ZXN0VGhpcyA9IHRoaXM7IHNob3Vs
ZEJlVW5kZWZpbmVkKCJ0ZXN0VGhpcyIpOyB0aHJvdyBjb3VudCsrOyAgfSkKLX0gY2F0Y2goZSkg
ewotICAgIGRlYnVnKGUpCi19Ci10cnkgewotICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKCkgeyAi
dXNlIHN0cmljdCI7IGRlYnVnKCJmb3JFYWNoICMxIik7IHRlc3RUaGlzID0gdGhpczsgc2hvdWxk
QmUoInRlc3RUaGlzIiwgInRoaXNWYWx1ZSIpOyB0aHJvdyBjb3VudCsrOyAgfSwgdGhpc1ZhbHVl
KQotfSBjYXRjaChlKSB7Ci0gICAgZGVidWcoZSkKLX0KLQotc2hvdWxkQmVVbmRlZmluZWQoJ3Nl
dC5mb3JFYWNoKGRlYnVnKScpCi0KLXZhciBrZXlzID0gW107Ci1zZXQuZm9yRWFjaChmdW5jdGlv
biAoaykgewotCWRlYnVnKGsgKyAiIDogIiArIHR5cGVvZiAoaykpCi0KLQlpZiAoayA9PSAyKSB7
Ci0JCXNldC5kZWxldGUoMykKLQkJc2V0LmRlbGV0ZSgyKQotCX0gZWxzZQotCWtleXMucHVzaChr
KTsKLQlpZiAoayA9PSAiMyIpIHsKLQkJc2V0LmFkZCgiMyIpOwotCQlzZXQuZGVsZXRlKDQpCi0J
CXNldC5hZGQoNCkKLQl9Ci0JZ2MoKQotfSkKLQotZ2MoKTsKLWZvciAodmFyIGkgPSAwOyBpIDwg
a2V5cy5sZW5ndGg7IGkrKykgewotCXZhciBleHBlY3RlZEtleSA9IGtleXNbaV0KLQlzaG91bGRC
ZVRydWUoInNldC5oYXMoIitKU09OLnN0cmluZ2lmeShleHBlY3RlZEtleSkrIikiKTsKLX0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9lbGVtZW50LWluLW5hbWVkLWZsb3ct
YWJzb2x1dGUtZnJvbS1maXhlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZWxlbWVudC1pbi1uYW1lZC1mbG93LWFic29sdXRlLWZyb20tZml4ZWQtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjJjNGQyLi4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9lbGVtZW50LWluLW5hbWVkLWZsb3ctYWJzb2x1dGUtZnJv
bS1maXhlZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLShyZXBh
aW50IHJlY3RzCi0gIChyZWN0IDUwIDEwMCA1MCA1MCkKLSAgKHJlY3QgMTUwIDIwMCA1MCA1MCkK
LSkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2VsZW1lbnQtaW4tbmFt
ZWQtZmxvdy1hYnNvbHV0ZS1mcm9tLWZpeGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZWxlbWVudC1pbi1uYW1lZC1mbG93LWFic29sdXRlLWZyb20tZml4ZWQuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY2ZDJkYy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZWxlbWVudC1pbi1uYW1lZC1mbG93LWFic29sdXRlLWZyb20tZml4ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxzdHlsZT4KLSAgICAgICAgICAgICNyZWQgeyBwb3Np
dGlvbjogYWJzb2x1dGU7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IHRvcDogMjAwcHg7IGxl
ZnQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KLSAgICAgICAgICAgICNyZWdpb24g
eyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4
OyBsZWZ0OiAxMDBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyB9Ci0gICAgICAgICAg
ICAjdGFyZ2V0ICB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OyB3aWR0aDogNTBweDsgaGVpZ2h0
OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdG9wOiAxMDBweDsgbGVmdDogNTBweDsg
cG9zaXRpb246IGZpeGVkOyB6LWluZGV4OiAwOyB9Ci0gICAgICAgIDwvc3R5bGU+Ci0gICAgICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXBhaW50L3Jlc291cmNlcy90ZXh0LWJhc2VkLXJlcGFpbnQuanMi
Pjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keSBvbmxvYWQ9InJ1blJlcGFpbnRUZXN0
KCkiPgotICAgICAgICA8IS0tCi0gICAgICAgIFRlc3QgZm9yIFdlYktpdCBidWc6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTExNzYKLSAgICAgICAgVGVzdCB0aGF0
IGEgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50LCBjb2xsZWN0ZWQgaW50byBhIG5hbWVkIGZsb3cs
IHRoYXQgaGFzIGl0cyBwb3NpdGlvbiBjaGFuZ2VkIHRvIGFic29sdXRlLAotICAgICAgICBpcyBw
b3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSByZWdpb24gaW5zdGVhZCBvZiB0aGUgdmlld3BvcnQu
Ci0gICAgICAgIE9uIHN1Y2Nlc3MsIHlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGJl
bG93LgotICAgICAgICAtLT4KLSAgICAgICAgPGRpdiBpZD0icmVkIj48L2Rpdj4KLSAgICAgICAg
PGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0icmVnaW9uIj48L2Rpdj4K
LSAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkgewot
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5zdHlsZS5w
b3NpdGlvbiA9ICJhYnNvbHV0ZSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIDwvc2NyaXB0Pgot
ICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9lbGVtZW50LWluLW5hbWVkLWZsb3ctZml4ZWQtZnJvbS1hYnNvbHV0ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZWxlbWVudC1pbi1uYW1lZC1mbG93LWZpeGVkLWZy
b20tYWJzb2x1dGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
MmYyMTljLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9lbGVtZW50LWlu
LW5hbWVkLWZsb3ctZml4ZWQtZnJvbS1hYnNvbHV0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLShyZXBhaW50IHJlY3RzCi0gIChyZWN0IDE1MCAyMDAgNTAgNTAp
Ci0gIChyZWN0IDUwIDEwMCA1MCA1MCkKLSkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2VsZW1lbnQtaW4tbmFtZWQtZmxvdy1maXhlZC1mcm9tLWFic29sdXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZWxlbWVudC1pbi1uYW1lZC1mbG93LWZpeGVkLWZy
b20tYWJzb2x1dGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc2NmE5Yi4u
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZWxlbWVudC1pbi1uYW1lZC1m
bG93LWZpeGVkLWZyb20tYWJzb2x1dGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxzdHlsZT4K
LSAgICAgICAgICAgICNyZWQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6
IHJlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgdG9wOiAxMDBweDsgbGVmdDogNTBweDsg
fQotICAgICAgICAgICAgI3JlZ2lvbiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyBwb3NpdGlv
bjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDEwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdo
dDogMjAwcHg7IH0KLSAgICAgICAgICAgICN0YXJnZXQgIHsgLXdlYmtpdC1mbG93LWludG86IGZs
b3c7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB0
b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDA7IH0K
LSAgICAgICAgPC9zdHlsZT4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3JlcGFpbnQvcmVzb3Vy
Y2VzL3RleHQtYmFzZWQtcmVwYWludC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxi
b2R5IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+Ci0gICAgICAgIDwhLS0KLSAgICAgICAgVGVz
dCBmb3IgV2ViS2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMTE3NgotICAgICAgICBUZXN0IHRoYXQgYW4gYWJzb2x1dGUgcG9zaXRpb25lZCBlbGVtZW50
LCBjb2xsZWN0ZWQgaW50byBhIG5hbWVkIGZsb3csIHRoYXQgaGFzIGl0cyBwb3NpdGlvbiBjaGFu
Z2VkIHRvIGZpeGVkLAotICAgICAgICBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSB2aWV3
cG9ydCBpbnN0ZWFkIG9mIHRoZSByZWdpb24uCi0gICAgICAgIE9uIHN1Y2Nlc3MsIHlvdSBzaG91
bGQgc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGJlbG93LgotICAgICAgICAtLT4KLSAgICAgICAgPGRp
diBpZD0icmVkIj48L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KLSAgICAg
ICAgPGRpdiBpZD0icmVnaW9uIj48L2Rpdj4KLSAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAg
IGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkgewotICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKS5zdHlsZS5wb3NpdGlvbiA9ICJmaXhlZCI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9lbGVtZW50LWluZmxvdy1maXhlZC1mcm9tLW91dGZs
b3ctc3RhdGljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9lbGVtZW50
LWluZmxvdy1maXhlZC1mcm9tLW91dGZsb3ctc3RhdGljLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0MDk4NS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZWxlbWVudC1pbmZsb3ctZml4ZWQtZnJvbS1vdXRmbG93LXN0YXRpYy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLShyZXBhaW50IHJlY3RzCi0g
IChyZWN0IDMwMCAzMDAgNTAgNTApCi0gIChyZWN0IDUwIDEwMCA1MCA1MCkKLSkKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2VsZW1lbnQtaW5mbG93LWZpeGVkLWZyb20t
b3V0Zmxvdy1zdGF0aWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9lbGVtZW50LWlu
Zmxvdy1maXhlZC1mcm9tLW91dGZsb3ctc3RhdGljLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDliZDg5ZDcuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2VsZW1lbnQtaW5mbG93LWZpeGVkLWZyb20tb3V0Zmxvdy1zdGF0aWMuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDMyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+
Ci0gICAgICAgIDxzdHlsZT4KLSAgICAgICAgICAgICNyZWQgeyBwb3NpdGlvbjogYWJzb2x1dGU7
IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgdG9wOiAx
MDBweDsgbGVmdDogNTBweDsgfQotICAgICAgICAgICAgI2NvbnRhaW5lciB7IHBvc2l0aW9uOiBh
YnNvbHV0ZTsgdG9wOiAzMDBweDsgbGVmdDogMzAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAx
MDBweDsgfQotICAgICAgICAgICAgI3JlZ2lvbiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyBw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwcHg7IGxlZnQ6IDEwMHB4OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogMjAwcHg7IH0KLSAgICAgICAgICAgICN0YXJnZXQgIHsgd2lkdGg6IDUwcHg7IGhl
aWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRvcDogMTAwcHg7IGxlZnQ6IDUw
cHg7IH0KLSAgICAgICAgPC9zdHlsZT4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3JlcGFpbnQv
cmVzb3VyY2VzL3RleHQtYmFzZWQtcmVwYWludC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgot
ICAgIDxib2R5IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+Ci0gICAgICAgIDwhLS0KLSAgICAg
ICAgVGVzdCBmb3IgV2ViS2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMTE3NgotICAgICAgICBUZXN0IHRoYXQgYSBzdGF0aWMgcG9zaXRpb25lZCBlbGVt
ZW50LCBub3QgY29sbGVjdGVkIGludG8gYSBuYW1lZCBmbG93LCB0aGF0IGhhcyBpdHMgcG9zaXRp
b24gY2hhbmdlZCB0byBmaXhlZAotICAgICAgICBhbmQgY29sbGVjdGVkIGludG8gYSBuYW1lZCBm
bG93IGlzIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhlIHZpZXdwb3J0IGluc3RlYWQgb2YgdGhl
IHJlZ2lvbi4KLSAgICAgICAgT24gc3VjY2VzcywgeW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0
YW5nbGUgYmVsb3cuCi0gICAgICAgIC0tPgotICAgICAgICA8ZGl2IGlkPSJyZWQiPjwvZGl2Pgot
ICAgICAgICA8ZGl2IGlkPSJjb250YWluZXIiPgotICAgICAgICAgICAgPGRpdiBpZD0idGFyZ2V0
Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgaWQ9InJlZ2lvbiI+PC9kaXY+
Ci0gICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBmdW5jdGlvbiByZXBhaW50VGVzdCgpIHsK
LSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpOwotICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5wb3NpdGlvbiA9ICJmaXhlZCI7
Ci0gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLndlYmtpdEZsb3dJbnRvID0gImZsb3ciOwot
ICAgICAgICAgICAgfQotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZWxlbWVudC1vdXRmbG93LXN0YXRp
Yy1mcm9tLWluZmxvdy1maXhlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZWxlbWVudC1vdXRmbG93LXN0YXRpYy1mcm9tLWluZmxvdy1maXhlZC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhOWYzZDAuLjAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2VsZW1lbnQtb3V0Zmxvdy1zdGF0aWMtZnJvbS1pbmZsb3ct
Zml4ZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0ocmVwYWlu
dCByZWN0cwotICAocmVjdCA1MCAxMDAgNTAgNTApCi0gIChyZWN0IDMwMCAzMDAgNTAgNTApCi0p
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9lbGVtZW50LW91dGZsb3ct
c3RhdGljLWZyb20taW5mbG93LWZpeGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
ZWxlbWVudC1vdXRmbG93LXN0YXRpYy1mcm9tLWluZmxvdy1maXhlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3MTYxOGM0Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9lbGVtZW50LW91dGZsb3ctc3RhdGljLWZyb20taW5mbG93LWZpeGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
ICAgIDxoZWFkPgotICAgICAgICA8c3R5bGU+Ci0gICAgICAgICAgICAjcmVkIHsgcG9zaXRpb246
IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUw
cHg7IHRvcDogMzAwcHg7IGxlZnQ6IDMwMHB4OyB9Ci0gICAgICAgICAgICAjY29udGFpbmVyIHsg
cG9zaXRpb246IGFic29sdXRlOyB0b3A6IDMwMHB4OyBsZWZ0OiAzMDBweDsgd2lkdGg6IDEwMHB4
OyBoZWlnaHQ6IDEwMHB4OyB9Ci0gICAgICAgICAgICAjcmVnaW9uIHsgLXdlYmtpdC1mbG93LWZy
b206IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogMTAwcHg7IHdp
ZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgfQotICAgICAgICAgICAgI3RhcmdldCAgeyBwb3Np
dGlvbjogZml4ZWQ7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OyB3aWR0aDogNTBweDsgaGVpZ2h0
OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdG9wOiAxMDBweDsgbGVmdDogNTBweDsg
fQotICAgICAgICA8L3N0eWxlPgotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVwYWludC9yZXNv
dXJjZXMvdGV4dC1iYXNlZC1yZXBhaW50LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAg
PGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpIj4KLSAgICAgICAgPCEtLQotICAgICAgICBU
ZXN0IGZvciBXZWJLaXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExMTc2Ci0gICAgICAgIFRlc3QgdGhhdCBhIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudCwg
Y29sbGVjdGVkIGludG8gYSBuYW1lZCBmbG93LCB0aGF0IGhhcyBpdHMgcG9zaXRpb24gY2hhbmdl
ZCB0byBzdGF0aWMKLSAgICAgICAgYW5kIG91dCBvZiBhIG5hbWVkIGZsb3csIGlzIHBvc2l0aW9u
ZWQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lciBpbnN0ZWFkIG9mIHZpZXdwb3J0LgotICAgICAg
ICBPbiBzdWNjZXNzLCB5b3Ugc2hvdWxkIHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBiZWxvdy4KLSAg
ICAgICAgLS0+Ci0gICAgICAgIDxkaXYgaWQ9InJlZCI+PC9kaXY+Ci0gICAgICAgIDxkaXYgaWQ9
ImNvbnRhaW5lciI+Ci0gICAgICAgICAgICA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgotICAgICAg
ICA8L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0icmVnaW9uIj48L2Rpdj4KLSAgICAgICAgPHNjcmlw
dD4KLSAgICAgICAgICAgIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkgewotICAgICAgICAgICAgICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7Ci0gICAgICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLnBvc2l0aW9uID0gInN0YXRpYyI7Ci0gICAgICAgICAgICAg
ICAgdGFyZ2V0LnN0eWxlLndlYmtpdEZsb3dJbnRvID0gIm5vbmUiOwotICAgICAgICAgICAgfQot
ICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtZWxlbWVudC10cmFuc2Zvcm1lZC1wYXJlbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2ZpeGVkLWVsZW1lbnQtdHJhbnNm
b3JtZWQtcGFyZW50LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTc0ODU0MC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtZWxl
bWVudC10cmFuc2Zvcm1lZC1wYXJlbnQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
OSArMCwwIEBACi1UZXN0IGZvciBbQ1NTIFJlZ2lvbnNdIHBvc2l0aW9uOiBmaXhlZCBpcyBjb21w
dXRlZCByZWxhdGl2ZSB0byB0aGUgZmlyc3QgcmVnaW9uLCBub3QgdGhlIHZpZXdwb3J0LgotCi1U
ZXN0IHRoYXQgYSBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQgd2l0aCBhIHRyYW5zZm9ybWVkIHBh
cmVudCBjb2xsZWN0ZWQgaW4gYSBuYW1lZCBmbG93IGlzIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8g
dGhlIHRyYW5zZm9ybWVkIHBhcmVudCBpbnN0ZWFkIG9mIHRoZSB2aWV3cG9ydC4KLQotT24gc3Vj
Y2VzcyB5b3Ugc2hvdWxkIHNlZSBQQVNTIGJlbG93Ci0KLVBBU1MKLQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtZWxlbWVudC10cmFuc2Zvcm1lZC1wYXJlbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1lbGVtZW50LXRyYW5zZm9ybWVk
LXBhcmVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODhiY2FiLi4wMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1lbGVtZW50LXRyYW5zZm9y
bWVkLXBhcmVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPHN0eWxlPgotICAgICAgICAgICAg
I3JlZ2lvbiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMTAwcHg7IGxlZnQ6IDEwMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRl
cjogNXB4IHNvbGlkIGJsYWNrOyB9Ci0gICAgICAgICAgICAjcGFyZW50IHsgLXdlYmtpdC1mbG93
LWludG86IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5z
bGF0ZVgoNTBweCk7IH0KLSAgICAgICAgICAgICNyZWQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogMTA1cHg7IGxlZnQ6IDE1NXB4OyB3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IH0KLSAgICAgICAgICAgICNmaXhlZCAgeyBwb3NpdGlvbjogZml4ZWQ7
IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9Ci0g
ICAgICAgIDwvc3R5bGU+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8cD5UZXN0
IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
MTc2Ij5bQ1NTIFJlZ2lvbnNdIHBvc2l0aW9uOiBmaXhlZCBpcyBjb21wdXRlZCByZWxhdGl2ZSB0
byB0aGUgZmlyc3QgcmVnaW9uLCBub3QgdGhlIHZpZXdwb3J0PC9hPi48L3A+Ci0gICAgICAgIDxw
PlRlc3QgdGhhdCBhIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudCB3aXRoIGEgdHJhbnNmb3JtZWQg
cGFyZW50IGNvbGxlY3RlZCBpbiBhIG5hbWVkIGZsb3cgaXMgcG9zaXRpb25lZCByZWxhdGl2ZSB0
byB0aGUgdHJhbnNmb3JtZWQgcGFyZW50IGluc3RlYWQgb2YgdGhlIHZpZXdwb3J0LjwvcD4KLSAg
ICAgICAgPHA+T24gc3VjY2VzcyB5b3Ugc2hvdWxkIHNlZSBQQVNTIGJlbG93PC9wPgotICAgICAg
ICA8cCBpZD0icmVzdWx0Ij5GQUlMPC9wPgotICAgICAgICA8ZGl2IGlkPSJyZWQiPjwvZGl2Pgot
Ci0gICAgICAgIDxkaXYgaWQ9InBhcmVudCI+Ci0gICAgICAgICAgICA8ZGl2IGlkPSJmaXhlZCI+
PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJyZWdpb24iPjwvZGl2Pgot
ICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAg
IHZhciBib3VuZGluZ1JlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZml4ZWQiKS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgICAgIGlmIChib3VuZGluZ1JlY3QudG9wID09
IDEwNSAmJiBib3VuZGluZ1JlY3QubGVmdCA9PSAxNTUpCi0gICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9ICJQQVNTIjsKLSAgICAgICAg
PC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2ZpeGVkLWluLW5hbWVkLWZsb3ctc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1pbi1uYW1lZC1mbG93LXNjcm9sbC1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNzNmNzQuLjAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2ZpeGVkLWluLW5hbWVkLWZsb3ctc2Nyb2xsLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGVzdCB0aGF0IGEgZml4
ZWQgZWxlbWVudCBpbnNpZGUgYSBuYW1lZCBmbG93IGlzIHByb3Blcmx5IHBvc2l0aW9uZWQgd2hl
biB0aGUgdmlldyBpcyBzY3JvbGxlZC4gT24gc3VjY2VzcyB5b3Ugc2hvdWxkIHNlZSBQQVNTIGJl
bG93IGFuZCBhIGdyZWVuIHJlY3RhbmdsZS4KLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtaW4tbmFtZWQtZmxvdy1zY3JvbGwuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1pbi1uYW1lZC1mbG93LXNjcm9sbC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjk0ZGNkLi4wMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1pbi1uYW1lZC1mbG93LXNjcm9sbC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVh
ZD4KLSAgICAgICAgPHN0eWxlPgotICAgICAgICAgICAgYm9keSB7IGhlaWdodDogMjAwMHB4OyB9
Ci0KLSAgICAgICAgICAgICNmaXhlZCB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OyB3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7IHRvcDogMTAwcHg7IGxlZnQ6IDEwMHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGZpeGVkOyB9Ci0gICAgICAgICAgICAvKiBXZSBuZWVk
IHRoZSByZWdpb24gb3RoZXJ3aXNlIHRoZSBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQgaXMgbm90
IGRpc3BsYXllZC4qLwotICAgICAgICAgICAgI3JlZ2lvbiB7IC13ZWJraXQtZmxvdy1mcm9tOiBm
bG93OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7IGxlZnQ6IDIwMHB4OyB9Ci0KLSAg
ICAgICAgICAgICNyZWQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7IGxlZnQ6IDEw
MHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsg
fQotICAgICAgICA8L3N0eWxlPgotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVwYWludC9yZXNv
dXJjZXMvdGV4dC1iYXNlZC1yZXBhaW50LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAg
PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotICAgICAgICA8cD4KLSAgICAgICAgVGVzdCB0aGF0IGEg
Zml4ZWQgZWxlbWVudCBpbnNpZGUgYSBuYW1lZCBmbG93IGlzIHByb3Blcmx5IHBvc2l0aW9uZWQg
d2hlbiB0aGUgdmlldyBpcyBzY3JvbGxlZC4KLSAgICAgICAgT24gc3VjY2VzcyB5b3Ugc2hvdWxk
IHNlZSBQQVNTIGJlbG93IGFuZCBhIGdyZWVuIHJlY3RhbmdsZS4KLSAgICAgICAgPC9wPgotICAg
ICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJyZWdpb24iPjwv
ZGl2PgotCi0gICAgICAgIDxkaXYgaWQ9InJlZCI+PC9kaXY+Ci0gICAgICAgIDxkaXYgaWQ9ImZp
eGVkIj48L2Rpdj4KLSAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEZpeGVkKCkgewotICAgICAgICAgICAgICAg
IHdpbmRvdy5zY3JvbGxUbygwLCAxMDApOwotICAgICAgICAgICAgICAgIHZhciBoaXRFbGVtZW50
ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgxNTAsIDE1MCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGhpdEVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpeGVkIikpCi0gICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgPSAiUEFTUyI7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIkZBSUwiOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDsKLSAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRml4ZWQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxGaXhlZCwg
MTAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIDwvc2NyaXB0
PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9maXhlZC1pbnNpZGUtZml4ZWQtaW4tbmFtZWQtZmxvdy1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2ZpeGVkLWluc2lkZS1maXhlZC1pbi1uYW1lZC1mbG93LWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwODQ5NTcuLjAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2ZpeGVkLWluc2lkZS1maXhlZC1pbi1u
YW1lZC1mbG93LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8c3R5bGU+Ci0gICAg
ICAgICAgICAjZ3JlZW5PdXRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVm
dDogNTBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsgfQotICAgICAgICAgICAgI29yYW5nZUlubmVyIHsgcG9zaXRpb246IGFic29sdXRlOyB0
b3A6IDUwcHg7IGxlZnQ6IDUwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dy
b3VuZC1jb2xvcjogb3JhbmdlOyB9Ci0gICAgICAgIDwvc3R5bGU+Ci0gICAgPC9oZWFkPgotICAg
IDxib2R5PgotICAgICAgICA8cD5UZXN0IHRoYXQgYSBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQg
aW5zaWRlIGFub3RoZXIgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50IGNvbGxlY3RlZCBpbiBuYW1l
ZCBmbG93IGlzIGNvcnJlY3RseSBwb3NpdGlvbmVkLjwvcD4KLSAgICAgICAgPHA+T24gc3VjY2Vz
cyB5b3Ugc2hvdWxkIHNlZSAyIG92ZXJsYXBwaW5nIHJlY3RhbmdsZXMgaW4gdGhlIHRvcCBsZWZ0
IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZCBubyByZWQuPC9wPgotICAgICAgICA8ZGl2IGlkPSJn
cmVlbk91dGVyIj4KLSAgICAgICAgICAgIDxkaXYgaWQ9Im9yYW5nZUlubmVyIj48L2Rpdj4KLSAg
ICAgICAgPC9kaXY+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2ZpeGVkLWluc2lkZS1maXhlZC1pbi1uYW1lZC1mbG93Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtaW5zaWRlLWZpeGVkLWluLW5hbWVkLWZsb3cu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ2OWZlZC4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtaW5zaWRlLWZpeGVkLWluLW5hbWVkLWZs
b3cuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxzdHlsZT4KLSAgICAgICAgICAgICNyZWRPdXRl
ciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDBweDsgbGVmdDogNTBweDsgd2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KLSAgICAgICAgICAg
ICNyZWRJbm5lciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MHB4OyBsZWZ0OiA1MHB4OyB3
aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQotICAg
ICAgICAgICAgI291dGVyRml4ZWQgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgcG9zaXRpb246
IGZpeGVkOyB0b3A6IDEwMHB4OyBsZWZ0OiA1MHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAw
cHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9Ci0gICAgICAgICAgICAjaW5uZXJGaXhlZCB7
IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxNTBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB9Ci0KLSAgICAgICAgICAg
ICNyZWdpb24geyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgcG9zaXRpb246IGFic29sdXRlOyB0
b3A6IDIwMHB4OyBsZWZ0OiAyMDBweDsgd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4OyB9Ci0g
ICAgICAgIDwvc3R5bGU+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8cD5UZXN0
IHRoYXQgYSBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQgaW5zaWRlIGFub3RoZXIgZml4ZWQgcG9z
aXRpb25lZCBlbGVtZW50IGNvbGxlY3RlZCBpbiBuYW1lZCBmbG93IGlzIGNvcnJlY3RseSBwb3Np
dGlvbmVkLjwvcD4KLSAgICAgICAgPHA+T24gc3VjY2VzcyB5b3Ugc2hvdWxkIHNlZSAyIG92ZXJs
YXBwaW5nIHJlY3RhbmdsZXMgaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFu
ZCBubyByZWQuPC9wPgotICAgICAgICA8ZGl2IGlkPSJyZWRPdXRlciI+Ci0gICAgICAgICAgICA8
ZGl2IGlkPSJyZWRJbm5lciI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGlk
PSJvdXRlckZpeGVkIj4KLSAgICAgICAgICAgIDxkaXYgaWQ9ImlubmVyRml4ZWQiPjwvZGl2Pgot
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBpZD0icmVnaW9uIj48L2Rpdj4KLSAgICA8L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQt
aW5zaWRlLW5hbWVkLWZsb3ctekluZGV4LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZml4ZWQtaW5zaWRlLW5hbWVkLWZsb3ctekluZGV4LWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNmFjY2MuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2ZpeGVkLWluc2lkZS1uYW1lZC1mbG93LXpJbmRleC1leHBlY3Rl
ZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPHN0eWxlPgotICAgICAgICAjZml4ZWQxIHsgd2lk
dGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyB0b3A6IDEwMHB4OyBsZWZ0OiAxMDBweDsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBmaXhlZDsgei1pbmRleDogMTA7IH0KLQotICAg
ICAgICAjZml4ZWQyIHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyB0b3A6IDE1MHB4OyBs
ZWZ0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBwb3NpdGlvbjogZml4ZWQ7IH0K
LSAgICAgICAgPC9zdHlsZT4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxwPlRl
c3QgdGhhdCBwYWludGluZyB0aGUgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBpbnNpZGUgdGhl
IHNhbWUgbmFtZWQgZmxvdyB0YWtlcyB6SW5kZXggaW50byBhY2NvdW50LjwvcD4KLSAgICAgICAg
PHA+T24gc3VjY2VzcywgeW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0YW5nbGUgaW4gZnJvbnQg
b2YgdGhlIG9yYW5nZSByZWN0YW5nbGUuPC9wPgotICAgICAgICA8ZGl2IGlkPSJmaXhlZDEiPjwv
ZGl2PgotICAgICAgICA8ZGl2IGlkPSJmaXhlZDIiPjwvZGl2PgotICAgIDwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1pbnNpZGUtbmFt
ZWQtZmxvdy16SW5kZXguaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1pbnNp
ZGUtbmFtZWQtZmxvdy16SW5kZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjMxOGU3ZC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtaW5z
aWRlLW5hbWVkLWZsb3ctekluZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8c3R5bGU+Ci0g
ICAgICAgICNmaXhlZDEgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDEwMHB4OyB0b3A6IDEwMHB4OyBsZWZ0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47IHBvc2l0aW9uOiBmaXhlZDsgei1pbmRleDogMTA7IH0KLQotICAgICAgICAjZml4ZWQy
IHsgLXdlYmtpdC1mbG93LWludG86IGZsb3c7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsg
dG9wOiAxNTBweDsgbGVmdDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgcG9zaXRp
b246IGZpeGVkOyB9Ci0KLSAgICAgICAgLyogV2UgbmVlZCBhIHJlZ2lvbiBiZWNhdXNlIG90aGVy
d2lzZSB0aGUgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCAqLwot
ICAgICAgICAjcmVnaW9uIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IH0KLSAgICAgICAgPC9z
dHlsZT4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxwPlRlc3QgdGhhdCBwYWlu
dGluZyB0aGUgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBpbnNpZGUgdGhlIHNhbWUgbmFtZWQg
ZmxvdyB0YWtlcyB6SW5kZXggaW50byBhY2NvdW50LjwvcD4KLSAgICAgICAgPHA+T24gc3VjY2Vz
cywgeW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0YW5nbGUgaW4gZnJvbnQgb2YgdGhlIG9yYW5n
ZSByZWN0YW5nbGUuPC9wPgotICAgICAgICA8ZGl2IGlkPSJmaXhlZDEiPjwvZGl2PgotICAgICAg
ICA8ZGl2IGlkPSJmaXhlZDIiPjwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJyZWdpb24iPjwvZGl2
PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9maXhlZC1wb3MtZWxlbS1pbi1uYW1lZGZsb3ctbm9yZWdpb25zLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtcG9zLWVsZW0taW4tbmFtZWRmbG93LW5v
cmVnaW9ucy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmY2
NGFiLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1wb3MtZWxl
bS1pbi1uYW1lZGZsb3ctbm9yZWdpb25zLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxib2R5PgotICAgICAg
ICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTExMTc2Ij5bQ1NTIFJlZ2lvbnNdIHBvc2l0aW9uOiBmaXhlZCBpcyBjb21wdXRlZCBy
ZWxhdGl2ZSB0byB0aGUgZmlyc3QgcmVnaW9uLCBub3QgdGhlIHZpZXdwb3J0PC9hPi48L3A+Ci0g
ICAgICAgIDxwPgotICAgICAgICBUZXN0IHRoYXQgYSBmaXhlZCBlbGVtZW50IGluc2lkZSBhIG5h
bWVkIGZsb3cgdGhhdCBkb2VzIG5vdCBoYXZlIGF0dGFjaGVkIHJlZ2lvbnMgaXMgbm90IGRpc3Bs
YXllZC4KLSAgICAgICAgT24gc3VjY2VzcywgeW91IHNob3VsZCBub3Qgc2VlIHJlZCBiZWxvdy4K
LSAgICAgICAgPC9wPgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1wb3MtZWxlbS1pbi1uYW1lZGZsb3ctbm9yZWdpb25zLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtcG9zLWVsZW0taW4tbmFtZWRmbG93
LW5vcmVnaW9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2Q3YjliLi4w
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1wb3MtZWxlbS1pbi1u
YW1lZGZsb3ctbm9yZWdpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8c3R5bGU+Ci0gICAg
ICAgICAgICAjZml4ZWQgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgd2lkdGg6IDUwcHg7IGhl
aWdodDogNTBweDsgdG9wOiAxMDBweDsgbGVmdDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJl
ZDsgcG9zaXRpb246IGZpeGVkOyB9Ci0gICAgICAgIDwvc3R5bGU+Ci0gICAgPC9oZWFkPgotICAg
IDxib2R5PgotICAgICAgICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTc2Ij5bQ1NTIFJlZ2lvbnNdIHBvc2l0aW9uOiBmaXhl
ZCBpcyBjb21wdXRlZCByZWxhdGl2ZSB0byB0aGUgZmlyc3QgcmVnaW9uLCBub3QgdGhlIHZpZXdw
b3J0PC9hPi48L3A+Ci0gICAgICAgIDxwPgotICAgICAgICBUZXN0IHRoYXQgYSBmaXhlZCBlbGVt
ZW50IGluc2lkZSBhIG5hbWVkIGZsb3cgdGhhdCBkb2VzIG5vdCBoYXZlIGF0dGFjaGVkIHJlZ2lv
bnMgaXMgbm90IGRpc3BsYXllZC4KLSAgICAgICAgT24gc3VjY2VzcywgeW91IHNob3VsZCBub3Qg
c2VlIHJlZCBiZWxvdy4KLSAgICAgICAgPC9wPgotICAgICAgICA8ZGl2IGlkPSJmaXhlZCI+PC9k
aXY+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2ZpeGVkLXBvcy1lbGVtLWluLXJlZ2lvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2ZpeGVkLXBvcy1lbGVtLWluLXJlZ2lvbi1leHBlY3RlZC5odG1sCmlu
ZGV4IGJlZDgzZTIuLmIxZGJiZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9maXhlZC1wb3MtZWxlbS1pbi1yZWdpb24tZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZml4ZWQtcG9zLWVsZW0taW4tcmVnaW9uLWV4cGVjdGVkLmh0bWwKQEAg
LTIsMTMgKzIsMTIgQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c3R5bGU+Ci0gICAg
ICAgICAgICAjZ3JlZW4geyBwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAyMCU7IGhlaWdodDogMjAl
OyB0b3A6IDE1MHB4OyBsZWZ0OiAxMjVweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAg
ICAgICAgICAgICNncmVlbiB7IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDog
NTBweDsgdG9wOiAxMjVweDsgbGVmdDogNzVweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0K
ICAgICAgICAgPC9zdHlsZT4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CiAgICAgICAgIDxwPlRl
c3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODEzMyI+V2ViS2l0IEJ1ZyA4ODEzMzwvYT4gQ29sbGVjdGluZyBhIGZpeGVkIHBvc2l0aW9uZWQg
ZWxlbWVudCBpbiBhIG5hbWVkIGZsb3cgY2F1c2VzIFdlYktpdCB0byBjcmFzaC48L3A+CiAgICAg
ICAgIDxwPlRoaXMgdGVzdCBjb2xsZWN0cyBhIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgaW5zaWRl
IGEgbmFtZWQgZmxvdyBhbmQgZmxvd3MgaXQgaW50byBhIHJlZ2lvbi48L3A+Ci0gICAgICAgIDxw
PlRoZSBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQgc2hvdWxkIGJlIHBvc2l0aW9uZWQgYW5kIHNp
emVkIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydC48L3A+CiAgICAgICAgIDxwPlRoZSB0ZXN0IHBh
c3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBvciBhc3NlcnQgYW5kIHRoZXJlIGlzIG5vIHJlZCBy
ZWN0YW5nbGUgdmlzaWJsZS48L3A+CiAgICAgICAgIDxkaXYgaWQ9ImdyZWVuIj48L2Rpdj4KICAg
ICA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtcG9z
LWVsZW0taW4tcmVnaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtcG9z
LWVsZW0taW4tcmVnaW9uLmh0bWwKaW5kZXggZTQwOGYwNC4uOTFjOWQzYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2ZpeGVkLXBvcy1lbGVtLWluLXJlZ2lvbi5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1wb3MtZWxlbS1pbi1yZWdpb24uaHRt
bApAQCAtMiwxNSArMiwxNCBAQAogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzdHlsZT4K
LSAgICAgICAgICAgICNyZWQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAyMCU7IGhlaWdo
dDogMjAlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxMjVweDsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9
Ci0gICAgICAgICAgICAjZml4ZWQgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgcG9zaXRpb246
IGZpeGVkOyB3aWR0aDogMjAlOyBoZWlnaHQ6IDIwJTsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
IHRvcDogMTUwcHg7IGxlZnQ6IDEyNXB4OyB9Ci0gICAgICAgICAgICAjcmVnaW9uIHsgLXdlYmtp
dC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgcG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxNTBweDsgfQorICAgICAgICAgICAgI3JlZCB7
IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgdG9wOiAxMjVweDsg
bGVmdDogNzVweDsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgICAgICAjZml4ZWQg
eyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgcG9zaXRpb246IGZpeGVkOyB3aWR0aDogNTBweDsg
aGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdG9wOiAyNXB4OyBsZWZ0OiAy
NXB4OyB9CisgICAgICAgICAgICAjcmVnaW9uIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdp
ZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMHB4
OyBsZWZ0OiA1MHB4OyB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgPC9oZWFkPgogICAgIDxib2R5
PgogICAgICAgICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODgxMzMiPldlYktpdCBCdWcgODgxMzM8L2E+IENvbGxlY3RpbmcgYSBm
aXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQgaW4gYSBuYW1lZCBmbG93IGNhdXNlcyBXZWJLaXQgdG8g
Y3Jhc2guPC9wPgogICAgICAgICA8cD5UaGlzIHRlc3QgY29sbGVjdHMgYSBmaXhlZCBwb3NpdGlv
biBlbGVtZW50IGluc2lkZSBhIG5hbWVkIGZsb3cgYW5kIGZsb3dzIGl0IGludG8gYSByZWdpb24u
PC9wPgotICAgICAgICA8cD5UaGUgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50IHNob3VsZCBiZSBw
b3NpdGlvbmVkIGFuZCBzaXplZCByZWxhdGl2ZSB0byB0aGUgdmlld3BvcnQuPC9wPgogICAgICAg
ICA8cD5UaGUgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2ggb3IgYXNzZXJ0IGFuZCB0
aGVyZSBpcyBubyByZWQgcmVjdGFuZ2xlIHZpc2libGUuPC9wPgogICAgICAgICA8ZGl2IGlkPSJy
ZWQiPjwvZGl2PgogICAgICAgICA8ZGl2IGlkPSJmaXhlZCI+PC9kaXY+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtcG9zLXJlZ2lvbi1pbi1uZXN0ZWQtZmxvdy1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2ZpeGVkLXBvcy1yZWdpb24t
aW4tbmVzdGVkLWZsb3ctZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmY3ODE4Ni4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQt
cG9zLXJlZ2lvbi1pbi1uZXN0ZWQtZmxvdy1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMzMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzdHls
ZT4KLSAgICAgICAgYm9keSB7Ci0gICAgICAgICAgICBmb250OiAxNnB4LzEuMjUgbW9ub3NwYWNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgI3JlZ2lvbjEgewotICAgICAgICAgICAgd2lkdGg6IDI1
MHB4OwotICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgICAgICAgICAgdG9wOiAy
MDBweDsKLSAgICAgICAgICAgIGxlZnQ6IDUwcHg7Ci0gICAgICAgICAgICBib3JkZXI6IHRoaWNr
IHNvbGlkIGJsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICAjcmVnaW9uMiB7Ci0gICAgICAgICAg
ICB3aWR0aDogMjUwcHg7Ci0gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7Ci0gICAgICAgICAg
ICB0b3A6IDM1MHB4OwotICAgICAgICAgICAgbGVmdDogNTBweDsKLSAgICAgICAgICAgIGJvcmRl
cjogdGhpY2sgc29saWQgZ3JlZW47Ci0gICAgICAgIH0KLSAgICA8L3N0eWxlPgotPC9oZWFkPgot
PGJvZHk+Ci0gICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMTE3NiI+W0NTUyBSZWdpb25zXSBwb3NpdGlvbjogZml4ZWQgaXMg
Y29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhlIGZpcnN0IHJlZ2lvbiwgbm90IHRoZSB2aWV3cG9ydDwv
YT4uPC9wPgotICAgIDxwPlRlc3QgdGhhdCBhIGZpeGVkIHBvc2l0aW9uZWQgcmVnaW9uIGluc2lk
ZSBhIG5lc3RlZCBmbG93IGlzIGxhaWQgb3V0IHByb3Blcmx5LjwvcD4KLSAgICA8cD5PbiBzdWNj
ZXNzLCB5b3Ugc2hvdWxkIHNlZSBwYXNzIGJlbG93IGFuZCAyIHJlZ2lvbnM6IGEgYmx1ZSBib3Jk
ZXIgYW5kIGJlbG93IGEgZ3JlZW4gYm9yZGVyIHJlZ2lvbi48L3A+Ci0gICAgPGRpdiBjbGFzcz0i
cmVnaW9uMiIgaWQ9InJlZ2lvbjIiPkNvbnRlbnQgaW4gc2Vjb25kIGZsb3cuPC9kaXY+Ci0gICAg
PGRpdiBjbGFzcz0icmVnaW9uMSIgaWQ9InJlZ2lvbjEiPkNvbnRlbnQgaW4gZmlyc3QgZmxvdy48
YnIvPkNvbnRlbnQgaW4gZmlyc3QgZmxvdy48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1wb3MtcmVnaW9uLWluLW5lc3Rl
ZC1mbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZml4ZWQtcG9zLXJlZ2lvbi1p
bi1uZXN0ZWQtZmxvdy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmNiNDBl
Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9maXhlZC1wb3MtcmVnaW9u
LWluLW5lc3RlZC1mbG93Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHN0eWxlPgotICAgICAgICBib2R5IHsK
LSAgICAgICAgICAgIGZvbnQ6IDE2cHgvMS4yNSBtb25vc3BhY2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICAjY29udGVudDEgewotICAgICAgICAgICAgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOwot
ICAgICAgICB9Ci0KLSAgICAgICAgI2NvbnRlbnQyIHsKLSAgICAgICAgICAgIC13ZWJraXQtZmxv
dy1pbnRvOiBmbG93MjsKLSAgICAgICAgfQotCi0gICAgICAgIC5yZWdpb24xIHsKLSAgICAgICAg
ICAgIGJvcmRlcjogdGhpY2sgc29saWQgYmx1ZTsKLSAgICAgICAgICAgIC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsKLSAgICAgICAgfQotCi0gICAgICAgIC5yZWdpb24yIHsKLSAgICAgICAgICAg
IGJvcmRlcjogdGhpY2sgc29saWQgZ3JlZW47Ci0gICAgICAgICAgICAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzI7Ci0gICAgICAgIH0KLQotICAgICAgICAjcmVnaW9uMSB7Ci0gICAgICAgICAgICB3
aWR0aDogMjUwcHg7Ci0gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgICAg
ICB0b3A6IDIwMHB4OwotICAgICAgICAgICAgbGVmdDogNTBweDsKLSAgICAgICAgfQotCi0gICAg
ICAgICNyZWdpb24yIHsKLSAgICAgICAgICAgIHdpZHRoOiAyNTBweDsKLSAgICAgICAgICAgIHBv
c2l0aW9uOiBmaXhlZDsKLSAgICAgICAgICAgIHRvcDogMzUwcHg7Ci0gICAgICAgICAgICBsZWZ0
OiA1MHB4OwotICAgICAgICB9Ci0gICAgPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxw
PlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTExNzYiPltDU1MgUmVnaW9uc10gcG9zaXRpb246IGZpeGVkIGlzIGNvbXB1dGVkIHJlbGF0
aXZlIHRvIHRoZSBmaXJzdCByZWdpb24sIG5vdCB0aGUgdmlld3BvcnQ8L2E+LjwvcD4KLSAgICA8
cD5UZXN0IHRoYXQgYSBmaXhlZCBwb3NpdGlvbmVkIHJlZ2lvbiBpbnNpZGUgYSBuZXN0ZWQgZmxv
dyBpcyBsYWlkIG91dCBwcm9wZXJseS48L3A+Ci0gICAgPHA+T24gc3VjY2VzcywgeW91IHNob3Vs
ZCBzZWUgcGFzcyBiZWxvdyBhbmQgMiByZWdpb25zOiBhIGJsdWUgYm9yZGVyIGFuZCBiZWxvdyBh
IGdyZWVuIGJvcmRlciByZWdpb24uPC9wPgotICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiIGlkPSJj
b250ZW50MSI+Ci0gICAgICAgIENvbnRlbnQgaW4gZmlyc3QgZmxvdy4KLSAgICAgICAgPGRpdiBj
bGFzcz0icmVnaW9uMiIgaWQ9InJlZ2lvbjIiPjwvZGl2PgotICAgICAgICBDb250ZW50IGluIGZp
cnN0IGZsb3cuCi0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0iY29udGVudCIgaWQ9ImNvbnRl
bnQyIj5Db250ZW50IGluIHNlY29uZCBmbG93LjwvZGl2PgotICAgIDxkaXYgY2xhc3M9InJlZ2lv
bjEiIGlkPSJyZWdpb24xIj48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9ucy1ieS1jb250ZW50LXBzZXVkby1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJlZ2lvbnMtYnktY29udGVu
dC1wc2V1ZG8tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGVi
ODAxLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9nZXQtcmVnaW9ucy1i
eS1jb250ZW50LXBzZXVkby1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCww
IEBACi1UZXN0cyBXZWJLaXROYW1lZEZsb3cuZ2V0UmVnaW9uc0J5Q29udGVudCgpIGFuZCBwc2V1
ZG8tZWxlbWVudHMgYXMgcmVnaW9ucwotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
UEFTUyByZWdpb25MaXN0Lmxlbmd0aCBpcyAxCi1QQVNTIHJlZ2lvbkxpc3QuaXRlbSgwKS5pZCBp
cyAicmVnaW9uXzIiCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2dldC1yZWdpb25z
LWJ5LWNvbnRlbnQtcHNldWRvLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbnMtYnktY29udGVudC1wc2V1ZG8uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWZlZWUwYy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZ2V0LXJl
Z2lvbnMtYnktY29udGVudC1wc2V1ZG8uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KLSAgICAg
ICAgPHN0eWxlPgotICAgICAgICAgICAgI2FydGljbGUgewotICAgICAgICAgICAgICAgIC13ZWJr
aXQtZmxvdy1pbnRvOiBhcnRpY2xlOwotICAgICAgICAgICAgICAgIGhlaWdodDogMTUwcHg7Ci0g
ICAgICAgICAgICAgICAgd2lkdGg6IDUwcHg7Ci0gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICNyZWdpb25fMSB7Ci0g
ICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgICAgICAgICAgICAgIHRvcDoy
MDBweDsKLSAgICAgICAgICAgICAgICBsZWZ0OiAxMDBweDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgI3JlZ2lvbl8xOjpiZWZvcmUgewotICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJs
b2NrOwotICAgICAgICAgICAgICAgIHdpZHRoOiA1MHB4OwotICAgICAgICAgICAgICAgIGhlaWdo
dDogNTBweDsKLSAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICAg
ICAgICAgICAgICAtd2Via2l0LWZsb3ctZnJvbTogYXJ0aWNsZTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgI3JlZ2lvbl8xOjphZnRlciB7Ci0gICAgICAgICAgICAgICAgZGlzcGxheTog
YmxvY2s7Ci0gICAgICAgICAgICAgICAgd2lkdGg6IDUwcHg7Ci0gICAgICAgICAgICAgICAgaGVp
Z2h0OiA1MHB4OwotICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwotICAg
ICAgICAgICAgICAgIC13ZWJraXQtZmxvdy1mcm9tOiBhcnRpY2xlOyAgICAKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgI3JlZ2lvbl8yIHsKLSAgICAgICAgICAgICAgICAtd2Via2l0LWZs
b3ctZnJvbTogYXJ0aWNsZTsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6NTBweDsKLSAgICAgICAg
ICAgICAgICB3aWR0aDo1MHB4OwotICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICAgICAgICAgICAgICB0b3A6IDIwMHB4OwotICAgICAgICAgICAgICAgIGxlZnQ6IDIwMHB4
OwotICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwotICAgICAgICAgICAg
fQotICAgICAgICA8L3N0eWxlPgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPCEt
LQotICAgICAgICBUZXN0IHRoYXQgdGhlIHBzZXVkby1lbGVtZW50cyByZWdpb25zIGFyZSBub3Qg
ZXhwb3NlZCB0byBKUy4KLSAgICAgICAgLS0+Ci0gICAgICAgIDxkaXYgaWQ9ImFydGljbGUiPjwv
ZGl2PgotCi0gICAgICAgIDxkaXYgaWQ9InJlZ2lvbl8xIj48L2Rpdj4KLSAgICAgICAgPGRpdiBp
ZD0icmVnaW9uXzIiPjwvZGl2PgotICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIFdlYktpdE5hbWVkRmxvdy5nZXRSZWdp
b25zQnlDb250ZW50KCkgYW5kIHBzZXVkby1lbGVtZW50cyBhcyByZWdpb25zIikKLQotICAgICAg
ICAgICAgdmFyIG5hbWVkRmxvdyA9IGdldEZsb3dCeU5hbWUoImFydGljbGUiKTsKLSAgICAgICAg
ICAgIHZhciB0YXJnZXROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFydGljbGUiKTsK
LSAgICAgICAgICAgIHZhciByZWdpb25MaXN0ID0gbmFtZWRGbG93LmdldFJlZ2lvbnNCeUNvbnRl
bnQodGFyZ2V0Tm9kZSk7Ci0KLSAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oInJlZ2lvbkxp
c3QubGVuZ3RoIiwgMSk7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlZ2lv
bkxpc3QuaXRlbSgwKS5pZCIsICJyZWdpb25fMiIpOwotCi0gICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYXJ0aWNsZSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKLSAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZWdpb25fMiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKLSAgICAgICAgPC9zY3JpcHQ+
Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtbmFtZWQtZmxvdy1nZXQtcmVnaW9ucy1wc2V1ZG8t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dlYmtpdC1uYW1lZC1mbG93
LWdldC1yZWdpb25zLXBzZXVkby1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBkNGE5NzguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3dl
YmtpdC1uYW1lZC1mbG93LWdldC1yZWdpb25zLXBzZXVkby1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwxMyArMCwwIEBACi1UZXN0cyBXZWJLaXROYW1lZEZsb3cuZ2V0UmVnaW9ucygp
IGFuZCBwc2V1ZG8tZWxlbWVudHMgYXMgcmVnaW9ucy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLVBBU1MgcmVnaW9uTGlzdC5sZW5ndGggaXMgMQotUEFTUyBuYW1lZEZsb3cuZmly
c3RFbXB0eVJlZ2lvbkluZGV4IGlzIDAKLVBBU1MgcmVnaW9uTGlzdC5pdGVtKDApLmlkIGlzICJy
ZWdpb25fMiIKLVBBU1MgcmVnaW9uTGlzdC5pdGVtKDApLndlYmtpdFJlZ2lvbk92ZXJzZXQgaXMg
ImVtcHR5IgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJraXQtbmFtZWQtZmxv
dy1nZXQtcmVnaW9ucy1wc2V1ZG8uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy93ZWJr
aXQtbmFtZWQtZmxvdy1nZXQtcmVnaW9ucy1wc2V1ZG8uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTdkZjJhYS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvd2Via2l0LW5hbWVkLWZsb3ctZ2V0LXJlZ2lvbnMtcHNldWRvLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw3OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgotPHN0eWxlPgot
ICAgICNhcnRpY2xlIHsKLSAgICAgICAgLXdlYmtpdC1mbG93LWludG86IGFydGljbGU7Ci0gICAg
ICAgIGhlaWdodDogNTBweDsKLSAgICAgICAgd2lkdGg6IDUwcHg7Ci0gICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOwotICAgIH0KLQotICAgICNyZWdpb25fMSB7Ci0gICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgdG9wOjIwMHB4OwotICAgICAgICBsZWZ0OiAxMDBweDsK
LSAgICB9Ci0KLSAgICAjcmVnaW9uXzE6OmJlZm9yZSB7Ci0gICAgICAgIGRpc3BsYXk6IGJsb2Nr
OwotICAgICAgICB3aWR0aDogNTBweDsKLSAgICAgICAgaGVpZ2h0OiA1MHB4OwotICAgICAgICBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGFydGlj
bGU7Ci0gICAgfQotCi0gICAgI3JlZ2lvbl8xOjphZnRlciB7Ci0gICAgICAgIGRpc3BsYXk6IGJs
b2NrOwotICAgICAgICB3aWR0aDogNTBweDsKLSAgICAgICAgaGVpZ2h0OiA1MHB4OwotICAgICAg
ICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGFy
dGljbGU7ICAgIAotICAgIH0KLQotICAgICNyZWdpb25fMiB7Ci0gICAgICAgIC13ZWJraXQtZmxv
dy1mcm9tOiBhcnRpY2xlOwotICAgICAgICBoZWlnaHQ6NTBweDsKLSAgICAgICAgd2lkdGg6NTBw
eDsKLSAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgICAgICB0b3A6IDIwMHB4OwotICAg
ICAgICBsZWZ0OiAyMDBweDsKLSAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ci0gICAg
fQotCi08L3N0eWxlPgotPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8IS0tCi0gICAgICAg
IFRlc3QgdGhhdCBnZXRSZWdpb25zKCkgZnVuY3Rpb24gZnJvbSBOYW1lZEZsb3cgaW50ZXJmYWNl
IGRvZXMgbm90IGV4cG9zZSB0aGUgcHNldWRvLWVsZW1lbnRzIGFzCi0gICAgICAgIHJlZ2lvbnMu
Ci0gICAgICAgIC0tPgotICAgICAgICA8ZGl2IGlkPSJhcnRpY2xlIj48L2Rpdj4KLQotICAgICAg
ICA8ZGl2IGlkPSJyZWdpb25fMSIgY2xhc3M9InJlZ2lvbl8xIj48L2Rpdj4KLSAgICAgICAgPGRp
diBpZD0icmVnaW9uXzIiIGNsYXNzPSJyZWdpb25fMiI+PC9kaXY+Ci0KLSAgICAgICAgPHNjcmlw
dD4KLSAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBXZWJLaXROYW1lZEZsb3cuZ2V0UmVn
aW9ucygpIGFuZCBwc2V1ZG8tZWxlbWVudHMgYXMgcmVnaW9ucy4iKQotICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotCi0gICAgICAgICAgICB2YXIgbmFtZWRGbG93ID0gZ2V0Rmxvd0J5TmFtZSgiYXJ0aWNs
ZSIpOwotCi0gICAgICAgICAgICAvLyBUaGUgcHNldWRvLWVsZW1lbnRzIGFyZSBub3QgeWV0IHJl
dHVybmVkIGJ5IGdldFJlZ2lvbnMoKQotICAgICAgICAgICAgdmFyIHJlZ2lvbkxpc3QgPSBuYW1l
ZEZsb3cuZ2V0UmVnaW9ucygpOwotICAgICAgICAgICAgc2hvdWxkQmUoInJlZ2lvbkxpc3QubGVu
Z3RoIiwgIjEiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJuYW1lZEZsb3cuZmlyc3RFbXB0eVJl
Z2lvbkluZGV4IiwgIjAiKTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVn
aW9uTGlzdC5pdGVtKDApLmlkIiwgInJlZ2lvbl8yIik7Ci0gICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInJlZ2lvbkxpc3QuaXRlbSgwKS53ZWJraXRSZWdpb25PdmVyc2V0IiwgImVt
cHR5Iik7Ci0KLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcnRpY2xlIiku
c3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbl8xIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwotICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIikuc3R5bGUudmlzaWJpbGl0
eSA9ICJoaWRkZW4iOwotICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L292ZXJm
bG93LXNjcm9sbC10b3VjaC1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVwYWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gtcmVwYWludC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZjAxMTEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9yZXBhaW50L292ZXJmbG93LXNjcm9sbC10b3VjaC1yZXBhaW50LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ug
c2VlIHJlcGFpbnQgb3V0cHV0IChiZWxvdykuCi0KLShyZXBhaW50IHJlY3RzCi0gIChyZWN0IDAg
MCA4MDAgNjAwKQotICAocmVjdCA4IDE2IDc4NCAyMCkKLSAgKHJlY3QgOCA1MiAyMDAwIDIwMDAp
Ci0gIChyZWN0IDggMTYgMjAwMCAyMDM2KQotKQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlcGFpbnQvb3ZlcmZsb3ctc2Nyb2xsLXRvdWNoLXJlcGFpbnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVwYWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gtcmVwYWludC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWQyZDA3Li4wMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvcmVwYWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gtcmVwYWludC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXh0LWJhc2VkLXJlcGFpbnQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkKLXsKLSAgICBkb2N1bWVudC5ib2R5
LnN0eWxlLndlYmtpdE92ZXJmbG93U2Nyb2xsaW5nID0gInRvdWNoIjsKLX0KLTwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW47IC13ZWJraXQtb3ZlcmZsb3ct
c2Nyb2xsaW5nOiBhdXRvIiBvbmxvYWQ9InJ1blJlcGFpbnRUZXN0KCkiPgotPCEtLSBUaGlzIHRl
c3RzIHRoYXQgd2UgcmVxdWlyZSBhIGxheW91dCBhbmQgcmVwYWludCB3aGVuIHRoZSB2YWx1ZSBv
ZiAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyBjaGFuZ2VzLiAtLT4KLTxwPlRoaXMgdGVzdCBQ
QVNTRUQgaWYgeW91IHNlZSByZXBhaW50IG91dHB1dCAoYmVsb3cpLjwvcD4KLTwhLS0gTm90ZSwg
d2UgZXhwZWN0IHRoaXMgdGVzdCB0byBmYWlsIG9uIGFsbCBwb3J0cyB0aGF0IGhhdmUgbm90IGNv
bXBpbGVkIHdpdGggQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HIGVuYWJsZWQuIC0tPgot
Ci08ZGl2IHN0eWxlPSJ3aWR0aDogMjAwMHB4OyBoZWlnaHQ6IDIwMDBweDsiPjwvZGl2PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVz
dC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24tdXRmLTE2Lmpzb24g
Yi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVz
dC1yZXNwb25zZXR5cGUtanNvbi11dGYtMTYuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjA4MjIwZS4uMDAwMDAwMApCaW5hcnkgZmlsZXMgYS9MYXlvdXRUZXN0cy9mYXN0L3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1yZXNwb25zZXR5cGUtanNvbi11
dGYtMTYuanNvbiBhbmQgL2Rldi9udWxsIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBl
LWpzb24uanNvbiBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ht
bGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29uLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGZjNjBkYWMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24uanNvbgor
KysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotewotICAgICJhIjogWyJiIiwgMSwgeyJjIjog
ImQifV0sCi0gICAgImUiOiAyLAotICAgICJmIjogImciCi19CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29u
LWludmFsaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1yZXNwb25zZXR5cGUtanNvbi1pbnZhbGlkLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM2YWRhYy4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29u
LWludmFsaWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGVz
dHMgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIG9mICJqc29uIiB3aXRoIGFuIGludmFsaWQg
cGF5bG9hZC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgeGhyLnJlc3Bv
bnNlIGlzIG51bGwKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29uLWludmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24taW52YWxp
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTM1ZDQ0Li4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9u
c2V0eXBlLWpzb24taW52YWxpZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgotd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotZGVzY3JpcHRpb24oJ1Rlc3RzIFhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNl
VHlwZSBvZiAianNvbiIgd2l0aCBhbiBpbnZhbGlkIHBheWxvYWQuJyk7Ci0KLXZhciB4aHIgPSBu
ZXcgWE1MSHR0cFJlcXVlc3QoKTsKLXZhciB1cmwgPSAncmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0
LWdldC1kYXRhLnhtbCc7Ci0KLXhoci5vcGVuKCdHRVQnLCB1cmwpOwoteGhyLnJlc3BvbnNlVHlw
ZSA9ICdqc29uJzsKLXhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICBzaG91bGRCZU51bGwo
J3hoci5yZXNwb25zZScpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfTsKLXhoci5vbmVycm9yID0g
ZnVuY3Rpb24oKSB7Ci0gICAgdGVzdEZhaWxlZCgnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9h
ZGluZyAiJyArIHVybCArICciJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19OwoteGhyLnNlbmQo
bnVsbCk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNldHlwZS1qc29uLXV0ZjE2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QveG1s
aHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24tdXRmMTYtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjdjNDFjLi4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9u
c2V0eXBlLWpzb24tdXRmMTYtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAs
MCBAQAotVGVzdHMgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIG9mICJqc29uIiBmYWlscyB0
byBwYXJzZSBpZiB0aGUgcGF5bG9hZCB3YXMgZW5jb2RlZCB3aXRoIFVURi0xNi4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLUZBSUwganNvblhIUi5yZXNwb25zZSBzaG91bGQgYmUg
bnVsbC4gV2FzIFtvYmplY3QgT2JqZWN0XS4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29uLXV0ZjE2Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlw
ZS1qc29uLXV0ZjE2Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMjU1ZGIu
LjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC1yZXNwb25zZXR5cGUtanNvbi11dGYxNi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzEg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgotd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZGVzY3JpcHRpb24oJ1Rlc3RzIFhNTEh0dHBSZXF1ZXN0
LnJlc3BvbnNlVHlwZSBvZiAianNvbiIgZmFpbHMgdG8gcGFyc2UgaWYgdGhlIHBheWxvYWQgd2Fz
IGVuY29kZWQgd2l0aCBVVEYtMTYuJyk7Ci0KLXZhciBqc29uWEhSID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Ci12YXIgdGV4dFhIUiA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotdmFyIGpzb25Vcmwg
PSAncmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29uLXV0Zi0xNi5qc29u
JzsKLQotanNvblhIUi5vcGVuKCdHRVQnLCBqc29uVXJsKTsKLWpzb25YSFIucmVzcG9uc2VUeXBl
ID0gJ2pzb24nOwotanNvblhIUi5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICBzaG91bGRCZU51
bGwoJ2pzb25YSFIucmVzcG9uc2UnKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX07Ci1qc29uWEhS
Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICB0ZXN0RmFpbGVkKCdBbiBlcnJvciBvY2N1cnJl
ZCB3aGlsZSBsb2FkaW5nICInICsganNvblVybCArICciJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19OwotanNvblhIUi5zZW5kKG51bGwpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1yZXNwb25zZXR5cGUtanNvbi12YWxpZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlw
ZS1qc29uLXZhbGlkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODZmZTNjZi4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3ht
bGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29uLXZhbGlkLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVRlc3RzIFhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlw
ZSBvZiAianNvbiIgd2l0aCBhIHZhbGlkIHBheWxvYWQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1QQVNTIGpzb25YSFIucmVzcG9uc2UgaXMgbnVsbAotUEFTUyBqc29uWEhSLnJl
c3BvbnNlIGlzIG5vbi1udWxsLgotUEFTUyBqc29uWEhSLnJlc3BvbnNlIGlzIGpzb25YSFIucmVz
cG9uc2UKLVBBU1MgSlNPTi5zdHJpbmdpZnkoanNvblhIUi5yZXNwb25zZSkgaXMgSlNPTi5zdHJp
bmdpZnkoSlNPTi5wYXJzZSh0ZXh0WEhSLnJlc3BvbnNlVGV4dCkpCi1QQVNTIGpzb25YSFIub3Bl
bigiR0VUIiwganNvblVybCk7IGpzb25YSFIucmVzcG9uc2UgaXMgbnVsbAotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpz
b24tdmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtcmVzcG9uc2V0eXBlLWpzb24tdmFsaWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDQ0Y2RiZS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNldHlwZS1qc29uLXZhbGlkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1kZXNjcmlwdGlvbignVGVz
dHMgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIG9mICJqc29uIiB3aXRoIGEgdmFsaWQgcGF5
bG9hZC4nKTsKLQotdmFyIGpzb25YSFIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLXZhciB0ZXh0
WEhSID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci12YXIganNvblVybCA9ICdyZXNvdXJjZXMveG1s
aHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24uanNvbic7Ci12YXIgcmVzcG9uc2U7Ci12YXIg
cmVzcG9uc2VUZXh0OwotCi1qc29uWEhSLm9wZW4oJ0dFVCcsIGpzb25VcmwpOwotanNvblhIUi5y
ZXNwb25zZVR5cGUgPSAnanNvbic7Ci1qc29uWEhSLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAg
IHNob3VsZEJlTm9uTnVsbCgnanNvblhIUi5yZXNwb25zZScpOwotICAgIHNob3VsZEJlKCdqc29u
WEhSLnJlc3BvbnNlJywgJ2pzb25YSFIucmVzcG9uc2UnKTsKLQotICAgIHRleHRYSFIub3Blbign
R0VUJywganNvblVybCk7Ci0gICAgdGV4dFhIUi5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgc2hvdWxkQmUoJ0pTT04uc3RyaW5naWZ5KGpzb25YSFIucmVzcG9uc2UpJywgJ0pTT04uc3Ry
aW5naWZ5KEpTT04ucGFyc2UodGV4dFhIUi5yZXNwb25zZVRleHQpKScpOwotCi0gICAgICAgIC8v
IFdoZW4gY2FsbGluZyBvcGVuKCkgdG8gcmV1c2UgYW4gWEhSIGluc3RhbmNlLCB0aGUgY2FjaGVk
IHJlc3BvbnNlCi0gICAgICAgIC8vIHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZC4KLSAgICAgICAg
c2hvdWxkQmVOdWxsKCdqc29uWEhSLm9wZW4oIkdFVCIsIGpzb25VcmwpOyBqc29uWEhSLnJlc3Bv
bnNlJyk7Ci0KLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfTsKLSAgICB0ZXh0WEhSLm9u
ZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnQW4gZXJyb3Igb2NjdXJy
ZWQgd2hpbGUgbG9hZGluZyAiJyArIGpzb25VcmwgKyAnIicpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9OwotICAgIHRleHRYSFIuc2VuZChudWxsKTsKLX07Ci1qc29uWEhSLm9uZXJy
b3IgPSBmdW5jdGlvbigpIHsKLSAgICB0ZXN0RmFpbGVkKCdBbiBlcnJvciBvY2N1cnJlZCB3aGls
ZSBsb2FkaW5nICInICsganNvblVybCArICciJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Owot
Ci1zaG91bGRCZU51bGwoJ2pzb25YSFIucmVzcG9uc2UnKTsKLWpzb25YSFIuc2VuZChudWxsKTsK
LTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLWFjY2VwdC1lbmNvZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21lZGlhL3ZpZGVvLWFjY2VwdC1lbmNvZGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQxNmJjZDMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tZWRpYS92aWRlby1hY2NlcHQtZW5jb2RpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNiArMCwwIEBACi1UZXN0IHRoYXQgdmlkZW8gcmVxdWVzdHMgY29udGFpbiBu
byAiQWNjZXB0LUVuY29kaW5nIiBoZWFkZXIuCi0KLUVWRU5UKGxvYWRlZG1ldGFkYXRhKQotbG9h
ZGVkIG1ldGFkYXRhIG9mIG1lZGlhIGZpbGUgT0sKLUVORCBPRiBURVNUCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYWNjZXB0LWVuY29kaW5nLmNnaSBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYWNjZXB0LWVuY29kaW5nLmNnaQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzM0NDg4Ny4uMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWFjY2VwdC1lbmNvZGluZy5jZ2kKKysrIC9k
ZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLQotdXNlIHN0cmlj
dDsKLQotdXNlIENHSTsKLXVzZSBGaWxlOjpzdGF0OwotCi11c2UgY29uc3RhbnQgQ0hVTktfU0la
RV9CWVRFUyA9PiAxMDI0OwotCi1teSAkcXVlcnkgPSBuZXcgQ0dJOwotCi1teSAkbmFtZSA9ICRx
dWVyeS0+cGFyYW0oJ25hbWUnKSBvciBkaWU7Ci1teSAkZmlsZXNpemUgPSBzdGF0KCRuYW1lKS0+
c2l6ZTsKLQotIyBHZXQgTUlNRSB0eXBlLgotbXkgJHR5cGUgPSAkcXVlcnktPnBhcmFtKCd0eXBl
Jykgb3IgZGllOwotCi0jIEdldCB0aHJvdHRsaW5nIHJhdGUsIGFzc3VtaW5nIHBhcmFtZXRlciBp
cyBpbiBraWxvYnl0ZXMgcGVyIHNlY29uZC4KLW15ICRrYlBlclNlYyA9ICRxdWVyeS0+cGFyYW0o
J3Rocm90dGxlJykgfHwgMDsKLW15ICRjaHVua1BlclNlYyA9ICRrYlBlclNlYyAqIDEwMjQgLyBD
SFVOS19TSVpFX0JZVEVTOwotCi1DR0ktPm5waCgxKTsKLQotbXkgJGNvbnRlbnRSYW5nZSA9ICRF
TlZ7J0hUVFBfUkFOR0UnfTsKLQotbXkgJHJhbmdlRW5kID0gJGZpbGVzaXplIC0gMTsKLW15IEBw
YXJzZWRSYW5nZSA9ICgwLCAkcmFuZ2VFbmQpOwotCi1teSAkYWNjZXB0RW5jb2RpbmcgPSAkRU5W
eydIVFRQX0FDQ0VQVF9FTkNPRElORyd9OwotCi1teSAkaHR0cFN0YXR1czsKLQotaWYgKCRhY2Nl
cHRFbmNvZGluZykgewotICAgICRodHRwU3RhdHVzID0gIjQwNiBOb3QgQWNjZXB0YWJsZSI7Ci0K
LSAgICBwcmludCAiU3RhdHVzOiAiIC4gJGh0dHBTdGF0dXMgLiAiXG4iOwotICAgIHByaW50ICJD
b25uZWN0aW9uOiBjbG9zZVxuIjsKLSAgICBwcmludCAiXG4iOwotfSBlbHNlIHsKLSAgICBteSAk
aHR0cENvbnRlbnRSYW5nZTsKLSAgICBpZiAoJGNvbnRlbnRSYW5nZSkgewotICAgICAgICBteSBA
dmFsdWVzID0gc3BsaXQoJz0nLCAkY29udGVudFJhbmdlKTsKLSAgICAgICAgbXkgJHJhbmdlVHlw
ZSA9ICR2YWx1ZXNbMF07Ci0gICAgICAgIEBwYXJzZWRSYW5nZSA9IHNwbGl0KCItIiwgJHZhbHVl
c1sxXSk7Ci0KLSAgICAgICAgaWYgKCEkcGFyc2VkUmFuZ2VbMV0pIHsKLSAgICAgICAgICAgICRw
YXJzZWRSYW5nZVsxXSA9ICRyYW5nZUVuZDsKLSAgICAgICAgfQotICAgICAgICAkaHR0cFN0YXR1
cyA9ICIyMDYgUGFydGlhbCBDb250ZW50IjsKLSAgICAgICAgJGh0dHBDb250ZW50UmFuZ2UgPSAi
Ynl0ZXMgIiAuICRwYXJzZWRSYW5nZVswXSAuICItIiAuICRwYXJzZWRSYW5nZVsxXSAuICIvIiAu
ICRmaWxlc2l6ZTsKLSAgICB9IGVsc2UgewotICAgICAgICAkaHR0cFN0YXR1cyA9ICIyMDAgT0si
OwotICAgIH0KLQotICAgIHByaW50ICJTdGF0dXM6ICIgLiAkaHR0cFN0YXR1cyAuICJcbiI7Ci0g
ICAgcHJpbnQgIkNvbm5lY3Rpb246IGNsb3NlXG4iOwotICAgIHByaW50ICJDb250ZW50LUxlbmd0
aDogIiAuICRmaWxlc2l6ZSAuICJcbiI7Ci0gICAgcHJpbnQgIkNvbnRlbnQtVHlwZTogIiAuICR0
eXBlIC4gIlxuIjsKLSAgICBwcmludCAiQWNjZXB0LVJhbmdlczogYnl0ZXNcbiI7Ci0gICAgaWYg
KCRodHRwQ29udGVudFJhbmdlKSB7Ci0gICAgICAgIHByaW50ICJDb250ZW50LVJhbmdlOiAiIC4g
JGh0dHBDb250ZW50UmFuZ2UgLiAiXG4iOwotICAgIH0KLSAgICBwcmludCAiXG4iOwotCi0gICAg
b3BlbiBGSUxFLCAkbmFtZSBvciBkaWU7Ci0gICAgYmlubW9kZSBGSUxFOwotICAgIG15ICgkZGF0
YSwgJG4pOwotICAgIG15ICR0b3RhbCA9ICRwYXJzZWRSYW5nZVswXTsKLQotICAgIHNlZWsoRklM
RSwgJHBhcnNlZFJhbmdlWzBdLCAwKTsKLQotICAgIHdoaWxlICgoJG4gPSByZWFkIEZJTEUsICRk
YXRhLCAxMDI0KSAhPSAwKSB7Ci0gICAgICAgIHByaW50ICRkYXRhOwotCi0gICAgICAgICR0b3Rh
bCArPSAkbjsKLSAgICAgICAgaWYgKCgkdG90YWwgPj0gJGZpbGVzaXplKSB8fCAoJHRvdGFsID4g
JHBhcnNlZFJhbmdlWzFdKSkgewotICAgICAgICAgICAgbGFzdDsKLSAgICAgICAgfQotCi0gICAg
ICAgICMgVGhyb3R0bGUgaWYgdGhlcmUgaXMgc29tZS4KLSAgICAgICAgaWYgKCRjaHVua1BlclNl
YyA+IDApIHsKLSAgICAgICAgICAgIHNlbGVjdCh1bmRlZiwgdW5kZWYsIHVuZGVmLCAxLjAgLyAk
Y2h1bmtQZXJTZWMpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNsb3NlKEZJTEUpOwotfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1hY2NlcHQtZW5jb2Rp
bmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYWNjZXB0LWVuY29k
aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NTBlYjcuLjAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1hY2NlcHQtZW5jb2Rpbmcu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLTxodG1sPgotICA8aGVhZD4KLSAg
ICAgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLXJlc291cmNlcy9tZWRpYS1maWxlLmpzPjwvc2Ny
aXB0PgotICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtcmVzb3VyY2VzL3ZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+Ci0gICAgICA8c2NyaXB0PgotICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
ewotICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0KLSAgICAgICAgICAgICAgd2Fp
dEZvckV2ZW50KCdsb2FkZWRtZXRhZGF0YScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgbG9nUmVzdWx0KHRydWUsICJsb2FkZWQgbWV0YWRhdGEgb2YgbWVkaWEgZmlsZSIpOwotICAg
ICAgICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ2Vycm9yJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICBsb2dSZXN1bHQoZmFsc2UsICJmYWlsZWQgdG8gbG9hZCBtZWRpYSBmaWxlIik7Ci0gICAgICAg
ICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAg
IHZhciBtZWRpYUZpbGUgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJyZXNvdXJjZXMvdGVzdCIp
OwotICAgICAgICAgICAgICB2YXIgdHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKG1lZGlhRmls
ZS5zcGxpdCgnLicpLnBvcCgpKTsKLSAgICAgICAgICAgICAgdmlkZW8uc3JjID0gImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9tZWRpYS92aWRlby1hY2NlcHQtZW5jb2RpbmcuY2dpP25hbWU9IiArIG1l
ZGlhRmlsZSArICImdHlwZT0iICsgdHlwZTsKLSAgICAgICAgICAgICAgdmlkZW8ubG9hZCgpOwot
ICAgICAgICAgIH0KLSAgICAgIDwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keSBvbmxv
YWQ9InN0YXJ0KCkiPgotICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+Ci0gICAgICA8cD5U
ZXN0IHRoYXQgdmlkZW8gcmVxdWVzdHMgY29udGFpbiBubyAiQWNjZXB0LUVuY29kaW5nIiBoZWFk
ZXIuPC9wPgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9yZW1vdmVCcmVha3BvaW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9yZW1vdmVCcmVha3BvaW50
LWV4cGVjdGVkLnR4dAppbmRleCAxZmFiNDNkLi42NDQxNjA2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVtb3ZlQnJlYWtwb2ludC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3JlbW92
ZUJyZWFrcG9pbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAotRGVidWdnZXIucmVtb3Zl
QnJlYWtwb2ludAotCiBCcmVha3BvaW50cyBFbmFibGVkCiBGb3VuZCBicmVha3BvaW50LmpzCiBT
ZXQgQnJlYWtwb2ludCwgVHJpZ2dlcmluZyBpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3JlbW92ZUJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9yZW1vdmVCcmVha3BvaW50Lmh0bWwKaW5k
ZXggZTQyMDBhOS4uNDNiOWQxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL2RlYnVnZ2VyL3JlbW92ZUJyZWFrcG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVtb3ZlQnJlYWtwb2ludC5odG1sCkBAIC0xLDYg
KzEsNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIGZ1
bmN0aW9uIHRlc3QoKQpAQCAtNTgsNiArNTgsNSBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+RGVidWdnZXIucmVtb3Zl
QnJlYWtwb2ludDwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWF1dG9Db250aW51ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0
QnJlYWtwb2ludC1hdXRvQ29udGludWUtZXhwZWN0ZWQudHh0CmluZGV4IDhjNjIyMGYuLjNjZmEy
OTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9z
ZXRCcmVha3BvaW50LWF1dG9Db250aW51ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYXV0b0NvbnRpbnVlLWV4
cGVjdGVkLnR4dApAQCAtMSw1ICsxLDMgQEAKLURlYnVnZ2VyLnNldEJyZWFrcG9pbnQgb3B0aW9u
cy5hdXRvQ29udGludWUKLQogQnJlYWtwb2ludHMgRW5hYmxlZAogRm91bmQgYnJlYWtwb2ludC5q
cwogUnVubmluZyBicmVha3BvaW50QXV0b21hdGljYWxseUNvbnRpbnVlIG11bHRpcGxlIHRpbWVz
IHdpdGggYXV0b21hdGljYWxseSBjb250aW51ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYXV0b0NvbnRpbnVlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1h
dXRvQ29udGludWUuaHRtbAppbmRleCA2NGI4MzQ1Li41YTA4ZDAyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1hdXRvQ29u
dGludWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIv
c2V0QnJlYWtwb2ludC1hdXRvQ29udGludWUuaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgog
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
cmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVz
b3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9icmVha3BvaW50LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKQEAg
LTU5LDYgKzU5LDUgQEAgZnVuY3Rpb24gdGVzdCgpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkRlYnVnZ2VyLnNldEJyZWFrcG9pbnQgb3B0aW9ucy5h
dXRvQ29udGludWU8L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1jb2x1bW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFr
cG9pbnQtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBhN2IyZGFkLi4yZDc2MGI1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2lu
dC1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwz
IEBACi1EZWJ1Z2dlci5zZXRCcmVha3BvaW50IG9uIGxpbmU6Y29sdW1uIGluIDxzY3JpcHQ+Ci0K
IEJyZWFrcG9pbnRzIEVuYWJsZWQKIEZvdW5kIDxzY3JpcHQ+CiBSdW5uaW5nIHRlc3RGdW5jdGlv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Nl
dEJyZWFrcG9pbnQtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
ZGVidWdnZXIvc2V0QnJlYWtwb2ludC1jb2x1bW4uaHRtbAppbmRleCA3M2VhOTRiLi44YTE0ZTNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0
QnJlYWtwb2ludC1jb2x1bW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9j
b2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1jb2x1bW4uaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxo
dG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9j
b2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIC8vIFB1
dCB0aGlzIGhlcmUgaW5zdGVhZCBvZiBvbiA8Ym9keSBvbmxvYWQ+IHRvIHByZXZlbnQgYW4gZXh0
cmEgRGVidWdnZXIuc2NyaXB0UGFyc2VkIGV2ZW50Lgogd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7
CkBAIC00Nyw3ICs0Nyw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxwPkRlYnVnZ2VyLnNldEJyZWFrcG9pbnQgb24gbGluZTpjb2x1bW4gaW4gJmx0O3Nj
cmlwdCZndDs8L3A+CiA8c2NyaXB0Pi8vIExpbmUgMAogZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkg
ey8vIExpbmUgMQogdmFyIGEgPSAxO3ZhciBiID0gYSArIDE7Ly8gTGluZSAyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1j
b25kaXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2Rl
YnVnZ2VyL3NldEJyZWFrcG9pbnQtY29uZGl0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA5ZDc3N2Qw
Li4yODZiYzUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVi
dWdnZXIvc2V0QnJlYWtwb2ludC1jb25kaXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWNvbmRpdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACi1EZWJ1Z2dlci5zZXRCcmVha3BvaW50IG9wdGlv
bnMuY29uZGl0aW9uCi0KIEJyZWFrcG9pbnRzIEVuYWJsZWQKIEZvdW5kIGJyZWFrcG9pbnQuanMK
IFJ1bm5pbmcgYnJlYWtwb2ludFdpdGhDb25kaXRpb24gbXVsdGlwbGUgdGltZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50
LWNvbmRpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2Vy
L3NldEJyZWFrcG9pbnQtY29uZGl0aW9uLmh0bWwKaW5kZXggMTkwMzU4Ny4uN2ZjYWQxYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFr
cG9pbnQtY29uZGl0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtY29uZGl0aW9uLmh0bWwKQEAgLTEsNiArMSw2IEBACiA8
aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVz
dCgpCkBAIC04MCw2ICs4MCw1IEBAIGZ1bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5EZWJ1Z2dlci5zZXRCcmVha3BvaW50IG9w
dGlvbnMuY29uZGl0aW9uPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9p
bnQtZXhwZWN0ZWQudHh0CmluZGV4IDllYTQ5OTcuLmUwNzhiOGUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJl
YWtwb2ludC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACi1EZWJ1Z2dlci5zZXRCcmVha3Bv
aW50IG9uIGxpbmU6MCBpbiA8c2NyaXB0IHNyYz0iLi4uIj4KLQogQnJlYWtwb2ludHMgRW5hYmxl
ZAogRm91bmQgYnJlYWtwb2ludC5qcwogUEFTUzogUmVjZWl2ZWQgZXJyb3Igc2V0dGluZyBkdXBs
aWNhdGUgYnJlYWtwb2ludDogQnJlYWtwb2ludCBhdCBzcGVjaWZpZWQgbG9jYXRpb24gYWxyZWFk
eSBleGlzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVi
dWdnZXIvc2V0QnJlYWtwb2ludC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQuaHRtbAppbmRleCA5MGYwMzVhLi5hYWM2Yzc0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtw
b2ludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9z
ZXRCcmVha3BvaW50Lmh0bWwKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90
b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2Nv
bC10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2ludC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCkBAIC00Miw2ICs0Miw1IEBA
IGZ1bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Ci08cD5EZWJ1Z2dlci5zZXRCcmVha3BvaW50IG9uIGxpbmU6MCBpbiAmbHQ7c2NyaXB0
IHNyYz0iLi4uIiZndDs8L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1vYmplY3QtZml0LWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tb2JqZWN0LWZpdC1jaGFuZ2UuaHRtbAppbmRleCAxYzdkYTlkLi5kYjVmMmQzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1vYmplY3QtZml0LWNoYW5nZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW9iamVjdC1maXQtY2hhbmdlLmh0bWwKQEAg
LTE4LDEzICsxOCwxMyBAQAogCiAgICAgICAgIGZ1bmN0aW9uIGluaXQoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBzZXRTcmNCeVRhZ05hbWUoInZpZGVvIiwgZmluZE1lZGlhRmlsZSgidmlkZW8i
LCAiY29udGVudC90ZXN0IikpOworICAgICAgICAgICAgc2V0U3JjQnlUYWdOYW1lKCJ2aWRlbyIs
IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uLy4uL21lZGlhL2NvbnRlbnQvdGVzdCIpKTsKIAog
ICAgICAgICAgICAgdmFyIHRvdGFsQ291bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgndmlkZW8nKS5sZW5ndGg7CiAgICAgICAgICAgICB2YXIgY291bnQgPSB0b3RhbENvdW50Owog
ICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2FucGxheXRocm91Z2giLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCEtLWNvdW50KQotICAgICAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjaGFuZ2VTdHlsZSgpOyB9LCAyNTApOwor
ICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjaGFuZ2VTdHlsZSgp
OyB9LCA1MDApOwogICAgICAgICAgICAgfSwgdHJ1ZSk7CiAKICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewpAQCAtNDMsOCArNDMsOSBAQAogCSAgICB2aWRlbzMuc3R5bGUub2Jq
ZWN0Rml0ID0gJ2ZpbGwnOwogCSAgICB2aWRlbzQuc3R5bGUub2JqZWN0Rml0ID0gJ3NjYWxlLWRv
d24nOwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9LCAyNTApOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDUwMCk7CisgICAg
ICAgICAgICB9CiAJfQogICAgIDwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby12b2x1bWUtc2xpZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby12
b2x1bWUtc2xpZGVyLmh0bWwKaW5kZXggNDg2ZWIwZi4uYjNiYTUzZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tdm9sdW1lLXNsaWRlci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXZvbHVtZS1zbGlkZXIuaHRtbApAQCAtMzksNyArMzksNyBAQAogPC9oZWFk
PgogPGJvZHkgb25sb2FkPSJpbml0KCkiPgogICAgIFRlc3RzIGlmIHRoZSB2b2x1bWUgc2xpZGVy
IGlzIHJlbmRlcmVyZCBwcm9wZXJseS4gVGhpcyB0ZXN0IGFzc3VtZXMgdGhlPGJyPgotICAgIHZv
bHVtZSBzbGlkZXIgaXMgaW1wbGVtZW50ZWQgYW5kIG1vdXNlIG92ZXIgdGhlIHJpZ2h0IGJvdHRv
bSBjb3JuZXIgb2Y8YnI+CisgICAgdm9sdW1lIHNsaWRlciBpcyBpbXBsbWVudGVkIGFuZCBtb3Vz
ZSBvdmVyIHRoZSByaWdodCBib3R0b20gY29ybmVyIG9mPGJyPgogICAgIHZpZGVvIGVsZW1lbnQg
d2lsbCBzaG93IHRoZSB2b2x1bWUgc2xpZGVyLjxicj4KICAgICA8dmlkZW8gb25jYW5wbGF5dGhy
b3VnaD0idGVzdCgpIiBjb250cm9scz48L3ZpZGVvPgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL21lZGlhL3ZvbHVtZS1iYXItZW1wdHktd2hlbi1tdXRlZC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTU1MDAuLjAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotVGVzdHMgaWYgdGhlIHZvbHVtZSBzbGlk
ZXIgdGh1bWIgaXMgcmVuZGVyZWQgcHJvcGVybHkgd2hlbiB0aGUgdm9sdW1lIGlzIHVuaW5pdGlh
bGl6ZWQgYnV0IG1lZGlhIGlzIG11dGVkLgotCi1FWFBFQ1RFRCAodmlkZW8udm9sdW1lID09ICcx
JykgT0sKLUVYUEVDVEVEICh2aWRlby5tdXRlZCA9PSAndHJ1ZScpIE9LCi1FWFBFQ1RFRCAodm9s
dW1lU2xpZGVyLnZhbHVlID09ICcwJykgT0sKLUVORCBPRiBURVNUCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3ZvbHVtZS1iYXItZW1wdHktd2hlbi1tdXRlZC5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU2M2Q1ZjguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvbWVk
aWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1
MCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAgIDx0aXRsZT5UZXN0IHJlbmRlcmluZyBvZiB2
b2x1bWUgc2xpZGVyIG9mIHZpZGVvIHRhZzwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9bWVkaWEt
ZmlsZS5qcz48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz1tZWRpYS1jb250cm9scy5qcz48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQ+Ci0gICAgICAgIHZhciB2aWRlbzsKLSAgICAgICAgdmFyIHZvbHVtZVNsaWRlclRyYWNrRGlt
ZW5zaW9uczsKLQotICAgICAgICBmdW5jdGlvbiBpbml0KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotCi0gICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJ2aWRlbyIpWzBdOwotICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0Iik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiB0ZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVSUk9SOiBubyBldmVudCBzZW5k
ZXIuIik7Ci0gICAgICAgICAgICAgICAgZmFpbFRlc3QoKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdmFyIG11dGVCdXR0b25Db29yZGluYXRlczsKLQotICAgICAgICAgICAgbXV0ZUJ1
dHRvbkNvb3JkaW5hdGVzID0gbWVkaWFDb250cm9sc0J1dHRvbkNvb3JkaW5hdGVzKHZpZGVvLCAi
bXV0ZS1idXR0b24iKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG11dGVC
dXR0b25Db29yZGluYXRlc1swXSwgbXV0ZUJ1dHRvbkNvb3JkaW5hdGVzWzFdKTsKLQotICAgICAg
ICAgICAgLy8gRm9yY2luZyByZWxheW91dCBjYWxjdWxhdGlvbnMgdG8gc2F5IHRoYXQgeW91IGFy
ZQotICAgICAgICAgICAgLy8gdHJpZ2dlcmluZyB0aGUgdm9sdW1lIHNsaWRlciB0byBzaG93IHVw
IGZvcgotICAgICAgICAgICAgLy8gY29udHJvbHMgdGhhdCB3b3JrIHRoYXQgd2F5LgotICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0KLSAgICAgICAgICAgIHZvbHVtZVNsaWRl
ciA9IG1lZGlhQ29udHJvbHNFbGVtZW50KGludGVybmFscy5zaGFkb3dSb290KHZpZGVvKS5maXJz
dENoaWxkLCAiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIik7Ci0gICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnZvbHVtZSIsIDEpOwotICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5tdXRlZCIsIHRydWUpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
b2x1bWVTbGlkZXIudmFsdWUiLCAwKTsKLSAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAg
fQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotICAgIDxw
PlRlc3RzIGlmIHRoZSB2b2x1bWUgc2xpZGVyIHRodW1iIGlzIHJlbmRlcmVkIHByb3Blcmx5IHdo
ZW4gdGhlCi0gICAgdm9sdW1lIGlzIHVuaW5pdGlhbGl6ZWQgYnV0IG1lZGlhIGlzIG11dGVkLjwv
cD4KLSAgICA8dmlkZW8gb25jYW5wbGF5dGhyb3VnaD0idGVzdCgpIiBjb250cm9scyBtdXRlZD48
L3ZpZGVvPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE3ZjFkYzIuLmQ3YjQ4Y2IgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxNiw2ICsyMTYsOCBA
QCB3ZWJraXQub3JnL2IvMTA4MzU1IHN0b3JhZ2Uvd2Vic3FsL3NxbC1lcnJvci1jb2Rlcy5odG1s
IFsgQ3Jhc2ggUGFzcyBdCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiAjIE1p
c3NpbmcgRUZMJ3MgYWNjZXNzaWJpbGl0eSBmdW5jdGlvbnMKK3dlYmtpdC5vcmcvYi8xMTIwMjcg
YWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwgWyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xMTIwMjggYWNjZXNzaWJpbGl0eS9hcmlhLWhlbHAuaHRtbCBbIEZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzExMTk4NCBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXVwZGF0
ZXMtYWxsZGVzY2VuZGFudHMuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzExMTk4NiBh
Y2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MTExOTg3IGFjY2Vzc2liaWxpdHkvYXJpYS1saW5rLXN1cHBvcnRzLXByZXNzLmh0bWwgWyBGYWls
dXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJp
bGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13
azIvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dAppbmRleCBkNTBiM2E4Li5h
N2U4NThjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2li
aWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsLXdrMi9hY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsy
MCw3IEBAIEFYRW5hYmxlZDogMQogQVhFeHBhbmRlZDogMAogQVhSZXF1aXJlZDogMAogQVhDaGVj
a2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczogYXJpYS1zb3J0OkFYVW5rbm93blNvcnREaXJl
Y3Rpb24sIGh0bWwtaWQ6dGVzdCwgdG9vbGtpdDpXZWJLaXRFZmwKK0FYUGxhdGZvcm1BdHRyaWJ1
dGVzOiBodG1sLWlkOnRlc3QsIHRvb2xraXQ6V2ViS2l0RWZsCiAKIENoaWxkIDA6CiBBWFJvbGU6
IEFYSW1hZ2UKQEAgLTM5LDYgKzM5LDYgQEAgQVhFbmFibGVkOiAxCiBBWEV4cGFuZGVkOiAwCiBB
WFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBhcmlhLXNv
cnQ6QVhVbmtub3duU29ydERpcmVjdGlvbiwgdG9vbGtpdDpXZWJLaXRFZmwKK0FYUGxhdGZvcm1B
dHRyaWJ1dGVzOiB0b29sa2l0OldlYktpdEVmbAogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4
cGVjdGVkLnR4dAppbmRleCBlNWUwOTE4Li4zYTg4ZjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9hY2Nlc3NpYmlsaXR5L2ltYWdlLW1h
cDItZXhwZWN0ZWQudHh0CkBAIC0xNyw3ICsxNyw3IEBAIEFYRW5hYmxlZDogMQogQVhFeHBhbmRl
ZDogMAogQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczog
YXJpYS1zb3J0OkFYVW5rbm93blNvcnREaXJlY3Rpb24sIGh0bWwtaWQ6cmVzdWx0LCB0b29sa2l0
OldlYktpdEVmbAorQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGh0bWwtaWQ6cmVzdWx0LCB0b29sa2l0
OldlYktpdEVmbAogLS0tLS0tLS0tLS0tCiBBWFJvbGU6IEFYTGluawogQVhQYXJlbnQ6IEFYV2Vi
QXJlYQpAQCAtMzUsNyArMzUsNyBAQCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVx
dWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpB
WFVua25vd25Tb3J0RGlyZWN0aW9uLCB0b29sa2l0OldlYktpdEVmbAorQVhQbGF0Zm9ybUF0dHJp
YnV0ZXM6IHRvb2xraXQ6V2ViS2l0RWZsCiAtLS0tLS0tLS0tLS0KIEFYUm9sZTogQVhMaW5rCiBB
WFBhcmVudDogQVhXZWJBcmVhCkBAIC01Myw3ICs1Myw3IEBAIEFYRW5hYmxlZDogMQogQVhFeHBh
bmRlZDogMAogQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRl
czogYXJpYS1zb3J0OkFYVW5rbm93blNvcnREaXJlY3Rpb24sIHRvb2xraXQ6V2ViS2l0RWZsCitB
WFBsYXRmb3JtQXR0cmlidXRlczogdG9vbGtpdDpXZWJLaXRFZmwKIC0tLS0tLS0tLS0tLQogCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS90
YWJsZS1jZWxsLXNwYW5zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13
azIvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxsLXNwYW5zLWV4cGVjdGVkLnR4dAppbmRleCA5OGZh
OGFjLi4yN2Q4ZjVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtY2VsbC1zcGFucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsLXdrMi9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGwtc3BhbnMtZXhwZWN0
ZWQudHh0CkBAIC0yNSw3ICsyNSw3IEBAIEFYRW5hYmxlZDogMQogQVhFeHBhbmRlZDogMAogQVhS
ZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczogYXJpYS1zb3J0
OkFYVW5rbm93blNvcnREaXJlY3Rpb24sIHRvb2xraXQ6V2ViS2l0RWZsCitBWFBsYXRmb3JtQXR0
cmlidXRlczogdG9vbGtpdDpXZWJLaXRFZmwKIHswLCAyfSwgezAsIDJ9CiAKIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTQ3LDcgKzQ3LDcgQEAgQVhFbmFibGVkOiAxCiBBWEV4cGFuZGVkOiAw
CiBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBhcmlh
LXNvcnQ6QVhVbmtub3duU29ydERpcmVjdGlvbiwgdG9vbGtpdDpXZWJLaXRFZmwKK0FYUGxhdGZv
cm1BdHRyaWJ1dGVzOiB0b29sa2l0OldlYktpdEVmbAogezAsIDJ9LCB7MCwgMn0KIAogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNjksNyArNjksNyBAQCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5k
ZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6
IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0b29sa2l0OldlYktpdEVmbAorQVhQ
bGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0RWZsCiB7MiwgMn0sIHswLCAxfQogCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05MSw3ICs5MSw3IEBAIEFYRW5hYmxlZDogMQogQVhF
eHBhbmRlZDogMAogQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmli
dXRlczogYXJpYS1zb3J0OkFYVW5rbm93blNvcnREaXJlY3Rpb24sIHRvb2xraXQ6V2ViS2l0RWZs
CitBWFBsYXRmb3JtQXR0cmlidXRlczogdG9vbGtpdDpXZWJLaXRFZmwKIHsyLCAyfSwgezAsIDF9
CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExMyw3ICsxMTMsNyBAQCBBWEVuYWJsZWQ6
IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9y
bUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0b29sa2l0Oldl
YktpdEVmbAorQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0RWZsCiB7MiwgMX0s
IHszLCAxfQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGxz
LWV4cGVjdGVkLnR4dAppbmRleCA3YjY4ZTNkLi5lZTY2MjAwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwtd2syL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvYWNjZXNzaWJpbGl0eS90YWJs
ZS1jZWxscy1leHBlY3RlZC50eHQKQEAgLTI3LDcgKzI3LDcgQEAgQVhFbmFibGVkOiAxCiBBWEV4
cGFuZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1
dGVzOiBhcmlhLXNvcnQ6QVhVbmtub3duU29ydERpcmVjdGlvbiwgdG9vbGtpdDpXZWJLaXRFZmwK
K0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiB0b29sa2l0OldlYktpdEVmbAogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiBbMywxXQogQVhSb2xlOiBBWENlbGwKQEAgLTQ3LDcgKzQ3LDcgQEAgQVhFbmFi
bGVkOiAxCiBBWEV4cGFuZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxh
dGZvcm1BdHRyaWJ1dGVzOiBhcmlhLXNvcnQ6QVhVbmtub3duU29ydERpcmVjdGlvbiwgdG9vbGtp
dDpXZWJLaXRFZmwKK0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiB0b29sa2l0OldlYktpdEVmbAogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBbMSwxXQogQVhSb2xlOiBBWENlbGwKQEAgLTY3LDcgKzY3
LDcgQEAgQVhFbmFibGVkOiAxCiBBWEV4cGFuZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENoZWNr
ZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBhcmlhLXNvcnQ6QVhVbmtub3duU29ydERpcmVj
dGlvbiwgdG9vbGtpdDpXZWJLaXRFZmwKK0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiB0b29sa2l0Oldl
YktpdEVmbAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBbMiwyXQogQVhSb2xlOiBBWENlbGwK
QEAgLTg3LDcgKzg3LDcgQEAgQVhFbmFibGVkOiAxCiBBWEV4cGFuZGVkOiAwCiBBWFJlcXVpcmVk
OiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBhcmlhLXNvcnQ6QVhVbmtu
b3duU29ydERpcmVjdGlvbiwgdG9vbGtpdDpXZWJLaXRFZmwKK0FYUGxhdGZvcm1BdHRyaWJ1dGVz
OiB0b29sa2l0OldlYktpdEVmbAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBbMyw1XQogQVhS
b2xlOiBBWENlbGwKQEAgLTEwNyw3ICsxMDcsNyBAQCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6
IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFy
aWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0b29sa2l0OldlYktpdEVmbAorQVhQbGF0
Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0RWZsCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIFsxMDAsMF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA1MDRhYmJiLi5lNzk2ZGRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMzI3LDkgKzMyNyw2IEBAIEJ1ZyhFRkwpIGZhc3QvY2FudmFzL2NhbnZh
cy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmh0bWwKIEJ1ZyhFRkwpIGZhc3QvY2FudmFzL2ZpbGwt
c3Ryb2tlLWNsaXAtcmVzZXQtcGF0aC5odG1sCiBCdWcoRUZMKSBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2RlZmF1bHQtY29udGVudC10eXBlLWRhc2hib2FyZC5odG1sCiAKLSMgQWNjZWxlcmF0
ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xM
SU5HKSBpcyBub3QgZW5hYmxlZC4KLWZhc3QvcmVwYWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gt
cmVwYWludC5odG1sIFsgU2tpcCBdCi0KICMgRG9lc24ndCBhcHBseSB0byBwbGF0Zm9ybXMgdGhh
dCBkb24ndCBlbmZvcmNlIHRoZSBDRk5ldHdvcmstc3R5bGUgM3JkIHBhcnR5IGNvb2tpZSBwb2xp
Y3kKIHdlYmtpdC5vcmcvYi8zNTgyNCBodHRwL3Rlc3RzL2Nvb2tpZXMvdGhpcmQtcGFydHktY29v
a2llLXJlbGF4aW5nLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDUyOWNjZTcuLjc4MmUwNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ5Nyw5ICs0OTcsNiBAQCBCdWco
R1RLKSBhbmltYXRpb25zL2NvbWJvLXRyYW5zZm9ybS10cmFuc2xhdGUrc2NhbGUuaHRtbCBbIEZh
aWx1cmUgXQogQnVnKEdUSykgYW5pbWF0aW9ucy9wbGF5LXN0YXRlLXN1c3BlbmQuaHRtbCBbIEZh
aWx1cmUgXQogQnVnKEdUSykgYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1hbmltYXRpb24uaHRt
bCBbIEZhaWx1cmUgXQogCi0jIFtHVEtdIE1pc3NpbmcgV1RSIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIGltcGxlbWVudGF0aW9uCi13ZWJraXQub3JnL2Iv
MTIwNDIxIGFjY2Vzc2liaWxpdHkvYXJpYS1pbnZhbGlkLmh0bWwgWyBUaW1lb3V0IF0KLQogIy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIFRlc3RzIGZhaWxpbmcKICMv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDVkMWFmMjIuLjZmYTFjNzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC02NSw5ICs2NSw2IEBAIEJ1ZyhHVEspIGZh
c3QvY3NzL2RyYWdnYWJsZS1yZWdpb24tcGFyc2VyLmh0bWwgWyBGYWlsdXJlIF0KICMgWC1Db250
ZW50LVR5cGUtT3B0aW9ucyAoRU5BQkxFX05PU05JRkYpIGlzIG5vdCBlbmFibGVkLgogd2Via2l0
Lm9yZy9iLzcxODUxIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFR5cGVPcHRpb25zIFsgU2tp
cCBdCiAKLSMgQWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIChFTkFCTEVfQUNDRUxFUkFU
RURfT1ZFUkZMT1dfU0NST0xMSU5HKSBpcyBub3QgZW5hYmxlZC4KLWZhc3QvcmVwYWludC9vdmVy
Zmxvdy1zY3JvbGwtdG91Y2gtcmVwYWludC5odG1sIFsgU2tpcCBdCi0KICMgVGhlc2UgdGVzdCAt
YXBwbGUtIGFuZCAta2h0bWwtIHByZWZpeGVkIENTUyBwcm9wZXJ0aWVzLCB3aGljaCB3ZSBkb24n
dCBzdXBwb3J0LgogaW5zcGVjdG9yL3N0eWxlcy92ZW5kb3ItcHJlZml4ZXMuaHRtbCBbIFdvbnRG
aXggUGFzcyBdCiAKQEAgLTc4Myw2ICs3ODAsOCBAQCB3ZWJraXQub3JnL2IvOTU1MzAgaHR0cC90
ZXN0cy9zZWN1cml0eS9pbmFjdGl2ZS1kb2N1bWVudC13aXRoLWVtcHR5LXNlY3VyaXR5LW9yaQog
IyBFdmVudFNlbmRlcjo6ZHVtcEZpbGVuYW1lQmVpbmdEcmFnZ2VkIG5vdCBpbXBsZW1lbnRlZC4K
IHdlYmtpdC5vcmcvYi82MTgyNiBmYXN0L2V2ZW50cy9kcmFnLWltYWdlLWZpbGVuYW1lLmh0bWwg
WyBUaW1lb3V0IF0KIAord2Via2l0Lm9yZy9iLzk4MzUwIGFjY2Vzc2liaWxpdHkvYXJpYS1pbnZh
bGlkLmh0bWwgWyBUaW1lb3V0IF0KKwogQnVnKEdUSykgbWVkaWEvcHJvZ3Jlc3MtZXZlbnRzLWdl
bmVyYXRlZC1jb3JyZWN0bHkuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcv
Yi8xMDIyNTcgZmFzdC9kb20vV2luZG93L29wZW4td2luZG93LW1pbi1zaXplLmh0bWwgWyBUaW1l
b3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKaW5kZXggMTc5MzcwYS4uMGM2NzkyMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvaW1hZ2Ut
bGluay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKQEAgLTIwLDcgKzIwLDcgQEAgQVhFbmFibGVk
OiAxCiBBWEV4cGFuZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZv
cm1BdHRyaWJ1dGVzOiBhcmlhLXNvcnQ6QVhVbmtub3duU29ydERpcmVjdGlvbiwgaHRtbC1pZDp0
ZXN0LCB0b29sa2l0OldlYktpdEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGh0bWwtaWQ6dGVz
dCwgdG9vbGtpdDpXZWJLaXRHdGsKIAogQ2hpbGQgMDoKIEFYUm9sZTogQVhJbWFnZQpAQCAtMzks
NiArMzksNiBAQCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFY
Q2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0
RGlyZWN0aW9uLCB0b29sa2l0OldlYktpdEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xr
aXQ6V2ViS2l0R3RrCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Fj
Y2Vzc2liaWxpdHkvaW1hZ2UtbWFwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVkLnR4dAppbmRleCA4Y2Q3NDBk
Li5kNjE3YTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJp
bGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVkLnR4dApAQCAtMTcsNyArMTcsNyBA
QCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDog
MAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9u
LCBodG1sLWlkOnJlc3VsdCwgdG9vbGtpdDpXZWJLaXRHdGsKK0FYUGxhdGZvcm1BdHRyaWJ1dGVz
OiBodG1sLWlkOnJlc3VsdCwgdG9vbGtpdDpXZWJLaXRHdGsKIC0tLS0tLS0tLS0tLQogQVhSb2xl
OiBBWExpbmsKIEFYUGFyZW50OiBBWFdlYkFyZWEKQEAgLTM1LDcgKzM1LDcgQEAgQVhFbmFibGVk
OiAxCiBBWEV4cGFuZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZv
cm1BdHRyaWJ1dGVzOiBhcmlhLXNvcnQ6QVhVbmtub3duU29ydERpcmVjdGlvbiwgdG9vbGtpdDpX
ZWJLaXRHdGsKK0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiB0b29sa2l0OldlYktpdEd0awogLS0tLS0t
LS0tLS0tCiBBWFJvbGU6IEFYTGluawogQVhQYXJlbnQ6IEFYV2ViQXJlYQpAQCAtNTMsNyArNTMs
NyBAQCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tl
ZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0
aW9uLCB0b29sa2l0OldlYktpdEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2Vi
S2l0R3RrCiAtLS0tLS0tLS0tLS0KIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxsLXNwYW5zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGwtc3BhbnMtZXhwZWN0
ZWQudHh0CmluZGV4IDc4MWNlZjcuLjI4NDUzZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGwtc3BhbnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGwtc3Bh
bnMtZXhwZWN0ZWQudHh0CkBAIC0yNSw3ICsyNSw3IEBAIEFYRW5hYmxlZDogMQogQVhFeHBhbmRl
ZDogMAogQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczog
YXJpYS1zb3J0OkFYVW5rbm93blNvcnREaXJlY3Rpb24sIHRvb2xraXQ6V2ViS2l0R3RrCitBWFBs
YXRmb3JtQXR0cmlidXRlczogdG9vbGtpdDpXZWJLaXRHdGsKIHswLCAyfSwgezAsIDJ9CiAKIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ3LDcgKzQ3LDcgQEAgQVhFbmFibGVkOiAxCiBBWEV4
cGFuZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1
dGVzOiBhcmlhLXNvcnQ6QVhVbmtub3duU29ydERpcmVjdGlvbiwgdG9vbGtpdDpXZWJLaXRHdGsK
K0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiB0b29sa2l0OldlYktpdEd0awogezAsIDJ9LCB7MCwgMn0K
IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjksNyArNjksNyBAQCBBWEVuYWJsZWQ6IDEK
IEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0
dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0b29sa2l0OldlYktp
dEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0R3RrCiB7MiwgMn0sIHsw
LCAxfQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05MSw3ICs5MSw3IEBAIEFYRW5hYmxl
ZDogMQogQVhFeHBhbmRlZDogMAogQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRm
b3JtQXR0cmlidXRlczogYXJpYS1zb3J0OkFYVW5rbm93blNvcnREaXJlY3Rpb24sIHRvb2xraXQ6
V2ViS2l0R3RrCitBWFBsYXRmb3JtQXR0cmlidXRlczogdG9vbGtpdDpXZWJLaXRHdGsKIHsyLCAy
fSwgezAsIDF9CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExMyw3ICsxMTMsNyBAQCBB
WEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAot
QVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0
b29sa2l0OldlYktpdEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0R3Rr
CiB7MiwgMX0sIHszLCAxfQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxscy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxs
cy1leHBlY3RlZC50eHQKaW5kZXggNzQ0MWE3YS4uOWI1YjM5MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGxz
LWV4cGVjdGVkLnR4dApAQCAtMjcsNyArMjcsNyBAQCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6
IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFy
aWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0b29sa2l0OldlYktpdEd0aworQVhQbGF0
Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0R3RrCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIFszLDFdCiBBWFJvbGU6IEFYQ2VsbApAQCAtNDcsNyArNDcsNyBAQCBBWEVuYWJsZWQ6IDEK
IEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0
dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0b29sa2l0OldlYktp
dEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0R3RrCiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIFsxLDFdCiBBWFJvbGU6IEFYQ2VsbApAQCAtNjcsNyArNjcsNyBAQCBB
WEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAot
QVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0RGlyZWN0aW9uLCB0
b29sa2l0OldlYktpdEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xraXQ6V2ViS2l0R3Rr
CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFsyLDJdCiBBWFJvbGU6IEFYQ2VsbApAQCAtODcs
NyArODcsNyBAQCBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFY
Q2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGFyaWEtc29ydDpBWFVua25vd25Tb3J0
RGlyZWN0aW9uLCB0b29sa2l0OldlYktpdEd0aworQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRvb2xr
aXQ6V2ViS2l0R3RrCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFszLDVdCiBBWFJvbGU6IEFY
Q2VsbApAQCAtMTA3LDcgKzEwNyw3IEBAIEFYRW5hYmxlZDogMQogQVhFeHBhbmRlZDogMAogQVhS
ZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczogYXJpYS1zb3J0
OkFYVW5rbm93blNvcnREaXJlY3Rpb24sIHRvb2xraXQ6V2ViS2l0R3RrCitBWFBsYXRmb3JtQXR0
cmlidXRlczogdG9vbGtpdDpXZWJLaXRHdGsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogWzEw
MCwwXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8t
dm9sdW1lLXNsaWRlci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVk
aWEvdmlkZW8tdm9sdW1lLXNsaWRlci1leHBlY3RlZC5wbmcKaW5kZXggZjFhYWNlZS4uNzg4N2Qy
NyAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3Zp
ZGVvLXZvbHVtZS1zbGlkZXItZXhwZWN0ZWQucG5nIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9tZWRpYS92aWRlby12b2x1bWUtc2xpZGVyLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby12b2x1bWUtc2xpZGVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby12b2x1
bWUtc2xpZGVyLWV4cGVjdGVkLnR4dAppbmRleCA3YjY0MzM0Li4yYjU3MzNjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8tdm9sdW1lLXNsaWRlci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLXZvbHVt
ZS1zbGlkZXItZXhwZWN0ZWQudHh0CkBAIC02LDkgKzYsOSBAQCBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQzM3gxNwog
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0MzM6ICJUZXN0cyBpZiB0aGUgdm9sdW1l
IHNsaWRlciBpcyByZW5kZXJlcmQgcHJvcGVybHkuIFRoaXMgdGVzdCBhc3N1bWVzIHRoZSIKICAg
ICAgIFJlbmRlckJSIHtCUn0gYXQgKDQzMywxNCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwxNykgc2l6ZSA0NTN4MTcKLSAgICAgICAgdGV4dCBydW4gYXQgKDAsMTcp
IHdpZHRoIDQ1MzogInZvbHVtZSBzbGlkZXIgaXMgaW1wbGVtZW50ZWQgYW5kIG1vdXNlIG92ZXIg
dGhlIHJpZ2h0IGJvdHRvbSBjb3JuZXIgb2YiCi0gICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg0NTMs
MzEpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTcpIHNpemUgNDQ2
eDE3CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3KSB3aWR0aCA0NDY6ICJ2b2x1bWUgc2xpZGVy
IGlzIGltcGxtZW50ZWQgYW5kIG1vdXNlIG92ZXIgdGhlIHJpZ2h0IGJvdHRvbSBjb3JuZXIgb2Yi
CisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg0NDYsMzEpIHNpemUgMHgwCiAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMzQpIHNpemUgMjcweDE3CiAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDM0KSB3aWR0aCAyNzA6ICJ2aWRlbyBlbGVtZW50IHdpbGwgc2hvdyB0aGUgdm9sdW1lIHNsaWRl
ci4iCiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyNzAsNDgpIHNpemUgMHgwCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRiOWNjNjIuLjYxMTMwNjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC01Miw2ICs1Miw5
IEBAIHBsdWdpbnMvcmVsb2FkcGx1Z2lucy1hbmQtcGFnZXMuaHRtbAogIyBUaGlzIHRlc3QgcmVx
dWlyZXMgb2dnIGNvZGVjcwogbWVkaWEvbWVkaWEtY2FuLXBsYXktb2dnLmh0bWwKIAord2Via2l0
Lm9yZy9iLzUyMTAzIG1lZGlhL3ZpZGVvLW9iamVjdC1maXQtY2hhbmdlLmh0bWwKK3dlYmtpdC5v
cmcvYi81MjEwMyBtZWRpYS92aWRlby1vYmplY3QtZml0Lmh0bWwKKwogIyBUaGlzIHRlc3QgcmVx
dWlyZXMgZmxhYyBjb2RlYwogbWVkaWEvbWVkaWEtY2FuLXBsYXktZmxhYy1hdWRpby5odG1sCiAK
QEAgLTEwNDIsOSArMTA0NSw2IEBAIHdlYmtpdC5vcmcvYi8xMDAzMjQgY3NzMy9zdXBwb3J0cy1k
b20tYXBpLmh0bWwKICMgQ1NTIERldmljZSBBZGFwdGF0aW9uIGlzIG5vdCBlbmFibGVkLgogd2Vi
a2l0Lm9yZy9iLzk1OTU5IGNzczMvZGV2aWNlLWFkYXB0IFsgU2tpcCBdCiAKLSMgQWNjZWxlcmF0
ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xM
SU5HKSBpcyBub3QgZW5hYmxlZC4KLWZhc3QvcmVwYWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gt
cmVwYWludC5odG1sIFsgU2tpcCBdCi0KICMgSGFyZHdhcmUgYWNjZWxlcmF0ZWQgQ1NTIHRyYW5z
aXRpb25zIGFwcGVhciBwaXhlbGF0ZWQgd2hlbiBzY2FsZWQgdXAgdXNpbmcgdHJhbnNmb3JtCiB3
ZWJraXQub3JnL2IvMjc2ODQgY29tcG9zaXRpbmcvdGV4dC1vbi1zY2FsZWQtbGF5ZXIuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzI3Njg0IGNvbXBvc2l0aW5nL3RleHQt
b24tc2NhbGVkLXN1cmZhY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS1zb3J0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtc29ydC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5YWJkYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2FyaWEtc29ydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorYnV0dG9uCitjb2x1bW4K
K3JvdworVGhpcyB0ZXN0cyB0aGF0IGFyaWEtc29ydCB3aWxsIGJlIGV4cG9zZWQgY29ycmVjdGx5
IHRvIHRoZSBNYWMgYWNjZXNzaWJpbGl0eSBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKCdBWFNvcnREaXJlY3Rpb24nKSBpcyAnQVhVbmtub3duU29ydERpcmVj
dGlvbicKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuc3RyaW5n
QXR0cmlidXRlVmFsdWUoJ0FYU29ydERpcmVjdGlvbicpIGlzICdBWEFzY2VuZGluZ1NvcnREaXJl
Y3Rpb24nCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKCdBWFNvcnREaXJlY3Rpb24nKSBpcyAnQVhEZXNjZW5kaW5nU29ydERp
cmVjdGlvbicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9h
cmlhLXNvcnQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2Fy
aWEtc29ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYjVkYzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9hcmlhLXNvcnQuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPGRpdiB0YWJpbmRleD0iMCIgaWQ9ImJ1dHRvbiIgcm9s
ZT0iYnV0dG9uIj5idXR0b248L2Rpdj4KKworPGRpdiByb2xlPSJncmlkIj4KKzxkaXYgcm9sZT0i
cm93Ij4KKzxkaXYgcm9sZT0iY29sdW1uaGVhZGVyIiBhcmlhLXNvcnQ9ImFzY2VuZGluZyIgdGFi
aW5kZXg9IjAiIGlkPSJjb2x1bW4iPmNvbHVtbjwvZGl2PgorPGRpdiByb2xlPSJyb3doZWFkZXIi
IGFyaWEtc29ydD0iZGVzY2VuZGluZyIgdGFiaW5kZXg9IjAiIGlkPSJyb3ciPnJvdzwvZGl2PiAK
KzwvZGl2PgorPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IGFyaWEtc29ydCB3aWxsIGJlIGV4cG9zZWQgY29ycmVjdGx5IHRvIHRoZSBNYWMgYWNjZXNz
aWJpbGl0eSBBUEkuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbiIpLmZvY3VzKCk7
CisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dC5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhTb3J0RGlyZWN0aW9uJykiLCAiJ0FYVW5rbm93blNv
cnREaXJlY3Rpb24nIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbHVt
biIpLmZvY3VzKCk7CisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudC5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhTb3J0RGlyZWN0aW9uJykiLCAi
J0FYQXNjZW5kaW5nU29ydERpcmVjdGlvbiciKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicm93IikuZm9jdXMoKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50LnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWFNvcnREaXJl
Y3Rpb24nKSIsICInQVhEZXNjZW5kaW5nU29ydERpcmVjdGlvbiciKTsKKyAgICB9CisKKzwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLW9iamVjdC1m
aXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL2lt
YWdlcy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdkMzQxYjguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2NvbXBvc2l0aW5nL2ltYWdlcy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0KLShHcmFwaGljc0xheWVyCi0g
IChib3VuZHMgODAwLjAwIDYwMC4wMCkKLSAgKGNoaWxkcmVuIDEKLSAgICAoR3JhcGhpY3NMYXll
cgotICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQotICAgICAgKGNvbnRlbnRzT3BhcXVlIDEp
Ci0gICAgICAoY2hpbGRyZW4gMwotICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChw
b3NpdGlvbiA1OC4wMCAyMC4wMCkKLSAgICAgICAgICAoYm91bmRzIDIwMC4wMCAxMjAuMDApCi0g
ICAgICAgICAgKGNvbnRlbnRzIGNsaXBwaW5nIGxheWVyIDAuMDAsIDAuMDAgMjAwLjAwIHggMTIw
LjAwKQotICAgICAgICAgIChjb250ZW50cyBsYXllciAtMjAuMDAsIDAuMDAgMjQwLjAwIHggMTIw
LjAwKQotICAgICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0
aW9uIDU4LjAwIDE2MC4wMCkKLSAgICAgICAgICAoYm91bmRzIDIwMC4wMCAxMjAuMDApCi0gICAg
ICAgICAgKGNvbnRlbnRzIGxheWVyIDAuMDAsIDEwLjAwIDIwMC4wMCB4IDEwMC4wMCkKLSAgICAg
ICAgKQotICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiA1OC4wMCAz
MDAuMDApCi0gICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMTIwLjAwKQotICAgICAgICAgIChjb250
ZW50cyBjbGlwcGluZyBsYXllciAwLjAwLCAwLjAwIDIwMC4wMCB4IDEyMC4wMCkKLSAgICAgICAg
ICAoY29udGVudHMgbGF5ZXIgLTQ0LjAwLCAtMTIuMDAgMjg4LjAwIHggMTQ0LjAwKQotICAgICAg
ICApCi0gICAgICApCi0gICAgKQotICApCi0pCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZp
dC1yZWZsZWN0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBv
c2l0aW5nL3JlZmxlY3Rpb25zL2RpcmVjdC1pbWFnZS1vYmplY3QtZml0LXJlZmxlY3RlZC1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YjQ1MmQuLjAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2Rp
cmVjdC1pbWFnZS1vYmplY3QtZml0LXJlZmxlY3RlZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw0OCArMCwwIEBACi0gICAgCi0oR3JhcGhpY3NMYXllcgotICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCi0gIChjaGlsZHJlbiAxCi0gICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgIChib3Vu
ZHMgODAwLjAwIDYwMC4wMCkKLSAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgKGNoaWxk
cmVuIDMKLSAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAocG9zaXRpb24gMjguMDAg
MjguMDApCi0gICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMTIwLjAwKQotICAgICAgICAgIChyZXBs
aWNhIGxheWVyKQotICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAgICAgKGJv
dW5kcyAyMDAuMDAgMTIwLjAwKQotICAgICAgICAgICAgICAodHJhbnNmb3JtIFsxLjAwIDAuMDAg
MC4wMCAwLjAwXSBbMC4wMCAtMS4wMCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBb
MC4wMCAxNDAuMDAgMC4wMCAxLjAwXSkKLSAgICAgICAgICAgICAgKHJlcGxpY2F0ZWQgbGF5ZXIp
Ci0gICAgICAgICAgICApCi0gICAgICAgICAgKGNvbnRlbnRzIGNsaXBwaW5nIGxheWVyIDAuMDAs
IDAuMDAgMjAwLjAwIHggMTIwLjAwKQotICAgICAgICAgIChjb250ZW50cyBsYXllciAtMjAuMDAs
IDAuMDAgMjQwLjAwIHggMTIwLjAwKQotICAgICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVy
Ci0gICAgICAgICAgKHBvc2l0aW9uIDI3Mi4wMCAyOC4wMCkKLSAgICAgICAgICAoYm91bmRzIDIw
MC4wMCAxMjAuMDApCi0gICAgICAgICAgKHJlcGxpY2EgbGF5ZXIpCi0gICAgICAgICAgICAoR3Jh
cGhpY3NMYXllcgotICAgICAgICAgICAgICAoYm91bmRzIDIwMC4wMCAxMjAuMDApCi0gICAgICAg
ICAgICAgICh0cmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIC0xLjAwIDAuMDAg
MC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDE0MC4wMCAwLjAwIDEuMDBdKQotICAg
ICAgICAgICAgICAocmVwbGljYXRlZCBsYXllcikKLSAgICAgICAgICAgICkKLSAgICAgICAgICAo
Y29udGVudHMgbGF5ZXIgMC4wMCwgMTAuMDAgMjAwLjAwIHggMTAwLjAwKQotICAgICAgICApCi0g
ICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDUxNi4wMCAyOC4wMCkK
LSAgICAgICAgICAoYm91bmRzIDIwMC4wMCAxMjAuMDApCi0gICAgICAgICAgKHJlcGxpY2EgbGF5
ZXIpCi0gICAgICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgICAgICAoYm91bmRzIDIw
MC4wMCAxMjAuMDApCi0gICAgICAgICAgICAgICh0cmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAu
MDBdIFswLjAwIC0xLjAwIDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDE0
MC4wMCAwLjAwIDEuMDBdKQotICAgICAgICAgICAgICAocmVwbGljYXRlZCBsYXllcikKLSAgICAg
ICAgICAgICkKLSAgICAgICAgICAoY29udGVudHMgY2xpcHBpbmcgbGF5ZXIgMC4wMCwgMC4wMCAy
MDAuMDAgeCAxMjAuMDApCi0gICAgICAgICAgKGNvbnRlbnRzIGxheWVyIC00NC4wMCwgLTEyLjAw
IDI4OC4wMCB4IDE0NC4wMCkKLSAgICAgICAgKQotICAgICAgKQotICAgICkKLSAgKQotKQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvdmlkZW8vdmlk
ZW8tb2JqZWN0LWZpdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29t
cG9zaXRpbmcvdmlkZW8vdmlkZW8tb2JqZWN0LWZpdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU0MTMyZTEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLW9iamVjdC1maXQtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotICAgCi0oR3JhcGhpY3NMYXllcgotICAo
Ym91bmRzIDc4NS4wMCA3NzUuMDApCi0gIChjaGlsZHJlbiAxCi0gICAgKEdyYXBoaWNzTGF5ZXIK
LSAgICAgIChib3VuZHMgNzg1LjAwIDc3NS4wMCkKLSAgICAgIChjb250ZW50c09wYXF1ZSAxKQot
ICAgICAgKGNoaWxkcmVuIDYKLSAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAocG9z
aXRpb24gMTMuMDAgMTMuMDApCi0gICAgICAgICAgKGJvdW5kcyAxMjQuMDAgMjA0LjAwKQotICAg
ICAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKLSAg
ICAgICAgICAoY29udGVudHMgbGF5ZXIgMi4wMCwgMi4wMCAxMjAuMDAgeCAyMDAuMDApCi0gICAg
ICAgICkKLSAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAocG9zaXRpb24gMTUxLjAw
IDEzLjAwKQotICAgICAgICAgIChib3VuZHMgMTI0LjAwIDIwNC4wMCkKLSAgICAgICAgICAoY29u
dGVudHNPcGFxdWUgMSkKLSAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCi0gICAgICAgICAgKGNv
bnRlbnRzIGNsaXBwaW5nIGxheWVyIDIuMDAsIDIuMDAgMTIwLjAwIHggMjAwLjAwKQotICAgICAg
ICAgIChjb250ZW50cyBsYXllciAtNzMuMDAsIDAuMDAgMjY2LjAwIHggMjAwLjAwKQotICAgICAg
ICApCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDI4OS4wMCAx
My4wMCkKLSAgICAgICAgICAoYm91bmRzIDEyNC4wMCAyMDQuMDApCi0gICAgICAgICAgKGNvbnRl
bnRzT3BhcXVlIDEpCi0gICAgICAgICAgKGRyYXdzQ29udGVudCAxKQotICAgICAgICAgIChjb250
ZW50cyBsYXllciAyLjAwLCA1Ny4wMCAxMjAuMDAgeCA5MC4wMCkKLSAgICAgICAgKQotICAgICAg
ICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiAxMy4wMCAyMzEuMDApCi0gICAg
ICAgICAgKGJvdW5kcyAzNTQuMDAgMzA0LjAwKQotICAgICAgICAgIChjb250ZW50c09wYXF1ZSAx
KQotICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKLSAgICAgICAgICAoY29udGVudHMgbGF5ZXIg
MTcuMDAsIDMyLjAwIDMyMC4wMCB4IDI0MC4wMCkKLSAgICAgICAgKQotICAgICAgICAoR3JhcGhp
Y3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiAxMy4wMCA1NjkuMDApCi0gICAgICAgICAgKGJv
dW5kcyA0MDQuMDAgMTg0LjAwKQotICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAg
ICAgIChkcmF3c0NvbnRlbnQgMSkKLSAgICAgICAgICAoY29udGVudHMgbGF5ZXIgODIuMDAsIDIu
MDAgMjQwLjAwIHggMTgwLjAwKQotICAgICAgICApCi0gICAgICAgIChHcmFwaGljc0xheWVyCi0g
ICAgICAgICAgKHBvc2l0aW9uIDQzMS4wMCA1NDkuMDApCi0gICAgICAgICAgKGJvdW5kcyAxMjQu
MDAgMjA0LjAwKQotICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgICAgIChkcmF3
c0NvbnRlbnQgMSkKLSAgICAgICAgICAoY29udGVudHMgY2xpcHBpbmcgbGF5ZXIgMi4wMCwgMi4w
MCAxMjAuMDAgeCAyMDAuMDApCi0gICAgICAgICAgKGNvbnRlbnRzIGxheWVyIC0xMDAuMDAsIC0y
MC4wMCAzMjAuMDAgeCAyNDAuMDApCi0gICAgICAgICkKLSAgICAgICkKLSAgICApCi0gICkKLSkK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9oeXBoZW5h
dGUtbG9jYWxlLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3Rl
eHQvaHlwaGVuYXRlLWxvY2FsZS1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU3ZmRlMTAuLjAwMDAwMDAKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvdGV4dC9oeXBoZW5hdGUtbG9jYWxlLWV4cGVjdGVkLnBuZyBhbmQgL2Rldi9u
dWxsIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3Zp
ZGVvLXZvbHVtZS1zbGlkZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L21lZGlhL3ZpZGVvLXZvbHVtZS1zbGlkZXItZXhwZWN0ZWQucG5nCmluZGV4IDgwYjI4OWYuLjNi
ZWUzNmIgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRp
YS92aWRlby12b2x1bWUtc2xpZGVyLWV4cGVjdGVkLnBuZyBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvbWVkaWEvdmlkZW8tdm9sdW1lLXNsaWRlci1leHBlY3RlZC5wbmcgZGlmZmVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tdm9sdW1lLXNs
aWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8t
dm9sdW1lLXNsaWRlci1leHBlY3RlZC50eHQKaW5kZXggODFhNmM0Mi4uOGU0N2E0MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLXZvbHVtZS1zbGlkZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby12
b2x1bWUtc2xpZGVyLWV4cGVjdGVkLnR4dApAQCAtNiw5ICs2LDkgQEAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCiAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MzN4
MTgKICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDMzOiAiVGVzdHMgaWYgdGhlIHZv
bHVtZSBzbGlkZXIgaXMgcmVuZGVyZXJkIHByb3Blcmx5LiBUaGlzIHRlc3QgYXNzdW1lcyB0aGUi
CiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg0MzMsMTQpIHNpemUgMHgwCi0gICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMTgpIHNpemUgNDUzeDE4Ci0gICAgICAgIHRleHQgcnVuIGF0ICgw
LDE4KSB3aWR0aCA0NTM6ICJ2b2x1bWUgc2xpZGVyIGlzIGltcGxlbWVudGVkIGFuZCBtb3VzZSBv
dmVyIHRoZSByaWdodCBib3R0b20gY29ybmVyIG9mIgotICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
NDUzLDMyKSBzaXplIDB4MAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDE4KSBzaXpl
IDQ0NngxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggNDQ2OiAidm9sdW1lIHNs
aWRlciBpcyBpbXBsbWVudGVkIGFuZCBtb3VzZSBvdmVyIHRoZSByaWdodCBib3R0b20gY29ybmVy
IG9mIgorICAgICAgUmVuZGVyQlIge0JSfSBhdCAoNDQ2LDMyKSBzaXplIDB4MAogICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDM2KSBzaXplIDI3MHgxOAogICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwzNikgd2lkdGggMjcwOiAidmlkZW8gZWxlbWVudCB3aWxsIHNob3cgdGhlIHZvbHVtZSBz
bGlkZXIuIgogICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjcwLDUwKSBzaXplIDB4MApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LXN2Z2RvbS1lZGdlTW9kZS1wcm9wLWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC1zdmdkb20tZWRnZU1vZGUtcHJvcC1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdhN2E2YmEuLjAwMDAwMDAKQmluYXJ5IGZpbGVzIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LXN2Z2RvbS1lZGdlTW9kZS1wcm9wLWV4cGVjdGVkLnBuZyBhbmQgL2Rldi9udWxsIGRp
ZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA3MjRiNGRhLi5lMzBlZjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13
azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azEvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTIzLDggKzEyMyw2IEBAIHdlYmtpdC5vcmcvYi85ODUyNSBwbHVn
aW5zL3JlZW50cmFudC11cGRhdGUtd2lkZ2V0LXBvc2l0aW9ucy5odG1sCiB3ZWJraXQub3JnL2Iv
OTg1MjUgcGx1Z2lucy91cGRhdGUtd2lkZ2V0cy1jcmFzaC5odG1sCiB3ZWJraXQub3JnL2IvOTg1
MjUgcGx1Z2lucy93aW5kb3ctb3Blbi5odG1sCiAKLXdlYmtpdC5vcmcvYi8xMjA2MjggcGx1Z2lu
cy9kZXN0cm95LW9uLXNldHdpbmRvdy5odG1sIFsgU2tpcCBdCi0KICMgVGVzdFJ1bm5lcjo6b3Zl
cnJpZGVQcmVmZXJlbmNlKCkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgJ1dlYktpdFN1cHBvcnRzTXVs
dGlwbGVXaW5kb3dzJyBwcmVmZXJlbmNlCiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNo
b3Itbm8tbXVsdGlwbGUtd2luZG93cy5odG1sCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LW9wZW4t
bm8tbXVsdGlwbGUtd2luZG93cy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA3NjhjODVjLi5kMjBmYTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExNCw5ICsxMTQsNiBAQCBmYXN0L2V2ZW50cy9jb25zdHJ1
Y3RvcnMvY29tcG9zaXRpb24tZXZlbnQtY29uc3RydWN0b3IuaHRtbAogZmFzdC9ldmVudHMvY29u
c3RydWN0b3JzL3doZWVsLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKIGZhc3QvZXZlbnRzL2NvbnN0
cnVjdG9ycy9rZXlib2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCiBmYXN0L2V2ZW50cy9jb25z
dHJ1Y3RvcnMvZm9jdXMtZXZlbnQtY29uc3RydWN0b3IuaHRtbAotZmFzdC9ldmVudHMvd2hlZWxl
dmVudC1iYXNpYy5odG1sCi1mYXN0L2V2ZW50cy93aGVlbGV2ZW50LWNvbnN0cnVjdG9yLmh0bWwK
LWZhc3QvZXZlbnRzL3doZWVsZXZlbnQtbW91c2V3aGVlbC1pbnRlcmFjdGlvbi5odG1sCiAKICMg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpIGlzIGRpc2FibGVkLgogc3RvcmFnZS9pbmRleGVkZGIK
QEAgLTIwMSw5ICsxOTgsNiBAQCBmYXN0L3hzbC94c2x0LXhodG1sLXRlbXBsYXRlLnhtbAogZmFz
dC94cGF0aC94cGF0aC10ZW1wbGF0ZS1lbGVtZW50Lmh0bWwKIGZhc3QveHNsL3hzbHQtcHJvY2Vz
c29yLXRlbXBsYXRlLmh0bWwKIAotIyBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xM
SU5HKSBpcyBkaXNhYmxlZC4KLWZhc3QvcmVwYWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gtcmVw
YWludC5odG1sIFsgU2tpcCBdCi0KICMgSlNDIGRvZXMgbm90IHN1cHBvcnQgc2V0SXNvbGF0ZWRX
b3JsZFNlY3VyaXR5T3JpZ2luLCAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVz
dHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKIApAQCAtMzI5
LDE0ICszMjMsNiBAQCB3ZWJraXQub3JnL2IvNzYxNzMgZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0
LWFsaWduLWxhc3QKIHdlYmtpdC5vcmcvYi85OTk0NSBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQt
anVzdGlmeSBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzExMjc1NSBmYXN0L2NzczMtdGV4dC9j
c3MzLXRleHQtaW5kZW50IFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyBCYWNrZ3Jv
dW5nIHNwYWNpbmcgaW1wbGVtZW50YXRpb24gaXMgbWlzc2luZy4KLXdlYmtpdC5vcmcvYi8xMjA1
OTYgY3NzMy9iYWNrZ3JvdW5kL2JhY2tncm91bmQtcmVwZWF0LXNwYWNlLWJvcmRlci5odG1sIFsg
U2tpcCBdCi13ZWJraXQub3JnL2IvMTIwNTk2IGNzczMvYmFja2dyb3VuZC9iYWNrZ3JvdW5kLXJl
cGVhdC1zcGFjZS1jb250ZW50Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMjA1OTYgY3Nz
My9iYWNrZ3JvdW5kL2JhY2tncm91bmQtcmVwZWF0LXNwYWNlLXBhZGRpbmcuaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzEyMDU5NiBjc3MzL21hc2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtYm9y
ZGVyLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMjA1OTYgY3NzMy9tYXNraW5nL21hc2st
cmVwZWF0LXNwYWNlLWNvbnRlbnQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEyMDU5NiBj
c3MzL21hc2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgU2tpcCBdCi0KICMg
V2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHN1cHBvcnQgZm9yIEluc3BlY3RvckNsaWVudDo6b3Zl
cnJpZGVEZXZpY2VNZXRyaWNzKCkgaW4gcGxhdGZvcm1zIG90aGVyIHRoYW4gQ2hyb21pdW0KICMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODg2CiB3ZWJraXQub3Jn
L2IvODI4ODYgaW5zcGVjdG9yL3N0eWxlcy9vdmVycmlkZS1zY3JlZW4tc2l6ZS5odG1sIFsgU2tp
cCBdCkBAIC0yMjg4LDEwICsyMjc0LDggQEAgZmFzdC9tdWx0aWNvbC9vdmVyZmxvdy1pbnRvLWNv
bHVtbmdhcC5odG1sCiBmYXN0L292ZXJmbG93L2xpbmUtY2xhbXAtYW5kLWNvbHVtbnMuaHRtbAog
ZmFzdC90YWJsZS90ZC13aWR0aC1maWZ0eS1wZXJjZW50LXJlZ3Jlc3Npb24uaHRtbAogZmFzdC90
ZXh0L2Rlc2NlbnQtY2xpcC1pbi1zY2FsZWQtcGFnZS5odG1sCi1mYXN0L3RleHQvcGFydGlhbC10
ZXh0cnVucy5odG1sCiBmYXN0L3N1Yi1waXhlbC9ibG9jay13aXRoLW1hcmdpbi1vdmVyZmxvdy5o
dG1sCiBzdmcvY3VzdG9tL2FuY2hvci1vbi11c2Uuc3ZnCi1zdmcvY3VzdG9tL21hc2tpbmctY2xp
cHBpbmctaGlkcGkuc3ZnCiBzdmcvYW5pbWF0aW9ucy9hbmltYXRlVHJhbnNmb3JtLXJvdGF0ZS1h
cm91bmQtcG9pbnQuc3ZnCiBzdmcvYW5pbWF0aW9ucy9hbmltYXRlTW90aW9uLWFkZGl0aXZlLTEu
c3ZnCiBzdmcvdGV4dC9hbHQtZ2x5cGgtZm9yLXN1cnJvZ2F0ZS1wYWlyLnN2ZwpAQCAtMjQ3Niwy
NSArMjQ2MCw2IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdp
dGgtMTZiaXQtdW5pY29kZTUuaHRtbCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1mYW5jeS11bmljb2RlLmh0bWwgWyBGYWlsdXJlIF0K
IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtaW52YWxpZC11
cmwtZW5jb2RpbmcuaHRtbCBbIEZhaWx1cmUgXQogCi0jIFtRdF0gUkVHUkVTU0lPTihyMTU0NDQ0
KTogeHNzLURFTklFRCB0ZXN0IHJlc3VsdHMgY2hhbmdlZAotIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTk1Ci1odHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0Qmxh
bmsveHNzLURFTklFRC1uYXZpZ2F0ZS1vcGVuZXItamF2YXNjcmlwdC11cmwuaHRtbAotaHR0cC90
ZXN0cy9zZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQtc2V0LW9wZW5lci5odG1sCi1odHRw
L3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLWluLWZvcmVp
Z24tZG9tYWluLXdpbmRvdy1vcGVuLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94
c3MtREVOSUVELWZyb20tZGF0YS11cmwtdG8tZGF0YS11cmwuaHRtbAotaHR0cC90ZXN0cy9zZWN1
cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtdG8tZGF0YS11cmwtaW4tZm9yZWlnbi1kb21haW4tc3Vi
ZnJhbWUtbG9jYXRpb24tY2hhbmdlLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94
c3MtREVOSUVELXRvLWRhdGEtdXJsLWluLWZvcmVpZ24tZG9tYWluLXN1YmZyYW1lLmh0bWwKLWh0
dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEtdXJsLWluLWZvcmVp
Z24tZG9tYWluLXdpbmRvdy1vcGVuLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94
c3MtREVOSUVELXRvLWRhdGEtdXJsLXN1Yi1mcmFtZS0yLWxldmVsLmh0bWwKLQotIyBbUXRdIEZh
aWxpbmcgYW5pbWF0aW9ucyB0ZXN0cy4KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMDYwMwotYW5pbWF0aW9ucy9jcm9zcy1mYWRlLWJhY2tncm91bmQtaW1hZ2Uu
aHRtbAotYW5pbWF0aW9ucy9jcm9zcy1mYWRlLWJvcmRlci1pbWFnZS1zb3VyY2UuaHRtbAotYW5p
bWF0aW9ucy9jcm9zcy1mYWRlLWxpc3Qtc3R5bGUtaW1hZ2UuaHRtbAotYW5pbWF0aW9ucy9jcm9z
cy1mYWRlLXdlYmtpdC1tYXNrLWJveC1pbWFnZS5odG1sCi1hbmltYXRpb25zL2Nyb3NzLWZhZGUt
d2Via2l0LW1hc2staW1hZ2UuaHRtbAotCiAjIFtRdF0gUkVHUkVTU0lPTjogMiB0ZXN0cyBzdGFy
dGVkIHRvIGZhaWwgd2l0aCBuZXdlciBRdDUKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDE0MAogZWRpdGluZy9zZWxlY3Rpb24vdHJpcGxlLWNsaWNrLWluLXBy
ZS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yNzU3LDggKzI3MjIsNiBAQCB3ZWJraXQub3JnL2IvMTE0
MTU3IGZhc3QvanMvZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLmh0bWwgWyBG
YWlsdXJlCiB3ZWJraXQub3JnL2IvMTE0MzM4IGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcv
bmVzdGVkLW92ZXJsYXAtb3ZlcmZsb3cuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzExNDMz
OCBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL25lc3RlZC1ub24tb3ZlcmxhcC1jbGlwcGlu
Zy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xMjA2MjIgY29tcG9zaXRpbmcvdmlkZW8v
dmlkZW8tb2JqZWN0LWZpdC5odG1sIFsgU2tpcCBdCi0KICMgUkVHUkVTU0lPTihyMTQ4Mzc4KTog
ZWRpdGluZy9zdHlsZS9ibG9jay1zdHlsZS0wMDUuaHRtbCBmYWlsaW5nCiB3ZWJraXQub3JnL2Iv
MTE0NjEyIGVkaXRpbmcvc3R5bGUvYmxvY2stc3R5bGUtMDA1Lmh0bWwgWyBTa2lwIF0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiNzRkMGU2Li43MzU1
MzUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzQs
OSArNzQsNiBAQCBzdmcvY3VzdG9tL21hbnVhbGx5LXBhcnNlZC1zdmctYWxsb3dlZC1pbi1kYXNo
Ym9hcmQuaHRtbAogc3ZnL2N1c3RvbS9tYW51YWxseS1wYXJzZWQtZW1iZWRkZWQtc3ZnLWFsbG93
ZWQtaW4tZGFzaGJvYXJkLmh0bWwKIHN2Zy9jdXN0b20vc3ZnLWFsbG93ZWQtaW4tZGFzaGJvYXJk
LW9iamVjdC5odG1sCiAKLSMgQWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIChFTkFCTEVf
QUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSBpcyBub3QgZW5hYmxlZC4KLWZhc3QvcmVw
YWludC9vdmVyZmxvdy1zY3JvbGwtdG91Y2gtcmVwYWludC5odG1sIFsgU2tpcCBdCi0KICMgQXBh
Y2hlIDEuMyBkb2Vzbid0IHN1cHBvcnQgU1NMIDxyZGFyOi8vcHJvYmxlbS81MzQ1OTg1PgogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3BpbmctY3Jvc3Mtb3JpZ2luLWZyb20taHR0cHMuaHRtbAogaHR0
cC90ZXN0cy9zc2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGYxNTkwYTIuLmZiMjFiZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTk2LDkgKzU5Niw2IEBAIHN2Zy9jdXN0
b20vbWFudWFsbHktcGFyc2VkLXN2Zy1hbGxvd2VkLWluLWRhc2hib2FyZC5odG1sCiBzdmcvY3Vz
dG9tL21hbnVhbGx5LXBhcnNlZC1lbWJlZGRlZC1zdmctYWxsb3dlZC1pbi1kYXNoYm9hcmQuaHRt
bAogc3ZnL2N1c3RvbS9zdmctYWxsb3dlZC1pbi1kYXNoYm9hcmQtb2JqZWN0Lmh0bWwKIAotIyBB
Y2NlbGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpIGlzIG5vdCBlbmFibGVkLgotZmFzdC9yZXBhaW50L292ZXJmbG93LXNjcm9s
bC10b3VjaC1yZXBhaW50Lmh0bWwgWyBTa2lwIF0KLQogIyBBcGFjaGUgMS4zIGRvZXNuJ3Qgc3Vw
cG9ydCBTU0wgPHJkYXI6Ly9wcm9ibGVtLzUzNDU5ODU+CiBodHRwL3Rlc3RzL25hdmlnYXRpb24v
cGluZy1jcm9zcy1vcmlnaW4tZnJvbS1odHRwcy5odG1sCiBodHRwL3Rlc3RzL3NzbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQtZG9tLWVkZ2VNb2RlLWF0dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtZG9tLWVkZ2VNb2RlLWF0dHIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTAwYTlhLi4wMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LWRvbS1lZGdlTW9kZS1hdHRyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDEzICswLDAgQEAKLVNWRyAxLjEgZHluYW1pYyB1cGRhdGUgdGVzdHMKLQotVGVzdHMgZHlu
YW1pYyB1cGRhdGVzIG9mIHRoZSAnZWRnZU1vZGUnIGF0dHJpYnV0ZSBvZiB0aGUgU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50IG9iamVjdAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
UEFTUyBnYXVzc2lhbkJsdXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnZWRnZU1vZGUnKSBpcyAid3Jh
cCIKLVBBU1MgZ2F1c3NpYW5CbHVyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2VkZ2VNb2RlJykgaXMg
ImR1cGxpY2F0ZSIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC1kb20tZWRnZU1vZGUtYXR0ci5odG1sIGIvTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtZG9tLWVkZ2VNb2Rl
LWF0dHIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUzY2M2My4uMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC1kb20tZWRnZU1vZGUtYXR0ci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAs
MCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL3Jl
cGFpbnQuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVz
dCgpIj4KLTxoMT5TVkcgMS4xIGR5bmFtaWMgdXBkYXRlIHRlc3RzPC9oMT4KLTxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC1kb20tZWRnZU1vZGUtYXR0ci5qcyI+
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcv
ZHluYW1pYy11cGRhdGVzL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC1zdmdkb20tZWRnZU1vZGUt
cHJvcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC1zdmdkb20tZWRnZU1vZGUtcHJvcC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNDQ0MzIuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtc3ZnZG9t
LWVkZ2VNb2RlLXByb3AtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBA
QAotU1ZHIDEuMSBkeW5hbWljIHVwZGF0ZSB0ZXN0cwotCi1UZXN0cyBkeW5hbWljIHVwZGF0ZXMg
b2YgdGhlICdlZGdlTW9kZScgcHJvcGVydHkgb2YgdGhlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dCBvYmplY3QKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgZ2F1c3NpYW5C
bHVyRWxlbWVudC5lZGdlTW9kZS5iYXNlVmFsIGlzIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5T
VkdfRURHRU1PREVfV1JBUAotUEFTUyBnYXVzc2lhbkJsdXJFbGVtZW50LmVkZ2VNb2RlLmJhc2VW
YWwgaXMgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LlNWR19FREdFTU9ERV9EVVBMSUNBVEUKLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC1zdmdkb20tZWRnZU1vZGUtcHJvcC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMt
dXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtc3ZnZG9tLWVkZ2VNb2RlLXByb3AuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUyMmJiYy4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC1z
dmdkb20tZWRnZU1vZGUtcHJvcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAot
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL3JlcGFpbnQu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpIj4K
LTxoMT5TVkcgMS4xIGR5bmFtaWMgdXBkYXRlIHRlc3RzPC9oMT4KLTxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC1zdmdkb20tZWRnZU1vZGUtcHJvcC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3NjcmlwdC10ZXN0cy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtZG9tLWVk
Z2VNb2RlLWF0dHIuanMgYi9MYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3NjcmlwdC10
ZXN0cy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtZG9tLWVkZ2VNb2RlLWF0dHIuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZjg1ODAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LWRvbS1lZGdlTW9kZS1hdHRyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAot
Ly8gW05hbWVdIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC1kb20tZWRnZU1vZGUtYXR0ci5qcwot
Ly8gW0V4cGVjdGVkIHJlbmRlcmluZyByZXN1bHRdIEFuIGltYWdlIHdpdGggZmVHYXVzc2lhbkJs
dXIgZmlsdGVyIC0gYW5kIGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMKLQotZGVzY3JpcHRpb24o
IlRlc3RzIGR5bmFtaWMgdXBkYXRlcyBvZiB0aGUgJ2VkZ2VNb2RlJyBhdHRyaWJ1dGUgb2YgdGhl
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCBvYmplY3QiKQotY3JlYXRlU1ZHVGVzdENhc2UoKTsK
LQotdmFyIGdhdXNzaWFuQmx1ckVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCJmZUdhdXNzaWFu
Qmx1ciIpOwotZ2F1c3NpYW5CbHVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoImluIiwgIlNvdXJjZUdy
YXBoaWMiKTsKLWdhdXNzaWFuQmx1ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGREZXZpYXRpb24i
LCAiMTAiKTsKLWdhdXNzaWFuQmx1ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJlZGdlTW9kZSIsICJ3
cmFwIik7Ci0KLXZhciBmaWx0ZXJFbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgiZmlsdGVyIik7
Ci1maWx0ZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQiLCAibXlGaWx0ZXIiKTsKLWZpbHRlckVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJmaWx0ZXJVbml0cyIsICJ1c2VyU3BhY2VPblVzZSIpOwotZmls
dGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIngiLCAiMCIpOwotZmlsdGVyRWxlbWVudC5zZXRBdHRy
aWJ1dGUoInkiLCAiMCIpOwotZmlsdGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjIw
MCIpOwotZmlsdGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIyMDAiKTsKLWZpbHRl
ckVsZW1lbnQuYXBwZW5kQ2hpbGQoZ2F1c3NpYW5CbHVyRWxlbWVudCk7Ci0KLXZhciBkZWZzRWxl
bWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoImRlZnMiKTsKLWRlZnNFbGVtZW50LmFwcGVuZENoaWxk
KGZpbHRlckVsZW1lbnQpOwotCi1yb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChkZWZzRWxlbWVu
dCk7Ci1yb290U1ZHRWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjcwMCIpOwotcm9vdFNW
R0VsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMjAwIik7Ci0KLXZhciBpbWFnZUVsZW1l
bnQgPSBjcmVhdGVTVkdFbGVtZW50KCJpbWFnZSIpOwotaW1hZ2VFbGVtZW50LnNldEF0dHJpYnV0
ZU5TKHhsaW5rTlMsICJ4bGluazpocmVmIiwgIi4uL1czQy1TVkctMS4xL3Jlc291cmNlcy9jb252
b2x2ZUltYWdlLnBuZyIpOwotaW1hZ2VFbGVtZW50LnNldEF0dHJpYnV0ZSgieCIsICIwIik7Ci1p
bWFnZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ5IiwgIjAiKTsKLWltYWdlRWxlbWVudC5zZXRBdHRy
aWJ1dGUoIndpZHRoIiwgIjIwMCIpOwotaW1hZ2VFbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0
IiwgIjIwMCIpOwotaW1hZ2VFbGVtZW50LnNldEF0dHJpYnV0ZSgiZmlsdGVyIiwgInVybCgjbXlG
aWx0ZXIpIik7Ci1yb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOwotCi1z
aG91bGRCZUVxdWFsVG9TdHJpbmcoImdhdXNzaWFuQmx1ckVsZW1lbnQuZ2V0QXR0cmlidXRlKCdl
ZGdlTW9kZScpIiwgIndyYXAiKTsKLQotZnVuY3Rpb24gcmVwYWludFRlc3QoKSB7Ci0gICAgZ2F1
c3NpYW5CbHVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoImVkZ2VNb2RlIiwgImR1cGxpY2F0ZSIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ2F1c3NpYW5CbHVyRWxlbWVudC5nZXRBdHRyaWJ1
dGUoJ2VkZ2VNb2RlJykiLCAiZHVwbGljYXRlIik7Ci0KLSAgICBjb21wbGV0ZVRlc3QoKTsKLX0K
LQotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3NjcmlwdC10ZXN0cy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQtc3ZnZG9tLWVkZ2VNb2RlLXByb3AuanMgYi9MYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRh
dGVzL3NjcmlwdC10ZXN0cy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtc3ZnZG9tLWVkZ2VNb2Rl
LXByb3AuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZTM1YWQuLjAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LXN2Z2RvbS1lZGdlTW9kZS1wcm9wLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsNDYgKzAsMCBAQAotLy8gW05hbWVdIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC1kb20t
ZWRnZU1vZGUtcHJvcC5qcwotLy8gW0V4cGVjdGVkIHJlbmRlcmluZyByZXN1bHRdIEFuIGltYWdl
IHdpdGggZmVHYXVzc2lhbkJsdXIgZmlsdGVyIC0gYW5kIGEgc2VyaWVzIG9mIFBBU1MgbWVzc2Fn
ZXMKLQotZGVzY3JpcHRpb24oIlRlc3RzIGR5bmFtaWMgdXBkYXRlcyBvZiB0aGUgJ2VkZ2VNb2Rl
JyBwcm9wZXJ0eSBvZiB0aGUgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IG9iamVjdCIpCi1jcmVh
dGVTVkdUZXN0Q2FzZSgpOwotCi12YXIgZ2F1c3NpYW5CbHVyRWxlbWVudCA9IGNyZWF0ZVNWR0Vs
ZW1lbnQoImZlR2F1c3NpYW5CbHVyIik7Ci1nYXVzc2lhbkJsdXJFbGVtZW50LnNldEF0dHJpYnV0
ZSgiaW4iLCAiU291cmNlR3JhcGhpYyIpOwotZ2F1c3NpYW5CbHVyRWxlbWVudC5zZXRBdHRyaWJ1
dGUoInN0ZERldmlhdGlvbiIsICIxMCIpOwotZ2F1c3NpYW5CbHVyRWxlbWVudC5zZXRBdHRyaWJ1
dGUoImVkZ2VNb2RlIiwgIndyYXAiKTsKLQotdmFyIGZpbHRlckVsZW1lbnQgPSBjcmVhdGVTVkdF
bGVtZW50KCJmaWx0ZXIiKTsKLWZpbHRlckVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJteUZp
bHRlciIpOwotZmlsdGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoImZpbHRlclVuaXRzIiwgInVzZXJT
cGFjZU9uVXNlIik7Ci1maWx0ZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgieCIsICIwIik7Ci1maWx0
ZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgieSIsICIwIik7Ci1maWx0ZXJFbGVtZW50LnNldEF0dHJp
YnV0ZSgid2lkdGgiLCAiMjAwIik7Ci1maWx0ZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0
IiwgIjIwMCIpOwotZmlsdGVyRWxlbWVudC5hcHBlbmRDaGlsZChnYXVzc2lhbkJsdXJFbGVtZW50
KTsKLQotdmFyIGRlZnNFbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgiZGVmcyIpOwotZGVmc0Vs
ZW1lbnQuYXBwZW5kQ2hpbGQoZmlsdGVyRWxlbWVudCk7Ci0KLXJvb3RTVkdFbGVtZW50LmFwcGVu
ZENoaWxkKGRlZnNFbGVtZW50KTsKLXJvb3RTVkdFbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgi
LCAiNzAwIik7Ci1yb290U1ZHRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIyMDAiKTsK
LQotdmFyIGltYWdlRWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoImltYWdlIik7Ci1pbWFnZUVs
ZW1lbnQuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywgInhsaW5rOmhyZWYiLCAiLi4vVzNDLVNWRy0x
LjEvcmVzb3VyY2VzL2NvbnZvbHZlSW1hZ2UucG5nIik7Ci1pbWFnZUVsZW1lbnQuc2V0QXR0cmli
dXRlKCJ4IiwgIjAiKTsKLWltYWdlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInkiLCAiMCIpOwotaW1h
Z2VFbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMjAwIik7Ci1pbWFnZUVsZW1lbnQuc2V0
QXR0cmlidXRlKCJoZWlnaHQiLCAiMjAwIik7Ci1pbWFnZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJm
aWx0ZXIiLCAidXJsKCNteUZpbHRlcikiKTsKLXJvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKGlt
YWdlRWxlbWVudCk7Ci0KLXNob3VsZEJlKCJnYXVzc2lhbkJsdXJFbGVtZW50LmVkZ2VNb2RlLmJh
c2VWYWwiLCAiU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LlNWR19FREdFTU9ERV9XUkFQIik7Ci0K
LWZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkgewotICAgIGdhdXNzaWFuQmx1ckVsZW1lbnQuZWRnZU1v
ZGUuYmFzZVZhbCA9IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5TVkdfRURHRU1PREVfRFVQTElD
QVRFOwotICAgIHNob3VsZEJlKCJnYXVzc2lhbkJsdXJFbGVtZW50LmVkZ2VNb2RlLmJhc2VWYWwi
LCAiU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LlNWR19FREdFTU9ERV9EVVBMSUNBVEUiKTsKLQot
ICAgIGNvbXBsZXRlVGVzdCgpOwotfQotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N2Zy1nYXVzc2lhbmJsdXItZWRn
ZU1vZGUtZHVwbGljYXRlLWV4cGVjdGVkLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N2
Zy1nYXVzc2lhbmJsdXItZWRnZU1vZGUtZHVwbGljYXRlLWV4cGVjdGVkLnN2ZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmIzMzczMi4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9z
dmcvZmlsdGVycy9zdmctZ2F1c3NpYW5ibHVyLWVkZ2VNb2RlLWR1cGxpY2F0ZS1leHBlY3RlZC5z
dmcKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgotPGRlZnM+Ci08ZmlsdGVyIGlkPSJibHVyIj4KLTxmZUdhdXNzaWFuQmx1ciBzdGREZXZp
YXRpb249IjMiLz4KLTwvZmlsdGVyPgotPGNsaXBQYXRoIGlkPSJjbGlwIj4KLTxyZWN0IHg9IjIw
IiB5PSIyMCIgd2lkdGg9IjE0MCIgaGVpZ2h0PSIxNDAiLz4KLTwvY2xpcFBhdGg+Ci08L2RlZnM+
Ci08ZyBmaWx0ZXI9InVybCgjYmx1cikiIGNsaXAtcGF0aD0idXJsKCNjbGlwKSI+Ci08cmVjdCB3
aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgZmlsbD0iZ3JlZW4iLz4KLTxyZWN0IHg9IjQwIiB5PSI0
MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImJsdWUiLz4KLTwvZz4KLTwvc3ZnPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9m
aWx0ZXJzL3N2Zy1nYXVzc2lhbmJsdXItZWRnZU1vZGUtZHVwbGljYXRlLnN2ZyBiL0xheW91dFRl
c3RzL3N2Zy9maWx0ZXJzL3N2Zy1nYXVzc2lhbmJsdXItZWRnZU1vZGUtZHVwbGljYXRlLnN2Zwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE0OGY1NS4uMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9zdmcvZmlsdGVycy9zdmctZ2F1c3NpYW5ibHVyLWVkZ2VNb2RlLWR1cGxpY2F0ZS5z
dmcKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmsiPgotPGRlZnM+Ci08ZmlsdGVyIGlkPSJibHVyIj4KLTxmZUdhdXNzaWFuQmx1ciBzdGREZXZp
YXRpb249IjMiIGVkZ2VNb2RlPSJkdXBsaWNhdGUiLz4KLTwvZmlsdGVyPgotPC9kZWZzPgotPGcg
ZmlsdGVyPSJ1cmwoI2JsdXIpIj4KLTxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjE0MCIgaGVp
Z2h0PSIxNDAiIGZpbGw9ImdyZWVuIi8+Ci08cmVjdCB4PSI0MCIgeT0iNDAiIHdpZHRoPSIxMDAi
IGhlaWdodD0iMTAwIiBmaWxsPSJibHVlIi8+Ci08L2c+Ci08L3N2Zz4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggM2ZmZmVl
ZS4uMzgxYTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzQ2LDcg
Kzc0Niw3IEBAIGlkIHZhbHVlVG9TdHJpbmcoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgfQogCi0gICAgTlNTdHJpbmcgKnN0cmluZ05TID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcpKTsKKyAgICBOU1N0
cmluZyAqc3RyaW5nTlMgPSBIYXJkQXV0b3JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcpKTsKICAgICBKU1N0cmluZ1JlbGVhc2UoanNzdHJp
bmcpOwogICAgIHJldHVybiBzdHJpbmdOUzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBiYjNmYzViLi5lMTU0MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xNjksMTAgKzE2OSwxNCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGRpc2Fzc2VtYmxlci9YODZEaXNhc3NlbWJsZXIuY3BwCiAKICAgICBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmNwcAotICAgIGhlYXAvQ29kZUJsb2NrU2V0LmNwcAotICAgIGhlYXAvQ29uc2VydmF0
aXZlUm9vdHMuY3BwCiAgICAgaGVhcC9Db3BpZWRTcGFjZS5jcHAKICAgICBoZWFwL0NvcHlWaXNp
dG9yLmNwcAorICAgIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCisgICAgaGVhcC9ERkdDb2Rl
QmxvY2tzLmNwcAorICAgIGhlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaAorICAgIGhlYXAv
R0NJbmNvbWluZ1JlZkNvdW50ZWQuaAorICAgIGhlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJ
bmxpbmVzLmgKKyAgICBoZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oCiAgICAgaGVh
cC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAKICAgICBoZWFw
L0hhbmRsZVNldC5jcHAKQEAgLTE4Myw2ICsxODcsMjEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKICAgICBoZWFwL0pJVFN0dWJS
b3V0aW5lU2V0LmNwcAogICAgIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorCisgICAgaGVh
cC9CbG9ja0FsbG9jYXRvci5jcHAKKyAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorICAg
IGhlYXAvQ29waWVkU3BhY2UuY3BwCisgICAgaGVhcC9Db3B5VmlzaXRvci5jcHAKKyAgICBoZWFw
L0RGR0NvZGVCbG9ja3MuY3BwCisgICAgaGVhcC9HQ1RocmVhZC5jcHAKKyAgICBoZWFwL0dDVGhy
ZWFkU2hhcmVkRGF0YS5jcHAKKyAgICBoZWFwL0hhbmRsZVNldC5jcHAKKyAgICBoZWFwL0hhbmRs
ZVN0YWNrLmNwcAorICAgIGhlYXAvSGVhcC5jcHAKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNw
cAorICAgIGhlYXAvSGVhcFRpbWVyLmNwcAorICAgIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3Bw
CisgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCiAgICAgaGVhcC9NYXJrU3RhY2suY3Bw
CiAgICAgaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCiAgICAgaGVhcC9NYXJrZWRCbG9jay5jcHAK
QEAgLTMzMSw3ICszNTAsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRp
bWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pTU2NvcGUuY3BwCiAgICAgcnVudGltZS9KU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcAotICAgIHJ1bnRpbWUvSlNTZXQuY3BwCiAgICAgcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNTdHJpbmcuY3BwCiAg
ICAgcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKQEAgLTM3NCw4ICszOTIsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNw
cAotICAgIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCi0gICAgcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwCiAgICAgcnVudGltZS9TaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAKICAgICBy
dW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKICAgICBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAxYWM3ZDE1Li44ODBlZmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMjA2ICsxLDMgQEAKLTIwMTMtMDktMDIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgU3VwcG9ydCB0aGUgImpzb24iIHJl
c3BvbnNlVHlwZSBhbmQgSlNPTiByZXNwb25zZSBlbnRpdHkgaW4gWEhSCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzY0OAotCi0gICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgotCi0gICAgICAgIEJhc2VkIG9uIHRoZSBwYXRjaCB3cml0dGVu
IGJ5IEphcnJlZCBOaWNob2xscy4KLQotICAgICAgICBBZGQgSlNDOjpKU09OUGFyc2UuIFRoaXMg
ZnVuY3Rpb24gd2lsbCBiZSB1c2VkIGluIFhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlIG9mIHR5cGUg
J2pzb24nLgotCi0gICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKLSAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgotICAgICAgICAoSlNDOjpK
U09OUGFyc2UpOgotICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgotCi0yMDEzLTA5LTAy
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+Ci0KLSAgICAgICAgQ29kZUJsb2NrOjpq
ZXR0aXNvbigpIHNob3VsZCBiZSBpbXBsaWNpdAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTY3Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVy
IEh1bnQuCi0gICAgICAgIAotICAgICAgICBUaGlzIGlzIGEgcmlza3kgY2hhbmdlIGZyb20gYSBw
ZXJmb3JtYW5jZSBzdGFuZHBvaW50LCBidXQgSSBiZWxpZXZlIGl0J3MKLSAgICAgICAgbmVjZXNz
YXJ5LiBUaGlzIG1ha2VzIGFsbCBDb2RlQmxvY2tzIGdldCBzd2VwdCBieSBHQy4gTm9ib2R5IGJ1
dCB0aGUgR0MKLSAgICAgICAgY2FuIGRlbGV0ZSBDb2RlQmxvY2tzIGJlY2F1c2UgdGhlIEdDIGFs
d2F5cyBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGVtLgotICAgICAgICBPbmNlIGEgQ29kZUJsb2Nr
IHJlYWNoZXMganVzdCBvbmUgcmVmZXJlbmNlIChpLmUuIHRoZSBvbmUgZnJvbSB0aGUgR0MpCi0g
ICAgICAgIHRoZW4gdGhlIEdDIHdpbGwgZnJlZSBpdCBvbmx5IGlmIGl0J3Mgbm90IG9uIHRoZSBz
dGFjay4KLSAgICAgICAgCi0gICAgICAgIFRoaXMgYWxsb3dzIG1lIHRvIGdldCByaWQgb2YgdGhl
IGpldHRpc29uaW5nIGxvZ2ljLiBXZSBuZWVkIHRoaXMgZm9yIEZUTAotICAgICAgICB0aWVyLXVw
LiBXZWxsOyB3ZSBkb24ndCBuZWVkIGl0LCBidXQgaXQgd2lsbCBoZWxwIHByZXZlbnQgYSBsb3Qg
b2YgYnVncy4KLSAgICAgICAgUHJldmlvdXNseSwgaWYgeW91IHdhbnRlZCB0byB0byByZXBsYWNl
IG9uZSBjb2RlIGJsb2NrIHdpdGggYW5vdGhlciwgeW91Ci0gICAgICAgIGhhZCB0byByZW1lbWJl
ciB0byB0ZWxsIHRoZSBHQyB0aGF0IHRoZSBwcmV2aW91cyBjb2RlIGJsb2NrIGlzCi0gICAgICAg
ICJqZXR0aXNvbmVkIi4gV2Ugd291bGQgbmVlZCB0byBkbyB0aGlzIHdoZW4gdGllcmluZyB1cCBm
cm9tIERGRyB0byBGVEwKLSAgICAgICAgYW5kIHdoZW4gZGVhbGluZyB3aXRoIERGRy10by1GVEwg
T1NSIGVudHJ5IGNvZGUgYmxvY2tzLiBUaGVyZSBhcmUgYSBsb3QKLSAgICAgICAgb2YgcGVybXV0
YXRpb25zIGhlcmUgLSB0aWVyaW5nIHVwIHRvIHRoZSBGVEwsIE9TUiBlbnRlcmluZyBpbnRvIHRo
ZSBGVEwsCi0gICAgICAgIGRlY2lkaW5nIHRoYXQgYW4gT1NSIGVudHJ5IGNvZGUgYmxvY2sgaXMg
bm90IHJlbGV2YW50IGFueW1vcmUgLSBqdXN0IHRvCi0gICAgICAgIG5hbWUgYSBmZXcuIEluIGVh
Y2ggb2YgdGhlc2UgY2FzZXMgd2UnZCBoYXZlIHRvIGpldHRpc29uIHRoZSBwcmV2aW91cwotICAg
ICAgICBjb2RlIGJsb2NrLiBJdCBzbWVsbHMgbGlrZSBhIGh1Z2Ugc291cmNlIG9mIGZ1dHVyZSBi
dWdzLgotICAgICAgICAKLSAgICAgICAgU28gSSBtYWRlIGpldHRpc29uaW5nIGltcGxpY2l0IGJ5
IG1ha2luZyB0aGUgR0MgYWx3YXlzIHdhdGNoIG91dCBmb3IgYQotICAgICAgICBDb2RlQmxvY2sg
YmVpbmcgb3duZWQgc29sZWx5IGJ5IHRoZSBHQy4KLSAgICAgICAgCi0gICAgICAgIFRoaXMgY2hh
bmdlIGlzIHBlcmZvcm1hbmNlIG5ldXRyYWwuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
LSAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgotICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKLSAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAgICAgICAqIFRhcmdldC5wcmk6Ci0gICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKLSAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpD
b2RlQmxvY2spOgotICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgotICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKLSAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpqZXR0aXNvbik6Ci0gICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Ci0gICAgICAg
IChKU0M6OkNvZGVCbG9jazo6c2V0SklUQ29kZSk6Ci0gICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4pOgotICAgICAgICAoSlND
OjpDb2RlQmxvY2tTZXQ6Om1hcmspOgotICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRhLmg6Ci0g
ICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6Q29tbW9uRGF0YSk6Ci0gICAgICAgICogaGVh
cC9Db2RlQmxvY2tTZXQuY3BwOiBBZGRlZC4KLSAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpD
b2RlQmxvY2tTZXQpOgotICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6On5Db2RlQmxvY2tTZXQp
OgotICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6OmFkZCk6Ci0gICAgICAgIChKU0M6OkNvZGVC
bG9ja1NldDo6Y2xlYXJNYXJrcyk6Ci0gICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6ZGVsZXRl
VW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQpOgotICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6OnRy
YWNlTWFya2VkKToKLSAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5oOiBBZGRlZC4KLSAgICAg
ICAgKiBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcDoKLSAgICAgICAgKEpTQzo6Q29uc2VydmF0
aXZlUm9vdHM6OmFkZCk6Ci0gICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oOgotICAg
ICAgICAqIGhlYXAvREZHQ29kZUJsb2Nrcy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogaGVhcC9E
RkdDb2RlQmxvY2tzLmg6IFJlbW92ZWQuCi0gICAgICAgICogaGVhcC9IZWFwLmNwcDoKLSAgICAg
ICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKLSAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlQWxs
Q29tcGlsZWRDb2RlKToKLSAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxl
ZENvZGUpOgotICAgICAgICAqIGhlYXAvSGVhcC5oOgotICAgICAgICAqIGludGVycHJldGVyL0pT
U3RhY2suY3BwOgotICAgICAgICAoSlNDOjpKU1N0YWNrOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290
cyk6Ci0gICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFjay5oOgotICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5jcHA6Ci0gICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxD
b2RlKToKLSAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKLSAgICAgICAgKiBydW50aW1l
L1ZNLmg6Ci0KLTIwMTMtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0g
ICAgICAgIFtNYWNdIE5vIG5lZWQgZm9yIEhhcmRBdXRvcmVsZWFzZSwgd2hpY2ggaXMgc2FtZSBh
cyBDRkJyaWRnaW5nUmVsZWFzZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIwNTY5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KLQot
ICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgotICAgICAgICAodmFsdWVUb1N0cmluZyk6IFVzZSBD
RkJyaWRnaW5nUmVsZWFzZS4KLQotMjAxMy0wOC0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgotCi0gICAgICAgIENvZGVCbG9jayByZWZhY3RvcmluZyBicm9rZSBwcm9maWxlIGR1
bXBpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MDU1MQotCi0gICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgotICAgICAgICAKLSAg
ICAgICAgRml4IHRoZSBidWcsIGFuZCBkaWQgYSBiaWcgY2xlYW4tdXAgb2YgaG93IEV4ZWN1dGFi
bGUgcmV0dXJucyBDb2RlQmxvY2tzLiBBIGxvdAotICAgICAgICBvZiB0aGUgcHJvYmxlbXMgd2Ug
aGF2ZSB3aXRoIGNvZGUgbGlrZSBDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbigpIGlzIHRoYXQg
d2UKLSAgICAgICAgd2VyZSB0cnlpbmcgKndheSB0b28gaGFyZCogdG8gc2lkZS1zdGVwIHRoZSBm
YWN0IHRoYXQgRXhlY3V0YWJsZSBjYW4ndCByZXR1cm4gYQotICAgICAgICBDb2RlQmxvY2sqLiBQ
cmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgcmV0dXJuIENvZGVCbG9jayYsIHNvIGlmIGl0IGRpZG4n
dCBoYXZlIGEKLSAgICAgICAgQ29kZUJsb2NrIHlldCwgeW91IHdlcmUgc2NyZXdlZC4gQW5kIGlm
IHlvdSBkaWRuJ3Qga25vdywgb3Igd2VyZW4ndCBzdXJlLCBpZiBpdAotICAgICAgICBkaWQgaGF2
ZSBhIENvZGVCbG9jaywgeW91IHdlcmUgcmVhbGx5IGdvaW5nIHRvIGhhdmUgYSBiYWQgdGltZS4g
QWxzbyBpdCByZWFsbHkKLSAgICAgICAgYnVncyBtZSB0aGF0IHRoZSBtZXRob2RzIHdlcmUgY2Fs
bGVkIGdlbmVyYXRlZEJ5dGVjb2RlKCkuIEluIGFsbCBvdGhlciBjb250ZXh0cwotICAgICAgICBp
ZiB5b3UgYXNrIGZvciBhIENvZGVCbG9jaywgdGhlbiBtZXRob2QgdG8gY2FsbCBpcyBjb2RlQmxv
Y2soKS4gU28gSSBtYWRlIGFsbAotICAgICAgICBvZiB0aG9zZSBjaGFuZ2VzLgotCi0gICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKLSAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNl
bGluZVZlcnNpb24pOgotICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVu
dCk6Ci0gICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OnJlcGxhY2VtZW50KToKLSAgICAgICAg
KEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OnJlcGxhY2VtZW50KToKLSAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpnbG9iYWxPYmplY3RGb3IpOgotICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4u
Y3BwOgotICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6Omhhc2gpOgotICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKLSAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHA6Ci0gICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKLSAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKLSAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4
ZWN1dGVDb25zdHJ1Y3QpOgotICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJl
cGVhdENhbGwpOgotICAgICAgICAqIGppdC9KSVRDb2RlLmg6Ci0gICAgICAgIChKU0M6OkpJVENv
ZGU6OmlzRXhlY3V0YWJsZVNjcmlwdCk6Ci0gICAgICAgIChKU0M6OkpJVENvZGU6OmlzTG93ZXJU
aWVyKToKLSAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgotICAgICAgICAoSlNDOjpsYXp5TGlu
a0Zvcik6Ci0gICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKLSAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6Ci0gICAgICAgIChKU0M6OkxMSW50Ojp0cmFjZUZ1bmN0
aW9uUHJvbG9ndWUpOgotICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgotICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKLSAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKLSAgICAgICAgKEpTQzo6aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
KToKLSAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgotICAgICAgICAoSlNDOjpD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgotICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6Ci0gICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKToK
LSAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKLSAgICAgICAgKEpTQzo6RXZhbEV4ZWN1
dGFibGU6OmNvZGVCbG9jayk6Ci0gICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb2Rl
QmxvY2spOgotICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmVpdGhlckNvZGVCbG9j
ayk6Ci0gICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yQ2FsbCk6
Ci0gICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yQ29uc3RydWN0
KToKLSAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IpOgotICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHA6Ci0gICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXA6OmR1bXApOgotCi0yMDEzLTA4LTMwICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+Ci0KLSAgICAgICAgSW1wbGVtZW50IEVTNiBTZXQgY2xhc3MK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU0OQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgotCi0gICAgICAgIFdlIHNpbXBseSBy
ZXVzZSB0aGUgTWFwRGF0YSB0eXBlIGZyb20gSlNNYXAgbWFraW5nIHRoZQotICAgICAgICBpdCBt
dWNoIHNpbXBsZXIuCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgotICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKLSAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKLSAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlc2V0KToKLSAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4pOgotICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKLSAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnNldFN0cnVjdHVyZSk6Ci0gICAgICAgICogcnVudGltZS9KU1NldC5j
cHA6IEFkZGVkLgotICAgICAgICAoSlNDOjpKU1NldDo6dmlzaXRDaGlsZHJlbik6Ci0gICAgICAg
IChKU0M6OkpTU2V0OjpmaW5pc2hDcmVhdGlvbik6Ci0gICAgICAgICogcnVudGltZS9KU1NldC5o
OiBBZGRlZC4KLSAgICAgICAgKEpTQzo6SlNTZXQ6OmNyZWF0ZVN0cnVjdHVyZSk6Ci0gICAgICAg
IChKU0M6OkpTU2V0OjpjcmVhdGUpOgotICAgICAgICAoSlNDOjpKU1NldDo6bWFwRGF0YSk6Ci0g
ICAgICAgIChKU0M6OkpTU2V0OjpKU1NldCk6Ci0gICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHA6IEFkZGVkLgotICAgICAgICAoSlNDOjpTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgotICAgICAgICAoSlNDOjpjYWxsU2V0KToKLSAgICAgICAgKEpTQzo6Y29uc3RydWN0
U2V0KToKLSAgICAgICAgKEpTQzo6U2V0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgot
ICAgICAgICAoSlNDOjpTZXRDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgotICAgICAgICAqIHJ1
bnRpbWUvU2V0Q29uc3RydWN0b3IuaDogQWRkZWQuCi0gICAgICAgIChKU0M6OlNldENvbnN0cnVj
dG9yOjpjcmVhdGUpOgotICAgICAgICAoSlNDOjpTZXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKToKLSAgICAgICAgKEpTQzo6U2V0Q29uc3RydWN0b3I6OlNldENvbnN0cnVjdG9yKToKLSAg
ICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6IEFkZGVkLgotICAgICAgICAoSlNDOjpT
ZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKLSAgICAgICAgKEpTQzo6Z2V0TWFwRGF0YSk6
Ci0gICAgICAgIChKU0M6OnNldFByb3RvRnVuY0FkZCk6Ci0gICAgICAgIChKU0M6OnNldFByb3Rv
RnVuY0NsZWFyKToKLSAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jRGVsZXRlKToKLSAgICAgICAg
KEpTQzo6c2V0UHJvdG9GdW5jRm9yRWFjaCk6Ci0gICAgICAgIChKU0M6OnNldFByb3RvRnVuY0hh
cyk6Ci0gICAgICAgIChKU0M6OnNldFByb3RvRnVuY1NpemUpOgotICAgICAgICAqIHJ1bnRpbWUv
U2V0UHJvdG90eXBlLmg6IEFkZGVkLgotICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmNyZWF0
ZSk6Ci0gICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKLSAgICAg
ICAgKEpTQzo6U2V0UHJvdG90eXBlOjpTZXRQcm90b3R5cGUpOgotCiAyMDEzLTA4LTMwICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBKU1ZhbHVlIGJvb2wg
Y29udmVyc2lvbiBsZXNzIGRhbmdlcm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA2OGFmZjFmLi5iNGMxOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDQyLDggKzQ0Miw2IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGcm9tQmxv
Y2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2UuaCBcCi0JU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29kZUJsb2NrU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
cGllZEFsbG9jYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9j
ay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9ja0lubGluZXMuaCBc
CkBAIC00NTgsNiArNDU2LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9EZWZlckdDLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RGR0Nv
ZGVCbG9ja3MuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9ERkdDb2RlQmxvY2tz
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCBcCkBAIC04
OTcsOCArODk3LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIFwK
LQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAgXAotCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBcCkBAIC0xMDA1LDEwICsx
MDAzLDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nQ291bnRlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nQ291bnRlci5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9y
LmhcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBcCi0J
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBiMDZlZGFkLi44YWM3MDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMzMCwxMCArMzMw
LDEwIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHRHJpdmVyLmNwcCIgLz4N
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkaXNhc3NlbWJsZXJcRGlzYXNzZW1ibGVyLmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEJsb2NrQWxsb2NhdG9yLmNw
cCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENvZGVCbG9ja1NldC5jcHAi
IC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb25zZXJ2YXRpdmVSb290cy5j
cHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3BpZWRTcGFjZS5jcHAi
IC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRvci5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxERkdDb2RlQmxvY2tzLmNwcCIgLz4N
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFkLmNwcCIgLz4NCiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAiIC8+DQog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxIYW5kbGVTZXQuY3BwIiAvPg0KQEAgLTQ4
NSw3ICs0ODUsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5
LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2NvcGUuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5jcHAiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U1NldC5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmlu
Zy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0pv
aW5lci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcCIgLz4NCkBAIC01MjYsOCArNTI1LDYgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUmVnRXhwT2JqZWN0LmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFJlZ0V4cFByb3RvdHlwZS5jcHAiIC8+DQogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTYW1wbGluZ0NvdW50ZXIuY3BwIiAvPg0KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2V0Q29uc3RydWN0b3IuY3BwIiAvPg0KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2V0UHJvdG90eXBlLmNwcCIgLz4NCiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNpbXBsZVR5cGVkQXJyYXlDb250cm9s
bGVyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNtYWxsU3Ry
aW5ncy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTcGFyc2VB
cnJheVZhbHVlTWFwLmNwcCIgLz4NCkBAIC02NzksNyArNjc2LDYgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdPU1JFbnRyeS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRpc2Fzc2VtYmxlclxEaXNhc3NlbWJsZXIuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXEJsb2NrQWxsb2NhdG9yLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caGVhcFxDb2RlQmxvY2tTZXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxoZWFwXENvbnNlcnZhdGl2ZVJvb3RzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caGVhcFxDb3BpZWRBbGxvY2F0b3IuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxoZWFwXENvcGllZEJsb2NrLmgiIC8+DQpAQCAtNjkwLDYgKzY4Niw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlWaXNpdG9yLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRvcklubGluZXMuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlXb3JrTGlzdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcREZHQ29kZUJsb2Nrcy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGhlYXBcR0NBc3NlcnRpb25zLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caGVhcFxHQ1RocmVhZC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcR0NUaHJlYWRTaGFyZWREYXRhLmgiIC8+DQpAQCAtOTE4LDcgKzkxNSw2IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTUHJveHkuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2NvcGUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCIgLz4NCi0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmgiIC8+DQogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdCdWlsZGVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0pvaW5lci5oIiAvPg0KQEAgLTk3Nyw4ICs5NzMsNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxSZWdFeHBQcm90b3R5cGUuaCIg
Lz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFJlamVjdC5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2FtcGxpbmdDb3VudGVyLmgiIC8+DQot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTZXRDb25zdHJ1Y3Rvci5oIiAvPg0K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2V0UHJvdG90eXBlLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTaW1wbGVUeXBlZEFycmF5Q29udHJv
bGxlci5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU21hbGxTdHJp
bmdzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTcGFyc2VBcnJh
eVZhbHVlTWFwLmgiIC8+DQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCmluZGV4IDEzZjkzOWIuLjg5NTRmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTU5Nyw5ICs1OTcsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmNwcCI+DQogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZXQuY3BwIj4NCi0gICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCI+DQogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KQEAgLTcxMSwxMiArNzA4LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU21hbGxTdHJpbmdzLmNwcCI+
DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2V0UHJvdG90eXBlLmNwcCI+DQotICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2V0Q29uc3RydWN0b3IuY3BwIj4NCi0gICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCI+DQogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNTkwNWQ4ZC4uMzk1MWVhMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE3OCw2ICsxNzgsOCBAQAogCQkwRjJCREM0RDE1MjI4MTg2MDBDRDg5
MTAgLyogREZHTWluaWZpZWROb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkJEQzRDMTUyMjgxODMwMENEODkxMCAvKiBERkdNaW5pZmllZE5v
ZGUuY3BwICovOyB9OwogCQkwRjJCREM0RjE1MjI4QkYzMDBDRDg5MTAgLyogREZHVmFsdWVTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QkRDNEUxNTIyOEJFNzAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmNwcCAqLzsgfTsKIAkJMEYy
QkRDNTExNTIyOEZGRDAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDNTAxNTIyOEZGQTAwQ0Q4
OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuY3BwICovOyB9OworCQkwRjJDNTU2RjE0NzM4RjMxMDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJD
NTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CiAJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAv
KiBVbnVzZWRQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9pbnRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkU4OTJEMTZE
MDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIgLyogREZHTWlu
aWZpZWRJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJGQzc3MDE2RTEyRjZGMDAz
OEQ5NzYgLyogREZHRENFUGhhc2UuY3BwICovOyB9OwpAQCAtMzY3LDggKzM2OSw2IEBACiAJCTBG
RDgyRTU2MTQxREFGMDgwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQg
LyogREZHT1NSRW50cnkuY3BwICovOyB9OwogCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyog
REZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRDgyRTg2MTQxRjNGRjEw
MDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRl
ZFR5cGUuY3BwICovOyB9OwotCQkwRkQ4QTMxMzE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2Nr
U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RDhBMzExMTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwICovOyB9OwotCQkwRkQ4
QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyog
Q29kZUJsb2NrU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEZEQjJDQzkxNzNEQTUyMDAwN0IzQzFCIC8qIEZUTEFiYnJldmlhdGVkVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0M3
MTczREE1MUUwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRlZFR5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEQjJDQ0ExNzNEQTUyMzAwN0Iz
QzFCIC8qIEZUTFZhbHVlRnJvbUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkRCMkNDODE3M0RBNTFFMDA3QjNDMUIgLyogRlRMVmFsdWVGcm9t
QmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRkRCMkNFNzE3NDgzMEEyMDA3QjNDMUIgLyogREZHV29ya2xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQjJDRTUxNzQ4MzBBMjAwN0Iz
QzFCIC8qIERGR1dvcmtsaXN0LmNwcCAqLzsgfTsKQEAgLTgzNywxMiArODM3LDYgQEAKIAkJQTcy
N0ZGNkIwREEzMDkyMjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyN0ZGNjYwREEzMDUz
QjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlBNzI4MEEy
ODExNTU3RTMwMDBENTY5NTcgLyogSlNPYmplY3RSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIg
LyogSlNPYmplY3RSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTcyOTAwOUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1i
bGVyQVJNdjcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcyOTAwOUIxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwICov
OyB9OwotCQlBNzI5OUQ5RDE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyOTlEOUIxN0QxMjgzNzAwNUY1
RkY5IC8qIEpTU2V0LmNwcCAqLzsgfTsKLQkJQTcyOTlEOUUxN0QxMjgzNzAwNUY1RkY5IC8qIEpT
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5
OUQ5QzE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCAqLzsgfTsKLQkJQTcyOTlEQTExN0QxMjg0
ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5OUQ5RjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90
eXBlLmNwcCAqLzsgfTsKLQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyOTlE
QTAxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oICovOyB9OwotCQlBNzI5OURBNTE3
RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyOTlEQTMxN0QxMjg1ODAwNUY1RkY5IC8qIFNl
dENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKLQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNl
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzI5OURBNDE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCAqLzsgfTsK
IAkJQTcyRkZENjQxMzk5ODVBODAwRTUzNjVBIC8qIEtleXdvcmRMb29rdXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzIyNUNEMTM5OTg0OUMwMEZG
MTY2MiAvKiBLZXl3b3JkTG9va3VwLmggKi87IH07CiAJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVC
MSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczMEI2MTAxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxB
Y3RpdmF0aW9uLmggKi87IH07CiAJCUE3MzBCNjEzMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RF
dmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzMwQjYxMTEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24u
Y3BwICovOyB9OwpAQCAtOTU3LDcgKzk1MSw3IEBACiAJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMz
RCAvKiBYODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdFNUFCMzYxNzk5RTRCMjAwRDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxl
ci5jcHAgKi87IH07CiAJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjI5OTY5MTdB
MEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCAqLzsgfTsKIAkJQTdGMjk5NkMxN0EwQkI2NzAw
MTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3RjI5OTZBMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTdGOTkzNUYwRkQ3MzI1
MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Rjk5MzVEMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdGOTkz
NUYwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Rjk5MzVEMEZENzMyNTEwMEEwQjJEMCAvKiBKU09O
T2JqZWN0LmggKi87IH07CiAJCUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Rjk5
MzVFMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCAqLzsgfTsKIAkJQTdGQjYwQTQx
MDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYg
LyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLzsgfTsKIAkJQTdGQjYxMDAxMDQwQzM4QjAwMTdB
Mjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVz
Y3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzU0LDYgKzEzNDgsOCBAQAogCQkwRjJCREM0QzE1MjI4MTgzMDBDRDg5MTAgLyogREZH
TWluaWZpZWROb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R01pbmlmaWVkTm9kZS5jcHA7IHBhdGggPSBkZmcvREZHTWluaWZpZWROb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQkRDNEUxNTIyOEJFNzAwQ0Q4OTEwIC8qIERGR1Zh
bHVlU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Zh
bHVlU291cmNlLmNwcDsgcGF0aCA9IGRmZy9ERkdWYWx1ZVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMkJEQzUwMTUyMjhGRkEwMENEODkxMCAvKiBERkdWYXJpYWJs
ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Zhcmlh
YmxlRXZlbnQuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxv
Y2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzU1NkUxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJGQzc3
MDE2RTEyRjZGMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHRENFUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0RDRVBoYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkM3NzExNkUxMkY2RjAwMzhE
OTc2IC8qIERGR0RDRVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0RDRVBoYXNlLmg7IHBhdGggPSBkZmcvREZHRENFUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYzNEIxNDcxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVXNlS2luZC5jcHA7IHBhdGgg
PSBkZmcvREZHVXNlS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTU2
LDggKzE1NTIsNiBAQAogCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50cnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRW50cnkuY3Bw
OyBwYXRoID0gZGZnL0RGR09TUkVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkVudHJ5Lmg7IHBhdGggPSBkZmcvREZHT1NSRW50
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODJFODQxNDFGM0ZEQTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNwZWN1bGF0ZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlQmxvY2tTZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwRkQ4QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja1NldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCMkNDNzE3M0RBNTFFMDA3QjNDMUIgLyogRlRM
QWJicmV2aWF0ZWRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBYmJyZXZpYXRlZFR5cGVzLmg7
IHBhdGggPSBmdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkRCMkNDODE3M0RBNTFFMDA3QjNDMUIgLyogRlRMVmFsdWVGcm9tQmxvY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRlRMVmFsdWVGcm9tQmxvY2suaDsgcGF0aCA9IGZ0bC9GVExWYWx1ZUZy
b21CbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCMkNFNTE3NDgzMEEy
MDA3QjNDMUIgLyogREZHV29ya2xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHV29ya2xpc3QuY3BwOyBwYXRoID0gZGZnL0RGR1dvcmtsaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzAsMTIgKzIwMjQsNiBAQAogCQlBNzI3RkY2
NTBEQTMwNTNCMDBFNTQ4RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzI5MDA5QjE3OTc2QzYwMDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcyOTlEOUIxN0QxMjgzNzAwNUY1RkY5
IC8qIEpTU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcyOTlEOUMxN0QxMjgzNzAwNUY1
RkY5IC8qIEpTU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAv
KiBTZXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcyOTlEQTAx
N0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTcyOTlEQTMxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcyOTlEQTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0
cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldENvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVC
MSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzMwQjYxMTEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM3ODEwOTE3OTlFQTJFMDA4MTc1
MzMgLyogREZHQW5hbHlzaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
QW5hbHlzaXMuaDsgcGF0aCA9IGRmZy9ERkdBbmFseXNpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjQxNSw5ICsyNDAzLDkgQEAKIAkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhC
IC8qIFByb2R1Y3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQk5MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTBGRjkyMkNGMTRG
NDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkJOTMyRjVC
RDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKKwkJCQk5
MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTE0MTIxMTIwMEE0ODc5M0Mw
MDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0
ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICov
LApAQCAtMjcxNSw4ICsyNzAzLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTE0ODE2RTE5MTU0
Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgKi8sCiAJCQkJMTQ4MTZFMUExNTRD
QzU2QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmggKi8sCi0JCQkJMEZEOEEzMTExN0Q0MzI2
QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5jcHAgKi8sCi0JCQkJMEZEOEEzMTIxN0Q0MzI2QzAw
Q0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMx
QiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNC
MTJCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggKi8sCiAJCQkJQzJFQUQyRkIxNEYwMjQ5ODAwQTRC
MTU5IC8qIENvcGllZEFsbG9jYXRvci5oICovLApAQCAtMjczMSw2ICsyNzE3LDggQEAKIAkJCQlD
MjIzOUQxNDE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3JJbmxpbmVzLmggKi8sCiAJCQkJ
QzIxOEQxM0YxNjU1Q0ZENTAwNjJCQjgxIC8qIENvcHlXb3JrTGlzdC5oICovLAogCQkJCTBGMTM2
RDRCMTc0QUQ2OUIwMDc1QjM1NCAvKiBEZWZlckdDLmggKi8sCisJCQkJMEYyQzU1NkQxNDczOEYy
RTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovLAorCQkJCTBGMkM1NTZFMTQ3MzhGMkUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8sCiAJCQkJQkNCRTJDQUQxNEU5ODVBQTAwMDU5
M0FEIC8qIEdDQXNzZXJ0aW9ucy5oICovLAogCQkJCTBGMkI2NkE4MTdCNkI1M0QwMEE3QUUzRiAv
KiBHQ0luY29taW5nUmVmQ291bnRlZC5oICovLAogCQkJCTBGMkI2NkE5MTdCNkI1M0QwMEE3QUUz
RiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCAqLywKQEAgLTMxODksOCArMzE3Nyw2
IEBACiAJCQkJMTQ4NzRBRTIxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCAqLywKIAkJCQkw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki8sCiAJCQkJMEY5MTlEMEYxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuaCAqLywKLQkJCQlBNzI5OUQ5QjE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuY3BwICov
LAotCQkJCUE3Mjk5RDlDMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5oICovLAogCQkJCUJDMDJF
OUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1
NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFG
NTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oICovLApAQCAtMzI5MSwxMCArMzI3Nyw2IEBACiAJCQkJ
MEZCN0YzOTExNUVEOEUzODAwRjE2N0IyIC8qIFJlamVjdC5oICovLAogCQkJCTBGNzcwMDkxMTQw
MkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovLAogCQkJCTBGNzcwMDhFMTQw
MkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLywKLQkJCQlBNzI5OURBMzE3RDEy
ODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuY3BwICovLAotCQkJCUE3Mjk5REE0MTdEMTI4
NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oICovLAotCQkJCUE3Mjk5RDlGMTdEMTI4NDgw
MDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwICovLAotCQkJCUE3Mjk5REEwMTdEMTI4NDgwMDVG
NUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLywKIAkJCQkwRjJCNjZENjE3QjZCNUFCMDBBN0FFM0Yg
LyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTBGMkI2NkQ3MTdCNkI1
QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oICovLAogCQkJCTkzMzAz
RkU4MEU2QTcyQjUwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwICovLApAQCAtMzM4Niw2ICsz
MzY4LDEwIEBACiAJCTg2RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMzhCMDEzMTdDRkU3NTUwMEIx
NDREMyAvKiBERkdDb21waWxhdGlvbktleS5jcHAgKi8sCisJCQkJMEYzOEIwMTQxN0NGRTc1NTAw
QjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmggKi8sCisJCQkJMEYzOEIwMTUxN0NGRTc1NTAw
QjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgKi8sCisJCQkJMEYzOEIwMTYxN0NGRTc1
NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5oICovLAogCQkJCUE3N0E0MjM2MTdBMEJC
RkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuY3BwICovLAogCQkJCUE3N0E0MjM3MTdBMEJC
RkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCAqLywKIAkJCQlBNzA0RDhGRTE3QTBCQUE4
MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oICovLApAQCAtMzQzMywxMCArMzQx
OSw2IEBACiAJCQkJMEZDMDk3N0UxNDY5RUJDNDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovLAog
CQkJCTBGRUEwQTJEMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdDb21tb25EYXRhLmNwcCAqLywKIAkJ
CQkwRkVBMEEyRTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5oICovLAotCQkJCTBG
MzhCMDEzMTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbktleS5jcHAgKi8sCi0JCQkJ
MEYzOEIwMTQxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmggKi8sCi0JCQkJ
MEYzOEIwMTUxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgKi8sCi0J
CQkJMEYzOEIwMTYxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5oICovLAog
CQkJCTBGM0IzQTE3MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAgKi8sCiAJCQkJMEYzQjNBMTgxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmggKi8sCiAJCQkJMEZCRTBGNkIxNkMxREIwMTAwODJDNUU4IC8qIERGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwICovLApAQCAtMzg5MSwxMCArMzg3Myw5IEBACiAJCQkJMEYzQjNBMjgx
NTQ0Qzk5NzAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3N0E0MjQwMTdBMEJCRkQwMEE4REI4MSAvKiBERkdDbG9iYmVyaXplLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzdBNDI0MjE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlclNl
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTREMTRDM0NENEMwMDdDM0RCMSAv
KiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTMyMTcwRDQwQkYwMEJCNzIy
QyAvKiBERkdDb21tb25EYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjM4QjAxODE3Q0ZFNzU1
MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMzhC
MDFBMTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGM0IzQTFCMTUzRTY4RjQwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzMxNkMxREIwNTAwODJDNUU4IC8qIERGR0NQ
U1JldGhyZWFkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y2MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywK
QEAgLTM5NjMsNyArMzk0NCw2IEBACiAJCQkJQTc3QTQyNDMxN0EwQkJGRDAwQThEQjgxIC8qIERG
R1NhZmVUb0V4ZWN1dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDEwMTdGMTc5REFGODAwMDJF
QjhCQSAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODZFQ0EzRkExMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGRDhBMzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tT
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDQ2MTVCMzcwMUYwMDhGMzYzRSAvKiBERkdT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUUzQTY3MTUz
QTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZCOTIxRDE2RDAyRjMwMDA1NUE1REIgLyogREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovLApAQCAtNDEyOCw2ICs0MTA4LDcgQEAKIAkJCQk5Nzg4MDE0MTE0NzFB
RDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJBN0Y2ODgx
NjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMzhCMDFBMTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1h
Y3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNDE2OCw3ICs0MTQ5LDYg
QEAKIAkJCQkxNDg3NEFFNjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdDMEM0QUMxNjgxMDMwMjAwMTcwMTFEIC8qIEpTU2NyaXB0UmVmUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3Mjk5RDlFMTdEMTI4Mzcw
MDVGNUZGOSAvKiBKU1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUUwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5ODdBQjYw
MDI5OURCMiAvKiBKU1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0Mjcw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTQyOTgsNiAr
NDI3OCw3IEBACiAJCQkJMEZGNzI5QkYxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2lu
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlDMDE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmls
ZXJPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTA1OEMxNjc1NDgzMzAwRjhB
QjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzOEIwMTgxN0NG
RTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkIxMDU4RTE2NzU0ODNBMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxMzkxMkMxNjc3MUMzRDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRC
eXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAv
KiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNDMzMCw4ICs0MzExLDYg
QEAKIAkJCQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzIyQjMxQjkxNDA1NzdENzAwREI0NzVBIC8qIFNhbXBsaW5nQ291bnRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyOUQ4ODYwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5n
VG9vbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNl
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVG
RjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFFNjRBQTEzNUU1RTFD
MDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwNTE3
QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0QkE3OEYxMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC00Nzg4LDYgKzQ3NjcsNyBAQAogCQkJCUE3N0YxODIxMTY0MDg4QjIwMDY0
MEE0NyAvKiBDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDYxNjY3NjRG
MTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjcx
NEQyNzk2QzAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
MzhCMDE5MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVj
aWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAw
RDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDgyNSwxMCArNDgwNSw5
IEBACiAJCQkJMEYzQjNBMjcxNTQ0Qzk5NTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc3QTQyM0YxN0EwQkJGRDAwQThEQjgxIC8q
IERGR0Nsb2JiZXJpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc3QTQyNDExN0EwQkJGRDAw
QThEQjgxIC8qIERGR0Nsb2JiZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzU1NzAx
NDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGMEYxOUQxNkI3MkEwODAwNURGOTVCIC8qIERGR0NvbW1vbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVBMEEzMTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25L
ZXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERG
R0NvbXBpbGF0aW9uTW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCM0ExQTE1M0U2OEYy
MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZCRTBGNzIxNkMxREIwMzAwODJDNUU4IC8qIERGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00ODM5LDYgKzQ4MTgs
NyBAQAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERG
R0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjk4MUZEODE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGMzhCMDE3MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbktleS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDMjk4MUZEQzE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJl
ZFdyaXRlQmFycmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NjQxNTkxQTFDQzAw
NENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFE
MjE1NEZCNEVFMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTQ5ODYsNyArNDk2Niw2IEBACiAJCQkJMTQ3RjM5RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ0pT
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MEZDRTQwQTUxRTQ2QjAwMDVGMDYxIC8q
IEpTQ2xhc3NSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFM0M2MTYxNjdCQUJFRTAwNkQ3
NjBBIC8qIEpTQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTBGRDhBMzEzMTdENDMyNkMw
MENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzAw
QTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMkI2NkVCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCBp
biBTb3VyY2VzICovLApAQCAtNTAxNiw3ICs0OTk1LDYgQEAKIAkJCQkxNDg3NEFFNTE1RUJERTRB
MDAyRTM1ODcgLyogSlNTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0MwQzRBRDE2ODEw
NjdFMDAxNzAxMUQgLyogSlNTY3JpcHRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlE
MTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MTE3LDggKzUwOTUsNiBAQAogCQkJCTE0
MjgwODQ0MTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdU
b29sLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3Mjk5REE1MTdEMTI4NTgwMDVGNUZGOSAvKiBT
ZXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNzI5OURBMTE3RDEyODQ4MDA1
RjVGRjkgLyogU2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NzA0MTdC
NkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5n
cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKaW5kZXggZWJhNWRj
Ny4uZDMwYTQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKQEAgLTgyLDExICs4MiwxMSBA
QCBTT1VSQ0VTICs9IFwKICAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAgICAgYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgXAotICAgIGhlYXAvQ29kZUJsb2NrU2V0LmNwcCBcCiAgICAgaGVhcC9Db3BpZWRT
cGFjZUlubGluZXMuaCBcCiAgICAgaGVhcC9Db3BpZWRTcGFjZS5jcHAgXAogICAgIGhlYXAvQ29w
eVZpc2l0b3IuY3BwIFwKICAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBcCisgICAgaGVh
cC9ERkdDb2RlQmxvY2tzLmNwcCBcCiAgICAgaGVhcC9XZWFrLmNwcCBcCiAgICAgaGVhcC9XZWFr
QmxvY2suY3BwIFwKICAgICBoZWFwL1dlYWtIYW5kbGVPd25lci5jcHAgXApAQCAtMzM4LDcgKzMz
OCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5
cGUuY3BwIFwKICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIFwKICAgICBy
dW50aW1lL0pTUHJveHkuY3BwIFwKLSAgICBydW50aW1lL0pTU2V0LmNwcCBcCiAgICAgcnVudGlt
ZS9KU1Njb3BlLmNwcCBcCiAgICAgcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNw
cCBcCiAgICAgcnVudGltZS9KU1N0cmluZy5jcHAgXApAQCAtMzgyLDggKzM4MSw2IEBAIFNPVVJD
RVMgKz0gXAogICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL1NhbXBsaW5nQ291bnRlci5jcHAgXAotICAg
IHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIFwKLSAgICBydW50aW1lL1NldFByb3RvdHlwZS5j
cHAgXAogICAgIHJ1bnRpbWUvU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIFwKICAgICBy
dW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogICAgIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCA1MmY3NTUyLi5hYTFhNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcApAQCAtMTUwNCw3ICsxNTA0LDYgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICwgbV9jYXBhYmls
aXR5TGV2ZWxTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5vdFNldCkKICNlbmRpZgogewotICAg
IEFTU0VSVChtX2hlYXAtPmlzRGVmZXJyZWQoKSk7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhl
ci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKICAgICBqaXRB
ZnRlcldhcm1VcCgpOwpAQCAtMTUxNyw5ICsxNTE2LDYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
Q29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVEYXRh
LT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJs
ZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVy
Lm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICB9Ci0gICAgCi0gICAg
bV9oZWFwLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwotICAgIG1faGVhcC0+cmVwb3J0RXh0cmFN
ZW1vcnlDb3N0KHNpemVvZihDb2RlQmxvY2spKTsKIH0KIAogQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCkBAIC0xNTQ4LDcgKzE1NDQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1
bmxpbgogICAgICwgbV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5v
dFNldCkKICNlbmRpZgogewotICAgIEFTU0VSVChtX2hlYXAtPmlzRGVmZXJyZWQoKSk7CisgICAg
bV92bS0+c3RhcnRlZENvbXBpbGluZyh0aGlzKTsKIAogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAg
ICAgc2V0TnVtUGFyYW1ldGVycyh1bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsK
QEAgLTE4NDYsOCArMTg0Miw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBpZiAo
T3B0aW9uczo6ZHVtcEdlbmVyYXRlZEJ5dGVjb2RlcygpKQogICAgICAgICBkdW1wQnl0ZWNvZGUo
KTsKLSAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7Ci0gICAgbV9oZWFwLT5yZXBv
cnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZW9mKENvZGVCbG9jaykpOworICAgIG1fdm0tPmZpbmlzaGVk
Q29tcGlsaW5nKHRoaXMpOwogfQogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQpAQCAtMTg1NSw2
ICsxODUwLDEyIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAgICAgaWYgKG1fdm0tPm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5u
b3RpZnlEZXN0cnVjdGlvbih0aGlzKTsKICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAv
LyBSZW1vdmUgbXlzZWxmIGZyb20gdGhlIHNldCBvZiBERkcgY29kZSBibG9ja3MuIE5vdGUgdGhh
dCBJIG1heSBub3QgYmUgaW4gdGhpcyBzZXQKKyAgICAvLyAoYmVjYXVzZSBJJ20gbm90IGEgREZH
IGNvZGUgYmxvY2spLCBpbiB3aGljaCBjYXNlIHRoaXMgaXMgYSBuby1vcCBhbnl3YXkuCisgICAg
bV92bS0+aGVhcC5tX2RmZ0NvZGVCbG9ja3MubV9zZXQucmVtb3ZlKHRoaXMpOworI2VuZGlmCisg
ICAgCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9m
aWxlcygpOwogI2VuZGlmCkBAIC0xOTA0LDI5ICsxOTA1LDMzIEBAIHZvaWQgRXZhbENvZGVDYWNo
ZTo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIHZvaWQgQ29kZUJsb2Nr
Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSNpZiBFTkFCTEUoUEFS
QUxMRUxfR0MpCi0gICAgLy8gSSBtYXkgYmUgYXNrZWQgdG8gc2NhbiBteXNlbGYgbW9yZSB0aGFu
IG9uY2UsIGFuZCBpdCBtYXkgZXZlbiBoYXBwZW4gY29uY3VycmVudGx5LgotICAgIC8vIFRvIHRo
aXMgZW5kLCB1c2UgYSBDQVMgbG9vcCB0byBjaGVjayBpZiBJJ3ZlIGJlZW4gY2FsbGVkIGFscmVh
ZHkuIE9ubHkgb25lIHRocmVhZAotICAgIC8vIG1heSBwcm9jZWVkIHBhc3QgdGhpcyBwb2ludCAt
IHdoaWNoZXZlciBvbmUgd2lucyB0aGUgQ0FTIHJhY2UuCi0gICAgdW5zaWduZWQgb2xkVmFsdWU7
Ci0gICAgZG8gewotICAgICAgICBvbGRWYWx1ZSA9IG1fdmlzaXRBZ2dyZWdhdGVIYXNCZWVuQ2Fs
bGVkOwotICAgICAgICBpZiAob2xkVmFsdWUpIHsKLSAgICAgICAgICAgIC8vIExvb2tzIGxpa2Ug
c29tZW9uZSBlbHNlIHdvbiEgUmV0dXJuIGltbWVkaWF0ZWx5IHRvIGVuc3VyZSB0aGF0IHdlIGRv
bid0Ci0gICAgICAgICAgICAvLyB0cmFjZSB0aGUgc2FtZSBDb2RlQmxvY2sgY29uY3VycmVudGx5
LiBEb2luZyBzbyBpcyBoYXphcmRvdXMgc2luY2Ugd2Ugd2lsbAotICAgICAgICAgICAgLy8gYmUg
bXV0YXRpbmcgdGhlIHN0YXRlIG9mIFZhbHVlUHJvZmlsZXMsIHdoaWNoIGNvbnRhaW4gSlNWYWx1
ZXMsIHdoaWNoIGNhbgotICAgICAgICAgICAgLy8gaGF2ZSB3b3JkLXRlYXJpbmcgb24gMzItYml0
LCBsZWFkaW5nIHRvIGF3ZXNvbWUgdGltaW5nLWRlcGVuZGVudCBjcmFzaGVzCi0gICAgICAgICAg
ICAvLyB0aGF0IGFyZSBuZWFybHkgaW1wb3NzaWJsZSB0byB0cmFjayBkb3duLgotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBBbHNvIG5vdGUgdGhhdCBpdCBtdXN0IGJlIHNhZmUgdG8gcmV0
dXJuIGVhcmx5IGFzIHNvb24gYXMgd2Ugc2VlIHRoZQotICAgICAgICAgICAgLy8gdmFsdWUgdHJ1
ZSAod2VsbCwgKHVuc2lnbmVkKTEpLCBzaW5jZSBvbmNlIGEgR0MgdGhyZWFkIGlzIGluIHRoaXMg
bWV0aG9kCi0gICAgICAgICAgICAvLyBhbmQgaGFzIHdvbiB0aGUgQ0FTIHJhY2UgKGkuZS4gd2Fz
IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSB2YWx1ZSB0cnVlKQotICAgICAgICAgICAgLy8g
aXQgd2lsbCBkZWZpbml0ZWx5IGNvbXBsZXRlIHRoZSByZXN0IG9mIHRoaXMgbWV0aG9kIGJlZm9y
ZSBkZWNsYXJpbmcKLSAgICAgICAgICAgIC8vIHRlcm1pbmF0aW9uLgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKCZt
X3Zpc2l0QWdncmVnYXRlSGFzQmVlbkNhbGxlZCwgMCwgMSkpOwotI2VuZGlmIC8vIEVOQUJMRShQ
QVJBTExFTF9HQykKKyNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpICYmIEVOQUJMRShERkdfSklUKQor
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBE
Rkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAg
ICAgIAorICAgICAgICAvLyBJIG1heSBiZSBhc2tlZCB0byBzY2FuIG15c2VsZiBtb3JlIHRoYW4g
b25jZSwgYW5kIGl0IG1heSBldmVuIGhhcHBlbiBjb25jdXJyZW50bHkuCisgICAgICAgIC8vIFRv
IHRoaXMgZW5kLCB1c2UgYSBDQVMgbG9vcCB0byBjaGVjayBpZiBJJ3ZlIGJlZW4gY2FsbGVkIGFs
cmVhZHkuIE9ubHkgb25lIHRocmVhZAorICAgICAgICAvLyBtYXkgcHJvY2VlZCBwYXN0IHRoaXMg
cG9pbnQgLSB3aGljaGV2ZXIgb25lIHdpbnMgdGhlIENBUyByYWNlLgorICAgICAgICB1bnNpZ25l
ZCBvbGRWYWx1ZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgb2xkVmFsdWUgPSBkZmdDb21t
b24tPnZpc2l0QWdncmVnYXRlSGFzQmVlbkNhbGxlZDsKKyAgICAgICAgICAgIGlmIChvbGRWYWx1
ZSkgeworICAgICAgICAgICAgICAgIC8vIExvb2tzIGxpa2Ugc29tZW9uZSBlbHNlIHdvbiEgUmV0
dXJuIGltbWVkaWF0ZWx5IHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0CisgICAgICAgICAgICAgICAg
Ly8gdHJhY2UgdGhlIHNhbWUgQ29kZUJsb2NrIGNvbmN1cnJlbnRseS4gRG9pbmcgc28gaXMgaGF6
YXJkb3VzIHNpbmNlIHdlIHdpbGwKKyAgICAgICAgICAgICAgICAvLyBiZSBtdXRhdGluZyB0aGUg
c3RhdGUgb2YgVmFsdWVQcm9maWxlcywgd2hpY2ggY29udGFpbiBKU1ZhbHVlcywgd2hpY2ggY2Fu
CisgICAgICAgICAgICAgICAgLy8gaGF2ZSB3b3JkLXRlYXJpbmcgb24gMzItYml0LCBsZWFkaW5n
IHRvIGF3ZXNvbWUgdGltaW5nLWRlcGVuZGVudCBjcmFzaGVzCisgICAgICAgICAgICAgICAgLy8g
dGhhdCBhcmUgbmVhcmx5IGltcG9zc2libGUgdG8gdHJhY2sgZG93bi4KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAvLyBBbHNvIG5vdGUgdGhhdCBpdCBtdXN0IGJlIHNhZmUgdG8g
cmV0dXJuIGVhcmx5IGFzIHNvb24gYXMgd2Ugc2VlIHRoZQorICAgICAgICAgICAgICAgIC8vIHZh
bHVlIHRydWUgKHdlbGwsICh1bnNpZ25lZCkxKSwgc2luY2Ugb25jZSBhIEdDIHRocmVhZCBpcyBp
biB0aGlzIG1ldGhvZAorICAgICAgICAgICAgICAgIC8vIGFuZCBoYXMgd29uIHRoZSBDQVMgcmFj
ZSAoaS5lLiB3YXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIHZhbHVlIHRydWUpCisgICAg
ICAgICAgICAgICAgLy8gaXQgd2lsbCBkZWZpbml0ZWx5IGNvbXBsZXRlIHRoZSByZXN0IG9mIHRo
aXMgbWV0aG9kIGJlZm9yZSBkZWNsYXJpbmcKKyAgICAgICAgICAgICAgICAvLyB0ZXJtaW5hdGlv
bi4KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hp
bGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmZGZnQ29tbW9uLT52aXNpdEFnZ3JlZ2F0ZUhh
c0JlZW5DYWxsZWQsIDAsIDEpKTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKFBBUkFMTEVMX0dD
KSAmJiBFTkFCTEUoREZHX0pJVCkKICAgICAKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAg
ICAgICBtX2FsdGVybmF0aXZlLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKQEAgLTIzNTgsMTgg
KzIzNjMsMjIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyhT
bG90VmlzaXRvciYgdmlzaXRvcikKIAogQ29kZUJsb2NrKiBDb2RlQmxvY2s6OmJhc2VsaW5lVmVy
c2lvbigpCiB7Ci0gICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUoKSkpCi0g
ICAgICAgIHJldHVybiB0aGlzOwogI2lmIEVOQUJMRShKSVQpCisgICAgLy8gV2hlbiB3ZSdyZSBp
bml0aWFsaXppbmcgdGhlIG9yaWdpbmFsIGJhc2VsaW5lIGNvZGUgYmxvY2ssIHdlIHdvbid0IGJl
IGFibGUKKyAgICAvLyB0byBnZXQgaXRzIHJlcGxhY2VtZW50LiBCdXQgd2UnbGwga25vdyB0aGF0
IGl0J3MgdGhlIG9yaWdpbmFsIGJhc2VsaW5lIGNvZGUKKyAgICAvLyBibG9jayBiZWNhdXNlIGl0
IHdvbid0IGhhdmUgSklUIGNvZGUgeWV0IGFuZCBpdCB3b24ndCBoYXZlIGFuIGFsdGVybmF0aXZl
LgorICAgIGlmIChqaXRUeXBlKCkgPT0gSklUQ29kZTo6Tm9uZSAmJiAhYWx0ZXJuYXRpdmUoKSkK
KyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgCiAgICAgQ29kZUJsb2NrKiByZXN1bHQgPSByZXBs
YWNlbWVudCgpOworICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVy
bmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOwotICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKHJlc3VsdC0+aml0VHlwZSgpKSk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAg
QVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+aml0VHlwZSgpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKICNlbHNlCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdGhpczsKICNlbmRpZgogfQogCkBAIC0yNzAzLDE3
ICsyNzEyLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZW9wdGltaXplKCkKIAogQ29kZUJsb2NrKiBQ
cm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCiB7Ci0gICAgcmV0dXJuIGpzQ2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CisgICAgcmV0
dXJuICZzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+
Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIH0KIAogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2NrOjpyZXBs
YWNlbWVudCgpCiB7Ci0gICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhl
Y3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CisgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxFdmFsRXhl
Y3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIH0KIAog
Q29kZUJsb2NrKiBGdW5jdGlvbkNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewotICAgIHJldHVy
biBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb2RlQmxv
Y2tGb3IobV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsK
KyAgICByZXR1cm4gJnN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0
YWJsZSgpKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IobV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNv
bnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KIAogREZHOjpDYXBhYmlsaXR5TGV2ZWwgUHJvZ3Jh
bUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQpAQCAtMjczNSwxNCArMjc0NCwy
OCBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FwYWJpbGl0eUxl
dmVsSW50ZXJuYWwoKQogCiB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIERlZmVy
R0MgZGVmZXJHQygqbV9oZWFwKTsKICAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGppdFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIGFs
dGVybmF0aXZlKCktPm9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKICAgICB0YWxseUZyZXF1ZW50RXhp
dFNpdGVzKCk7CiAgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCiAgICAgICAg
IGRhdGFMb2coIkpldHRpc29uaW5nICIsICp0aGlzLCAiLlxuIik7Ci0gICAgYWx0ZXJuYXRpdmUo
KS0+aW5zdGFsbCgpOworICAgIGpldHRpc29uSW1wbCgpOworfQorCit2b2lkIFByb2dyYW1Db2Rl
QmxvY2s6OmpldHRpc29uSW1wbCgpCit7CisgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFi
bGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqdm0oKSk7Cit9
CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb25JbXBsKCkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRD
b2RlKCp2bSgpKTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb25JbXBsKCkK
K3sKKyAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUo
KSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqdm0oKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29k
ZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KICNlbmRpZgogCkBAIC0yNzUwLDcgKzI3
NzMsNyBAQCBKU0dsb2JhbE9iamVjdCogQ29kZUJsb2NrOjpnbG9iYWxPYmplY3RGb3IoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQogewogICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUp
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QoKTsKLSAgICByZXR1cm4ganNDYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdl
dCgpKS0+ZWl0aGVyQ29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpOworICAgIHJldHVybiBqc0Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1
dGFibGUuZ2V0KCkpLT5nZW5lcmF0ZWRCeXRlY29kZSgpLmdsb2JhbE9iamVjdCgpOwogfQogCiB2
b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNTBjYWUy
OS4uNDc1NmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtMzYsMTEgKzM2LDExIEBACiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVk
ZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2tIYXNoLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiQ29uY3VycmVu
dEpJVExvY2suaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUu
aCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5oIgorI2luY2x1ZGUgIkRGR0NvZGVCbG9j
a3MuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdDb21tb25EYXRhLmgi
CiAjaW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKQEAgLTgzLDYgKzgzLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK2NsYXNzIERGR0NvZGVCbG9ja3M7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwpAQCAtMjcyLDEy
ICsyNzMsMTQgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SklUQ29kZShQYXNzUmVmUHRy
PEpJVENvZGU+IGNvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlV2l0aEFyaXR5Q2hlY2sp
CiAgICAgewotICAgICAgICBBU1NFUlQobV9oZWFwLT5pc0RlZmVycmVkKCkpOwotICAgICAgICBt
X2hlYXAtPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChjb2RlLT5zaXplKCkpOwogICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOyAvLyBUaGlzIGlzIHByb2JhYmx5IG5vdCBuZWVkZWQgYmVjYXVzZSB0aGUgbG9jayB3
aWxsIGFsc28gZG8gc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBpdCdzIGdvb2QgdG8gYmUgcGFyYW5v
aWQuCiAgICAgICAgIG1faml0Q29kZSA9IGNvZGU7CiAgICAgICAgIG1faml0Q29kZVdpdGhBcml0
eUNoZWNrID0gY29kZVdpdGhBcml0eUNoZWNrOworI2lmIEVOQUJMRShERkdfSklUKQorICAgICAg
ICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKEpJVENvZGU6OmppdFR5cGVGb3IobV9qaXRD
b2RlKSkpCisgICAgICAgICAgICBtX3ZtLT5oZWFwLm1fZGZnQ29kZUJsb2Nrcy5tX3NldC5hZGQo
dGhpcyk7CisjZW5kaWYKICAgICB9CiAgICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkg
eyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGppdENvZGVX
aXRoQXJpdHlDaGVjaygpIHsgcmV0dXJuIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOyB9CkBAIC05
NTgsNiArOTYxLDkgQEAgcHVibGljOgogICAgIGJvb2wgbV9hbGxUcmFuc2l0aW9uc0hhdmVCZWVu
TWFya2VkOyAvLyBJbml0aWFsaXplZCBhbmQgdXNlZCBvbiBldmVyeSBHQy4KICAgICAKIHByb3Rl
Y3RlZDoKKyNpZiBFTkFCTEUoSklUKQorICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbkltcGwoKSA9
IDA7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90Vmlz
aXRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogCkBA
IC05NjgsNyArOTc0LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKKyAgICBmcmllbmQgY2xhc3MgREZHQ29kZUJsb2NrczsK
ICAgICAKICAgICB2b2lkIG5vdGljZUluY29taW5nQ2FsbChFeGVjU3RhdGUqIGNhbGxlckZyYW1l
KTsKICAgICAKQEAgLTEwMTEsMTYgKzEwMTcsMTcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBib29sIHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2Fu
KCkKICAgICB7Ci0gICAgICAgIC8vIEludGVycHJldGVyIGFuZCBCYXNlbGluZSBKSVQgQ29kZUJs
b2NrcyBkb24ndCBuZWVkIHRvIGJlIGpldHRpc29uZWQgd2hlbgotICAgICAgICAvLyB0aGVpciB3
ZWFrIHJlZmVyZW5jZXMgZ28gc3RhbGUuIFNvIGlmIGEgYmFzbGluZSBKSVQgQ29kZUJsb2NrIGdl
dHMKLSAgICAgICAgLy8gc2Nhbm5lZCwgd2UgY2FuIGFzc3VtZSB0aGF0IHRoaXMgbWVhbnMgdGhh
dCBpdCdzIGxpdmUuCisgICAgICAgIC8vIE51bGwgbV9kZmdEYXRhIG1lYW5zIHRoYXQgdGhpcyBp
cyBhIGJhc2VsaW5lIEpJVCBDb2RlQmxvY2suIEJhc2VsaW5lIEpJVAorICAgICAgICAvLyBDb2Rl
QmxvY2tzIGRvbid0IG5lZWQgdG8gYmUgamV0dGlzb25lZCB3aGVuIHRoZWlyIHdlYWsgcmVmZXJl
bmNlcyBnbworICAgICAgICAvLyBzdGFsZS4gU28gaWYgYSBiYXNsaW5lIEpJVCBDb2RlQmxvY2sg
Z2V0cyBzY2FubmVkLCB3ZSBjYW4gYXNzdW1lIHRoYXQKKyAgICAgICAgLy8gdGhpcyBtZWFucyB0
aGF0IGl0J3MgbGl2ZS4KICAgICAgICAgaWYgKCFKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIEZvciBzaW1w
bGljaXR5LCB3ZSBkb24ndCBhdHRlbXB0IHRvIGpldHRpc29uIGNvZGUgYmxvY2tzIGR1cmluZyBH
QyBpZgogICAgICAgICAvLyB0aGV5IGFyZSBleGVjdXRpbmcuIEluc3RlYWQgd2Ugc3Ryb25nbHkg
bWFyayB0aGVpciB3ZWFrIHJlZmVyZW5jZXMgdG8KICAgICAgICAgLy8gYWxsb3cgdGhlbSB0byBj
b250aW51ZSB0byBleGVjdXRlIHNvdW5kbHkuCi0gICAgICAgIGlmIChtX21heUJlRXhlY3V0aW5n
KQorICAgICAgICBpZiAobV9qaXRDb2RlLT5kZmdDb21tb24oKS0+bWF5QmVFeGVjdXRpbmcpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAoT3B0aW9uczo6Zm9yY2VERkdD
b2RlQmxvY2tMaXZlbmVzcygpKQpAQCAtMTA2MCw4ICsxMDY3LDYgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBi
b29sIG1fbWF5QmVFeGVjdXRpbmc7Ci0gICAgdWludDhfdCBtX3Zpc2l0QWdncmVnYXRlSGFzQmVl
bkNhbGxlZDsKIAogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgdW5z
aWduZWQgbV9zb3VyY2VPZmZzZXQ7CkBAIC0xMTgxLDYgKzExODYsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoSklUKQogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbkltcGwo
KTsKICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFsIERG
Rzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7CiAjZW5kaWYKQEAg
LTEyMDMsNiArMTIwOSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoSklUKQogcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbkltcGwoKTsKICAgICB2aXJ0dWFsIENvZGVC
bG9jayogcmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFsIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbEludGVybmFsKCk7CiAjZW5kaWYKQEAgLTEyMjUsNiArMTIzMiw3IEBAIHB1
YmxpYzoKICAgICAKICNpZiBFTkFCTEUoSklUKQogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9p
ZCBqZXR0aXNvbkltcGwoKTsKICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsK
ICAgICB2aXJ0dWFsIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFs
KCk7CiAjZW5kaWYKQEAgLTEyODMsNyArMTI5MSw4IEBAIGlubGluZSBKU1ZhbHVlIEV4ZWNTdGF0
ZTo6YXJndW1lbnRBZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KQogICAgIHJldHVybiB0aGlz
W2NvZGVCbG9jaygpLT5hcmd1bWVudEluZGV4QWZ0ZXJDYXB0dXJlKGFyZ3VtZW50KV0uanNWYWx1
ZSgpOwogfQogCi1pbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsodm9pZCogY2FuZGlkYXRl
Q29kZUJsb2NrKQorI2lmIEVOQUJMRShERkdfSklUKQoraW5saW5lIHZvaWQgREZHQ29kZUJsb2Nr
czo6bWFyayh2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCiB7CiAgICAgLy8gV2UgaGF2ZSB0byBj
aGVjayBmb3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBhcmUgdXNlZCBieSB0aGUgSGFzaE1hcCBh
cyBtYXJrZXJzLgogICAgIHVpbnRwdHJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihjYW5kaWRhdGVDb2RlQmxvY2spOwpAQCAtMTI5OCw4ICsxMzA3LDkgQEAgaW5saW5lIHZv
aWQgQ29kZUJsb2NrU2V0OjptYXJrKHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9jaykKICAgICBpZiAo
aXRlciA9PSBtX3NldC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgICgqaXRlcikt
Pm1fbWF5QmVFeGVjdXRpbmcgPSB0cnVlOworICAgICgqaXRlciktPm1faml0Q29kZS0+ZGZnQ29t
bW9uKCktPm1heUJlRXhlY3V0aW5nID0gdHJ1ZTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVP
cmlnaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
CmluZGV4IDUyYTk0ODMuLmNmZWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZU9yaWdpbi5jcHAKQEAgLTg5LDggKzg5LDggQEAgSlNGdW5jdGlvbiogSW5saW5l
Q2FsbEZyYW1lOjpjYWxsZWVGb3JDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiBD
b2RlQmxvY2tIYXNoIElubGluZUNhbGxGcmFtZTo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlLmdldCgpKS0+Y29kZUJsb2Nr
Rm9yKAotICAgICAgICBzcGVjaWFsaXphdGlvbktpbmQoKSktPmhhc2goKTsKKyAgICByZXR1cm4g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUuZ2V0KCkpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcigKKyAgICAgICAgc3BlY2lhbGl6YXRpb25LaW5kKCkpLmhhc2goKTsKIH0KIAog
Q1N0cmluZyBJbmxpbmVDYWxsRnJhbWU6OmluZmVycmVkTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCmluZGV4IDE2ZDM0YzIuLjE0NWJiNjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaApAQCAtNjYsNyArNjYs
MTEgQEAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsKIGNsYXNzIENvbW1vbkRhdGEg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbW1vbkRhdGEpOwogcHVibGljOgotICAgIENv
bW1vbkRhdGEoKSB7IH0KKyAgICBDb21tb25EYXRhKCkKKyAgICAgICAgOiBtYXlCZUV4ZWN1dGlu
ZyhmYWxzZSkKKyAgICAgICAgLCBpc0pldHRpc29uZWQoZmFsc2UpCisgICAgeworICAgIH0KICAg
ICAKICAgICB2b2lkIG5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24oUGxhbiYsIENv
ZGVCbG9jayosIE5vZGUqKTsKICAgICAKQEAgLTc3LDggKzgxLDExIEBAIHB1YmxpYzoKICAgICBW
ZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4gPiB3ZWFrUmVmZXJlbmNlczsKICAgICAKICAgICBS
ZWZQdHI8UHJvZmlsZXI6OkNvbXBpbGF0aW9uPiBjb21waWxhdGlvbjsKKyAgICBib29sIG1heUJl
RXhlY3V0aW5nOworICAgIGJvb2wgaXNKZXR0aXNvbmVkOwogICAgIGJvb2wgbGl2ZW5lc3NIYXNC
ZWVuUHJvdmVkOyAvLyBJbml0aWFsaXplZCBhbmQgdXNlZCBvbiBldmVyeSBHQy4KICAgICBib29s
IGFsbFRyYW5zaXRpb25zSGF2ZUJlZW5NYXJrZWQ7IC8vIEluaXRpYWxpemVkIGFuZCB1c2VkIG9u
IGV2ZXJ5IEdDLgorICAgIHVuc2lnbmVkIHZpc2l0QWdncmVnYXRlSGFzQmVlbkNhbGxlZDsgLy8g
VW5zaWduZWQgdG8gbWFrZSBpdCB3b3JrIHNlYW1sZXNzbHkgd2l0aCB0aGUgYnJvYWRlc3Qgc2V0
IG9mIENBUyBpbXBsZW1lbnRhdGlvbnMuCiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA4MDJj
N2U2Li45ZmM5NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTEyODYsNyArMTI4Niw3IEBAIGlubGluZSBjaGFyKiBsaW5rRm9yKEV4ZWNTdGF0
ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgICAgICAgICAg
dm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7
CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0tPmdldENUSVN0
dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KLSAgICAgICAgY29kZUJsb2NrID0gZnVuY3Rpb25F
eGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5j
dGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwogICAgICAgICBpZiAo
ZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNp
emVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQogICAgICAgICAgICAgY29kZVB0ciA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtp
bmQpOwogICAgICAgICBlbHNlCkBAIC0xMzYxLDcgKzEzNjEsNyBAQCBzdGF0aWMgYm9vbCBhdHRl
bXB0VG9PcHRpbWl6ZUNsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNDZWxsKiBj
YWxsZWVBcwogICAgIGlmIChjYWxsZWUtPmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkK
ICAgICAgICAgY29kZUJsb2NrID0gMDsKICAgICBlbHNlIHsKLSAgICAgICAgY29kZUJsb2NrID0g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxlZS0+ZXhlY3V0YWJsZSgpKS0+Y29kZUJs
b2NrRm9yQ2FsbCgpOworICAgICAgICBjb2RlQmxvY2sgPSAmanNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNhbGxlZS0+ZXhlY3V0YWJsZSgpKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxsKCk7
CiAgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwg
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
ZGVCbG9ja1NldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMjc0ODAuLjAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb2Rl
QmxvY2tTZXQuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIlNsb3RWaXNp
dG9yLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Ci0KLUNvZGVCbG9ja1NldDo6Q29kZUJsb2NrU2V0KCkgeyB9Ci0KLUNvZGVCbG9ja1Nl
dDo6fkNvZGVCbG9ja1NldCgpCi17Ci0gICAgSGFzaFNldDxDb2RlQmxvY2sqPjo6aXRlcmF0b3Ig
aXRlciA9IG1fc2V0LmJlZ2luKCk7Ci0gICAgSGFzaFNldDxDb2RlQmxvY2sqPjo6aXRlcmF0b3Ig
ZW5kID0gbV9zZXQuZW5kKCk7Ci0gICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAg
ICAgICgqaXRlciktPmRlcmVmKCk7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrU2V0OjphZGQoUGFzc1Jl
ZlB0cjxDb2RlQmxvY2s+IGNvZGVCbG9jaykKLXsKLSAgICBib29sIGlzTmV3RW50cnkgPSBtX3Nl
dC5hZGQoY29kZUJsb2NrLmxlYWtSZWYoKSkuaXNOZXdFbnRyeTsKLSAgICBBU1NFUlRfVU5VU0VE
KGlzTmV3RW50cnksIGlzTmV3RW50cnkpOwotfQotCi12b2lkIENvZGVCbG9ja1NldDo6Y2xlYXJN
YXJrcygpCi17Ci0gICAgSGFzaFNldDxDb2RlQmxvY2sqPjo6aXRlcmF0b3IgaXRlciA9IG1fc2V0
LmJlZ2luKCk7Ci0gICAgSGFzaFNldDxDb2RlQmxvY2sqPjo6aXRlcmF0b3IgZW5kID0gbV9zZXQu
ZW5kKCk7Ci0gICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSAqaXRlcjsKLSAgICAgICAgY29kZUJsb2NrLT5tX21heUJlRXhlY3V0
aW5nID0gZmFsc2U7Ci0gICAgICAgIGNvZGVCbG9jay0+bV92aXNpdEFnZ3JlZ2F0ZUhhc0JlZW5D
YWxsZWQgPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29kZUJsb2NrU2V0OjpkZWxldGVVbm1h
cmtlZEFuZFVucmVmZXJlbmNlZCgpCi17Ci0gICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhIGZpeHBv
aW50IGJlY2F1c2UgY29kZSBibG9ja3MgdGhhdCBhcmUgdW5tYXJrZWQgbWF5Ci0gICAgLy8gcmVm
ZXIgdG8gZWFjaCBvdGhlci4gRm9yIGV4YW1wbGUsIGEgREZHIGNvZGUgYmxvY2sgdGhhdCBpcyBv
d25lZCBieQotICAgIC8vIHRoZSBHQyBtYXkgcmVmZXIgdG8gYW4gRlRMIGZvci1lbnRyeSBjb2Rl
IGJsb2NrIHRoYXQgaXMgYWxzbyBvd25lZCBieQotICAgIC8vIHRoZSBHQy4KLSAgICBWZWN0b3I8
Q29kZUJsb2NrKiwgMTY+IHRvUmVtb3ZlOwotICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRh
TG9nKCJGaXhwb2ludGluZyBvdmVyIHVubWFya2VkLCBzZXQgc2l6ZSA9ICIsIG1fc2V0LnNpemUo
KSwgIi4uLlxuIik7Ci0gICAgZm9yICg7OykgewotICAgICAgICBIYXNoU2V0PENvZGVCbG9jayo+
OjppdGVyYXRvciBpdGVyID0gbV9zZXQuYmVnaW4oKTsKLSAgICAgICAgSGFzaFNldDxDb2RlQmxv
Y2sqPjo6aXRlcmF0b3IgZW5kID0gbV9zZXQuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBpdGVyICE9
IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICppdGVy
OwotICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2stPmhhc09uZVJlZigpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+bV9tYXlCZUV4ZWN1dGlu
ZykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNvZGVCbG9jay0+ZGVy
ZWYoKTsKLSAgICAgICAgICAgIHRvUmVtb3ZlLmFwcGVuZChjb2RlQmxvY2spOwotICAgICAgICB9
Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlbW92aW5n
ICIsIHRvUmVtb3ZlLnNpemUoKSwgIiBibG9ja3MuXG4iKTsKLSAgICAgICAgaWYgKHRvUmVtb3Zl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSB0b1JlbW92ZS5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX3NldC5yZW1vdmUodG9SZW1v
dmVbaV0pOwotICAgICAgICB0b1JlbW92ZS5yZXNpemUoMCk7Ci0gICAgfQotfQotCi12b2lkIENv
ZGVCbG9ja1NldDo6dHJhY2VNYXJrZWQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgaWYg
KHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlRyYWNpbmcgIiwgbV9zZXQuc2l6ZSgpLCAiIGNv
ZGUgYmxvY2tzLlxuIik7Ci0gICAgSGFzaFNldDxDb2RlQmxvY2sqPjo6aXRlcmF0b3IgaXRlciA9
IG1fc2V0LmJlZ2luKCk7Ci0gICAgSGFzaFNldDxDb2RlQmxvY2sqPjo6aXRlcmF0b3IgZW5kID0g
bV9zZXQuZW5kKCk7Ci0gICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSAqaXRlcjsKLSAgICAgICAgaWYgKCFjb2RlQmxvY2stPm1f
bWF5QmVFeGVjdXRpbmcpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY29kZUJsb2Nr
LT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyZTRlNjA2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVm
IENvZGVCbG9ja1NldF9oCi0jZGVmaW5lIENvZGVCbG9ja1NldF9oCi0KLSNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotY2xhc3MgQ29kZUJsb2NrOwotY2xhc3MgU2xvdFZpc2l0b3I7Ci0KLS8vIENvZGVCbG9ja1Nl
dCB0cmFja3MgYWxsIENvZGVCbG9ja3MuIEV2ZXJ5IENvZGVCbG9jayBzdGFydHMgb3V0IHdpdGgg
b25lCi0vLyByZWZlcmVuY2UgY29taW5nIGluIGZyb20gR0MuIFRoZSBHQyBpcyByZXNwb25zaWJs
ZSBmb3IgZnJlZWluZyBDb2RlQmxvY2tzCi0vLyBvbmNlIHRoZXkgaGFzT25lUmVmKCkgYW5kIG5v
Ym9keSBpcyBydW5uaW5nIGNvZGUgZnJvbSB0aGF0IENvZGVCbG9jay4KLQotY2xhc3MgQ29kZUJs
b2NrU2V0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb2RlQmxvY2tTZXQpOwotCi1wdWJs
aWM6Ci0gICAgQ29kZUJsb2NrU2V0KCk7Ci0gICAgfkNvZGVCbG9ja1NldCgpOwotICAgIAotICAg
IC8vIEFkZCBhIENvZGVCbG9jay4gVGhpcyBpcyBvbmx5IGNhbGxlZCBieSBDb2RlQmxvY2sgY29u
c3RydWN0b3JzLgotICAgIHZvaWQgYWRkKFBhc3NSZWZQdHI8Q29kZUJsb2NrPik7Ci0gICAgCi0g
ICAgLy8gQ2xlYXIgYWxsIG1hcmsgYml0cyBhc3NvY2lhdGVkIHdpdGggREZHIGNvZGUgYmxvY2tz
LgotICAgIHZvaWQgY2xlYXJNYXJrcygpOwotICAgIAotICAgIC8vIE1hcmsgYSBwb2ludGVyIHRo
YXQgbWF5IGJlIGEgQ29kZUJsb2NrIHRoYXQgYmVsb25ncyB0byB0aGUgc2V0IG9mIERGRwotICAg
IC8vIGJsb2Nrcy4gVGhpcyBpcyBkZWZpbmVkIGluIENvZGVCbG9jay5oLgotICAgIHZvaWQgbWFy
ayh2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spOwotICAgIAotICAgIC8vIERlbGV0ZSBhbGwgY29k
ZSBibG9ja3MgdGhhdCBhcmUgb25seSByZWZlcmVuY2VkIGJ5IHRoaXMgc2V0IChpLmUuIG93bmVk
Ci0gICAgLy8gYnkgdGhpcyBzZXQpLCBhbmQgdGhhdCBoYXZlIG5vdCBiZWVuIG1hcmtlZC4KLSAg
ICB2b2lkIGRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKCk7Ci0gICAgCi0gICAgLy8gVHJh
Y2UgYWxsIG1hcmtlZCBjb2RlIGJsb2Nrcy4gVGhlIENvZGVCbG9jayBpcyBmcmVlIHRvIG1ha2Ug
dXNlIG9mCi0gICAgLy8gbWF5QmVFeGVjdXRpbmcuCi0gICAgdm9pZCB0cmFjZU1hcmtlZChTbG90
VmlzaXRvciYpOwotCi1wcml2YXRlOgotICAgIC8vIFRoaXMgaXMgbm90IGEgc2V0IG9mIFJlZlB0
cjxDb2RlQmxvY2s+IGJlY2F1c2Ugd2UgbmVlZCB0byBiZSBhYmxlIHRvIGZpbmQKLSAgICAvLyBh
cmJpdHJhcnkgYm9ndXMgcG9pbnRlcnMuIEkgY291bGQgaGF2ZSB3cml0dGVuIGEgdGhpbmd5IHRo
YXQgaGFkIHBlZWsgdHlwZXMKLSAgICAvLyBhbmQgYWxsLCBidXQgdGhhdCBzZWVtZWQgbGlrZSBv
dmVya2lsbC4KLSAgICBIYXNoU2V0PENvZGVCbG9jayogPiBtX3NldDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gQ29kZUJsb2NrU2V0X2gKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCmluZGV4IDkyMTI2ODMuLjc1
MmNlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVS
b290cy5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAj
aW5jbHVkZSAiQ29waWVkU3BhY2UuaCIKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIK
KyNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKQEAgLTE0MCw5ICsxNDAsMTAg
QEAgcHJpdmF0ZToKIH07CiAKIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6OmFkZCgKLSAgICB2b2lk
KiBiZWdpbiwgdm9pZCogZW5kLCBKSVRTdHViUm91dGluZVNldCYgaml0U3R1YlJvdXRpbmVzLCBD
b2RlQmxvY2tTZXQmIGNvZGVCbG9ja3MpCisgICAgdm9pZCogYmVnaW4sIHZvaWQqIGVuZCwgSklU
U3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgREZHQ29kZUJsb2NrcyYgZGZnQ29kZUJs
b2NrcykKIHsKLSAgICBDb21wb3NpdGVNYXJrSG9vazxKSVRTdHViUm91dGluZVNldCwgQ29kZUJs
b2NrU2V0PiBtYXJrSG9vayhqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MpOworICAgIENvbXBv
c2l0ZU1hcmtIb29rPEpJVFN0dWJSb3V0aW5lU2V0LCBERkdDb2RlQmxvY2tzPiBtYXJrSG9vaygK
KyAgICAgICAgaml0U3R1YlJvdXRpbmVzLCBkZmdDb2RlQmxvY2tzKTsKICAgICBnZW5lcmljQWRk
U3BhbihiZWdpbiwgZW5kLCBtYXJrSG9vayk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oCmluZGV4IDBjYWQ5MzMuLjIxOWJkY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaApAQCAtMzIs
NyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQ29kZUJsb2NrU2V0OworY2xh
c3MgREZHQ29kZUJsb2NrczsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsK
IGNsYXNzIEpTQ2VsbDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQo
dm9pZCogYmVnaW4sIHZvaWQqIGVuZCk7CiAgICAgdm9pZCBhZGQodm9pZCogYmVnaW4sIHZvaWQq
IGVuZCwgSklUU3R1YlJvdXRpbmVTZXQmKTsKLSAgICB2b2lkIGFkZCh2b2lkKiBiZWdpbiwgdm9p
ZCogZW5kLCBKSVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYpOworICAgIHZvaWQgYWRk
KHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQsIEpJVFN0dWJSb3V0aW5lU2V0JiwgREZHQ29kZUJsb2Nr
cyYpOwogICAgIAogICAgIHNpemVfdCBzaXplKCk7CiAgICAgSlNDZWxsKiogcm9vdHMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RGR0NvZGVCbG9ja3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvREZHQ29kZUJsb2Nrcy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg3MTIzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RGR0NvZGVCbG9ja3MuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCisKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworREZHQ29kZUJs
b2Nrczo6REZHQ29kZUJsb2NrcygpIHsgfQorCitERkdDb2RlQmxvY2tzOjp+REZHQ29kZUJsb2Nr
cygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxDb2RlQmxvY2s+LCAxNj4gdG9SZW1vdmU7CisgICAg
CisgICAgZm9yIChIYXNoU2V0PENvZGVCbG9jayo+OjppdGVyYXRvciBpdGVyID0gbV9zZXQuYmVn
aW4oKTsgaXRlciAhPSBtX3NldC5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmICgoKml0ZXIp
LT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pc0pldHRpc29uZWQpCisgICAgICAgICAgICB0b1Jl
bW92ZS5hcHBlbmQoYWRvcHRSZWYoKml0ZXIpKTsKKyAgICB9Cit9CisKK3ZvaWQgREZHQ29kZUJs
b2Nrczo6amV0dGlzb24oUGFzc1JlZlB0cjxDb2RlQmxvY2s+IGNvZGVCbG9ja1B0cikKK3sKKyAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIGRlbGV0ZSBpdCBub3c7IHdlIGp1c3Qgd2FudCBpdHMgcG9p
bnRlci4KKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvZGVCbG9ja1B0ci5sZWFrUmVmKCk7
CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIAorICAgIC8vIEl0IHNob3Vs
ZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gamV0dGlzb25lZC4KKyAgICBBU1NFUlQoIWNvZGVCbG9j
ay0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+aXNKZXR0aXNvbmVkKTsKKworICAgIC8vIFdlIHNo
b3VsZCBoYXZlIHRoaXMgYmxvY2sgYWxyZWFkeS4KKyAgICBBU1NFUlQobV9zZXQuZmluZChjb2Rl
QmxvY2spICE9IG1fc2V0LmVuZCgpKTsKKyAgICAKKyAgICBjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnQ29tbW9uKCktPmlzSmV0dGlzb25lZCA9IHRydWU7Cit9CisKK3ZvaWQgREZHQ29kZUJsb2Nr
czo6Y2xlYXJNYXJrcygpCit7CisgICAgZm9yIChIYXNoU2V0PENvZGVCbG9jayo+OjppdGVyYXRv
ciBpdGVyID0gbV9zZXQuYmVnaW4oKTsgaXRlciAhPSBtX3NldC5lbmQoKTsgKytpdGVyKSB7Cisg
ICAgICAgICgqaXRlciktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1heUJlRXhlY3V0aW5nID0g
ZmFsc2U7CisgICAgICAgICgqaXRlciktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnZpc2l0QWdn
cmVnYXRlSGFzQmVlbkNhbGxlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBERkdDb2RlQmxv
Y2tzOjpkZWxldGVVbm1hcmtlZEpldHRpc29uZWRDb2RlQmxvY2tzKCkKK3sKKyAgICBWZWN0b3I8
UmVmUHRyPENvZGVCbG9jaz4sIDE2PiB0b1JlbW92ZTsKKyAgICAKKyAgICBmb3IgKEhhc2hTZXQ8
Q29kZUJsb2NrKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3NldC5iZWdpbigpOyBpdGVyICE9IG1fc2V0
LmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKCgqaXRlciktPmppdENvZGUoKS0+ZGZnQ29t
bW9uKCktPmlzSmV0dGlzb25lZCAmJiAhKCppdGVyKS0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+
bWF5QmVFeGVjdXRpbmcpCisgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoYWRvcHRSZWYoKml0
ZXIpKTsKKyAgICB9Cit9CisKK3ZvaWQgREZHQ29kZUJsb2Nrczo6dHJhY2VNYXJrZWRDb2RlQmxv
Y2tzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoSGFzaFNldDxDb2RlQmxvY2sq
Pjo6aXRlcmF0b3IgaXRlciA9IG1fc2V0LmJlZ2luKCk7IGl0ZXIgIT0gbV9zZXQuZW5kKCk7ICsr
aXRlcikgeworICAgICAgICBpZiAoKCppdGVyKS0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+bWF5
QmVFeGVjdXRpbmcpCisgICAgICAgICAgICAoKml0ZXIpLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9y
KTsKKyAgICB9Cit9CisKKyNlbHNlIC8vIEVOQUJMRShERkdfSklUKQorCit2b2lkIERGR0NvZGVC
bG9ja3M6OmpldHRpc29uKFBhc3NSZWZQdHI8Q29kZUJsb2NrPikKK3sKK30KKworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9ERkdDb2RlQmxvY2tzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9ERkdDb2RlQmxvY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZTY5NjMxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0RGR0NvZGVCbG9ja3MuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQ29kZUJsb2Nrc19oCisj
ZGVmaW5lIERGR0NvZGVCbG9ja3NfaAorCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTbG90VmlzaXRvcjsK
KworLy8gREZHQ29kZUJsb2NrcyBub3RpZmllcyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgYWJvdXQg
b3B0aW1pemVkIGNvZGUgYmxvY2tzIHRoYXQKKy8vIGhhdmUgZGlmZmVyZW50IG1hcmtpbmcgYmVo
YXZpb3IgZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIG9uIHRoZQorLy8gc3Rh
Y2ssIGFuZCB0aGF0IG1heSBiZSBqZXR0aXNvbmVkLiBKZXR0aXNvbmluZyBpcyB0aGUgcHJvY2Vz
cyBvZiBkaXNjYXJkaW5nCisvLyBhIGNvZGUgYmxvY2sgYWZ0ZXIgYWxsIGNhbGxzIHRvIGl0IGhh
dmUgYmVlbiB1bmxpbmtlZC4gVGhpcyBjbGFzcyB0YWtlcyBzcGVjaWFsCisvLyBjYXJlIHRvIGVu
c3VyZSB0aGF0IGlmIHRoZXJlIGFyZSBzdGlsbCBjYWxsIGZyYW1lcyB0aGF0IGFyZSB1c2luZyB0
aGUgY29kZQorLy8gYmxvY2ssIHRoZW4gaXQgc2hvdWxkIG5vdCBiZSBpbW1lZGlhdGVseSBkZWxl
dGVkLCBidXQgcmF0aGVyLCBpdCBzaG91bGQgYmUKKy8vIGRlbGV0ZWQgb25jZSB3ZSBrbm93IHRo
YXQgdGhlcmUgYXJlIG5vIGxvbmdlciBhbnkgcmVmZXJlbmNlcyB0byBpdCBmcm9tIGFueQorLy8g
Y2FsbCBmcmFtZXMuIFRoaXMgY2xhc3MgdGFrZXMgaXRzIG5hbWUgZnJvbSB0aGUgREZHIGNvbXBp
bGVyOyBvbmx5IGNvZGUgYmxvY2tzCisvLyBjb21waWxlZCBieSB0aGUgREZHIG5lZWQgc3BlY2lh
bCBtYXJraW5nIGJlaGF2aW9yIGlmIHRoZXkgYXJlIG9uIHRoZSBzdGFjaywgYW5kCisvLyBvbmx5
IHRob3NlIGNvZGUgYmxvY2tzIG1heSBiZSBqZXR0aXNvbmVkLgorCisjaWYgRU5BQkxFKERGR19K
SVQpCitjbGFzcyBERkdDb2RlQmxvY2tzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KworcHVibGljOgorICAgIERGR0NvZGVCbG9ja3MoKTsKKyAgICB+REZHQ29kZUJsb2NrcygpOwor
ICAgIAorICAgIC8vIEluZm9ybSB0aGUgY29sbGVjdG9yIHRoYXQgYSBjb2RlIGJsb2NrIGhhcyBi
ZWVuIGpldHRpc29uZWQgZm9ybSBpdHMKKyAgICAvLyBleGVjdXRhYmxlIGFuZCBzaG91bGQgb25s
eSBiZSBrZXB0IGFsaXZlIGlmIHRoZXJlIGFyZSBjYWxsIGZyYW1lcyB0aGF0IHVzZQorICAgIC8v
IGl0LiBUaGlzIGlzIHR5cGljYWxseSBjYWxsZWQgZWl0aGVyIGZyb20gYSByZWNvbXBpbGF0aW9u
IHRyaWdnZXIsIG9yIGZyb20KKyAgICAvLyBhbiB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBhc3Nv
Y2lhdGVkIHdpdGggYSBDb2RlQmxvY2sgdGhhdCBoYWQgd2VhaworICAgIC8vIHJlZmVyZW5jZXMs
IHdoZXJlIHNvbWUgc3Vic2V0IG9mIHRob3NlIHJlZmVyZW5jZXMgd2VyZSBkZWFkLgorICAgIHZv
aWQgamV0dGlzb24oUGFzc1JlZlB0cjxDb2RlQmxvY2s+KTsKKyAgICAKKyAgICAvLyBDbGVhciBh
bGwgbWFyayBiaXRzIGFzc29jaWF0ZWQgd2l0aCBERkcgY29kZSBibG9ja3MuCisgICAgdm9pZCBj
bGVhck1hcmtzKCk7CisgICAgCisgICAgLy8gTWFyayBhIHBvaW50ZXIgdGhhdCBtYXkgYmUgYSBD
b2RlQmxvY2sgdGhhdCBiZWxvbmdzIHRvIHRoZSBzZXQgb2YgREZHIGNvZGUKKyAgICAvLyBibG9j
a3MuIFRoaXMgaXMgZGVmaW5lZCBpbmxpbmUgaW4gQ29kZUJsb2NrLmgKKyAgICB2b2lkIG1hcmso
dm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKTsKKyAgICAKKyAgICAvLyBEZWxldGUgYWxsIGpldHRp
c29uZWQgY29kZSBibG9ja3MgdGhhdCBoYXZlIG5vdCBiZWVuIG1hcmtlZCAoaS5lLiBhcmUgbm90
IHJlZmVyZW5jZWQKKyAgICAvLyBmcm9tIGNhbGwgZnJhbWVzKS4KKyAgICB2b2lkIGRlbGV0ZVVu
bWFya2VkSmV0dGlzb25lZENvZGVCbG9ja3MoKTsKKyAgICAKKyAgICAvLyBUcmFjZSBhbGwgbWFy
a2VkIGNvZGUgYmxvY2tzIChpLmUuIGFyZSByZWZlcmVuY2VkIGZyb20gY2FsbCBmcmFtZXMpLiBU
aGUgQ29kZUJsb2NrCisgICAgLy8gaXMgZnJlZSB0byBtYWtlIHVzZSBvZiBtX2RmZ0RhdGEtPmlz
TWFya2VkIGFuZCBtX2RmZ0RhdGEtPmlzSmV0dGlzb25lZC4KKyAgICB2b2lkIHRyYWNlTWFya2Vk
Q29kZUJsb2NrcyhTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBD
b2RlQmxvY2s7CisgICAgCisgICAgSGFzaFNldDxDb2RlQmxvY2sqPiBtX3NldDsKK307CisjZWxz
ZQorY2xhc3MgREZHQ29kZUJsb2NrcyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisK
K3B1YmxpYzoKKyAgICB2b2lkIGpldHRpc29uKFBhc3NSZWZQdHI8Q29kZUJsb2NrPik7CisgICAg
dm9pZCBjbGVhck1hcmtzKCkgeyB9CisgICAgdm9pZCBtYXJrKHZvaWQqKSB7IH0KKyAgICB2b2lk
IGRlbGV0ZVVubWFya2VkSmV0dGlzb25lZENvZGVCbG9ja3MoKSB7IH0KKyAgICB2b2lkIHRyYWNl
TWFya2VkQ29kZUJsb2NrcyhTbG90VmlzaXRvciYpIHsgfQorfTsKKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IDM3MmMzNTUuLmE0MGE0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0z
NTQsNiArMzU0LDExIEBAIGJvb2wgSGVhcDo6dW5wcm90ZWN0KEpTVmFsdWUgaykKICAgICByZXR1
cm4gbV9wcm90ZWN0ZWRWYWx1ZXMucmVtb3ZlKGsuYXNDZWxsKCkpOwogfQogCit2b2lkIEhlYXA6
OmpldHRpc29uREZHQ29kZUJsb2NrKFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBjb2RlQmxvY2spCit7
CisgICAgbV9kZmdDb2RlQmxvY2tzLmpldHRpc29uKGNvZGVCbG9jayk7Cit9CisKIHZvaWQgSGVh
cDo6YWRkUmVmZXJlbmNlKEpTQ2VsbCogY2VsbCwgQXJyYXlCdWZmZXIqIGJ1ZmZlcikKIHsKICAg
ICBpZiAobV9hcnJheUJ1ZmZlcnMuYWRkUmVmZXJlbmNlKGNlbGwsIGJ1ZmZlcikpIHsKQEAgLTQ1
MiwxMCArNDU3LDExIEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICB9CiAKICAgICBDb25z
ZXJ2YXRpdmVSb290cyBzdGFja1Jvb3RzKCZtX29iamVjdFNwYWNlLmJsb2NrcygpLCAmbV9zdG9y
YWdlU3BhY2UpOwotICAgIG1fY29kZUJsb2Nrcy5jbGVhck1hcmtzKCk7CisgICAgbV9kZmdDb2Rl
QmxvY2tzLmNsZWFyTWFya3MoKTsKICAgICB7CiAgICAgICAgIEdDUEhBU0UoR2F0aGVyU3RhY2tS
b290cyk7Ci0gICAgICAgIHN0YWNrKCkuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoc3RhY2tSb290
cywgbV9qaXRTdHViUm91dGluZXMsIG1fY29kZUJsb2Nrcyk7CisgICAgICAgIHN0YWNrKCkuZ2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoCisgICAgICAgICAgICBzdGFja1Jvb3RzLCBtX2ppdFN0dWJS
b3V0aW5lcywgbV9kZmdDb2RlQmxvY2tzKTsKICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
QEAgLTQ3OSw2ICs0ODUsMTIgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIHsKICAgICAg
ICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHZpc2l0b3IpOwogCisgICAgICAgIGlmICht
X3ZtLT5jb2RlQmxvY2tzQmVpbmdDb21waWxlZC5zaXplKCkpIHsKKyAgICAgICAgICAgIEdDUEhB
U0UoVmlzaXRBY3RpdmVDb2RlQmxvY2spOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3ZtLT5jb2RlQmxvY2tzQmVpbmdDb21waWxlZC5zaXplKCk7IGkrKykKKyAgICAgICAg
ICAgICAgICBtX3ZtLT5jb2RlQmxvY2tzQmVpbmdDb21waWxlZFtpXS0+dmlzaXRBZ2dyZWdhdGUo
dmlzaXRvcik7CisgICAgICAgIH0KKwogICAgICAgICBtX3ZtLT5zbWFsbFN0cmluZ3MudmlzaXRT
dHJvbmdSZWZlcmVuY2VzKHZpc2l0b3IpOwogCiAgICAgICAgIHsKQEAgLTU0Niw3ICs1NTgsNyBA
QCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAgICAgIHsKICAgICAgICAgICAgIEdDUEhBU0Uo
VHJhY2VDb2RlQmxvY2tzQW5kSklUU3R1YlJvdXRpbmVzKTsKICAgICAgICAgICAgIE1BUktfTE9H
X1JPT1QodmlzaXRvciwgIlRyYWNlIENvZGUgQmxvY2tzIGFuZCBKSVQgU3R1YiBSb3V0aW5lcyIp
OwotICAgICAgICAgICAgbV9jb2RlQmxvY2tzLnRyYWNlTWFya2VkKHZpc2l0b3IpOworICAgICAg
ICAgICAgbV9kZmdDb2RlQmxvY2tzLnRyYWNlTWFya2VkQ29kZUJsb2Nrcyh2aXNpdG9yKTsKICAg
ICAgICAgICAgIG1faml0U3R1YlJvdXRpbmVzLnRyYWNlTWFya2VkU3R1YlJvdXRpbmVzKHZpc2l0
b3IpOwogICAgICAgICAgICAgdmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogICAgICAgICB9CkBA
IC02NzEsOCArNjgzLDggQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb21waWxlZENvZGUoKQogICAg
ICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjdXJyZW50KS0+Y2xlYXJDb2Rl
SWZOb3RDb21waWxpbmcoKTsKICAgICB9CiAKLSAgICBtX2NvZGVCbG9ja3MuY2xlYXJNYXJrcygp
OwotICAgIG1fY29kZUJsb2Nrcy5kZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNlZCgpOworICAg
IG1fZGZnQ29kZUJsb2Nrcy5jbGVhck1hcmtzKCk7CisgICAgbV9kZmdDb2RlQmxvY2tzLmRlbGV0
ZVVubWFya2VkSmV0dGlzb25lZENvZGVCbG9ja3MoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVV
bm1hcmtlZENvbXBpbGVkQ29kZSgpCkBAIC02ODksNyArNzAxLDcgQEAgdm9pZCBIZWFwOjpkZWxl
dGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpCiAgICAgICAgIG1fY29tcGlsZWRDb2RlLnJlbW92ZShj
dXJyZW50KTsKICAgICB9CiAKLSAgICBtX2NvZGVCbG9ja3MuZGVsZXRlVW5tYXJrZWRBbmRVbnJl
ZmVyZW5jZWQoKTsKKyAgICBtX2RmZ0NvZGVCbG9ja3MuZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVk
Q29kZUJsb2NrcygpOwogICAgIG1faml0U3R1YlJvdXRpbmVzLmRlbGV0ZVVubWFya2VkSmV0dGlz
b25lZFN0dWJSb3V0aW5lcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXgg
NmEzMzg5Zi4uZTQyMmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMjQsOCAr
MjQsOCBAQAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJCbG9ja0FsbG9j
YXRvci5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkNvcHlWaXNpdG9y
LmgiCisjaW5jbHVkZSAiREZHQ29kZUJsb2Nrcy5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZD
b3VudGVkU2V0LmgiCiAjaW5jbHVkZSAiR0NUaHJlYWRTaGFyZWREYXRhLmgiCiAjaW5jbHVkZSAi
SGFuZGxlU2V0LmgiCkBAIC0xNDQsNiArMTQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJv
dGVjdCBjb3VudCBkcm9wcyB0byAwLgogICAgICAgICAKKyAgICAgICAgdm9pZCBqZXR0aXNvbkRG
R0NvZGVCbG9jayhQYXNzUmVmUHRyPENvZGVCbG9jaz4pOworCiAgICAgICAgIHNpemVfdCBleHRy
YVNpemUoKTsgLy8gZXh0cmEgbWVtb3J5IHVzYWdlIG91dHNpZGUgb2YgcGFnZXMgYWxsb2NhdGVk
IGJ5IHRoZSBoZWFwCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzaXplKCk7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBjYXBhY2l0eSgpOwpAQCAtMjcxLDcgKzI3
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEhhbmRsZVNldCBtX2hhbmRsZVNldDsK
ICAgICAgICAgSGFuZGxlU3RhY2sgbV9oYW5kbGVTdGFjazsKLSAgICAgICAgQ29kZUJsb2NrU2V0
IG1fY29kZUJsb2NrczsKKyAgICAgICAgREZHQ29kZUJsb2NrcyBtX2RmZ0NvZGVCbG9ja3M7CiAg
ICAgICAgIEpJVFN0dWJSb3V0aW5lU2V0IG1faml0U3R1YlJvdXRpbmVzOwogICAgICAgICBGaW5h
bGl6ZXJPd25lciBtX2ZpbmFsaXplck93bmVyOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDFkNWI1MTQuLjUw
MDU3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcApAQCAtNzM3LDcgKzczNyw3IEBAIGZhaWxlZEpTT05QOgogICAgIGlmIChKU09i
amVjdCogZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGNhbGxGcmFtZSwgc2Nv
cGUsIENvZGVGb3JDYWxsKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJyb3IpKTsKIAotICAgIFByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHByb2dyYW0tPmNvZGVCbG9jaygpOworICAgIFByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jayA9ICZwcm9ncmFtLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogCiAg
ICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKQEAg
LTgwNyw3ICs4MDcsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVAogICAgICAgICBpZiAoVU5M
SUtFTFkoISFjb21waWxlRXJyb3IpKSB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3Ip
KTsKICAgICAgICAgfQotICAgICAgICBuZXdDb2RlQmxvY2sgPSBjYWxsRGF0YS5qcy5mdW5jdGlv
bkV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNhbGwoKTsKKyAgICAgICAgbmV3Q29kZUJsb2NrID0g
JmNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxs
KCk7CiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9j
ay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICB9IGVsc2UKQEAgLTg4Niw3
ICs4ODYsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1YwogICAgICAgICBpZiAoVU5MSUtFTFko
ISFjb21waWxlRXJyb3IpKSB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxs
RnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKICAg
ICAgICAgfQotICAgICAgICBuZXdDb2RlQmxvY2sgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9u
RXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yQ29uc3RydWN0KCk7CisgICAgICAgIG5ld0NvZGVCbG9j
ayA9ICZjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3JDb25zdHJ1Y3QoKTsKICAgICAgICAgQVNTRVJUKCEhbmV3Q29kZUJsb2NrKTsKICAgICAg
ICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgIH0g
ZWxzZQpAQCAtOTYxLDcgKzk2MSw3IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnBy
ZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FCiAgICAgICAg
IGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKICAgICB9Ci0gICAgQ29kZUJsb2NrKiBuZXdD
b2RlQmxvY2sgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNhbGwoKTsKKyAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yQ2FsbCgpOwogICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAg
ICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVGb3JFeGVjdXRpb24oY2Fs
bEZyYW1lLCBzY29wZSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVF
cnJvcikpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOwotICAgIEV2YWxDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV2YWwtPmNvZGVCbG9jaygpOworICAgIEV2YWxDb2RlQmxvY2sqIGNvZGVC
bG9jayA9ICZldmFsLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogCiAgICAgaWYgKG51bVZhcmlhYmxl
cyB8fCBudW1GdW5jdGlvbnMpIHsKICAgICAgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIg
b3B0aW1pemVyKHZtLCB2YXJpYWJsZU9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAKaW5kZXggYmZkY2VjYi4uZWMyOTYyYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcApAQCAtOTYsOSArOTYs
OSBAQCB2b2lkIEpTU3RhY2s6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJv
b3RzJiBjb25zZXJ2YXRpdmVSb290cykKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoYmVnaW4o
KSwgZ2V0VG9wT2ZTdGFjaygpKTsKIH0KIAotdm9pZCBKU1N0YWNrOjpnYXRoZXJDb25zZXJ2YXRp
dmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMsIEpJVFN0dWJSb3V0
aW5lU2V0JiBqaXRTdHViUm91dGluZXMsIENvZGVCbG9ja1NldCYgY29kZUJsb2NrcykKK3ZvaWQg
SlNTdGFjazo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNl
cnZhdGl2ZVJvb3RzLCBKSVRTdHViUm91dGluZVNldCYgaml0U3R1YlJvdXRpbmVzLCBERkdDb2Rl
QmxvY2tzJiBkZmdDb2RlQmxvY2tzKQogewotICAgIGNvbnNlcnZhdGl2ZVJvb3RzLmFkZChiZWdp
bigpLCBnZXRUb3BPZlN0YWNrKCksIGppdFN0dWJSb3V0aW5lcywgY29kZUJsb2Nrcyk7CisgICAg
Y29uc2VydmF0aXZlUm9vdHMuYWRkKGJlZ2luKCksIGdldFRvcE9mU3RhY2soKSwgaml0U3R1YlJv
dXRpbmVzLCBkZmdDb2RlQmxvY2tzKTsKIH0KIAogdm9pZCBKU1N0YWNrOjpyZWxlYXNlRXhjZXNz
Q2FwYWNpdHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0pTU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgK
aW5kZXggNTI2M2E5Yy4uZmU0MDEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0pTU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSlNTdGFjay5oCkBAIC00MSw4ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0g
ICAgY2xhc3MgQ29kZUJsb2NrU2V0OwogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOworICAg
IGNsYXNzIERGR0NvZGVCbG9ja3M7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpJ
VFN0dWJSb3V0aW5lU2V0OwogICAgIGNsYXNzIFZNOwpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfkpTU3RhY2soKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZ2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKLSAgICAgICAgdm9pZCBn
YXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5l
U2V0JiwgQ29kZUJsb2NrU2V0Jik7CisgICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9v
dHMoQ29uc2VydmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNldCYsIERGR0NvZGVCbG9ja3Mm
KTsKIAogICAgICAgICBSZWdpc3RlciogYmVnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxSZWdpc3Rlcio+KG1fcmVzZXJ2YXRpb24uYmFzZSgpKTsgfQogICAgICAgICBSZWdpc3Rlciog
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgKaW5kZXggM2I0YTYzMS4uMTEwMTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgKQEAgLTgwLDE3ICs4MCw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBzdGF0aWMgYm9vbCBpc0V4ZWN1dGFibGVTY3JpcHQoSklUVHlwZSBqaXRUeXBlKQotICAgIHsK
LSAgICAgICAgc3dpdGNoIChqaXRUeXBlKSB7Ci0gICAgICAgIGNhc2UgTm9uZToKLSAgICAgICAg
Y2FzZSBIb3N0Q2FsbFRodW5rOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
CiAgICAgc3RhdGljIGJvb2wgY291bGRCZUludGVycHJldGVkKEpJVFR5cGUgaml0VHlwZSkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAoaml0VHlwZSkgewpAQCAtMTE2LDggKzEwNSw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICBzdGF0aWMgYm9vbCBpc0xvd2VyVGllcihKSVRUeXBlIGV4cGVjdGVkTG93
ZXIsIEpJVFR5cGUgZXhwZWN0ZWRIaWdoZXIpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc0V4ZWN1dGFibGVTY3JpcHQoZXhwZWN0ZWRMb3dlcikpOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0V4ZWN1dGFibGVTY3JpcHQoZXhwZWN0ZWRIaWdoZXIpKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNKSVQoZXhwZWN0ZWRMb3dlcikpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c0pJVChleHBlY3RlZEhpZ2hlcikpOwogICAgICAgICByZXR1cm4gZXhwZWN0ZWRMb3dlciA8IGV4
cGVjdGVkSGlnaGVyOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAKaW5kZXggNTU5ZGRhNC4uNjRjMzliNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAKQEAgLTEyNzYsNyArMTI3Niw3IEBAIGlubGluZSB2b2lkKiBsYXp5TGlua0Zv
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAg
ICAgICAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJyb3Ip
OwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgY29kZUJsb2NrID0g
ZnVuY3Rpb25FeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7CisgICAgICAgIGNvZGVCbG9j
ayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwogICAg
ICAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKICAgICAgICAgICAgIHx8
IGNhbGxMaW5rSW5mby0+Y2FsbFR5cGUgPT0gQ2FsbExpbmtJbmZvOjpDYWxsVmFyYXJncykKICAg
ICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVX
aXRoQXJpdHlDaGVja0ZvcihraW5kKTsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQqLCB2bV9sYXp5TGlua0Nsb3N1cmVDYWxsKQogICAgICAgICBBU1NFUlQo
ZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CiAgICAgICAgIGNvZGVQdHIgPSBleGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbCgpOwogICAg
ICAgICBpZiAoIWNhbGxlZS0+ZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAg
ICAgICAgICBjYWxsZWVDb2RlQmxvY2sgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSktPmNvZGVCbG9ja0ZvckNhbGwoKTsKKyAgICAgICAgICAgIGNhbGxlZUNvZGVCbG9j
ayA9ICZqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yQ2FsbCgpOwogICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY2FsbGVlQ29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpKSB7CiAgICAgICAgICAgICAgICAgc2hvdWxkTGluayA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0
aEFyaXR5Q2hlY2tGb3IoQ29kZUZvckNhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZWE5MjczMS4uMjU5YTdlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0yMTIsNyAr
MjEyLDcgQEAgc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWMKIHsKICAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpOwotICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKGtpbmQpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOwogICAgIGRhdGFMb2dGKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0
YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lz
dGVycyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMs
IGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKICAgICAgICAgICAgIGNvZGVCbG9jay0+bV9u
dW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycywKQEAgLTM1MSwyMiArMzUxLDIyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKGVu
dHJ5X29zcikKIAogTExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
YWxsKQogewotICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywganNDYXN0PEpTRnVuY3Rpb24q
PihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5jb2RlQmxvY2tGb3JDYWxsKCksICJl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7CisgICAgcmV0dXJuIGVudHJ5
T1NSKGV4ZWMsIHBjLCAmanNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPmpzRXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNM
KGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQogewotICAgIHJldHVybiBlbnRyeU9T
UihleGVjLCBwYywganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0
YWJsZSgpLT5jb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0IiwgUHJvbG9ndWUpOworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCiB7Ci0gICAgcmV0dXJuIGVudHJ5T1NS
KGV4ZWMsIHBjLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRh
YmxlKCktPmNvZGVCbG9ja0ZvckNhbGwoKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eUNoZWNrIiwgQXJpdHlDaGVjayk7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAm
anNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogewotICAgIHJldHVy
biBlbnRyeU9TUihleGVjLCBwYywganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSkt
PmpzRXhlY3V0YWJsZSgpLT5jb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSwgImVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKKyAgICByZXR1cm4g
ZW50cnlPU1IoZXhlYywgcGMsICZqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+
anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAi
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2sp
OwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKQEAgLTEwMTcsNyArMTAxNyw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlCiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjQ2FsbGVlLCBjYWxsZWUt
PnNjb3BlKCksIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMTElOVF9D
QUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7Ci0gICAgICAg
IGNvZGVCbG9jayA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKGtpbmQpOworICAg
ICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZv
cihraW5kKTsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAgICAgICAgIGlmIChleGVjQ2Fs
bGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCiAgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5qc0NvZGVXaXRoQXJpdHlDaGVja0VudHJ5Rm9yKGtpbmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDJm
OGRkYmEuLjQ1ODJjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIENhbGxUeXBlIGNhbGxUeXBl
LAogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGV4
ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNhbGwoKS0+aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCk7
CisgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yQ2FsbCgpLmlzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbigpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQXJyYXlQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXgg
NjQ4MGYwZi4uOTQ3ZjY4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xNDEsOSArMTQxLDcgQEAKICAgICBtYWNybyhmb3JF
YWNoKSBcCiAgICAgbWFjcm8oY2xlYXIpIFwKICAgICBtYWNybyhzaXplKSBcCi0gICAgbWFjcm8o
TWFwKVwKLSAgICBtYWNybyhTZXQpXAotICAgIG1hY3JvKGFkZCkKKyAgICBtYWNybyhNYXApCiAK
ICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAg
ICBtYWNybyhudWxsKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCmluZGV4IDk2ZmM4YTcuLjI2NjVhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC00OSw3ICs0OSw3IEBAIEFM
V0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBKU1N0YWNrKiBz
dGFjaywgQ29kZVNwZWNpYWxpemF0CiB7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9z
dEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY2FsbGVlLT5qc0V4
ZWN1dGFibGUoKS0+Y29kZUJsb2NrRm9yKGtpbmQpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQp
OwogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgCiAgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFj
ZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5
IHRoZSBjYWxsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCmluZGV4IGNhMjJhODUuLmFlMzVkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC05MCw2ICs5MCwyMCBAQCBJbnRyaW5zaWMgTmF0aXZl
RXhlY3V0YWJsZTo6aW50cmluc2ljKCkgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEpJ
VCkKKy8vIFV0aWxpdHkgbWV0aG9kIHVzZWQgZm9yIGpldHRpc29uaW5nIGNvZGUgYmxvY2tzLgor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKFZNJiB2
bSwgUmVmUHRyPFQ+JiBjb2RlQmxvY2spCit7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1p
emluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmFs
dGVybmF0aXZlKCkpOworICAgIFJlZlB0cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJs
b2NrLnJlbGVhc2UoKTsKKyAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNv
ZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsKKyAgICBjb2RlQmxvY2tU
b0pldHRpc29uLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgdm0uaGVhcC5qZXR0aXNvbkRG
R0NvZGVCbG9jayhzdGF0aWNfcG9pbnRlcl9jYXN0PENvZGVCbG9jaz4oY29kZUJsb2NrVG9KZXR0
aXNvbi5yZWxlYXNlKCkpKTsKK30KKyNlbmRpZgorCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhl
Y3V0YWJsZTo6c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMTAyLDcgKzExNiw2IEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJs
ZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxD
b2RlKENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaykKIHsKICAgICBSRUxFQVNFX0FTU0VSVChn
ZW5lcmljQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSA9PSB0aGlzKTsKLSAgICBSRUxFQVNF
X0FTU0VSVChKSVRDb2RlOjppc0V4ZWN1dGFibGVTY3JpcHQoZ2VuZXJpY0NvZGVCbG9jay0+aml0
VHlwZSgpKSk7CiAgICAgCiAgICAgVk0mIHZtID0gKmdlbmVyaWNDb2RlQmxvY2stPnZtKCk7CiAg
ICAgCkBAIC0xMTEsNiArMTI0LDEyIEBAIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENv
ZGUoQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrKQogICAgIAogICAgIEFTU0VSVCh2bS5oZWFw
LmlzRGVmZXJyZWQoKSk7CiAgICAgCisgICAgaWYgKEpJVENvZGU6OmlzSklUKGdlbmVyaWNDb2Rl
QmxvY2stPmppdFR5cGUoKSkpIHsKKyAgICAgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUNv
c3QoCisgICAgICAgICAgICBzaXplb2YoQ29kZUJsb2NrKSArIGdlbmVyaWNDb2RlQmxvY2stPmpp
dENvZGUoKS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdm0uaGVhcC5yZXBvcnRFeHRy
YU1lbW9yeUNvc3Qoc2l6ZW9mKENvZGVCbG9jaykpOworICAgIAogICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCA9IGdlbmVyaWNDb2RlQmxvY2stPnNwZWNpYWxpemF0aW9uS2luZCgpOwog
ICAgIAogICAgIFJlZlB0cjxDb2RlQmxvY2s+IG9sZENvZGVCbG9jazsKQEAgLTM1Niw2ICszNzUs
MTUgQEAgaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShKSVQpCit2b2lkIEV2YWxFeGVj
dXRhYmxlOjpqZXR0aXNvbk9wdGltaXplZENvZGUoVk0mIHZtKQoreworICAgIGpldHRpc29uQ29k
ZUJsb2NrKHZtLCBtX2V2YWxDb2RlQmxvY2spOworICAgIG1faml0Q29kZUZvckNhbGwgPSBtX2V2
YWxDb2RlQmxvY2stPmppdENvZGUoKTsKKyAgICBBU1NFUlQoIW1faml0Q29kZUZvckNhbGxXaXRo
QXJpdHlDaGVjayk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwogdm9pZCBFdmFsRXhlY3V0
YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewogICAgIEV2YWxFeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEV2YWxFeGVjdXRhYmxl
Kj4oY2VsbCk7CkBAIC0zOTcsNiArNDI1LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJs
ZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBlcnJvci50b0Vycm9y
T2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIG1fc291cmNlKTsKIH0KIAorI2lmIEVOQUJMRShK
SVQpCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqZXR0aXNvbk9wdGltaXplZENvZGUoVk0mIHZt
KQoreworICAgIGpldHRpc29uQ29kZUJsb2NrKHZtLCBtX3Byb2dyYW1Db2RlQmxvY2spOworICAg
IG1faml0Q29kZUZvckNhbGwgPSBtX3Byb2dyYW1Db2RlQmxvY2stPmppdENvZGUoKTsKKyAgICBB
U1NFUlQoIW1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayk7Cit9CisjZW5kaWYKKwogdm9p
ZCBQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQogewogI2lmIEVOQUJMRShKSVQpCkBA
IC00ODAsNiArNTE3LDIyIEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorI2lmIEVOQUJMRShKSVQpCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6amV0
dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChWTSYgdm0pCit7CisgICAgamV0dGlzb25Db2RlQmxv
Y2sodm0sIG1fY29kZUJsb2NrRm9yQ2FsbCk7CisgICAgbV9qaXRDb2RlRm9yQ2FsbCA9IG1fY29k
ZUJsb2NrRm9yQ2FsbC0+aml0Q29kZSgpOworICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjayA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+aml0Q29kZVdpdGhBcml0eUNoZWNrKCk7Cit9CisK
K3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1
Y3QoVk0mIHZtKQoreworICAgIGpldHRpc29uQ29kZUJsb2NrKHZtLCBtX2NvZGVCbG9ja0ZvckNv
bnN0cnVjdCk7CisgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0ID0gbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QtPmppdENvZGUoKTsKKyAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVj
ayA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5qaXRDb2RlV2l0aEFyaXR5Q2hlY2soKTsKK30K
KyNlbmRpZgorCiB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA0YTE0Zjk1Li5hMDMxYmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00NDUs
OSArNDQ1LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAKLSAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2soKQorI2lmIEVOQUJMRShKSVQpCisgICAg
dm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoVk0mKTsKKyNlbmRpZgorCisgICAgRXZhbENvZGVC
bG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZXZhbENv
ZGVCbG9jay5nZXQoKTsKKyAgICAgICAgQVNTRVJUKG1fZXZhbENvZGVCbG9jayk7CisgICAgICAg
IHJldHVybiAqbV9ldmFsQ29kZUJsb2NrOwogICAgIH0KIAogICAgIHN0YXRpYyBFdmFsRXhlY3V0
YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJp
Y3RDb250ZXh0KTsKQEAgLTUwMiw5ICs1MDcsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygp
CisjaWYgRU5BQkxFKEpJVCkKKyAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShWTSYpOwor
I2VuZGlmCisKKyAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gbV9wcm9ncmFtQ29kZUJsb2NrLmdldCgpOworICAgICAgICBBU1NF
UlQobV9wcm9ncmFtQ29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuICptX3Byb2dyYW1Db2RlQmxv
Y2s7CiAgICAgfQogCiAgICAgSlNPYmplY3QqIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSopOwpAQCAt
NTY2LDMzICs1NzYsNTYgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgZWl0aGVyIGNhbGwgb3Ig
Y29uc3RydWN0IGJ5dGVjb2RlLiBUaGlzIGNhbiBiZSBhcHByb3ByaWF0ZQogICAgIC8vIGZvciBh
bnN3ZXJpbmcgcXVlc3Rpb25zIHRoYXQgdGhhdCBkb24ndCB2YXJ5IGJldHdlZW4gY2FsbCBhbmQg
Y29uc3RydWN0IC0tCiAgICAgLy8gZm9yIGV4YW1wbGUsIGFyZ3VtZW50c1JlZ2lzdGVyKCkuCi0g
ICAgRnVuY3Rpb25Db2RlQmxvY2sqIGVpdGhlckNvZGVCbG9jaygpCisgICAgRnVuY3Rpb25Db2Rl
QmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKICAgICB7CiAgICAgICAgIGlmIChtX2NvZGVCbG9j
a0ZvckNhbGwpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpOwot
ICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CisgICAgICAgICAg
ICByZXR1cm4gKm1fY29kZUJsb2NrRm9yQ2FsbDsKKyAgICAgICAgQVNTRVJUKG1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuICptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsK
ICAgICB9CiAgICAgICAgIAorI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGVGb3JDYWxsKFZNJik7CisjZW5kaWYKKwogICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JD
YWxsKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAg
ICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvckNhbGwoKQorICAgIEZ1
bmN0aW9uQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fY29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKKyAgICAgICAgQVNTRVJUKG1fY29k
ZUJsb2NrRm9yQ2FsbCk7CisgICAgICAgIHJldHVybiAqbV9jb2RlQmxvY2tGb3JDYWxsOwogICAg
IH0KIAorI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JD
b25zdHJ1Y3QoVk0mKTsKKyNlbmRpZgorCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVj
dCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7
CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgp
CisgICAgRnVuY3Rpb25Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlRm9yQ29uc3RydWN0KCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKTsKKyAg
ICAgICAgQVNTRVJUKG1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuICpt
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICB9CiAgICAgICAgIAorI2lmIEVOQUJMRShKSVQp
CisgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3IoVk0mIHZtLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCisgICAgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkg
CisgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDYWxsKHZtKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICAgICAgICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdCh2bSk7CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKyAgICAgICAgCiAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgewogICAgICAgICBpZiAoa2luZCA9PSBDb2Rl
Rm9yQ2FsbCkKQEAgLTYwMSwxMiArNjM0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlz
R2VuZXJhdGVkRm9yQ29uc3RydWN0KCk7CiAgICAgfQogICAgICAgICAKLSAgICBGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBG
dW5jdGlvbkNvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQogICAgIHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCi0gICAg
ICAgICAgICByZXR1cm4gY29kZUJsb2NrRm9yQ2FsbCgpOworICAgICAgICAgICAgcmV0dXJuIGdl
bmVyYXRlZEJ5dGVjb2RlRm9yQ2FsbCgpOwogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0KTsKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpOworICAg
ICAgICByZXR1cm4gZ2VuZXJhdGVkQnl0ZWNvZGVGb3JDb25zdHJ1Y3QoKTsKICAgICB9CiAKICAg
ICBGdW5jdGlvbkNvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCk7CkBAIC02NDAsNiArNjczLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4pOwogCisgICAgUmVmUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJs
b2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICB7CisgICAgICAgIGlmIChr
aW5kID09IENvZGVGb3JDYWxsKQorICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrRm9yQ2Fs
bDsKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIHJl
dHVybiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKKyAgICB9CisgCiAgICAgYm9vbCBpc0NvbXBp
bGluZygpCiAgICAgewogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwCmluZGV4IGQwNTgz
ZmMuLmE4ODUyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAgdm9pZCBG
dW5jdGlvbkV4ZWN1dGFibGVEdW1wOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KG1fZXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCksICIjIik7
CiAgICAgaWYgKG1fZXhlY3V0YWJsZS0+aXNHZW5lcmF0ZWRGb3JDYWxsKCkpCi0gICAgICAgIG91
dC5wcmludChtX2V4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNhbGwoKS0+aGFzaCgpKTsKKyAgICAg
ICAgb3V0LnByaW50KG1fZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3JDYWxsKCkuaGFz
aCgpKTsKICAgICBlbHNlCiAgICAgICAgIG91dC5wcmludCgiPG5vZ2VuPiIpOwogICAgIG91dC5w
cmludCgiLyIpOwogICAgIGlmIChtX2V4ZWN1dGFibGUtPmlzR2VuZXJhdGVkRm9yQ29uc3RydWN0
KCkpCi0gICAgICAgIG91dC5wcmludChtX2V4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNvbnN0cnVj
dCgpLT5oYXNoKCkpOworICAgICAgICBvdXQucHJpbnQobV9leGVjdXRhYmxlLT5nZW5lcmF0ZWRC
eXRlY29kZUZvckNvbnN0cnVjdCgpLmhhc2goKSk7CiAgICAgZWxzZQogICAgICAgICBvdXQucHJp
bnQoIjxub2dlbj4iKTsKICAgICBvdXQucHJpbnQoIjpbIiwgUmF3UG9pbnRlcihtX2V4ZWN1dGFi
bGUpLCAiXSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCmluZGV4IDVlZGY3NzUuLjVjNjUxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTY3LDcgKzY3LDYgQEAKICNp
bmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNP
Tk9iamVjdC5oIgotI2luY2x1ZGUgIkpTU2V0LmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Q29u
c3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2luY2x1
ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTk0LDggKzkzLDYgQEAKICNpbmNsdWRlICJSZWdFeHBN
YXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdF
eHBQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJTZXRDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlNl
dFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKQEAg
LTMyOSw5ICszMjYsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICBtX21hcFByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgTWFwUHJvdG90
eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgTWFwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+dm0oKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9tYXBTdHJ1
Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgdGhpcywgbV9tYXBQcm90b3R5cGUuZ2V0KCkpKTsKIAotICAgIG1fc2V0UHJvdG90eXBl
LnNldChleGVjLT52bSgpLCB0aGlzLCBTZXRQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBT
ZXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpKTsKLSAgICBtX3NldFN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgSlNTZXQ6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX3NldFByb3RvdHlw
ZS5nZXQoKSkpOwotCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKICAgICBKU0NlbGwqIG9iamVjdENv
bnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBPYmplY3RD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CkBAIC0zNDcsNyArMzQx
LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
SlNDZWxsKiBwcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3RvciA9IEpTUHJvbWlzZVJlc29sdmVyQ29u
c3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBKU1Byb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmdldCgpKTsKICNlbmRpZiAvLyBFTkFC
TEUoUFJPTUlTRVMpCiAgICAgSlNDZWxsKiBtYXBDb25zdHJ1Y3RvciA9IE1hcENvbnN0cnVjdG9y
OjpjcmVhdGUoZXhlYywgdGhpcywgTWFwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9tYXBQcm90b3R5cGUu
Z2V0KCkpOwotICAgIEpTQ2VsbCogc2V0Q29uc3RydWN0b3IgPSBTZXRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGV4ZWMsIHRoaXMsIFNldENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0o
KSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fc2V0UHJvdG90eXBlLmdldCgp
KTsKIAogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIFJlZ0V4
cENvbnN0cnVjdG9yOjpjcmVhdGUoZXhlYywgdGhpcywgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIApAQCAtMzc2LDcgKzM2OSw2IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIG1fcHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9y
LCBEb250RW51bSk7CiAjZW5kaWYKICAgICBtX21hcFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIG1fc2V0UHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIHNldENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuT2JqZWN0LCBv
YmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5GdW5jdGlvbiwgZnVuY3Rpb25D
b25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMzk4LDcgKzM5MCw2IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5Qcm9taXNlUmVzb2x2ZXIs
IHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAjZW5kaWYKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
TWFwLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5TZXQsIHNldENvbnN0cnVj
dG9yLCBEb250RW51bSk7CiAKICAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ldmFsLnN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBtX2V2YWxG
dW5jdGlvbi5nZXQoKSwgRG9udEVudW0pOwpAQCAtNjYyLDggKzY1Myw2IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXBQcm90b3R5cGUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGFTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fc2V0UHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9zZXRTdHJ1Y3R1cmUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyYXlCdWZmZXJQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2FycmF5QnVmZmVyU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGFlOGVjMDYuLjkyOWI3YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjks
NyArNjksNiBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKLWNs
YXNzIFNldFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CiBzdHJ1Y3QgQWN0aXZhdGlvblN0
YWNrTm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CkBAIC0xNTMsNyArMTUyLDYgQEAgcHJvdGVjdGVk
OgogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VQcm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlw
ZTsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU+IG1fcHJvbWlz
ZVJlc29sdmVyUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxNYXBQcm90b3R5cGU+IG1fbWFw
UHJvdG90eXBlOwotICAgIFdyaXRlQmFycmllcjxTZXRQcm90b3R5cGU+IG1fc2V0UHJvdG90eXBl
OwogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVy
ZTsKQEAgLTE5Nyw3ICsxOTUsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21hcERhdGFTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9tYXBTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zZXRTdHJ1Y3R1
cmU7CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXJQcm90b3R5cGU+IG1fYXJy
YXlCdWZmZXJQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJheUJ1
ZmZlclN0cnVjdHVyZTsKQEAgLTM5Myw3ICszOTAsNiBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJl
KiBtYXBEYXRhU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBEYXRhU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1
cmUuZ2V0KCk7IH0KLSAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2V0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQog
CiAjaWYgRU5BQkxFKFBST01JU0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcAppbmRleCA2NzhmYTg4Li4yYzJjY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtODE5LDE5ICs4MTksNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotSlNWYWx1
ZSBKU09OUGFyc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGpzb24pCi17Ci0gICAg
TG9jYWxTY29wZSBzY29wZShleGVjLT52bSgpKTsKLQotICAgIGlmIChqc29uLmlzOEJpdCgpKSB7
Ci0gICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IGpzb25QYXJzZXIoZXhlYywganNvbi5jaGFy
YWN0ZXJzOCgpLCBqc29uLmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKLSAgICAgICAgcmV0dXJuIGpz
b25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7Ci0gICAgfQotCi0gICAgTGl0ZXJhbFBhcnNlcjxV
Q2hhcj4ganNvblBhcnNlcihleGVjLCBqc29uLmNoYXJhY3RlcnMxNigpLCBqc29uLmxlbmd0aCgp
LCBTdHJpY3RKU09OKTsKLSAgICByZXR1cm4ganNvblBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsK
LX0KLQogU3RyaW5nIEpTT05TdHJpbmdpZnkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBpbmRlbnQpCiB7CiAgICAgTG9jYWxTY29wZSBzY29wZShleGVjLT52bSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAppbmRleCA1OWYxOWMx
Li41NmZjMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5o
CkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgfTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgSlNPTlBhcnNlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
OwogICAgIFN0cmluZyBKU09OU3RyaW5naWZ5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIHVuc2lnbmVk
IGluZGVudCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDg2YWI0Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNTZXQuaCIKLQot
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTWFwRGF0YS5oIgotI2lu
Y2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3Qg
Q2xhc3NJbmZvIEpTU2V0OjpzX2luZm8gPSB7ICJTZXQiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTU2V0KSB9OwotCi12b2lkIEpTU2V0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKLSAgICBKU1NldCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1NldCo+KGNlbGwpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcERhdGEp
OwotfQotCi12b2lkIEpTU2V0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIG1f
bWFwRGF0YS5zZXQodm0sIHRoaXMsIE1hcERhdGE6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KSk7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlZDA5YmVjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBKU1NldF9o
Ci0jZGVmaW5lIEpTU2V0X2gKLQotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KLW5hbWVzcGFjZSBK
U0MgewotCi1jbGFzcyBNYXBEYXRhOwotCi1jbGFzcyBKU1NldCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKLQot
ICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU1NldCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1NldCogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1NldD4odm0uaGVhcCkpIEpTU2V0KHZtLCBzdHJ1Y3R1cmUpOwot
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotCi0gICAgc3RhdGljIEpT
U2V0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsKLSAgICB9Ci0K
LSAgICBNYXBEYXRhKiBtYXBEYXRhKCkgeyByZXR1cm4gbV9tYXBEYXRhLmdldCgpOyB9Ci0KLXBy
aXZhdGU6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBKU1NldChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0Kik7Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwotICAgIAotICAgIFdyaXRlQmFycmllcjxNYXBEYXRhPiBtX21hcERhdGE7
Ci19OwotCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChKU1NldF9oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NDRmNjdmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2V0Q29uc3RydWN0b3IuaCIKLQotI2luY2x1ZGUgIkVy
cm9yLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU1NldC5o
IgotI2luY2x1ZGUgIk1hcERhdGEuaCIKLSNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBTZXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNl
dENvbnN0cnVjdG9yKSB9OwotCi12b2lkIFNldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIFNldFByb3RvdHlwZSogc2V0UHJvdG90eXBlKQotewotICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIHNldFByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNs
YXNzTmFtZSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2V0UHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKLX0KLQotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICAvLyBV
bnRpbCB3ZSBoYXZlIGl0ZXJhdG9ycyB3ZSB0aHJvdyBpZiB3ZSd2ZSBiZWVuIGdpdmVuCi0gICAg
Ly8gYW55IGFyZ3VtZW50cyB0aGF0IGNvdWxkIHJlcXVpcmUgdXMgdG8gdGhyb3cuCi0gICAgaWYg
KCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVy
YWwoIlNldCBkb2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rp
b24iKSkpOwotICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlUmFuZ2VFcnJvcihj
YWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGNvbXBhcmF0b3IgZnVuY3Rpb24i
KSkpOwotCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5j
dGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgU3RydWN0dXJl
KiBzZXRTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShjYWxsRnJhbWUsIHNldFN0cnVjdHVyZSkp
OwotfQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGFzSW50ZXJuYWxGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnNldFN0cnVj
dHVyZSgpOwotICAgIEpTU2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKGNhbGxGcmFtZSwgc2V0U3Ry
dWN0dXJlKTsKLSAgICBNYXBEYXRhKiBtYXBEYXRhID0gc2V0LT5tYXBEYXRhKCk7Ci0gICAgc2l6
ZV90IGNvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgaXRlbSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoaSk7Ci0gICAgICAgIG1hcERhdGEtPnNldChjYWxsRnJhbWUsIGl0ZW0sIGl0
ZW0pOwotICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldCk7Ci19Ci0KLUNvbnN0
cnVjdFR5cGUgU2V0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYgY29uc3RydWN0RGF0YSkKLXsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNvbnN0cnVjdFNldDsKLSAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Ci19Ci0K
LUNhbGxUeXBlIFNldENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCi17Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFNldDsKLSAg
ICByZXR1cm4gQ2FsbFR5cGVIb3N0OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzQwY2Y4OS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRD
b25zdHJ1Y3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2V0Q29uc3RydWN0b3Jf
aAotI2RlZmluZSBTZXRDb25zdHJ1Y3Rvcl9oCi0KLSNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTZXRQcm90b3R5cGU7Ci0KLWNsYXNzIFNl
dENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewotcHVibGljOgotICAgIHR5
cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwotCi0gICAgc3RhdGljIFNldENvbnN0cnVjdG9y
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2V0UHJvdG90eXBlKiBzZXRQcm90b3R5cGUpCi0gICAgewot
ICAgICAgICBTZXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxTZXRDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFNldENvbnN0cnVjdG9yKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKGV4ZWMsIHNldFByb3RvdHlwZSk7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAg
ICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU2V0Q29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDog
QmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgU2V0UHJvdG90eXBlKik7Ci0gICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci19OwotCi19
Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChNYXBDb25zdHJ1Y3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk1MDU3NGQuLjAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgotCi0jaW5jbHVkZSAiQ2FjaGVkQ2Fs
bC5oIgotI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgot
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKLSNpbmNsdWRlICJKU1NldC5oIgotI2lu
Y2x1ZGUgIk1hcERhdGEuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBT
ZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNldCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoU2V0UHJvdG90eXBlKSB9OwotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNDbGVhcihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShFeGVj
U3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y0ZvckVhY2goRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzZXRQcm90b0Z1bmNIYXMoRXhlY1N0YXRlKik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1NpemUoRXhlY1N0YXRlKik7Ci0KLXZvaWQgU2V0UHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLQotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0gICAgdm0u
cHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLQotICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04odm0ucHJvcGVydHlOYW1lcy0+YWRkLCBzZXRQcm90b0Z1bmNBZGQsIERvbnRFbnVtLCAwKTsK
LSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmNsZWFyLCBzZXRQcm90
b0Z1bmNDbGVhciwgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+ZGVsZXRlS2V5d29yZCwgc2V0UHJvdG9GdW5jRGVsZXRlLCBEb250RW51bSwg
MSk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5mb3JFYWNoLCBz
ZXRQcm90b0Z1bmNGb3JFYWNoLCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIHNldFByb3RvRnVuY0hhcywgRG9udEVudW0sIDEpOwot
Ci0gICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMp
OwotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGds
b2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgc2V0UHJvdG9G
dW5jU2l6ZSk7Ci0gICAgYWNjZXNzb3ItPnNldEdldHRlcihleGVjLT52bSgpLCBmdW5jdGlvbik7
Ci0gICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZSwgYWNj
ZXNzb3IsIERvbnRFbnVtIHwgQWNjZXNzb3IpOwotfQotCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBN
YXBEYXRhKiBnZXRNYXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1
ZSkKLXsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFs
dWUpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIEpTU2V0KiBzZXQgPSBqc0R5bmFt
aWNDYXN0PEpTU2V0Kj4odGhpc1ZhbHVlKTsKLSAgICBpZiAoIXNldCkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiU2V0IG9wZXJhdGlvbiBjYWxsZWQg
b24gbm9uLVNldCBvYmplY3QiKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1
cm4gc2V0LT5tYXBEYXRhKCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0
UHJvdG9GdW5jQWRkKENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIE1hcERhdGEqIGRhdGEg
PSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0gICAgaWYg
KCFkYXRhKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGRhdGEtPnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9G
dW5jQ2xlYXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgTWFwRGF0YSogZGF0YSA9IGdl
dE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKLSAgICBpZiAoIWRh
dGEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ZGF0YS0+Y2xlYXIoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwotICAgIGlmICghZGF0YSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkYXRhLT5yZW1vdmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFBy
b3RvRnVuY0ZvckVhY2goQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgTWFwRGF0YSogZGF0
YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKLSAgICBp
ZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgSlNWYWx1ZSBjYWxsQmFjayA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxs
QmFjaywgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6
OkFTQ0lJTGl0ZXJhbCgiU2V0LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxlZCB3aXRob3V0IGNhbGxi
YWNrIikpKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
Ci0gICAgVk0qIHZtID0gJmNhbGxGcmFtZS0+dm0oKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVKUykgewotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2FsbEJhY2spOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoY2FsbEZyYW1l
LCBmdW5jdGlvbiwgMSk7Ci0gICAgICAgIGZvciAoYXV0byBwdHIgPSBkYXRhLT5iZWdpbigpLCBl
bmQgPSBkYXRhLT5lbmQoKTsgcHRyICE9IGVuZCAmJiAhdm0tPmV4Y2VwdGlvbigpOyArK3B0cikg
ewotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKHRoaXNWYWx1ZSk7Ci0gICAgICAgICAg
ICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIHB0ci5rZXkoKSk7Ci0gICAgICAgICAgICBjYWNo
ZWRDYWxsLmNhbGwoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0
byBwdHIgPSBkYXRhLT5iZWdpbigpLCBlbmQgPSBkYXRhLT5lbmQoKTsgcHRyICE9IGVuZCAmJiAh
dm0tPmV4Y2VwdGlvbigpOyArK3B0cikgewotICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHB0ci5rZXkoKSk7Ci0gICAgICAgICAg
ICBKU0M6OmNhbGwoY2FsbEZyYW1lLCBjYWxsQmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0
UHJvdG9GdW5jSGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIE1hcERhdGEqIGRhdGEg
PSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0gICAgaWYg
KCFkYXRhKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRhdGEtPmNvbnRhaW5zKGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAg
IE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZGF0YS0+
c2l6ZShjYWxsRnJhbWUpKSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMDViOTQu
LjAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTZXRQcm90b3R5cGVfaAotI2RlZmluZSBT
ZXRQcm90b3R5cGVfaAotCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWNsYXNzIFNldFByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKLQotICAgIHN0YXRpYyBTZXRQ
cm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgU2V0UHJvdG90eXBl
KiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTZXRQcm90b3R5cGU+KCpl
eGVjLT5oZWFwKCkpKSBTZXRQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKLSAgICAgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTZXRQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAg
OiBCYXNlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKLX07Ci0KLX0KLQotI2Vu
ZGlmIC8vICFkZWZpbmVkKFNldFByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggY2Y0OWE2Ni4uODYwNGExMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC0yNzQsNiArMjc0LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOdW1lcmljU3Ry
aW5ncyBudW1lcmljU3RyaW5nczsKICAgICAgICAgRGF0ZUluc3RhbmNlQ2FjaGUgZGF0ZUluc3Rh
bmNlQ2FjaGU7CiAgICAgICAgIFdURjo6U2ltcGxlU3RhdHMgbWFjaGluZUNvZGVCeXRlc1BlckJ5
dGVjb2RlV29yZEZvckJhc2VsaW5lSklUOworICAgICAgICBWZWN0b3I8Q29kZUJsb2NrKj4gY29k
ZUJsb2Nrc0JlaW5nQ29tcGlsZWQ7CisgICAgICAgIHZvaWQgc3RhcnRlZENvbXBpbGluZyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKKyAgICAgICAgeworICAgICAgICAgICAgY29kZUJsb2Nrc0JlaW5n
Q29tcGlsZWQuYXBwZW5kKGNvZGVCbG9jayk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZp
bmlzaGVkQ29tcGlsaW5nKENvZGVCbG9jayogY29kZUJsb2NrKQorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvZGVCbG9jaywgY29kZUJsb2NrID09IGNvZGVCbG9ja3NCZWlu
Z0NvbXBpbGVkLmxhc3QoKSk7CisgICAgICAgICAgICBjb2RlQmxvY2tzQmVpbmdDb21waWxlZC5y
ZW1vdmVMYXN0KCk7CisgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEluRGVmaW5lT3duUHJv
cGVydHkoYm9vbCBpbkRlZmluZU93blByb3BlcnR5KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZkNjg4NmMu
LmJiYmFlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDEyMiArMSwzIEBACi0yMDEzLTA5LTAzICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBTdXBwb3J0IFZlY3RvcjxSZWY8VD4+Lgot
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIwNjM3PgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgIEFkZCBhIFJlZihjb25zdCBUJikgY29uc3Ry
dWN0b3IgdG8gZW5hYmxlIFZlY3RvcjxSZWY8VD4+LiBUaGlzIGxvb2tzIGEgYml0IGF3a3dhcmQK
LSAgICAgICAgYnV0IGlzIG5lY2Vzc2FyeSBmb3IgVmVjdG9yOjphcHBlbmQoY29uc3QgVCYpIHRv
IGZpbmQgYSBjb25zdHJ1Y3Rvci4KLQotICAgICAgICBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0
byBhZGQgc29tZXRoaW5nIGxpa2Ugc3RkOjp2ZWN0b3I6OmVtcGxhY2VfYmFjaywgYnV0IEkgY2Fu
J3QKLSAgICAgICAgdGhpbmsgb2YgYSBnb29kIG5hbWUgZm9yIHRoYXQsIGFuZCBpdCdkIGJlIG5p
Y2UgaWYgYXBwZW5kKCkgd291bGQgImp1c3Qgd29yay4iCi0KLSAgICAgICAgQWxzbyBhZGQgb3Bl
cmF0b3ItPigpLiBJIGluaXRpYWxseSBleGNsdWRlZCB0aGlzIGJlY2F1c2UgSSBmZWx0IGl0IG1h
ZGUgZm9yCi0gICAgICAgIHVuc2FmZS1sb29raW5nIGNvZGUuIFRoaW5ncyBxdWlja2x5IGdvdCBv
dXQgb2YgaGFuZCB3aXRoIC5nZXQoKSBldmVyeXdoZXJlIHRob3VnaC4KLQotICAgICAgICBJTU8g
LT4gbG9va3MgT0sgYXMgbG9uZyBhcyBpdCdzIG9ubHkgdXNlZCBvbiB0aGUgZmlyc3QgbGluayBp
biBhIGRlcmVmZXJlbmNlIGNoYWluLAotICAgICAgICBhcyB0aGF0IHZhcmlhYmxlIGFuZCBpdHMg
dHlwZSB3aWxsIGJlICJpbiBjb250ZXh0LiIKLQotICAgICAgICAqIHd0Zi9SZWYuaDoKLSAgICAg
ICAgKFdURjo6UmVmOjpSZWYpOgotICAgICAgICAoV1RGOjpSZWY6On5SZWYpOgotICAgICAgICAo
V1RGOjpSZWY6Om9wZXJhdG9yLT4pOgotICAgICAgICAoV1RGOjpSZWY6OmdldCk6Ci0gICAgICAg
ICogd3RmL1ZlY3RvclRyYWl0cy5oOgotCi0gICAgICAgICAgICBBZGQgc2ltcGxlIHRyYWl0cyBm
b3IgUmVmPFQ+IHNvIGl0IGNhbiBiZSBtb3ZlZCBhcm91bmQgZnJlZWx5IGJ5IFZlY3Rvci4KLQot
MjAxMy0wOS0wMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVs
LmNvbT4KLQotICAgICAgICBDaGVjayBXVEY6OlZlY3RvckZpbGxlciB0ZW1wbGF0ZSBhcmd1bWVu
dCB0eXBlIHNpemUgaW4gY29tcGlsZSB0aW1lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2MzEKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KLQotICAgICAgICBUaGUgdGVtcGxhdGUgYXJndW1lbnQncyB0eXBlIHNpemUgaW4gV1RG
OjpWZWN0b3JGaWxsZXIgJ21lbXNldCcgc3BlY2lhbGl6YXRpb24KLSAgICAgICAgc2hvdWxkIGJl
IGNoZWNrZWQgZHVyaW5nIGNvbXBpbGF0aW9uIHJhdGhlciB0aGFuIGluIHJ1bnRpbWUuCi0KLSAg
ICAgICAgKiB3dGYvVmVjdG9yLmg6Ci0KLTIwMTMtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgotCi0gICAgICAgIEN1dCBkb3duIG9uIGRvdWJsZSBoYXNoaW5nIGFuZCBjb2Rl
IG5lZWRsZXNzbHkgdXNpbmcgaGFzaCB0YWJsZSBpdGVyYXRvcnMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDYxMQotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgRG91YmxlIGhhc2hpbmcgaXMgY29tbW9uIGlu
IGNvZGUgdGhhdCBuZWVkcyB0byBjb21iaW5lIGEgcmVtb3ZlIHdpdGggc29tZQotICAgICAgICBh
Y3Rpb24gdG8gb25seSBiZSBkb25lIGlmIHRoZSBjb2RlIGlzIHJlbW92ZWQuIFRoZSBvbmx5IHdh
eSB0byBhdm9pZCBpdCBpcwotICAgICAgICB0byB3cml0ZSBjb2RlIHVzaW5nIGZpbmQgYW5kIGEg
aGFzaCB0YWJsZSBpdGVyYXRvci4gVG8gaGVscCB3aXRoIHRoaXMsIGFkZAotICAgICAgICBhIGJv
b2xlYW4gcmV0dXJuIHZhbHVlIHRvIHJlbW92ZSBmdW5jdGlvbnMgdG8gaW5kaWNhdGUgaWYgYW55
dGhpbmcgd2FzIHJlbW92ZWQuCi0KLSAgICAgICAgRG91YmxlIGhhc2hpbmcgYWxzbyBoYXBwZW5z
IGluIGNvZGUgdGhhdCBkb2VzIGEgZ2V0IGZvbGxvd2VkIGJ5IGEgcmVtb3ZlLgotICAgICAgICBU
aGUgdGFrZSBmdW5jdGlvbiBpcyBoZWxwZnVsIGluIHRoaXMgY2FzZS4gVG8gaGVscCB3aXRoIHRo
aXMsIGFkZCBhIHRha2VGaXJzdAotICAgICAgICBmdW5jaXRvbiB0byBMaXN0SGFzaFNldC4KLQot
ICAgICAgICAqIHd0Zi9IYXNoQ291bnRlZFNldC5oOgotICAgICAgICAoV1RGOjpIYXNoQ291bnRl
ZFNldDo6cmVtb3ZlQWxsKTogQWRkZWQgYSBib29sZWFuIHJldHVybiB2YWx1ZSwgYW5hbG9nb3Vz
IHRvIHRoZSBvbmUKLSAgICAgICAgdGhhdCB0aGUgSGFzaENvdW50ZWRTZXQ6OnJlbW92ZSBmdW5j
dGlvbiBhbHJlYWR5IGhhcy4KLQotICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6Ci0gICAgICAgIChX
VEY6Okhhc2hNYXA6OnJlbW92ZSk6IEFkZGVkIGEgYm9vbGVhbiByZXR1cm4gdmFsdWUsIHRydWUg
aWYgc29tZXRoaW5nIHdhcyByZW1vdmVkLgotICAgICAgICAqIHd0Zi9IYXNoU2V0Lmg6Ci0gICAg
ICAgIChXVEY6Okhhc2hTZXQ6OnJlbW92ZSk6IERpdHRvLgotICAgICAgICAqIHd0Zi9SZWZQdHJI
YXNoTWFwLmg6Ci0gICAgICAgIChXVEY6OlJlZlB0ckhhc2hNYXA6OnJlbW92ZSk6IERpdHRvLgot
Ci0gICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6Ci0gICAgICAgIChXVEY6Okxpc3RIYXNoU2V0
Ojp0YWtlRmlyc3QpOiBBZGRlZC4KLSAgICAgICAgKFdURjo6TGlzdEhhc2hTZXQ6OnRha2VMYXN0
KTogQWRkZWQuCi0gICAgICAgIChXVEY6Okxpc3RIYXNoU2V0OjpyZW1vdmUpOiBBZGRlZCBhIGJv
b2xlYW4gcmV0dXJuIHZhbHVlLCB0cnVlIGlmIHNvbWV0aGluZyB3YXMgcmVtb3ZlZC4KLQotICAg
ICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6Ci0gICAgICAgIChKU0M6OklkZW50aWZpZXJUYWJs
ZTo6cmVtb3ZlKTogVXNlIHRoZSBuZXcgcmVtb3ZlIHJldHVybiB2YWx1ZSB0byBnZXQgcmlkIG9m
IG1vc3Qgb2YKLSAgICAgICAgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbi4KLQotMjAxMy0wOS0w
MiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSBk
dXBsaWNhdGUgZW50cmllcyBmb3VuZCBieSBYY29kZSBpbiBXVEYgcHJvamVjdAotCi0gICAgICAg
IFBsYXRmb3JtLmggd2FzIGR1cGxpY2F0ZWQgaW4gcjExMTc3OCBhZnRlciBiZWluZyBhZGRlZCBp
bgotICAgICAgICByMTExNTA0LgotCi0gICAgICAgIEEgZGFuZ2xpbmcgcmVmZXJlbmNlIHRvIFJl
Zi5oIHdhcyBhZGRlZCBpbiByMTU0OTYyLgotCi0gICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IFJlbW92ZSBkdXBsaWNhdGUgZW50cmllcyBmb3IKLSAgICAgICAgUGxhdGZv
cm0uaCBhbmQgUmVmLmguCi0KLTIwMTMtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBw
bGUuY29tPgotCi0gICAgICAgIEFjdHVhbGx5IGFkZCBSZWYuaAotCi0yMDEzLTA5LTAyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBbTWFjXSBObyBuZWVkIGZvciBI
YXJkQXV0b3JlbGVhc2UsIHdoaWNoIGlzIHNhbWUgYXMgQ0ZCcmlkZ2luZ1JlbGVhc2UKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCi0KLSAgICAgICAgKiB3dGYvT2JqY1J1bnRpbWVF
eHRyYXMuaDogQWRkZWQgYSBGSVhNRSBhYm91dCBtaXNjYXBpdGFsaXphdGlvbiBvZiBPYmpDLgot
ICAgICAgICBEZWxldGVkIEhhcmRBdXRvcmVsZWFzZS4KLSAgICAgICAgKHd0Zk9iamNNc2dTZW5k
KTogRHJvcHBlZCB0aGUgdXNlIG9mIGFiYnJldmlhdGlvbnMgaW4gbG9jYWwgY2xhc3MgYW5kIGFy
Z3VtZW50IG5hbWVzLgotICAgICAgICAod3RmQ2FsbElNUCk6IERpdHRvLgotCi0yMDEzLTA5LTAx
ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBSZWY6IEEgc21h
cnQgcG9pbnRlciBmb3IgdGhlIHJlZmVyZW5jZSBhZ2UuCi0gICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xMjA1NzA+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCi0K
LSAgICAgICAgQWRkIGEgdmVyeSBzaW1wbGUgc2ltcGxlIFJlZjxUPiBzbWFydCBwb2ludGVyIGNs
YXNzIHRoYXQgaXMgbmV2ZXIgbnVsbC4KLSAgICAgICAgSXQncyBpbml0aWFsaXplZCBieSBwYXNz
aW5nIGEgVCYgdG8gdGhlIGNvbnN0cnVjdG9yIGFuZCBjYW5ub3QgYmUgYXNzaWduZWQgdG8uCi0K
LSAgICAgICAgb3BlcmF0b3ItPiBpcyBub3Qgb3ZlcmxvYWRlZCwgdG8gcHJldmVudCB1bnNhZmUt
bG9va2luZyBjb2RlLgotICAgICAgICBUaGUgdmFsdWUgaXMgZXh0cmFjdGVkIGJ5ICJUJiBnZXQo
KSIsIHNpbmNlIEMrKyBkb2VzIG5vdCBsZXQgeW91IG92ZXJyaWRlIG9wZXJhdG9yLigpCi0KLSAg
ICAgICAgKiB3dGYvUmVmLmg6Ci0KIDIwMTMtMDgtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIEpTVmFsdWUgYm9vbCBjb252ZXJzaW9uIGxlc3MgZGFu
Z2Vyb3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dURi5w
cm8KaW5kZXggMThiNzNlNC4uMDBiOTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYucHJv
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtODUsNyArODUsNiBAQCBIRUFERVJTICs9IFwK
ICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRvci5oIFwKICAgICBNZXRhQWxs
b2NhdG9ySGFuZGxlLmggXAotICAgIFJlZi5oIFwKICAgICBOb25jb3B5YWJsZS5oIFwKICAgICBO
b25Db3B5aW5nU29ydC5oIFwKICAgICBOb3RGb3VuZC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RGLnZjeHBy
b2ovV1RGLnZjeHByb2ouZmlsdGVycwppbmRleCBhNWIxMGQ4Li5hMWFjYjUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC00OTQsOSArNDk0LDYgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxOZXZlckRlc3Ryb3llZC5oIj4NCiAgICAg
ICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KICAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcUmVmLmgiPg0KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQot
ICAgIDwvQ2xJbmNsdWRlPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxOb25jb3B5
YWJsZS5oIj4NCiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPg0KICAgICA8L0NsSW5jbHVkZT4N
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NWE3MzAwLi5j
M2M5ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0
LDcgKzU0LDYgQEAKIAkJMUZBNDdDOEExNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBNDdD
ODgxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuY3BwICovOyB9OwogCQkxRkE0N0M4
QjE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBNDdDODkxNTI1MDJEQTAwNTY4RDFCIC8qIFdl
YkNvcmVUaHJlYWQuaCAqLzsgfTsKIAkJMjYxNDdCMEExNUREQ0NEQzAwRERCOTA3IC8qIEludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmggKi87IH07Ci0JCTI2Mjk5QjZFMTdBOUU1QjgwMEFERUJFNSAvKiBSZWYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2Mjk5QjZEMTdB
OUU1QjgwMEFERUJFNSAvKiBSZWYuaCAqLzsgfTsKIAkJMkMwNTM4NTQxNUJDODE5MDAwRjIxQjk2
IC8qIEdyZWdvcmlhbkRhdGVUaW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyQzA1Mzg1MzE1QkM4MTkwMDBGMjFCOTYgLyogR3JlZ29yaWFuRGF0ZVRp
bWUuaCAqLzsgfTsKIAkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJD
Q0Q4OTI5MTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgKi87IH07CiAJ
CTQ0RjY2MDA4MTcxQUZBRTYwMEU0QUQxOSAvKiBFbnVtQ2xhc3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RjY2MDA3MTcxQUZBQTkwMEU0QUQxOSAv
KiBFbnVtQ2xhc3MuaCAqLzsgfTsKQEAgLTE4Myw2ICsxODIsNyBAQAogCQlBOEE0NzQwQjE1MUE4
MjVCMDA0MTIzRkYgLyogUGFzc093blB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDcyRUMxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NPd25QdHIu
aCAqLzsgfTsKIAkJQThBNDc0MEMxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NSZWZQdHIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkVEMTUxQTgy
NUIwMDQxMjNGRiAvKiBQYXNzUmVmUHRyLmggKi87IH07CiAJCUE4QTQ3NDBEMTUxQTgyNUIwMDQx
MjNGRiAvKiBQYXNzVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEE0NzJFRTE1MUE4MjVCMDA0MTIzRkYgLyogUGFzc1RyYWl0cy5oICovOyB9
OworCQlBOEE0NzQwRTE1MUE4MjVCMDA0MTIzRkYgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkVGMTUxQTgyNUIwMDQxMjNG
RiAvKiBQbGF0Zm9ybS5oICovOyB9OwogCQlBOEE0NzQwRjE1MUE4MjVCMDA0MTIzRkYgLyogUG9z
c2libHlOdWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJGMzE1MUE4MjVCMDA0MTIzRkYgLyogUG9zc2libHlOdWxsLmggKi87IH07CiAJCUE4
QTQ3NDE0MTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyRkIxNTFBODI1QjAwNDEyM0ZG
IC8qIFJhbmRvbU51bWJlci5jcHAgKi87IH07CiAJCUE4QTQ3NDE1MTUxQTgyNUIwMDQxMjNGRiAv
KiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QTQ3MkZDMTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuaCAqLzsgfTsK
QEAgLTMyMCw3ICszMjAsNiBAQAogCQkxRkE0N0M4ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29y
ZVRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3Jl
VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJE
QTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ29yZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0
N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI2Mjk5QjZEMTdBOUU1QjgwMEFERUJFNSAv
KiBSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJDMDUzODUzMTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3Jp
YW5EYXRlVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmVnb3JpYW5E
YXRlVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQ0NEODkyOTE1QzAzOTAy
MDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JlZ29yaWFuRGF0ZVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NERFRTc0QTE1MjI3NEJCMDBDNkVDMzcgLyogaU9TLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGlPUy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQ1OSw2ICs0NTgsNyBAQAogCQlBOEE0NzJFQzE1MUE4MjVCMDA0MTIz
RkYgLyogUGFzc093blB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNz
T3duUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkVEMTUxQTgyNUIw
MDQxMjNGRiAvKiBQYXNzUmVmUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhc3NSZWZQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyRUUxNTFB
ODI1QjAwNDEyM0ZGIC8qIFBhc3NUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFzc1RyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEE0NzJF
RjE1MUE4MjVCMDA0MTIzRkYgLyogUGxhdGZvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGxhdGZvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcy
RjMxNTFBODI1QjAwNDEyM0ZGIC8qIFBvc3NpYmx5TnVsbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQb3NzaWJseU51bGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThBNDcyRkIxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21OdW1iZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJGQzE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVt
YmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmRvbU51bWJlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA4LDcgKzcwOCw2IEBACiAJCQkJQThBNDcy
Q0UxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKIAkJCQlBOEE0NzJDRjE1
MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oICovLAogCQkJCTFBM0Y2QkU2
MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAotCQkJCTI2Mjk5QjZEMTdB
OUU1QjgwMEFERUJFNSAvKiBSZWYuaCAqLywKIAkJCQkwRjBEODVCMzE3MjM0Q0IxMDAzMzgyMTAg
LyogTm9Mb2NrLmggKi8sCiAJCQkJQThBNDcyRDAxNTFBODI1QjAwNDEyM0ZGIC8qIE5vbmNvcHlh
YmxlLmggKi8sCiAJCQkJQThBNDcyRDExNTFBODI1QjAwNDEyM0ZGIC8qIE5vbkNvcHlpbmdTb3J0
LmggKi8sCkBAIC03MzgsNiArNzM3LDcgQEAKIAkJCQlBOEE0NzJFQzE1MUE4MjVCMDA0MTIzRkYg
LyogUGFzc093blB0ci5oICovLAogCQkJCUE4QTQ3MkVEMTUxQTgyNUIwMDQxMjNGRiAvKiBQYXNz
UmVmUHRyLmggKi8sCiAJCQkJQThBNDcyRUUxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NUcmFpdHMu
aCAqLywKKwkJCQlBOEE0NzJFRjE1MUE4MjVCMDA0MTIzRkYgLyogUGxhdGZvcm0uaCAqLywKIAkJ
CQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLywKIAkJCQlBOEE0NzJG
MzE1MUE4MjVCMDA0MTIzRkYgLyogUG9zc2libHlOdWxsLmggKi8sCiAJCQkJMEY5RDMzNUQxNjVE
QkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLywKQEAgLTEwMDEsNyArMTAwMSw2IEBA
CiAJCQkJQThBNDczREExNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0RCMTUxQTgyNUIwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QTQ3M0RDMTUxQTgyNUIwMDQxMjNGRiAvKiBJbmxpbmVBU00uaCBpbiBI
ZWFkZXJzICovLAotCQkJCTI2Mjk5QjZFMTdBOUU1QjgwMEFERUJFNSAvKiBSZWYuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MERBMDg0MTc5OUYwNEQwMDUyOUE5QiAvKiBJbnNlcnRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NTE3OTlGMDREMDA1MjlB
OUIgLyogTGlzdER1bXAuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzOCw2ICsxMDM3LDcgQEAKIAkJ
CQlBOEE0NzQwQzE1MUE4MjVCMDA0MTIzRkYgLyogUGFzc1JlZlB0ci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDc0MEQxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NUcmFpdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQThBNDc0MEUxNTFBODI1QjAwNDEyM0ZGIC8qIFBsYXRmb3JtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzQwRjE1MUE4MjVCMDA0MTIzRkYgLyogUG9zc2libHlOdWxsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzQ0ODgzMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9j
ZXNzSUQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA2YjM2N2NiLi45
YTU5MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNTUsNyArNTUsNiBAQCBzZXQoV1RGX0hF
QURFUlMKICAgICBNZXRhQWxsb2NhdG9ySGFuZGxlLmgKICAgICBOb25Db3B5aW5nU29ydC5oCiAg
ICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCi0gICAgUmVmLmgKICAgICBOb25jb3B5YWJs
ZS5oCiAgICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDU5YTVkYzAu
LjJhNDc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc093blB0cjsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFJlZlB0cjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWY7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXI+IGNsYXNzIFZlY3RvcjsKIAogICAgIGNsYXNzIEF0b21pY1N0cmluZzsKQEAgLTU2
LDcgKzU1LDYgQEAgdXNpbmcgV1RGOjpQYXNzT3duQXJyYXlQdHI7CiB1c2luZyBXVEY6OlBhc3NP
d25QdHI7CiB1c2luZyBXVEY6OlBhc3NSZWZQdHI7CiB1c2luZyBXVEY6OlJlZlB0cjsKLXVzaW5n
IFdURjo6UmVmOwogdXNpbmcgV1RGOjpWZWN0b3I7CiAKIHVzaW5nIFdURjo6QXRvbWljU3RyaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaCBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKaW5kZXggMzY3MzY4OC4uZWZmNGEyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoQ291bnRlZFNldC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NSwgMjAwNiwgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02OCw4ICs2OCw4IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICBib29sIHJlbW92ZShpdGVyYXRvcik7CiAgCiAgICAgICAgIC8vIFJlbW92ZXMg
dGhlIHZhbHVlLCByZWdhcmRsZXNzIG9mIGl0cyBjb3VudC4KLSAgICAgICAgYm9vbCByZW1vdmVB
bGwoaXRlcmF0b3IpOwotICAgICAgICBib29sIHJlbW92ZUFsbChjb25zdCBWYWx1ZVR5cGUmKTsK
KyAgICAgICAgdm9pZCByZW1vdmVBbGwoaXRlcmF0b3IpOworICAgICAgICB2b2lkIHJlbW92ZUFs
bChjb25zdCBWYWx1ZVR5cGUmKTsKIAogICAgICAgICAvLyBDbGVhcnMgdGhlIHdob2xlIHNldC4K
ICAgICAgICAgdm9pZCBjbGVhcigpOwpAQCAtMTgzLDE5ICsxODMsMTggQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIGJvb2wgSGFzaENvdW50
ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZUFsbChjb25zdCBWYWx1
ZVR5cGUmIHZhbHVlKQorICAgIGlubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmVBbGwoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiByZW1vdmVBbGwoZmluZCh2YWx1ZSkpOworICAgICAgICByZW1v
dmVBbGwoZmluZCh2YWx1ZSkpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGlu
ZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1v
dmVBbGwoaXRlcmF0b3IgaXQpCisgICAgaW5saW5lIHZvaWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUs
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZUFsbChpdGVyYXRvciBpdCkKICAgICB7CiAg
ICAgICAgIGlmIChpdCA9PSBlbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2ltcGwucmVtb3ZlKGl0KTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKaW5kZXggMDM3YmFm
MS4uNzA4ZThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hNYXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMTA2LDggKzEwNiw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyBhbmQgYSBib29s
ZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAogICAgICAg
ICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAotICAg
ICAgICBib29sIHJlbW92ZShjb25zdCBLZXlUeXBlJik7Ci0gICAgICAgIGJvb2wgcmVtb3ZlKGl0
ZXJhdG9yKTsKKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOworICAgICAgICB2
b2lkIHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgIHZvaWQgY2xlYXIoKTsKIAogICAgICAgICBN
YXBwZWRQYXNzT3V0VHlwZSB0YWtlKGNvbnN0IEtleVR5cGUmKTsgLy8gZWZmaWNpZW50IGNvbWJp
bmF0aW9uIG9mIGdldCB3aXRoIHJlbW92ZQpAQCAtMzgwLDE5ICszODAsMTggQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAgaW5saW5lIHZvaWQgSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogICAgIHsKICAgICAgICAg
aWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbC5pbnRlcm5hbENoZWNrVGFibGVD
b25zaXN0ZW5jeSgpOwogICAgICAgICBtX2ltcGwucmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVu
Y3lDaGVjayhpdC5tX2ltcGwpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgotICAgIGlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92
ZShjb25zdCBLZXlUeXBlJiBrZXkpCisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKICAgICB7Ci0gICAgICAgIHJldHVybiBy
ZW1vdmUoZmluZChrZXkpKTsKKyAgICAgICAgcmVtb3ZlKGZpbmQoa2V5KSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hTZXQuaAppbmRleCA2MDdiNmJjLi4yMDg1NTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04OCw4ICs4OCw4IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CiAgICAg
ICAgIGJvb2wgYWRkKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCk7CiAKLSAg
ICAgICAgYm9vbCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7Ci0gICAgICAgIGJvb2wgcmVtb3Zl
KGl0ZXJhdG9yKTsKKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CisgICAg
ICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwogCiAgICAg
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmKTsKQEAgLTIwNCwx
OSArMjA0LDE4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxU
LCBVLCBWPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwg
VSwgVj46OnJlbW92ZShpdGVyYXRvciBpdCkKICAgICB7CiAgICAgICAgIGlmIChpdC5tX2ltcGwg
PT0gbV9pbXBsLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2ltcGwuaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsK
ICAgICAgICAgbV9pbXBsLnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXQubV9p
bXBsKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQs
IFUsIFY+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICBpbmxpbmUgdm9pZCBI
YXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOworICAgICAgICByZW1vdmUoZmluZCh2
YWx1ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oIGIvU291
cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAppbmRleCAwNzMyMTYwLi43ODYzOWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xp
c3RIYXNoU2V0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIEJlbmphbWluIFBvdWxhaW4gPGlraXBvdUBnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAt
MTA3LDEyICsxMDcsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIFZhbHVlVHlwZSYgZmly
c3QoKTsKICAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBmaXJzdCgpIGNvbnN0OwogICAgICAgICB2
b2lkIHJlbW92ZUZpcnN0KCk7Ci0gICAgICAgIFZhbHVlVHlwZSB0YWtlRmlyc3QoKTsKIAogICAg
ICAgICBWYWx1ZVR5cGUmIGxhc3QoKTsKICAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBsYXN0KCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcmVtb3ZlTGFzdCgpOwotICAgICAgICBWYWx1ZVR5cGUgdGFr
ZUxhc3QoKTsKIAogICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYpOwogICAg
ICAgICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OwpAQCAtMTQy
LDggKzE0MCw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBBZGRSZXN1bHQgaW5zZXJ0QmVm
b3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFs
dWUpOwogICAgICAgICBBZGRSZXN1bHQgaW5zZXJ0QmVmb3JlKGl0ZXJhdG9yLCBjb25zdCBWYWx1
ZVR5cGUmKTsKIAotICAgICAgICBib29sIHJlbW92ZShjb25zdCBWYWx1ZVR5cGUmKTsKLSAgICAg
ICAgYm9vbCByZW1vdmUoaXRlcmF0b3IpOworICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBWYWx1
ZVR5cGUmKTsKKyAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IpOwogICAgICAgICB2b2lkIGNs
ZWFyKCk7CiAKICAgICBwcml2YXRlOgpAQCAtNjMxLDE0ICs2MjksNiBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIFU+Ci0gICAgaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNp
dHksIFU+Ojp0YWtlRmlyc3QoKQotICAgIHsKLSAgICAgICAgVCByZXN1bHQgPSBmaXJzdCgpOwot
ICAgICAgICByZW1vdmVGaXJzdCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
VT4KICAgICBpbmxpbmUgY29uc3QgVCYgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+
OjpmaXJzdCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CkBAIC02
NjgsMTQgKzY1OCw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBpbmxpbmUg
VCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OnRha2VMYXN0KCkKLSAgICB7Ci0g
ICAgICAgIFQgcmVzdWx0ID0gbGFzdCgpOwotICAgICAgICByZW1vdmVMYXN0KCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgogICAgIGlubGluZSB0eXBlbmFtZSBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yIExpc3RIYXNoU2V0PFQsIGlubGlu
ZUNhcGFjaXR5LCBVPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAg
ICAgSW1wbFR5cGVJdGVyYXRvciBpdCA9IG1faW1wbC50ZW1wbGF0ZSBmaW5kPEJhc2VUcmFuc2xh
dG9yPih2YWx1ZSk7CkBAIC03NzksMTkgKzc2MSwxOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIFU+Ci0gICAgaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+
OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAgaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5s
aW5lQ2FwYWNpdHksIFU+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiAgICAgewogICAgICAgICBpZiAo
aXQgPT0gZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIG1faW1wbC5yZW1vdmUoaXQubm9kZSgpKTsKICAgICAgICAgdW5saW5rQW5k
RGVsZXRlKGl0Lm5vZGUoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAg
ICBpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OnJlbW92ZShj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKQorICAgIGlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIGlu
bGluZUNhcGFjaXR5LCBVPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKKyAgICAgICAgcmVtb3ZlKGZpbmQo
dmFsdWUpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIFU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PYmpjUnVu
dGltZUV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvT2JqY1J1bnRpbWVFeHRyYXMuaAppbmRleCA4
OWI5ZjRiLi5iMmYyMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmpjUnVudGltZUV4
dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0cmFzLmgKQEAgLTI1LDI1
ICsyNSwzOCBAQAogI2lmbmRlZiBXVEZfT2JqY1J1bnRpbWVFeHRyYXNfaAogI2RlZmluZSBXVEZf
T2JqY1J1bnRpbWVFeHRyYXNfaAogCi0vLyBGSVhNRTogVGhpcyBmaWxlJ3MgbmFtZSBhbmQgZnVu
Y3Rpb24gbmFtZXMgcmVmZXIgdG8gT2JqZWN0aXZlLUMgYXMgT2JqYyB3aXRoIGEgbG93ZXJjYXNl
IEMsCi0vLyBidXQgaXQgc2hvdWxkIGJlIE9iakMgd2l0aCBhbiB1cHBlcmNhc2UgQy4KLQogI2lu
Y2x1ZGUgPG9iamMvbWVzc2FnZS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKLQotdGVtcGxhdGU8
dHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KLWlubGluZSBS
ZXR1cm5UeXBlIHd0Zk9iamNNc2dTZW5kKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cykKK3RlbXBsYXRlPHR5cGVuYW1lIFJldFR5cGUsIHR5cGVuYW1l
Li4uIEFyZ1R5cGVzPgoraW5saW5lIFJldFR5cGUgd3RmT2JqY01zZ1NlbmQoaWQgdGFyZ2V0LCBT
RUwgc2VsZWN0b3IsIEFyZ1R5cGVzLi4uIGFyZ3MpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8UmV0dXJuVHlwZSAoKikoaWQsIFNFTCwgQXJndW1lbnRUeXBlcy4uLik+KG9iamNfbXNn
U2VuZCkodGFyZ2V0LCBzZWxlY3RvciwgYXJndW1lbnRzLi4uKTsKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmdUeXBlcy4uLik+KG9iamNfbXNnU2Vu
ZCkodGFyZ2V0LCBzZWxlY3RvciwgYXJncy4uLik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJl
dHVyblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+Ci1pbmxpbmUgUmV0dXJuVHlwZSB3
dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFy
Z3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQordGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlwZSwgdHlw
ZW5hbWUuLi4gQXJnVHlwZXM+CitpbmxpbmUgUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1l
bnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZ1R5cGVzLi4uIGFyZ3MpCiB7Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmV0dXJuVHlwZSAoKikoaWQsIFNFTCwgQXJndW1l
bnRUeXBlcy4uLik+KGltcGxlbWVudGF0aW9uKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmd1bWVudHMu
Li4pOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFJldFR5cGUgKCopKGlkLCBTRUwsIEFy
Z1R5cGVzLi4uKT4oaW1wbGVtZW50YXRpb24pKHRhcmdldCwgc2VsZWN0b3IsIGFyZ3MuLi4pOwog
fQotCiAjZW5kaWYgLy8gX19jcGx1c3BsdXMKIAorI2lmZGVmIF9fT0JKQ19fCisvLyBVc2UgSGFy
ZEF1dG9yZWxlYXNlIHRvIHJldHVybiBhbiBvYmplY3QgbWFkZSBieSBhIENvcmUgRm91bmRhdGlv
bgorLy8gImNyZWF0ZSIgb3IgImNvcHkiIGZ1bmN0aW9uIGFzIGFuIGF1dG9yZWxlYXNlZCBhbmQg
Z2FyYmFnZSBjb2xsZWN0ZWQKKy8vIG9iamVjdC4gQ0Ygb2JqZWN0cyBuZWVkIHRvIGJlICJtYWRl
IGNvbGxlY3RhYmxlIiBmb3IgYXV0b3JlbGVhc2UgdG8gd29yaworLy8gcHJvcGVybHkgdW5kZXIg
R0MuCitpbmxpbmUgaWQgSGFyZEF1dG9yZWxlYXNlKENGVHlwZVJlZiBvYmplY3QpCit7CisjaWZu
ZGVmIE9CSkNfTk9fR0MKKyAgICBpZiAob2JqZWN0KQorICAgICAgICBDRk1ha2VDb2xsZWN0YWJs
ZShvYmplY3QpOworI2VuZGlmCisjaWYgIV9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisgICAgWyhp
ZClvYmplY3QgYXV0b3JlbGVhc2VdOworI2VuZGlmCisgICAgcmV0dXJuIChpZClvYmplY3Q7Cit9
CisjZW5kaWYgLy8gX19PQkpDX18KKwogI2VuZGlmIC8vIFdURl9PYmpjUnVudGltZUV4dHJhc19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2VjZDliLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1JlZi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV1RGX1JlZl9oCi0jZGVmaW5lIFdURl9SZWZfaAotCi0jaW5jbHVkZSA8
d3RmL0NvbXBpbGVyLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBSZWYgewotcHVibGljOgotICAgIC8vIFJlZihjb25zdCBUJikgbG9va3MgYXdrd2Fy
ZCBidXQgbWFrZXMgVmVjdG9yPFJlZjxUPj4gcG9zc2libGUuCi0gICAgUmVmKGNvbnN0IFQmIG9i
amVjdCkgOiBtX3B0cigmY29uc3RfY2FzdDxUJj4ob2JqZWN0KSkgeyBtX3B0ci0+cmVmKCk7IH0K
LSAgICBSZWYoVCYgb2JqZWN0KSA6IG1fcHRyKCZvYmplY3QpIHsgbV9wdHItPnJlZigpOyB9Ci0K
LSAgICB+UmVmKCkgeyBtX3B0ci0+ZGVyZWYoKTsgfQotCi0gICAgY29uc3QgVCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJu
IG1fcHRyOyB9Ci0KLSAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0K
LSAgICBUJiBnZXQoKSB7IHJldHVybiAqbV9wdHI7IH0KLQotcHJpdmF0ZToKLSAgICBSZWYoY29u
c3QgUmVmJik7Ci0gICAgUmVmJiBvcGVyYXRvcj0oY29uc3QgUmVmPFQ+Jik7Ci0KLSAgICBUKiBt
X3B0cjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlJlZjsKLQotI2Vu
ZGlmIC8vIFdURl9SZWZfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1h
cC5oIGIvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCmluZGV4IDAxY2NlNmUuLjk1NDE4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTk2LDkgKzk2LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIEFkZFJlc3VsdCBh
ZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOwogICAgICAgICBBZGRSZXN1bHQg
YWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblR5cGUpOwogCi0gICAgICAgIGJvb2wgcmVtb3Zl
KGNvbnN0IEtleVR5cGUmKTsKLSAgICAgICAgYm9vbCByZW1vdmUoUmF3S2V5VHlwZSk7Ci0gICAg
ICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5
VHlwZSYpOworICAgICAgICB2b2lkIHJlbW92ZShSYXdLZXlUeXBlKTsKKyAgICAgICAgdm9pZCBy
ZW1vdmUoaXRlcmF0b3IpOwogICAgICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAgICAgTWFwcGVk
UGFzc091dFR5cGUgdGFrZShjb25zdCBLZXlUeXBlJik7IC8vIGVmZmljaWVudCBjb21iaW5hdGlv
biBvZiBnZXQgd2l0aCByZW1vdmUKQEAgLTI3NSwyNSArMjc1LDI0IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIGJvb2wgSGFzaE1hcDxSZWZQ
dHI8VD4sIFUsIFYsIFcsIFg+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAgaW5saW5lIHZvaWQg
SGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiAgICAg
ewogICAgICAgICBpZiAoaXQubV9pbXBsID09IG1faW1wbC5lbmQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pbXBsLmludGVybmFs
Q2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIG1faW1wbC5yZW1vdmVXaXRob3V0RW50
cnlDb25zaXN0ZW5jeUNoZWNrKGl0Lm1faW1wbCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIGJvb2wgSGFzaE1hcDxSZWZQdHI8VD4s
IFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIGlubGluZSB2b2lk
IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtl
eSkKICAgICB7Ci0gICAgICAgIHJldHVybiByZW1vdmUoZmluZChrZXkpKTsKKyAgICAgICAgcmVt
b3ZlKGZpbmQoa2V5KSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgYm9v
bCBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OnJlbW92ZShSYXdLZXlUeXBlIGtleSkK
KyAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OnJlbW92ZShS
YXdLZXlUeXBlIGtleSkKICAgICB7Ci0gICAgICAgIHJldHVybiByZW1vdmUoZmluZChrZXkpKTsK
KyAgICAgICAgcmVtb3ZlKGZpbmQoa2V5KSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9y
LmgKaW5kZXggZDY5OWQ0Ni4uNTM1YjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVj
dG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRG
aWxsKFQqIGRzdCwgVCogZHN0RW5kLCBjb25zdCBUJiB2YWwpIAogICAgICAgICB7Ci0gICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoVCkgPT0gc2l6ZW9mKGNoYXIpLCBTaXplX29mX3R5
cGVfc2hvdWxkX2JlX2VxdWFsX3RvX29uZSk7CisgICAgICAgICAgICBBU1NFUlQoc2l6ZW9mKFQp
ID09IHNpemVvZihjaGFyKSk7CiAjaWYgQ09NUElMRVIoR0NDKSAmJiBkZWZpbmVkKF9GT1JUSUZZ
X1NPVVJDRSkKICAgICAgICAgICAgIGlmICghX19idWlsdGluX2NvbnN0YW50X3AoZHN0RW5kIC0g
ZHN0KSB8fCAoIShkc3RFbmQgLSBkc3QpKSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVmVjdG9yVHJhaXRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAppbmRl
eCBkN2Q3ZGM3Li40YjA4MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFp
dHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaApAQCAtMjMsNyArMjMsNiBA
QAogCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1R5cGVUcmFpdHMuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtODMsOSArODIsNiBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPgogICAgIHN0cnVjdCBW
ZWN0b3JUcmFpdHM8T3duQXJyYXlQdHI8UD4gPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsg
fTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IFZlY3RvclRyYWl0czxS
ZWY8UD4gPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKLQogICAgIHRlbXBsYXRlPD4K
ICAgICBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21pY1N0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3Rv
clRyYWl0cyB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
aCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAppbmRleCAwYzZhNTRkLi5mYTE1N2U5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKKysrIGIvU291cmNl
L1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0vLyBGSVhN
RTogVGhpcyBpcyBhIHRlbXBvcmFyeSBsYXllcmluZyB2aW9sYXRpb24gdW50aWwgd2UgbW92ZSBt
b3JlIG9mIHRoZSBzdHJpbmcgY29kZSBmcm9tIEphdmFTY3JpcHRDb3JlIHRvIFdURi4KKy8vIEZJ
WE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGxheWVyaW5nIHZpb2xhdGlvbiB3aGlsZSB3ZSBtb3Zl
IG1vcmUgc3RyaW5nIGNvZGUgdG8gV1RGLgogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIElkZW50
aWZpZXJUYWJsZSB7CkBAIC00NCwxMCArNDQsMTggQEAgY2xhc3MgSWRlbnRpZmllclRhYmxlIHsK
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfklkZW50aWZpZXJUYWJsZSgpOwogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRk
KFN0cmluZ0ltcGwqKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBIYXNo
U2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZChVKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGQoU3RyaW5nSW1wbCogdmFsdWUp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CisgICAgSGFzaFNldDxTdHJp
bmdJbXBsKj46OkFkZFJlc3VsdCBhZGQoVSB2YWx1ZSk7CiAKLSAgICBib29sIHJlbW92ZShTdHJp
bmdJbXBsKiBpZGVudGlmaWVyKSB7IHJldHVybiBtX3RhYmxlLnJlbW92ZShpZGVudGlmaWVyKTsg
fQorICAgIGJvb2wgcmVtb3ZlKFN0cmluZ0ltcGwqIHIpCisgICAgeworICAgICAgICBIYXNoU2V0
PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IgaXRlciA9IG1fdGFibGUuZmluZChyKTsKKyAgICAgICAg
aWYgKGl0ZXIgPT0gbV90YWJsZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgbV90YWJsZS5yZW1vdmUoaXRlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
IAogcHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiBtX3RhYmxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDI3M2M5YzYuLmMyNDc1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMTU3MSArMSwyMyBAQAotMjAx
My0wOS0wMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgU3Vw
cG9ydCBWZWN0b3I8UmVmPFQ+Pi4KLSAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDYz
Nz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KLQotICAgICAgICBVc2Ug
VmVjdG9yPFJlZjxUPj4gaW50ZXJuYWxseSBpbiBQYWdlLgotCi0gICAgICAgICogcGFnZS9QYWdl
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgotICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6cmVmcmVzaFBsdWdpbnMpOgotCi0gICAgICAgICAgICBDbGVhbiB1cCB0
aGVzZSBmdW5jdGlvbnMgYW5kIHVzZSBWZWN0b3I8UmVmPEZyYW1lPj4gdG8gc3RvcmUgcG9pbnRl
cnMgdG8gZnJhbWVzCi0gICAgICAgICAgICBzaW5jZSB3ZSBrbm93IHRoZXkgYXJlIG5vdCBnb2lu
ZyB0byBiZSBudWxsLgotCi0gICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnaW5WaWV3cyk6Ci0K
LSAgICAgICAgICAgIENoYW5nZWQgdGhpcyB0byByZXR1cm4gYSBWZWN0b3I8UmVmPFBsdWdpblZp
ZXc+PiBieSB2YWx1ZSBpbnN0ZWFkIG9mIHBhc3NpbmcgYQotICAgICAgICAgICAgd3JpdGFibGUg
dmVjdG9yIGFzIGFuIGFyZ3VtZW50LiBDbGVhbiB1cCBsb29wcyB3aXRoICdhdXRvJy4KLQotICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKLSAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCk6Ci0KLSAgICAg
ICAgICAgIFR3ZWFrZWQgZm9yIHBsdWdpblZpZXdzKCkgcmV0dXJuaW5nIGEgVmVjdG9yIG5vdy4K
LQotICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKLQotICAgICAg
ICAgICAgU3RvcmUgRG9jdW1lbnRzIHRoYXQgbmVlZCBhIHZpc2liaWxpdHljaGFuZ2UgZXZlbnQg
aW4gYSBWZWN0b3I8UmVmPERvY3VtZW50Pj4uCi0KLTIwMTMtMDgtMjggIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgW0NTUyBHcmlkIExheW91dF0g
QWRkIHBhcnNpbmcgZm9yIG5hbWVkIGdyaWQgbGluZXMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTU0MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
ZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgRnJvbSBCbGluayByMTUwMzgxLHIxNTA1ODcgYnkgPGpj
aGFmZnJhaXhAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIEFkZHMgcGFyc2luZyBzdXBwb3J0IGZv
ciBuYW1lZCBncmlkIGxpbmVzIGF0IDxncmlkLWxpbmU+IGxldmVsLAotICAgICAgICBpLmUuLCBp
bnNpZGUgZ3JpZC17cm93fGNvbHVtbn0te3N0YXJ0fGVuZH0uIFRoaXMgY2hhbmdlIGNvdmVycwot
ICAgICAgICBvbmx5IHRoZSBwYXJzaW5nLCBsYXlvdXQgY2hhbmdlcyBjb21pbmcgaW4gYSBmb2xs
b3cgdXAgcGF0Y2guCi0KLSAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFBvc2l0aW9uKToKLSAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VJ
bnRlZ2VyT3JTdHJpbmdGcm9tR3JpZFBvc2l0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VHcmlkUG9zaXRpb24pOgotICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKLSAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpjcmVhdGVH
cmlkUG9zaXRpb24pOgotICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUpOgot
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaDoKLSAgICAgICAgKFdlYkNv
cmU6OkdyaWRQb3NpdGlvbjo6c2V0RXhwbGljaXRQb3NpdGlvbik6Ci0gICAgICAgIChXZWJDb3Jl
OjpHcmlkUG9zaXRpb246OnNldFNwYW5Qb3NpdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpHcmlk
UG9zaXRpb246OmludGVnZXJQb3NpdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRp
b246Om5hbWVkR3JpZExpbmUpOgotCi0yMDEzLTA5LTAzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFtNYWNdIEh5cGhlbmF0aW9uIHJlc3BlY3RzIHJlZ2lv
bmFsIGZvcm1hdCBzZXR0aW5ncyBsYW5ndWFnZSBpbnN0ZWFkIG9mIHByaW1hcnkgbGFuZ3VhZ2UK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MQot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCi0KLSAgICAgICAgRml4ZXMgaHlw
aGVuYXRpb24gdGVzdHMgb24gbXkgbWFjaGluZSB3aXRoIG5vbi1FbmdsaXNoIHJlZ2lvbmFsIGZv
cm1hdCBzZXR0aW5ncy4KLQotICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25D
Ri5jcHA6IChjcmVhdGVWYWx1ZUZvck51bGxLZXkpOgotICAgICAgICBVc2UgcHJpbWFyeSBVSSBs
YW5ndWFnZSBmb3IgaHlwaGVuYXRpb24sIG5vdCByZWdpb25hbCBzZXR0aW5ncyBsYW5ndWFnZS4K
LQotMjAxMy0wOS0wMyAgRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2Fy
QGNvbGxhYm9yYS5jby51az4KLQotICAgICAgICBbR1RLXVtFRkxdIGluY2x1ZGUgbWlzc2luZyBs
b2NhbGl6ZWQgc3RyaW5ncyBmb3Igc3VidGl0bGUgYXV0byB0cmFjawotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjI5Ci0KLSAgICAgICAgdGhvc2Ug
bWV0aG9kcyBhcmUgbmVjZXNzYXJ5IHRvIHNob3cgdGhlICJBdXRvIiB0cmFjayBvbiB3ZWJraXRn
dGsKLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjp0ZXh0VHJhY2tBdXRvbWF0aWNNZW51SXRlbVRleHQpOgotICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OnRleHRUcmFj
a0F1dG9tYXRpY01lbnVJdGVtVGV4dCk6Ci0KLTIwMTMtMDktMDMgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgotCi0gICAgICAgIFJlcXVpcmUgbGF5b3V0IHdoZW4gLXdlYmtpdC1v
dmVyZmxvdy1zY3JvbGxpbmcgY2hhbmdlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTM1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCi0KLSAgICAgICAgVGVzdDogZmFzdC9yZXBhaW50L292ZXJmbG93LXNjcm9sbC10b3VjaC1y
ZXBhaW50Lmh0bWwKLQotICAgICAgICBXZSB3YW50IHRvIHJlcXVpcmUgYSBsYXlvdXQgd2hlbiB0
aGUgdmFsdWUgb2YgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmcgY2hhbmdlcwotICAgICAgICBz
aW5jZSAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyBjcmVhdGVzIGEgc3RhY2tpbmcgY29udGV4
dC4KLQotICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQpOgotCi0yMDEzLTA5
LTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIFN1cHBvcnQg
dGhlICJqc29uIiByZXNwb25zZVR5cGUgYW5kIEpTT04gcmVzcG9uc2UgZW50aXR5IGluIFhIUgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2NDgKLQot
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KLQotICAgICAgICBCYXNlZCBvbiB0aGUg
cGF0Y2ggd3JpdHRlbiBieSBKYXJyZWQgTmljaG9sbHMuCi0KLSAgICAgICAgSW1wbGVtZW50ICdq
c29uJyB0eXBlIGZvciBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZS4gV2UgY2FjaGUgdGhlIHJlc3Vs
dCBvbiBKU0Mgc2lkZSBhcyBhIGNhY2hlZCBhdHRyaWJ1dGUKLSAgICAgICAgdW5saWtlIG90aGVy
IHJlc3BvbnNlIHR5cGVzIGxpa2UgJ2RvY3VtZW50JyBhbmQgJ2Jsb2InIGZvciB3aGljaCB0aGUg
cGFyc2VkIHJlc3BvbnNlIG9iamVjdCBpcyBjYWNoZWQKLSAgICAgICAgaW4gWE1MSHR0cFJlcXVl
c3QgaXRzZWxmLiBJbiB0aGUgbG9uZyBydW4sIHdlIHNob3VsZCBkbyB0aGUgc2FtZSBmb3Igb3Ro
ZXIgdHlwZXMgb2YgcmVzcG9uc2UgdHlwZXMuCi0KLSAgICAgICAgQWxzbyByZWZhY3RvcmVkIHRo
ZSB2YXJpb3VzIGNvZGUgdG8gc2hhcmUgdGhlIGNvZGUuCi0KLSAgICAgICAgVGVzdHM6IGZhc3Qv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24taW52YWxpZC5o
dG1sCi0gICAgICAgICAgICAgICBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNldHlwZS1qc29uLXV0ZjE2Lmh0bWwKLSAgICAgICAgICAgICAgIGZhc3QveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2V0eXBlLWpzb24tdmFsaWQuaHRtbAotCi0gICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU09OT2JqZWN0Lmg6IEFkZGVkLgotCi0g
ICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0Ojp2aXNpdENoaWxkcmVuKToKLSAgICAgICAgKFdl
YkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKTogVXNlIEpTT05QYXJzZSB0byBwYXJz
ZSB0aGUgcmVzcG9uc2UgdGV4dCBhbmQgY2FjaGUgdGhlIHJlc3VsdC4KLSAgICAgICAgQ2FsbCBk
aWRDYWNoZVJlc3BvbnNlSlNPTiB0byBzZXQgdGhlIGNhY2hlIHN0YXR1cyBhbmQgY2xlYXIgdGhl
IG9yaWdpbmFsIHJlc3BvbnNlIGJ1ZmZlci4KLQotICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3Qp
OiBBZGRlZCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkIHRvIGludmFsaWRhdGUgdGhlIGNhY2hlIG9m
Ci0gICAgICAgIGEganNvbiByZXNwb25zZS4KLSAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjpyZXNwb25zZVRleHQpOgotICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRp
ZENhY2hlUmVzcG9uc2VKU09OKTogQWRkZWQ7IFVwZGF0ZXMgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZCBhbmQgY2xlYXJzIHRoZQotICAgICAgICByZXNwb25zZSBidWZmZXIgdG8gc2F2ZSBtZW1vcnku
Ci0gICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOgotICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlc3BvbnNlVHlwZSk6Ci0gICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUeXBlKToKLSAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6Ci0gICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgotCi0gICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0Lmg6Ci0gICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZG9uZVdpdGhv
dXRFcnJvcnMpOiBFeHRyYWN0ZWQgZnJvbSByZXNwb25zZVhNTC4KLSAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSk6IEV4dHJh
Y3RlZCBmcm9tIHJlc3BvbnNlVGV4dC4KLSAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZUNhY2hlSXNWYWxpZCk6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnNob3VsZERlY29kZVJlc3BvbnNlKTogRXh0cmFjdGVkIGZyb20gZGlkUmVjZWl2
ZURhdGEuCi0gICAgICAgIEFsc28gbW9kaWZpZWQgdG8gZGVjb2RlIHdoZW4gdGhlIHJlc3BvbnNl
IHR5cGUgaXMgUmVzcG9uc2VUeXBlSlNPTi4KLQotICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dC5pZGw6IEFkZGVkIENhY2hlZEF0dHJpYnV0ZSBJREwgZXh0ZW50aW9uIG9uIHJlc3BvbnNlIHBy
b3BlcnR5LiBUaGlzIGNhY2hlIGlzCi0gICAgICAgIHVzZWQgd2hlbiB0aGUgcmVzcG9uc2UgdHlw
ZSBpcyAnanNvbicuCi0KLTIwMTMtMDktMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTQ4ODEuCi0g
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NDg4MQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjQzCi0KLSAgICAgICAg
Q3Jhc2hlcyBvbiBtYWN3b3JsZC5jb20gKFJlcXVlc3RlZCBieSBrbGluZyBvbiAjd2Via2l0KS4K
LQotICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldEF0dHJpYnV0ZUludGVybmFsKToKLQotMjAxMy0wOS0wMyAgQW5kcmUgTW9yZWlyYSBNYWdh
bGhhZXMgICA8YW5kcmUubWFnYWxoYWVzQGNvbGxhYm9yYS5jby51az4KLQotICAgICAgICBbR1N0
cmVhbWVyXSBEb24ndCBzZXQgc3RhdGUgdG8gTlVMTCB1bnRpbCBlbGVtZW50IGlzIGRlc3Ryb3ll
ZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MzU0
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KLQotICAgICAgICBEb24n
dCBzZXQgcGxheWJpbiB0byBOVUxMIHVudGlsIGl0IGlzIGdvaW5nIHRvIGJlIGRlc3Ryb3llZCBv
ciBpZiB3ZSBzdGF5Ci0gICAgICAgIGZvciB0b28gbG9uZyBvbiB0aGUgUkVBRFkgc3RhdGUuIElu
c3RlYWQgb25seSBzZXQgdGhlIHN0YXRlIHRvIFJFQURZIGFzIHRoaXMKLSAgICAgICAgYWxsb3dz
IG11Y2ggZmFzdGVyIHN0YXRlIGNoYW5nZXMgdG8gUEFVU0VEL1BMQVlJTkcgYWdhaW4uIHBsYXli
aW4gaW50ZXJuYWxseQotICAgICAgICBjYWNoZXMgc29tZSBzdGF0ZSB0aGF0IGlzIGRlc3Ryb3ll
ZCB3aGVuIHNldHRpbmcgaXQgdG8gTlVMTC4KLSAgICAgICAgVGhpcyBzdGF0ZSBpcyBpbmRlcGVu
ZGVudCBvZiB0aGUgVVJJIGFuZCBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUKLSAg
ICAgICAgVVJJIGluIFJFQURZIHN0YXRlLgotCi0gICAgICAgIFRvIGF2b2lkIGhhdmluZyByZXNv
dXJjZXMgKGUuZy4gYXVkaW8gZGV2aWNlcykgb3BlbiBpbmRlZmluaXRlbHksCi0gICAgICAgIHdo
ZW4gc2V0dGluZyB0aGUgc3RhdGUgdG8gUkVBRFkgd2UgY3JlYXRlIGEgdGltZW91dCBhbmQgaWYg
dGhlIHRpbWVvdXQKLSAgICAgICAgaXMgcmVhY2hlZCB3ZSByZXNldCB0aGUgcGlwZWxpbmUgc3Rh
dGUgdG8gTlVMTCB0byBmcmVlIHJlc291cmNlcy4KLQotICAgICAgICBBbHNvIG5vdyBhbGwgc3Rh
dGUgY2hhbmdlcyB1c2UgdGhlIGNoYW5nZVBpcGVsaW5lU3RhdGUgbWV0aG9kIGluc3RlYWQgb2Yg
c2V0dGluZwotICAgICAgICB0aGUgcGxheWJpbiBzdGF0ZSBkaXJlY3RseSB3aXRoIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZSwgc28gd2UgaGF2ZSBhIGJldHRlciBjb250cm9sCi0gICAgICAgIG9mIHdo
ZW4gd2UgYXJlIHJlcXVlc3Rpbmcgc3RhdGUgY2hhbmdlcy4KLQotICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRlUmVhZHlTdGF0ZVRpbWVvdXRDYWxsYmFj
ayk6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIpOgotICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb21taXRMb2FkKToKLSAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVT
dGF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNl
dFJhdGUpOgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVQbHVnaW5JbnN0YWxsZXJSZXN1bHQpOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKLQotMjAxMy0wOS0wMyAg
cGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KLQotICAgICAgICBbV2luQ2Fp
cm9dIFVubmVlZGVkIGNvZGUgaW4gbWV0aG9kIEdseXBoUGFnZTo6ZmlsbCgpLgotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjM0Ci0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okds
eXBoUGFnZTo6ZmlsbCk6IFJlbW92ZSB1bm5lZWRlZCBjYWxsIHRvIEdldFRleHRNZXRyaWNzKCkg
ZnVuY3Rpb24uCi0KLTIwMTMtMDktMDMgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5j
b20+Ci0KLSAgICAgICAgW0NTU1JlZ2lvbnNdIFBzZXVkby1lbGVtZW50cyBhcyByZWdpb25zIHNo
b3VsZCBub3QgYmUgZXhwb3NlZCB0byBKUwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjMzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KLQotICAgICAgICBVbnRpbCB3ZSBwcm9wZXJseSBpbXBsZW1lbnQgdGhlIFJlZ2lvbiBp
bnRlcmZhY2UgKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9u
LWludGVyZmFjZSkKLSAgICAgICAgZm9yIHBzZXVkby1lbGVtZW50cywgd2Ugc2hvdWxkIG5vdCBy
ZXR1cm4gdGhlc2UgYXMgcmVnaW9ucyBpbiBKUy4KLQotICAgICAgICBUZXN0czogZmFzdC9yZWdp
b25zL2dldC1yZWdpb25zLWJ5LWNvbnRlbnQtcHNldWRvLmh0bWwKLSAgICAgICAgICAgICAgIGZh
c3QvcmVnaW9ucy93ZWJraXQtbmFtZWQtZmxvdy1nZXQtcmVnaW9ucy1wc2V1ZG8uaHRtbAotCi0g
ICAgICAgICogZG9tL1dlYktpdE5hbWVkRmxvdy5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpXZWJL
aXROYW1lZEZsb3c6OmZpcnN0RW1wdHlSZWdpb25JbmRleCk6IFNraXAgcHNldWRvLWVsZW1lbnRz
IGFzIHJlZ2lvbnMgaGVyZSB0b28sCi0gICAgICAgIG90aGVyd2lzZSB3ZSBtYXkgZ2V0IGFuIGlu
ZGV4IHRoYXQgY2Fubm90IGJlIHVzZWQgd2l0aCBnZXRSZWdpb25zKCkuCi0gICAgICAgIChXZWJD
b3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQpOgotICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0TmFtZWRGbG93OjpnZXRSZWdpb25zKToKLQotMjAxMy0wOS0wMyAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgUkVHUkVTU0lPTihyMTU0
OTY3KTogaHR0cCBhcHBjYWNoZSB0ZXN0cyBjcmFzaGluZyBvbiBXSzEKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDYyMAotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6Y2FjaGVEZXN0cm95ZWQpOiBSZWludHJvZHVjZSBwcmUtcjE1NDk2NyBiZWhhdmlvciB0
aGF0IHJldHVybmVkIGVhcmx5IGluCi0gICAgICAgIHRoaXMgbWV0aG9kIGlmIHRoZSBwYXNzZWQt
aW4gQXBwbGljYXRpb25DYWNoZSBvYmplY3Qgd2FzIG5vdCBmb3VuZCBpbiB0aGUgQXBwbGljYXRp
b25DYWNoZUdyb3VwJ3MgSGFzaFNldAotICAgICAgICBvZiBhbGwgdGhlIGNhY2hlcy4gVGhpcyBp
cyBub3cgZG9uZSBieSBjaGVja2luZyB0aGF0IHRoZSBIYXNoU2V0PFQ+OjpyZW1vdmUoVCkgcmV0
dXJucyB0cnVlIChtZWFuaW5nIHRoZQotICAgICAgICBvYmplY3Qgd2FzIGZvdW5kIGluIHRoZSBI
YXNoU2V0IGFuZCByZW1vdmVkIGZyb20gaXQpIGluIGFkZGl0aW9uIHRvIHRoYXQgSGFzaFNldCBi
ZWluZyBzdWJzZXF1ZW50bHkgZW1wdHkKLSAgICAgICAgYmVmb3JlIHRoZSBtZXRob2QgbW92ZXMg
b24gdG8gZGVzdHJveWluZyBpdHMgQXBwbGljYXRpb25DYWNoZUdyb3VwIGluc3RhbmNlLgotCi0y
MDEzLTA5LTAzICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNAY29s
bGFib3JhLmNvLnVrPgotCi0gICAgICAgIFtnc3RyZWFtZXJdIERpc2FibGUgSFRUUCByZXF1ZXN0
ICJBY2NlcHQtRW5jb2Rpbmc6IiBoZWFkZXIgZmllbGQgb24gZ3N0cmVhbWVyIHNvdXJjZSBlbGVt
ZW50IHRvIGF2b2lkIHJlY2VpdmluZyB0aGUgd3Jvbmcgc2l6ZSB3aGVuIHJldHJpZXZpbmcgZGF0
YQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MzU0
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KLQotICAgICAgICBBbHNv
IGRpc2FibGUgQWNjZXB0LUVuY29kaW5nIG9uIFJlc291cmNlUmVxdWVzdDo6dG9Tb3VwTWVzc2Fn
ZSBhY2NvcmRpbmdseS4KLQotICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dG9T
b3VwTWVzc2FnZSk6Ci0gICAgICAgIENhbGwgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVz
c2FnZSBmcm9tIFJlc291cmNlUmVxdWVzdDo6dG9Tb3VwTWVzc2FnZSBzbyB0aGF0IHRoZQotICAg
ICAgICBBY2NlcHQtRW5jb2RpbmcgaGVhZGVyIGlzIGFsc28gcmVzcGVjdGVkLgotCi0yMDEzLTA5
LTAzICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFtB
WF1bQVRLXSBBZGRlZCBzdXBwb3J0IGZvciBzb3J0IGFuZCBoZWxwIGF0dHJpYnV0ZXMuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0NTYKLQotICAg
ICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KLQotICAgICAgICBBZGRlZCBzdXBwb3J0
IGZvciBhcmlhLXNvcnQgYW5kIGFyaWEtaGVscCBhdHRyaWJ1dGVzLgotCi0gICAgICAgIFRlc3Q6
IGFjY2Vzc2liaWxpdHkvYXJpYS1zb3J0Lmh0bWwKLQotICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcDoKLSAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVHZXRBdHRyaWJ1dGVzKToKLQotMjAxMy0wOS0wMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KLQotICAgICAgICBbUXRdIFJlbW92ZSBkZWFkIGNv
ZGUgZm9yIFF0WG1sUGF0dGVybnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMDYyNAotCi0gICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgotCi0gICAgICAgIFJlbW92ZSBjb2RlIHN1cHBvcnRpbmcgWFNMVCB1c2luZyBRdFhtbFBhdHRl
cm5zIHdoaWNoIGhhcyBiZWVuCi0gICAgICAgIGRlYWQgZm9yIHNvbWUgdGltZS4KLQotICAgICAg
ICAqIFRhcmdldC5wcmk6Ci0gICAgICAgICogV2ViQ29yZS5wcmk6Ci0gICAgICAgICogZG9tL1Ry
YW5zZm9ybVNvdXJjZVF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVl
dFF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvclF0LmNwcDogUmVt
b3ZlZC4KLSAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKLSAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbik6Ci0KLTIw
MTMtMDktMDMgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+Ci0KLSAgICAgICAg
W0NTUyBSZWdpb25zXSBwb3NpdGlvbjogZml4ZWQgaXMgY29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhl
IGZpcnN0IHJlZ2lvbiwgbm90IHRoZSB2aWV3cG9ydAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTc2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgSHlhdHQuCi0KLSAgICAgICAgRml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBpbnNpZGUgYSBu
YW1lZCBmbG93IHNob3VsZCBiZSBwb3NpdGlvbmVkIGFuZCBzaXplZCByZWxhdGl2ZSB0byB0aGUg
dmlld3BvcnQsCi0gICAgICAgIG5vdCBvbiB0aGUgZmlyc3QgcmVnaW9uLCBhcyBkZXNjcmliZWQg
aW4gdGhlIHNwZWM6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtZmxv
dy1pbnRvLXByb3BlcnR5LgotICAgICAgICBXaGlsZSB0aGUgZmxvdyB0aHJlYWQgd2lsbCBzdGls
bCBhY3QgYXMgY29udGFpbmluZyBibG9jayBmb3IgdGhlIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVu
dHMsIHRoZSBwYWludGluZyBhbmQgaGl0Ci0gICAgICAgIHRlc3RpbmcgZm9yIHRoZSBmaXhlZCBw
b3NpdGlvbmVkIGVsZW1lbnRzIGlzIGRvbmUgYnkgUmVuZGVyVmlldy4gVGhlIGxheWVycyBmb3Ig
dGhlIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMKLSAgICAgICAgYXJlIGNvbGxlY3RlZCBieSB0
aGUgZmxvdyB0aHJlYWQuCi0gCi0gICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMvZWxlbWVudC1p
bi1uYW1lZC1mbG93LWFic29sdXRlLWZyb20tZml4ZWQuaHRtbAotICAgICAgICAgICAgICAgZmFz
dC9yZWdpb25zL2VsZW1lbnQtaW4tbmFtZWQtZmxvdy1maXhlZC1mcm9tLWFic29sdXRlLmh0bWwK
LSAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9lbGVtZW50LWluZmxvdy1maXhlZC1mcm9tLW91
dGZsb3ctc3RhdGljLmh0bWwKLSAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9lbGVtZW50LW91
dGZsb3ctc3RhdGljLWZyb20taW5mbG93LWZpeGVkLmh0bWwKLSAgICAgICAgICAgICAgIGZhc3Qv
cmVnaW9ucy9maXhlZC1lbGVtZW50LXRyYW5zZm9ybWVkLXBhcmVudC5odG1sCi0gICAgICAgICAg
ICAgICBmYXN0L3JlZ2lvbnMvZml4ZWQtaW4tbmFtZWQtZmxvdy1zY3JvbGwuaHRtbAotICAgICAg
ICAgICAgICAgZmFzdC9yZWdpb25zL2ZpeGVkLWluc2lkZS1maXhlZC1pbi1uYW1lZC1mbG93Lmh0
bWwKLSAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9maXhlZC1pbnNpZGUtbmFtZWQtZmxvdy16
SW5kZXguaHRtbAotICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2ZpeGVkLXBvcy1lbGVtLWlu
LW5hbWVkZmxvdy1ub3JlZ2lvbnMuaHRtbAotICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2Zp
eGVkLXBvcy1yZWdpb24taW4tbmVzdGVkLWZsb3cuaHRtbAotCi0gICAgICAgICogcmVuZGVyaW5n
L0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZsb3dUaHJlYWRD
b250cm9sbGVyOjpjb2xsZWN0Rml4ZWRQb3NpdGlvbmVkTGF5ZXJzKToKLSAgICAgICAgUmV0dXJu
IHRoZSBsaXN0IG9mIGxheWVycyBmb3IgdGhlIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgd2l0
aCBuYW1lZCBmbG93cyBhcyBjb250YWluaW5nIGJsb2Nrcy4KLSAgICAgICAgVXNlZCBpbiBSZW5k
ZXJMYXllcjo6IHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MgYW5kIFJlbmRlckxheWVyOjog
aGl0VGVzdEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzLgotICAgICAgICAqIHJlbmRlcmluZy9GbG93
VGhyZWFkQ29udHJvbGxlci5oOgotICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKToKLSAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9z
aXRpb25lZCk6Ci0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKToKLSAgICAgICAgRm9yIGZpeGVkIHBvc2l0aW9uZWQg
ZWxlbWVudHMsIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGdpdmVuIGJ5IHRoZSB2aWV3IGluc3RlYWQg
b2YgdGhlIGZpcnN0IHJlZ2lvbi4KLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6YWNjdW11bGF0ZU9mZnNldFRvd2FyZHNBbmNlc3Rvcik6Ci0g
ICAgICAgIE1vZGlmaWVkIGZvciB0aGUgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBpbnNpZGUg
bmFtZWQgZmxvd3Mgd2l0aCB0aGUgbmFtZWQgZmxvd3MgYXMgY29udGFpbmluZyBibG9jawotICAg
ICAgICB0byB0YWtlIGludG8gYWNjb3VudCB0aGUgdmlldyBzY3JvbGwuCi0gICAgICAgIChXZWJD
b3JlOjpjb21wYXJlWkluZGV4KToKLSAgICAgICAgTW92ZWQgdXB3YXJkcyBiZWNhdXNlIGl0IGlz
IHVzZWQgaW4gUmVuZGVyTGF5ZXI6OnBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MuCi0gICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyk6
Ci0gICAgICAgIFBhaW50IHRoZSBsaXN0IG9mIGZpeGVkIGxheWVycyBkaXJlY3RseSBmcm9tIHRo
ZSBSZW5kZXJWaWV3IGluc3RlYWQgb2YgcGFpbnRpbmcgdGhlbSB0aHJvdWdoIHJlZ2lvbnMgLT4g
bmFtZWQgZmxvd3MuCi0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKToKLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExpc3QpOgotICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RGaXhlZExheWVyc0luTmFtZWRGbG93
cyk6Ci0gICAgICAgIEhpdCB0ZXN0IHRoZSBsYXllcnMgZm9yIHRoZSBmaXggcG9zaXRpb25lZCBl
bGVtZW50cyBpbnNpZGUgbmFtZWQgZmxvd3MgZnJvbSB0aGUgUmVuZGVyVmlldyBsYXllcgotICAg
ICAgICBpbnN0ZWFkIG9mIHRoZSByZWdpb24gLT4gbmFtZWQgZmxvdyBsYXllci4KLSAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgotICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKToKLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaDoKLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJUcmVl
R2VvbWV0cnkpOgotICAgICAgICBXZSBkbyBub3Qgc3VwcG9ydCB5ZXQgdGhlIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIGZvciBlbGVtZW50cyBpbiBuYW1lZCBmbG93cywKLSAgICAgICAgc28gYmFp
bCBvdXQgZWFybHkgaGVyZS4gV2UgbmVlZCB0byByZXZpc2l0IGZpeGVkIGVsZW1lbnRzIG9uY2Ug
d2UgZmluaXNoIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciBlbGVtZW50cyBpbiBuYW1lZCBm
bG93cy4KLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6Zml4ZWRQb3NpdGlvbmVkV2l0aE5hbWVkRmxvd0NvbnRhaW5p
bmdCbG9jayk6Ci0gICAgICAgIChXZWJDb3JlOjpoYXNGaXhlZFBvc0luTmFtZWRGbG93Q29udGFp
bmluZ0Jsb2NrKToKLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmVyRm9y
UmVwYWludCk6Ci0gICAgICAgIENoYW5nZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCBSZW5k
ZXJWaWV3IHNob3VsZCBiZSB0aGUgcmVwYWludENvbnRhaW5lciBmb3IgdGhlCi0gICAgICAgIGZp
eGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgd2l0aCBuYW1lZCBmbG93IGFzIHRoZSBjb250YWluaW5n
IGJsb2NrLgotICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKLQotMjAxMy0wOS0w
MyAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+Ci0KLSAgICAgICAgW0JsYWNrQmVy
cnldIFJlbW92ZSBMYXllckRhdGE6OkxheWVyUHJvZ3JhbQotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjAxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgIEpJUkEgNDkwNjcyCi0gICAgICAgIEFsbCBsYXll
ciBjb250ZW50cyBhcmUgUkdCQSBub3csIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBzdXBwb3J0IEJH
UkEgYW55Ci0gICAgICAgIG1vcmUgYW5kIHRoZSBMYXllckRhdGE6OkxheWVyUHJvZ3JhbSBlbnVt
IGNhbiBiZSByZW1vdmVkLiBSZWxhdGVkIGRlYWQKLSAgICAgICAgY29kZSB3YXMgcmVtb3ZlZC4K
LQotICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KLQotICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVh
ZC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjpFR0xJ
bWFnZUxheWVyV2ViS2l0VGhyZWFkKToKLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyRGF0YS5oOgotICAgICAgICAoV2ViQ29yZTo6TGF5ZXJEYXRhOjpMYXllckRh
dGEpOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJl
ci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnNS
ZWN1cnNpdmUpOgotICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6Y3JlYXRlUHJvZ3Jh
bSk6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
Lmg6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRo
cmVhZC5oOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvUGx1Z2luTGF5
ZXJXZWJLaXRUaHJlYWQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJXZWJLaXRU
aHJlYWQ6OnNldFBsdWdpblZpZXcpOgotCi0yMDEzLTA5LTAzICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgW0dTdHJlYW1lcl0gVmlkZW8g
cGxheWVyIHNldHMgc3lzdGVtIHZvbHVtZSB0byAxMDAlCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NzQKLQotICAgICAgICBSZXZpZXdlZCBieSBQ
aGlsaXBwZSBOb3JtYW5kLgotCi0gICAgICAgIEluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBzeXN0
ZW0gdm9sdW1lIHdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZgotICAgICAgICB0aGUgdm9sdW1lIGJl
aW5nIGluaXRpYWxpemVkIGluIHRoZSBIVE1MTWVkaWFFbGVtZW50IGFuZCB0aGVuIGp1c3QKLSAg
ICAgICAgc2V0dGluZyB0aGUgdm9sdW1lIHRvIHRoZSBzaW5rIHdoZW4gaW5pdGlhbGl6aW5nIHRo
ZSBwaXBlbGluZSBpZgotICAgICAgICB0aGF0IHZvbHVtZSB3YXMgY2hhbmdlZCBiZWZvcmUuCi0K
LSAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEluaXRpYWxpemVkCi0gICAgICAg
IGF0dHJpYnV0ZSB0byBmYWxzZS4KLSAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldFZvbHVtZSk6IFNldCB0aGUgYXR0cmlidXRlIHRvIHRydWUKLSAgICAgICAgd2hlbiB2b2x1
bWUgaXMgY2hhbmdlZC4KLSAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVZvbHVtZSk6IFNldCB0aGUgdm9sdW1lIG9ubHkgaWYKLSAgICAgICAgdm9sdW1lIHdhcyBpbml0
aWFsaXplZC4KLSAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
UGxhdGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQpOgotICAgICAgICBQbGF0Zm9ybSB2
b2x1bWUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBvbmx5IGlmIHZvbHVtZSB3YXMgbm90Ci0g
ICAgICAgIGluaXRpYWxpemVkIGJlZm9yZS4KLSAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDogQWRkZWQgYXR0cmlidXRlIGFuZCBpbnRlcmZhY2UgbWV0aG9kLgotICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllckNsaWVudDo6bWVkaWFQbGF5ZXJQbGF0Zm9ybVZvbHVtZUNvbmZpZ3VyYXRpb25SZXF1aXJl
ZCk6Ci0gICAgICAgIERlY2xhcmVkIGFuZCBhZGRlZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZv
ciB0aGUgaW50ZXJmYWNlIG1ldGhvZC4KLSAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpw
bGF0Zm9ybVZvbHVtZUNvbmZpZ3VyYXRpb25SZXF1aXJlZCk6Ci0gICAgICAgIEFza2VkIHRoZSBj
bGllbnQsIG1lYW5pbmcgdGhlIEhUTUxNZWRpYUVsZW1lbnQgaWYgdGhlIHBsYXRmb3JtCi0gICAg
ICAgIHZvbHVtZSBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkLgotICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZVZvbHVtZUNoYW5nZWRDYWxsYmFj
ayk6IEFkZGVkIGxvZy4KLSAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnNldFZvbHVtZSk6IEFkZGVkIGxvZy4KLSAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFN0cmVhbVZvbHVtZUVsZW1lbnQpOgotICAg
ICAgICBTZXQgdGhlIHZvbHVtZSBvbmx5IGlmIG5vdCBwbGF0Zm9ybSB2b2x1bWUgaXMgcmVxdWly
ZWQgYW5kIGFkZGVkIGxvZy4KLQotMjAxMy0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxl
KTogRml4IGJyYWNlcyBoZXJlOyBhIHJldmlldwotICAgICAgICBjb21tZW50IEkgZm9yZ290IHRv
IGFkZHJlc3MgaW4gbXkgbGFzdCBjaGVjay1pbi4KLQotMjAxMy0wOS0wMiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgQ3V0IGRvd24gb24gZG91YmxlIGhhc2hpbmcg
YW5kIGNvZGUgbmVlZGxlc3NseSB1c2luZyBoYXNoIHRhYmxlIGl0ZXJhdG9ycwotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjExCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBTb21lIG9mIHRoZXNlIGNoYW5n
ZXMgYXJlIHByaW1hcmlseSBjb2RlIGNsZWFudXAsIGJ1dCBvdGhlcnMgY291bGQgcHJvdmlkZQot
ICAgICAgICBhIHNtYWxsIGNvZGUgc2l6ZSBhbmQgc3BlZWQgaW1wcm92ZW1lbnQgYnkgYXZvaWRp
bmcgZXh0cmEgaGFzaGluZy4KLQotICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwOgotICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OldhdGNoZXJzOjpmaW5k
KTogVXNlIGdldCBpbnN0ZWFkIG9mIGZpbmQuCi0gICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bjo6V2F0Y2hlcnM6OnJlbW92ZSk6IFVzZSB0YWtlIGluc3RlYWQgb2YgZmluZC4KLSAgICAgICAg
KFdlYkNvcmU6Okdlb2xvY2F0aW9uOjptYWtlQ2FjaGVkUG9zaXRpb25DYWxsYmFja3MpOiBVc2Ug
dGhlIHJldHVybgotICAgICAgICB2YWx1ZSBmcm9tIHJlbW92ZSB0byBhdm9pZCBoYXNoaW5nIHR3
aWNlLgotCi0gICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6IFVzZSB0
aGUgcmV0dXJuIHZhbHVlIGZyb20KLSAgICAgICAgYWRkIHRvIGF2b2lkIGhhc2hpbmcgdHdpY2Uu
Ci0gICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2Rl
KTogVXNlIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgZnJvbSByZW1vdmUgdG8gYXZvaWQgaGFz
aGluZyB0d2ljZS4KLQotICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmNvbm5lY3QpOiBVc2UgdGhl
IHJldHVybiB2YWx1ZSBmcm9tIGFkZCB0byBhdm9pZAotICAgICAgICBoYXNoaW5nIHR3aWNlLgot
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QpOiBVc2UgdGhlIHJl
dHVybiB2YWx1ZSBmcm9tIHJlbW92ZQotICAgICAgICB0byBhdm9pZCBoYXNoaW5nIHR3aWNlLgot
Ci0gICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvUGFyYW06OmNvbm5lY3QpOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGFk
ZCB0byBhdm9pZAotICAgICAgICBoYXNoaW5nIHR3aWNlLgotICAgICAgICAoV2ViQ29yZTo6QXVk
aW9QYXJhbTo6ZGlzY29ubmVjdCk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gcmVtb3ZlIHRv
Ci0gICAgICAgIGF2b2lkIGhhc2hpbmcgdHdpY2UuCi0KLSAgICAgICAgKiBicmlkZ2UvTlBfanNv
YmplY3QuY3BwOgotICAgICAgICAoT2JqZWN0TWFwOjpyZW1vdmUpOiBVc2UgcmVtb3ZlIGluc3Rl
YWQgb2YgZmluZC9yZW1vdmUuCi0KLSAgICAgICAgKiBkb20vTm9kZS5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp+Tm9kZSk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gcmVtb3ZlIGlu
c3RlYWQgb2YKLSAgICAgICAgZmluZC9yZW1vdmUuCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpyZW1vdmVQcm9maWxlKTogUmVtb3ZlIG5lZWRsZXNzCi0gICAgICAgIGNhbGxz
IHRvIGNvbnRhaW5zLgotCi0gICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZW1vdmVTdWJyZXNvdXJjZUxvYWRlcik6
IFVzZSB0aGUgcmV0dXJuCi0gICAgICAgIHZhbHVlIGZyb20gcmVtb3ZlIGluc3RlYWQgb2YgZmlu
ZC9yZW1vdmUuCi0KLSAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9u
OjpyZW1vdmUpOiBVc2UgdGhlCi0gICAgICAgIHJldHVybiB2YWx1ZSBmcm9tIHJlbW92ZSB0byBh
dm9pZCBoYXNoaW5nIHR3aWNlLgotCi0gICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKTogVXNlCi0gICAgICAgIHJlbW92ZSBpbnN0
ZWFkIG9mIGZpbmQvcmVtb3ZlLgotICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjpjYWNoZURlc3Ryb3llZCk6IFJlbW92ZWQgYSBuZWVkbGVzcwotICAgICAgICBjYWxsIHRv
IGNvbnRhaW5zIHRvIGF2b2lkIGhhc2hpbmcgdHdpY2UuIEl0J3MgZmluZSB0byBkbyB0aGUgY2hl
Y2sKLSAgICAgICAgZm9yIGFuIGVtcHR5IGhhc2ggdGFibGUgdW5jb25kaXRpb25hbGx5LgotCi0g
ICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgotICAgICAgICAoV2ViQ29yZTo6YWRkVW5sb2Fk
RXZlbnRMaXN0ZW5lcik6IEVsaW1pbmF0ZWQgYSBsb2NhbCB2YXJpYWJsZSBmb3IgY2xhcml0eS4K
LSAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVVubG9hZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4gQWxz
byB1c2UgcmVtb3ZlIGluc3RlYWQKLSAgICAgICAgb2YgZmluZC9yZW1vdmUuCi0gICAgICAgIChX
ZWJDb3JlOjpyZW1vdmVBbGxVbmxvYWRFdmVudExpc3RlbmVycyk6IERpdHRvLiBBbHNvIHVzZSBy
ZW1vdmVBbGwgaW5zdGVhZAotICAgICAgICBvZiBmaW5kL3JlbW92ZUFsbC4KLSAgICAgICAgKFdl
YkNvcmU6OmFkZEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4KLSAgICAgICAgKFdl
YkNvcmU6OnJlbW92ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4KLSAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZUFsbEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzKTogRGl0dG8uCi0K
LSAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnJlbW92ZVZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOiBVc2UgdGhlIHJldHVybgotICAg
ICAgICB2YWx1ZSBmcm9tIHJlbW92ZSB0byBhdm9pZCBoYXNoaW5nIHR3aWNlLgotICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVTY3JvbGxhYmxlQXJlYSk6IFVzZSB0aGUgcmV0dXJu
IHZhbHVlIGZyb20KLSAgICAgICAgcmVtb3ZlIGluc3RlYWQgb2YgZmluZC9yZW1vdmUuCi0gICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEpOiBVc2UgJiYg
aW5zdGVhZCBvZiBhbiBpZgotICAgICAgICBzdGF0ZW1lbnQgaW4gYSB3YXkgdGhhdCBpcyBpZGlv
bWF0aWMgZm9yIHRoaXMga2luZCBvZiBmdW5jdGlvbi4KLQotICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCk6
IFVzZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20KLSAgICAgICAgcmVtb3ZlIGluc3RlYWQgb2YgZmlu
ZC9yZW1vdmUuCi0KLSAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpQYWdlR3JvdXA6OnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKTogVXNlIHJlbW92ZSBp
bnN0ZWFkCi0gICAgICAgIG9mIGZpbmQvcmVtb3ZlLgotICAgICAgICAoV2ViQ29yZTo6UGFnZUdy
b3VwOjpyZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGQpOiBVc2UgdGhlIHJldHVybgotICAg
ICAgICB2YWx1ZSBmcm9tIHJlbW92ZSBpbnN0ZWFkIG9mIGZpbmQvcmVtb3ZlLgotCi0gICAgICAg
ICogcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Y2xl
YXJQZWZvcm1hbmNlRW50cmllcyk6IFJlbW92ZWQgYSBuZWVkbGVzcyBjYWxsIHRvIGNvbnRhaW5z
LgotCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVtb3ZlQ2xpZW50
KTogVXNlIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgZnJvbSByZW1vdmUgaW5zdGVhZCBvZiBm
aW5kL3JlbW92ZS4KLSAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXI6OmRpc3BsYXlEaWRSZWZyZXNoKTogVXNlIHJlbW92ZQotICAgICAgICBpbnN0ZWFkIG9mIGZp
bmQvcmVtb3ZlLgotCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OnJlbW92ZUxh
eWVyKTogVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSByZW1vdmUKLSAgICAgICAgaW5zdGVhZCBv
ZiBmaW5kL3JlbW92ZS4KLQotICAgICAgICAqIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlQnJv
YWRjYXN0ZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6V2luZG93TWVzc2FnZUJyb2FkY2FzdGVy
OjpyZW1vdmVMaXN0ZW5lcik6IFVzZSByZW1vdmUgaW5zdGVhZAotICAgICAgICBvZiBmaW5kL3Jl
bW92ZS4gSXQncyBmaW5lIHRvIGRvIHRoZSBjaGVjayBmb3IgYW4gZW1wdHkgaGFzaCB0YWJsZSB1
bmNvbmRpdGlvbmFsbHkuCi0KLSAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNhYmxlZFBsdWdpbkZp
bGUpOiBVc2UgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBmcm9tIHJlbW92ZSBpbnN0ZWFkIG9m
IGZpbmQvcmVtb3ZlLgotCi0gICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbUNhY2hlLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNhY2hlOjpsb29rdXApOiBVc2UgZ2V0IGluc3RlYWQgb2YgZmluZC4KLSAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjphZGQpOiBVc2UgY29udGFp
bnMgaW5zdGVhZCBvZiBmaW5kCi0gICAgICAgIGluIGFuIGFzc2VydGlvbi4KLSAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpyZW1vdmUpOiBVc2UgcmVtb3Zl
IGluc3RlYWQgb2YKLSAgICAgICAgZmluZC9yZW1vdmUuCi0KLSAgICAgICAgKiBzdmcvU1ZHQ3Vy
c29yRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpyZW1v
dmVDbGllbnQpOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHJlbW92ZQotICAgICAgICBpbnN0
ZWFkIG9mIGZpbmQvcmVtb3ZlLgotCi0gICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVJl
c291cmNlKTogUmVtb3ZlZCBhbiB1bm5lZWRlZCBjYWxsCi0gICAgICAgIHRvIGNvbnRhaW5zLgot
ICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxUYXJnZXRS
ZWZlcmVuY2VzRm9yRWxlbWVudCk6IFVzZQotICAgICAgICByZW1vdmUgaW5zdGVhZCBvZiBmaW5k
L3JlbW92ZS4gSXQncyBmaW5lIHRvIGRvIHRoZSBjaGVjayBmb3IgYW4gZW1wdHkgaGFzaAotICAg
ICAgICB0YWJsZSB1bmNvbmRpdGlvbmFsbHkuCi0gICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KTogVXNlCi0g
ICAgICAgIHJlbW92ZSBpbnN0ZWFkIG9mIGZpbmQvcmVtb3ZlLiBBbHNvIHJlbW92ZWQgdW5oZWxw
ZnVsIGFzc2VydGlvbnMuIE9uZSBpcwotICAgICAgICBhbHJlYWR5IGRvbmUgYnkgSGFzaE1hcCwg
YW5kIHRoZSBvdGhlciBpcyBqdXN0IGNoZWNraW5nIGEgYmFzaWMgaW52YXJpYW50Ci0gICAgICAg
IG9mIGV2ZXJ5IEhhc2hNYXAgdGhhdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2hlY2tlZC4KLQotICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNsaWVudEZyb21DYWNoZSk6IFJlbW92ZWQgYW4gdW5uZWVk
ZWQgY2FsbAotICAgICAgICB0byBjb250YWlucy4KLQotICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTo6flNWR0FuaW1hdGVkUHJvcGVydHkpOiBVc2UgdGhlIHZlcnNpb24gb2YKLSAgICAg
ICAgcmVtb3ZlIHRoYXQgdGFrZXMgYW4gaXRlcmF0b3IgcmF0aGVyIHRoYW4gdGhlIG9uZSB0aGF0
IHRha2VzIGEga2V5LCBzbwotICAgICAgICB3ZSBkb24ndCBuZWVkIHRvIHJlZG8gdGhlIGhhc2hp
bmcuCi0KLTIwMTMtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgotCi0g
ICAgICAgIEdlbmVyYXRlIGlzRm9vRWxlbWVudCgpIGZ1bmN0aW9ucyBmcm9tIHRhZ25hbWUgZGF0
YS4KLSAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDU4ND4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KLQotICAgICAgICBBZGQgYSAiZ2VuZXJhdGVUeXBlQ2hl
Y2tzIiBhdHRyaWJ1dGUgdGhhdCBjYW4gYmUgdXNlZCBpbiBIVE1MVGFnTmFtZXMuaW4gJiBmcmll
bmRzLgotICAgICAgICBJZiBwcmVzZW50LCBpc0Zvb0VsZW1lbnQoKSBzdHlsZSBoZWxwZXJzIHdp
bGwgYmUgYWRkZWQgdG8gSFRNTEVsZW1lbnRUeXBlQ2hlY2tzLmguCi0gICAgICAgIFRoaXMgYWxz
byBvdXRwdXRzIGFuIGlzRWxlbWVudE9mVHlwZTxUPiBjaGVjayBmb3IgdGhlIEVsZW1lbnQgaXRl
cmF0b3JzLgotCi0gICAgICAgIFJlbW92ZWQgYWxsIHRoZSBoYW5kLXdyaXR0ZW4gaXNGb29FbGVt
ZW50KCkgZnVuY3Rpb25zIHRoYXQgb25seSBjaGVja2VkIHRhZyBuYW1lLgotCi0gICAgICAgICog
aHRtbC9IVE1MVGFnTmFtZXMuaW46Ci0gICAgICAgICogc3ZnL3N2Z3RhZ3MuaW46Ci0KLSAgICAg
ICAgICAgIEFkZGVkICJnZW5lcmF0ZVR5cGVDaGVja3MiIGF0dHJpYnV0ZSBhcyBhcHByb3ByaWF0
ZS4KLQotICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgotICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06Ci0gICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKLSAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0KLSAgICAgICAgICAgIEFk
ZGVkIHRvIGJ1aWxkIHN5c3RlbXMgYmFzZWQgb24gaG93IEhUTUxOYW1lcy5oIHdhcyBkb25lLgot
ICAgICAgICAgICAgV2UncmUganVzdCBvdXRwdXR0aW5nIGFuIGFkZGl0aW9uYWwgaGVhZGVyIGZp
bGUgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIGRpcmVjdG9yeQotICAgICAgICAgICAgc28gSSBzdXNw
ZWN0IG1vc3QgcG9ydHMgd2lsbCBqdXN0IHBpY2sgdGhpcyB1cCBhdXRvbWFnaWNhbGx5LgotCi0g
ICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6Ci0gICAgICAgIChkZWZhdWx0VGFnUHJvcGVydHlI
YXNoKToKLSAgICAgICAgKHByaW50TGljZW5zZUhlYWRlcik6Ci0gICAgICAgIChwcmludFR5cGVD
aGVja3MpOgotICAgICAgICAocHJpbnRUeXBlQ2hlY2tzSGVhZGVyRmlsZSk6Ci0KLSAgICAgICAg
ICAgIEdlbmVyYXRlIGEgc2VwYXJhdGUgZmlsZSBmb3IgZWFjaCBuYW1lc3BhY2Ugd2l0aCBpc0Zv
b0VsZW1lbnQoKSBoZWxwZXJzIGZvcgotICAgICAgICAgICAgZWxlbWVudHMgd2l0aCAiZ2VuZXJh
dGVUeXBlQ2hlY2tzIiBhdHRyaWJ1dGUgc2V0LgotCi0yMDEzLTA5LTAyICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBbTWFjXSBObyBuZWVkIGZvciBIYXJkQXV0b3Jl
bGVhc2UsIHdoaWNoIGlzIHNhbWUgYXMgQ0ZCcmlkZ2luZ1JlbGVhc2UKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFuZHkgRXN0ZXMuCi0KLSAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKLSAgICAgICAgKEFYVGV4dE1hcmtlclJhbmdl
KToKLSAgICAgICAgKEFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgotICAgICAgICAoQVhUZXh0TWFy
a2VyUmFuZ2VFbmQpOgotICAgICAgICAodGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbik6Ci0g
ICAgICAgIFVzZSBDRkJyaWRnaW5nUmVsZWFzZS4KLQotICAgICAgICAqIHBsYXRmb3JtL21hYy9L
VVJMTWFjLm1tOgotICAgICAgICAoV2ViQ29yZTo6S1VSTDo6b3BlcmF0b3IgTlNVUkwgKik6IFVz
ZSBDRkJyaWRnaW5nUmVsZWFzZS4KLSAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNyZWF0ZUNGVVJM
KTogR2V0IHJpZCBvZiBuZWVkbGVzcyBsb2NhbCB2YXJpYWJsZS4KLQotICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06Ci0gICAgICAgIChXZWJDb3JlOjptYXBIb3N0
TmFtZVdpdGhSYW5nZSk6Ci0gICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6Ci0gICAgICAg
IChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6Ci0gICAgICAgICogcGxhdGZvcm0vdGV4dC9t
YWMvU3RyaW5nSW1wbE1hYy5tbToKLSAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3Ig
TlNTdHJpbmcgKik6Ci0gICAgICAgIFVzZSBDRkJyaWRnaW5nUmVsZWFzZS4KLQotMjAxMy0wOS0w
MSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVmOiBBIHNt
YXJ0IHBvaW50ZXIgZm9yIHRoZSByZWZlcmVuY2UgYWdlLgotICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTIwNTcwPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgot
Ci0gICAgICAgIFVzZSBSZWY8VD4gZm9yIHZhcmlvdXMgc3RhY2sgZ3VhcmRzIHdoZXJlIG51bGwg
Y2hlY2tpbmcgaXNuJ3QgbmVlZGVkLgotCi0yMDEzLTA5LTAyICBBbmRyZWFzIEtsaW5nICA8YWts
aW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBTaW1wbGlmeSBEb2N1bWVudFR5cGUgaGFuZGxpbmcu
Ci0gICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjA1Mjk+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQW50dGkgS29pdmlzdG8uCi0KLSAgICAgICAgUmVtb3ZlZCB0aGUgaW5zZXJ0ZWRJbnRv
KCkvcmVtb3ZlZEZyb20oKSBoYW5kbGVycyBmcm9tIERvY3VtZW50VHlwZS4KLQotICAgICAgICBE
b2N1bWVudCBubyBsb25nZXIga2VlcHMgYSBwb2ludGVyIHRvIGl0cyBkb2N0eXBlIG5vZGUsIGl0
IHdhcyBvbmx5IHVzZWQgZm9yIHRoZQotICAgICAgICBkb2N1bWVudC5kb2N0eXBlIERPTSBBUEks
IHdoaWNoIG5vdyBqdXN0IGxvb2tzIHRocm91Z2ggdGhlIGxpc3Qgb2YgKDw9MikgY2hpbGRyZW4u
Ci0KLSAgICAgICAgVGhlIEVOQUJMRShMRUdBQ1lfVklFV1BPUlRfQURBUFRJT04pIGh1bmsgZnJv
bSBEb2N1bWVudDo6c2V0RG9jVHlwZSgpIHdhcyBtb3ZlZAotICAgICAgICBpbnRvIERvY3VtZW50
OjpjaGlsZHJlbkNoYW5nZWQoKS4KLQotICAgICAgICBXZSBubyBsb25nZXIgY2xlYXIgdGhlIHN0
eWxlIHJlc29sdmVyIG9uIGRvY3R5cGUgaW5zZXJ0aW9uL3JlbW92YWwgc2luY2UgaXQKLSAgICAg
ICAgZG9lc24ndCBhY3R1YWxseSBhZmZlY3Qgc3R5bGUgYW55d2F5LgotCi0gICAgICAgIEFsc28g
bWFkZSBkb2N0eXBlKCkgcmV0dXJuIGEgUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGluc3RlYWQg
b2YgYSByYXcgcG9pbnRlci4KLQotICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZGlzcG9zZSk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZG9jdHlwZSk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKLSAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKLSAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBl
LmNwcDoKLSAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmg6Ci0gICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgotICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRUeXBlU3RyaW5nKToKLQotMjAx
My0wOS0wMiAgQW50b24gT2J6aGlyb3YgIDxhLm9iemhpcm92QHNhbXN1bmcuY29tPgotCi0gICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi85ODM1MD4gW0dUS10gYWNjZXNzaWJpbGl0eS9hcmlh
LWludmFsaWQuaHRtbCB0aW1lcyBvdXQKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJpbyBTYW5j
aGV6IFByYWRhLgotCi0gICAgICAgIFRoZSBwYXRjaCBleHBvc2VzIGFyaWEtaW52YWxpZCBhdHRy
aWJ1dGUgdG8gQVRLLgotCi0gICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNo
ZUF0ay5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1O
b3RpZmljYXRpb24pOgotICAgICAgICBBZGRlZCBlbWl0dGluZyBzdGF0ZS1jaGFuZ2Ugc2lnbmFs
IGZvciBhcmlhLWludmFsaWQgZXZlbnQuCi0gICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwOgotICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdl
dEF0dHJpYnV0ZXMpOgotICAgICAgICBBZGRlZCBhcmlhLWludmFsaWQgYXR0cmlidXRlLgotCi0y
MDEzLTA5LTAyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KLQotICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTU0OTU1LgotICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xNTQ5NTUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDYwNQotCi0gICAgICAgIGJyb2tlIHhjb2RlNCBidWls
ZCA6fCAoUmVxdWVzdGVkIGJ5IGtsaW5nIG9uICN3ZWJraXQpLgotCi0gICAgICAgICogR05VbWFr
ZWZpbGUuYW06Ci0gICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKLSAgICAgICAgKiBXZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgotICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKLSAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKLSAgICAgICAg
KGRlZmF1bHRUYWdQcm9wZXJ0eUhhc2gpOgotICAgICAgICAocHJpbnRMaWNlbnNlSGVhZGVyKToK
LSAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjpp
c0hUTUxBbmNob3JFbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50
KToKLSAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5oOgotICAgICAgICAoV2ViQ29yZTo6
aXNIVE1MQXJlYUVsZW1lbnQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50KToK
LSAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaDoKLSAgICAgICAgKFdlYkNvcmU6Omlz
SFRNTEF1ZGlvRWxlbWVudCk6Ci0gICAgICAgICogaHRtbC9IVE1MQmFzZUVsZW1lbnQuaDoKLSAg
ICAgICAgKFdlYkNvcmU6OmlzSFRNTEJhc2VFbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkhU
TUxCYXNlRWxlbWVudCk6Ci0gICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgotICAg
ICAgICAoV2ViQ29yZTo6aXNIVE1MQ2FudmFzRWxlbWVudCk6Ci0gICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5oOgotICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oOgotICAgICAg
ICAoV2ViQ29yZTo6aXNIVE1MRmllbGRTZXRFbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkhU
TUxGaWVsZFNldEVsZW1lbnQpOgotICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Ci0g
ICAgICAgIChXZWJDb3JlOjppc0hUTUxGb3JtRWxlbWVudCk6Ci0gICAgICAgICogaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxGcmFtZVNldEVsZW1l
bnQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCk6Ci0gICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxJbWFnZUVs
ZW1lbnQpOgotICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgotICAgICAgICAoV2Vi
Q29yZTo6aXNIVE1MSW5wdXRFbGVtZW50KToKLSAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1l
bnQuaDoKLSAgICAgICAgKFdlYkNvcmU6OmlzSFRNTExhYmVsRWxlbWVudCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpIVE1MTGFiZWxFbGVtZW50KToKLSAgICAgICAgKiBodG1sL0hUTUxMZWdlbmRFbGVt
ZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxMZWdlbmRFbGVtZW50KToKLSAgICAgICAg
KFdlYkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50KToKLSAgICAgICAgKiBodG1sL0hUTUxNYXBFbGVt
ZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxNYXBFbGVtZW50KToKLSAgICAgICAgKiBo
dG1sL0hUTUxNZXRlckVsZW1lbnQuaDoKLSAgICAgICAgKFdlYkNvcmU6OmlzSFRNTE1ldGVyRWxl
bWVudCk6Ci0gICAgICAgICogaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50Lmg6Ci0gICAgICAgIChX
ZWJDb3JlOjppc0hUTUxPcHRHcm91cEVsZW1lbnQpOgotICAgICAgICAqIGh0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuaDoKLSAgICAgICAgKFdlYkNvcmU6OmlzSFRNTE9wdGlvbkVsZW1lbnQpOgotICAg
ICAgICAqIGh0bWwvSFRNTFBhcmFtRWxlbWVudC5oOgotICAgICAgICAoV2ViQ29yZTo6aXNIVE1M
UGFyYW1FbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1lbnQpOgotICAg
ICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oOgotICAgICAgICAoV2ViQ29yZTo6aXNI
VE1MUHJvZ3Jlc3NFbGVtZW50KToKLSAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6
Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxTY3JpcHRFbGVtZW50KToKLSAgICAgICAgKiBodG1s
L0hUTUxTb3VyY2VFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxTb3VyY2VFbGVt
ZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50KToKLSAgICAgICAgKiBo
dG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKLSAgICAgICAgKFdlYkNvcmU6OmlzSFRNTFN0eWxlRWxl
bWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50KToKLSAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaDoKLSAgICAgICAgKFdlYkNvcmU6OmlzSFRNTFRhYmxlRWxl
bWVudCk6Ci0gICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50Lmg6Ci0gICAgICAgIChX
ZWJDb3JlOjppc0hUTUxUYWJsZVJvd0VsZW1lbnQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTFRh
YmxlUm93RWxlbWVudCk6Ci0gICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46Ci0gICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxU
ZXh0QXJlYUVsZW1lbnQpOgotICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgotICAg
ICAgICAoV2ViQ29yZTo6aXNIVE1MVGl0bGVFbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkhU
TUxUaXRsZUVsZW1lbnQpOgotICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oOgotICAg
ICAgICAoV2ViQ29yZTo6aXNIVE1MVHJhY2tFbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmFja0VsZW1lbnQpOgotICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6Ci0gICAgICAgICog
c3ZnL1NWR0ZvbnRFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc1NWR0ZvbnRFbGVtZW50
KToKLSAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3Jl
Ojppc1NWR0ZvbnRGYWNlRWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVs
ZW1lbnQpOgotICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgotICAgICAg
ICAoV2ViQ29yZTo6aXNTVkdGb3JlaWduT2JqZWN0RWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3Jl
OjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudCk6Ci0gICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oOgotICAgICAgICAoV2ViQ29yZTo6aXNTVkdJbWFnZUVsZW1lbnQpOgotICAgICAgICAqIHN2
Zy9TVkdTY3JpcHRFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc1NWR1NjcmlwdEVsZW1l
bnQpOgotICAgICAgICAqIHN2Zy9zdmd0YWdzLmluOgotCi0yMDEzLTA5LTAyICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KLQotICAgICAgICBDbGVhbiB1cCBDb250YWluZXJOb2Rl
OjpjaGlsZHJlbkNoYW5nZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMDU5OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0K
LSAgICAgICAgLSBNYWtlIGNoaWxkcmVuQ2hhbmdlZCB0YWtlIGEgc2luZ2xlIHN0cnVjdCBhcmd1
bWVudCBpbnN0ZWFkIG9mIGEgbG9uZyBsaXN0IG9mIGFyZ3VtZW50cy4KLSAgICAgICAgLSBVc2Ug
ZW51bSBpbnN0ZWFkIG9mIGNoaWxkQ291bnREZWx0YS4gSXQgd2FzIGFsd2F5cyAtMSwgMCwgMSBv
ciB0aGUgdG90YWwgbnVtYmVyIG9mIGNoaWxkcmVuIChpbiBjYXNlIG9mIHJlbW92aW5nIHRoZW0g
YWxsKS4KLSAgICAgICAgLSBSZW1vdmUgdXNlIG9mIE5vZGUqLCBnaXZlIHRoZSBjaGFuZ2UgcmFu
Z2UgYXMgRWxlbWVudHMuCi0gICAgICAgIC0gUmVsYXRlZCBjbGVhbnVwcy4KLQotICAgICAgICAq
IGRvbS9BdHRyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkF0dHI6OmNoaWxkcmVuQ2hhbmdlZCk6
Ci0gICAgICAgICogZG9tL0F0dHIuaDoKLSAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKLSAg
ICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6Ci0g
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6aW5zZXJ0QmVmb3JlKToKLSAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6
Om5vdGlmeUNoaWxkSW5zZXJ0ZWQpOgotICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
bm90aWZ5Q2hpbGRSZW1vdmVkKToKLSAgICAgICAgCi0gICAgICAgICAgICBBZGQgcHJpdmF0ZSBo
ZWxwZXJzIGZvciBzZXR0aW5nIHVwIHRoZSBzdHJ1Y3QuCi0KLSAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6Ci0gICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOgotICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGQpOgotICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2Vy
UmVtb3ZlQ2hpbGQpOgotICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hp
bGRyZW4pOgotICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQpOgot
ICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgotICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKToKLSAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnVwZGF0ZVRyZWVBZnRlckluc2VydGlvbik6Ci0gICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKLSAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6Ci0gICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6Y2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKToKLSAgICAgICAgCi0gICAgICAgICAg
ICBDbGVhbiB1cCBhbmQgc2ltcGxpZnkuIFNpbmNlIHdlIG5vdyBnZXQgZWxlbWVudCByYW5nZSBh
dXRvbWF0aWNhbGx5IHdlIGRvbid0IG5lZWQgdG8gY29tcHV0ZSBpdC4KLQotICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKLSAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6Ci0gICAgICAgICogZG9tL0VsZW1lbnQuaDoKLSAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
OjpjaGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6Ci0gICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3RE
aXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAKLSAg
ICAgICAgICAgIFRyeSB0byBrZWVwIHRoZSBleGlzdGluZyBiZWhhdmlvci4gVGhpcyBjb2RlIG5l
ZWRzICBtb3JlIGNsZWFudXAgdG8gYmUgc2FuZS4gSXQgc2hvdWxkbid0IG9wZXJhdGUgb24gTm9k
ZXMKLSAgICAgICAgICAgIGFzIGl0IG9ubHkgcmVhbGx5IGNhcmVzIGFib3V0IEVsZW1lbnRzLgot
Ci0gICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgotICAgICAgICAqIGh0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oOgot
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oOgotICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQp
OgotICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oOgotICAgICAgICAqIGh0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5o
OgotICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5oOgotICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6
Ci0gICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oOgotICAgICAgICAqIGh0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgot
ICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpI
VE1MU3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAqIGh0bWwvSFRNTFN0
eWxlRWxlbWVudC5oOgotICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgot
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgotICAgICAgICAqIGh0bWwvSFRN
TFRpdGxlRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgotICAg
ICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
Okluc2VydGlvblBvaW50OjpjaGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAqIGh0bWwvc2hhZG93
L0luc2VydGlvblBvaW50Lmg6Ci0gICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6
Ci0gICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oOgotICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZCk6Ci0gICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKLSAgICAgICAgKiBzdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZCk6Ci0gICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6Ci0gICAgICAg
ICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKLSAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVu
dC5oOgotICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpjaGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaDoKLSAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKLSAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50Lmg6Ci0gICAgICAgICogc3ZnL1NW
R0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFj
ZUZvcm1hdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogc3ZnL1NWR0ZvbnRG
YWNlRm9ybWF0RWxlbWVudC5oOgotICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VTcmNFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQpOgotICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuaDoKLSAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKLSAgICAgICAgKiBzdmcvU1ZHRm9u
dEZhY2VVcmlFbGVtZW50Lmg6Ci0gICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6
Ci0gICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgotICAgICAgICAqIHN2Zy9TVkdN
YXJrZXJFbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKLSAgICAg
ICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0Vs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6
Ci0gICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgotICAgICAgICAqIHN2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5oOgotICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Ci0gICAg
ICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKLSAgICAgICAgKiBzdmcvU1ZHU3R5bGVFbGVt
ZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKToKLSAgICAgICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50Lmg6Ci0gICAgICAgICogc3ZnL1NW
R1RpdGxlRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZCk6Ci0gICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVudC5oOgotCi0yMDEz
LTA5LTAyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBHZW5l
cmF0ZSBpc0Zvb0VsZW1lbnQoKSBmdW5jdGlvbnMgZnJvbSB0YWduYW1lIGRhdGEuCi0gICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjA1ODQ+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50
dGkgS29pdmlzdG8uCi0KLSAgICAgICAgQWRkIGEgImdlbmVyYXRlVHlwZUNoZWNrcyIgYXR0cmli
dXRlIHRoYXQgY2FuIGJlIHVzZWQgaW4gSFRNTFRhZ05hbWVzLmluICYgZnJpZW5kcy4KLSAgICAg
ICAgSWYgcHJlc2VudCwgaXNGb29FbGVtZW50KCkgc3R5bGUgaGVscGVycyB3aWxsIGJlIGFkZGVk
IHRvIEhUTUxFbGVtZW50VHlwZUNoZWNrcy5oLgotICAgICAgICBUaGlzIGFsc28gb3V0cHV0cyBh
biBpc0VsZW1lbnRPZlR5cGU8VD4gY2hlY2sgZm9yIHRoZSBFbGVtZW50IGl0ZXJhdG9ycy4KLQot
ICAgICAgICBSZW1vdmVkIGFsbCB0aGUgaGFuZC13cml0dGVuIGlzRm9vRWxlbWVudCgpIGZ1bmN0
aW9ucyB0aGF0IG9ubHkgY2hlY2tlZCB0YWcgbmFtZS4KLQotICAgICAgICAqIGh0bWwvSFRNTFRh
Z05hbWVzLmluOgotICAgICAgICAqIHN2Zy9zdmd0YWdzLmluOgotCi0gICAgICAgICAgICBBZGRl
ZCAiZ2VuZXJhdGVUeXBlQ2hlY2tzIiBhdHRyaWJ1dGUgYXMgYXBwcm9wcmlhdGUuCi0KLSAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKLSAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgotICAg
ICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6Ci0gICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotCi0gICAgICAgICAgICBBZGRlZCB0byBidWls
ZCBzeXN0ZW1zIGJhc2VkIG9uIGhvdyBIVE1MTmFtZXMuaCB3YXMgZG9uZS4KLSAgICAgICAgICAg
IFdlJ3JlIGp1c3Qgb3V0cHV0dGluZyBhbiBhZGRpdGlvbmFsIGhlYWRlciBmaWxlIGluIHRoZSBn
ZW5lcmF0ZWQgY29kZSBkaXJlY3RvcnkKLSAgICAgICAgICAgIHNvIEkgc3VzcGVjdCBtb3N0IHBv
cnRzIHdpbGwganVzdCBwaWNrIHRoaXMgdXAgYXV0b21hZ2ljYWxseS4KLQotICAgICAgICAqIGRv
bS9tYWtlX25hbWVzLnBsOgotICAgICAgICAoZGVmYXVsdFRhZ1Byb3BlcnR5SGFzaCk6Ci0gICAg
ICAgIChwcmludExpY2Vuc2VIZWFkZXIpOgotICAgICAgICAocHJpbnRUeXBlQ2hlY2tzKToKLSAg
ICAgICAgKHByaW50VHlwZUNoZWNrc0hlYWRlckZpbGUpOgotCi0gICAgICAgICAgICBHZW5lcmF0
ZSBhIHNlcGFyYXRlIGZpbGUgZm9yIGVhY2ggbmFtZXNwYWNlIHdpdGggaXNGb29FbGVtZW50KCkg
aGVscGVycyBmb3IKLSAgICAgICAgICAgIGVsZW1lbnRzIHdpdGggImdlbmVyYXRlVHlwZUNoZWNr
cyIgYXR0cmlidXRlIHNldC4KLQotMjAxMy0wOS0wMiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgotCi0gICAgICAgIFVzZSBlZGdlTW9kZT1kdXBsaWNhdGUgZm9yIGJsdXJyaW5nIG9u
IGZpbHRlcigpIGZ1bmN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjA1OTAKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4K
LQotICAgICAgICBGaWx0ZXJzIG9uIHRoZSBDU1MgSW1hZ2UgZnVuY3Rpb24gZmlsdGVyKCkgYXJl
IG5vdCBhbGxvd2VkIHRvIGV4dGVuZCB0aGUKLSAgICAgICAgZGltZW5zaW9uIG9mIHRoZSBpbnB1
dCBpbWFnZS4gVGhpcyBjYXVzZXMgd2VpcmQgcmVzdWx0cyBvbiBibHVycmluZyBhbiBpbWFnZSwK
LSAgICAgICAgd2hlcmUgdGhlIGZhZGluZyBvbiB0aGUgZWRnZXMgaXMgY2xpcHBlZCBhdCB0aGUg
aGFsZiBvZiB0aGUgZmFkaW5nLgotICAgICAgICBXZSBzaG91bGRuJ3QgZmFkZSBlZGdlcyBhdCBh
bGwgYW5kIHVzZSB0aGUgZWRnZU1vZGU9ZHVwbGljYXRlIGluc3RlYWQuCi0gICAgICAgIFRoaXMg
d2lsbCBkdXBsaWNhdGUgdGhlIHBpeGVsIHZhbHVlIG9uIHRoZSBuZWFyZXN0IGVkZ2Ugb2YgdGhl
IGlucHV0IGltYWdlCi0gICAgICAgIGluc3RlYWQgb2YgdGFraW5nIHRyYW5zcGFyZW50IGJsYWNr
IGFuZCByZXN1bHRzIGluIG5pY2UgYmx1cnJlZCBpbWFnZXMgd2l0aAotICAgICAgICBzaGFycCBl
ZGdlcy4KLQotICAgICAgICBTcGVjOiBodHRwOi8vZGV2LnczLm9yZy9meHRmL2ZpbHRlcnMvI2Js
dXJFcXVpdmFsZW50Ci0KLSAgICAgICAgVGVzdDogZmFzdC9maWx0ZXItaW1hZ2UvZmlsdGVyLWlt
YWdlLWJsdXIuaHRtbAotCi0gICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOiBQ
YXNzIGNvbnN1bWVyIGluZm9ybWF0aW9uIHRvIHRoZSByZW5kZXJlci4KLSAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKLSAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwOiBTZXQgZWRnZU1vZGUgZm9yIGZlR2F1c3NpYW5CbHVyIHRv
Ci0gICAgICAgICAgICAnZHVwbGljYXRlJyBvciAnbm9uZScgZGVwZW5kaW5nIG9uIHRoZSBjb25z
dW1lci4KLSAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6Ci0g
ICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmg6IEFkZCBlbnVtZXJhdGlv
biB0byBkaWZmZXIgYmV0d2VlbiB0aGUgCi0gICAgICAgICAgICBkaWZmZXJlbnQgY29uc3VtZXJz
IG9mIHRoZSByZW5kZXJlci4KLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0
UmVuZGVyZXIpOiAgUGFzcyBjb25zdW1lcgotICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gdGhl
IHJlbmRlcmVyLgotCi0yMDEzLTA5LTAxICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+
Ci0KLSAgICAgICAgQWRkICdlZGdlTW9kZScgYXR0cmlidXRlIHRvIFNWR0ZFR2F1c3NpYW5CbHVy
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1ODIK
LQotICAgICAgICBBZGQgJ2VkZ2VNb2RlJyBhdHRyaWJ1dGUgdG8gdGhlIFNWR0ZFR2F1c3NpYW5C
bHVyIGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlCi0gICAgICAgIGFsbG93cyB1c2VycyB0byBkZWZp
bmUgdGhlIGJlaGF2aW9yIG9uIGVkZ2VzIHdpdGggdGhlIHZhbHVlcyAnbm9uZScgd2hlcmUKLSAg
ICAgICAgcGl4ZWwgdmFsdWVzIG91dHNpZGUgdGhlIGlucHV0IGltYWdlIGFyZSB0cmVhdGVkIGFz
IHRyYW5zcGFyZW50IGJsYWNrLiAoVGhlCi0gICAgICAgIGN1cnJlbnQgYmx1cnJpbmcgYmVoYXZp
b3IuKSAnZHVwbGljYXRlJyB3aGljaCByZXBlYXRzIHRoZSB2YWx1ZXMgb24gdGhlCi0gICAgICAg
IG5lYXJlc3QgZWRnZSBhbmQgJ3dhcnAnLCB3aGljaCB0YWtlcyB0aGUgcGl4ZWwgb2YgdGhlIG9w
cG9zaXRlIHNpdGUgb2YKLSAgICAgICAgdGhlIGlucHV0IGltYWdlLgotICAgICAgICBCZXNpZGUg
dGhlIGF0dHJpYnV0ZSwgdGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBiZWhhdmlvciBvZiAnZHVw
bGljYXRlJy4KLQotICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9meHRmL2ZpbHRlcnMvI2ZlR2F1
c3NpYW5CbHVyRWRnZU1vZGVBdHRyaWJ1dGUKLQotICAgICAgICBSZXZpZXdlZCBieSBSb2IgQnVp
cy4KLQotICAgICAgICBUZXN0czogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQtZG9tLWVkZ2VNb2RlLWF0dHIuaHRtbAotICAgICAgICAgICAgICAgc3ZnL2R5bmFt
aWMtdXBkYXRlcy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQtc3ZnZG9tLWVkZ2VNb2RlLXByb3Au
aHRtbAotICAgICAgICAgICAgICAgc3ZnL2ZpbHRlcnMvc3ZnLWdhdXNzaWFuYmx1ci1lZGdlTW9k
ZS1kdXBsaWNhdGUtZXhwZWN0ZWQuc3ZnCi0gICAgICAgICAgICAgICBzdmcvZmlsdGVycy9zdmct
Z2F1c3NpYW5ibHVyLWVkZ2VNb2RlLWR1cGxpY2F0ZS5zdmcKLQotICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
RkVHYXVzc2lhbkJsdXI6OkZFR2F1c3NpYW5CbHVyKToKLSAgICAgICAgKFdlYkNvcmU6OkZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUpOgotICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmVk
Z2VNb2RlKToKLSAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpzZXRFZGdlTW9kZSk6
Ci0gICAgICAgIChXZWJDb3JlOjpib3hCbHVyKToKLSAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6Ci0gICAgICAgIChXZWJDb3JlOjpGRUdhdXNz
aWFuQmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgotICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKLSAgICAgICAgKiByZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
UmVuZGVyZXI6OmJ1aWxkKToKLSAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgotICAgICAgICAoV2ViQ29yZTo6U1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgotICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZCk6Ci0gICAgICAgICogc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgotICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaWRsOgotCi0yMDEzLTA5LTAxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KLQotICAgICAgICBFdmVudEhhbmRsZXI6Om1fZnJhbWUgc2hvdWxkIGJlIGEgRnJh
bWUmLgotICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIwNTgwPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIEV2ZW50SGFuZGxlciBpcyB0aWVkIHRv
IHRoZSBsaWZldGltZSBvZiBpdHMgZnJhbWUsIHNvIGxldCBtX2ZyYW1lIGJlIGEgRnJhbWUmLgot
ICAgICAgICBBIGhhbmRmdWwgb2YgbnVsbCBjaGVja3MgYW5kIGFzc2VydGlvbnMgcmVtb3ZlZC4K
LQotMjAxMy0wOS0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAg
Rml4IGEgbWlzdGFrZSBpbiBteSByZWNlbnQgcGFzdGVib2FyZC9lZGl0b3IgcmVmYWN0b3Jpbmcg
dGhhdCB3YXMgY2F1c2luZyB0ZXN0cyB0byBmYWlsLgotCi0gICAgICAgICogZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tOgotICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2UpOiBPbmUgcGxhY2UgdGhp
cyBzYWlkIGNhY2hlZEltYWdlIGJ1dCBpdCBzaG91bGQgaGF2ZSBzYWlkIHRlbnRhdGl2ZUNhY2hl
ZEltYWdlLgotCi0yMDEzLTA5LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQot
ICAgICAgICBIaXRUZXN0UmVzdWx0IHNob3VsZCBoYXZlIGlubmVyTm9uU2hhcmVkRWxlbWVudAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTc5Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weUltYWdlKTogQ2FsbCBI
aXRUZXN0UmVzdWx0IG1lbWJlciBmdW5jdGlvbiB2ZXJzaW9uIG9mCi0gICAgICAgIGlubmVyTm9u
U2hhcmVkRWxlbWVudCBpbnN0ZWFkIG9mIGEgbG9jYWwgZnVuY3Rpb24gdGhhdCBkb2VzIGl0Lgot
Ci0gICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpz
ZXRUb29sVGlwKTogVXNlIGlubmVyTm9uU2hhcmVkRWxlbWVudCBpbnN0ZWFkIG9mIGdldHRpbmcK
LSAgICAgICAgdGhlIG5vZGUgYW5kIGNoZWNraW5nIGlmIGl0J3MgYW4gaW5wdXQgZWxlbWVudC4g
QWxzbyBhZGRlZCBzb21lIG1pc3NpbmcgYnJhY2VzLgotCi0gICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0
V29yZEZyb21IaXRUZXN0UmVzdWx0KTogVXNlIHRhcmdldE5vZGUgZm9yCi0gICAgICAgIGxvY2Fs
IHZhcmlhYmxlcyBpbnN0ZWFkIG9mIGlubmVyTm9kZSB0byBtYXRjaCB0aGUgSGl0VGVzdFJlc3Vs
dCBmdW5jdGlvbiBuYW1lLgotICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RD
bG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KTogRGl0dG8uCi0gICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNrKTogRGl0dG8u
Ci0gICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNp
bmdsZUNsaWNrKTogRGl0dG8uCi0gICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlUHJlc3NFdmVudCk6IERpdHRvLgotCi0gICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5uZXJFbGVtZW50
KTogUmV3cm90ZSBzbyB0aGVyZSB0aGVyZSBpcyBubyBsb29wLgotICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6aW5uZXJOb25TaGFyZWRFbGVtZW50KTogRGl0dG8uCi0KLSAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOiBBZGRlZCBpbm5lck5vblNoYXJlZEVsZW1lbnQu
IEdlbmVyYWxseSBzcGVha2luZywKLSAgICAgICAgd2UnZCBsaWtlIHRvIGF2b2lkIHVzaW5nIE5v
ZGUgdW5sZXNzIHRoZXJlIGlzIHNvbWUgcmVhbCBuZWVkLgotCi0yMDEzLTA5LTAxICBYYWJpZXIg
Um9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+Ci0KLSAgICAgICAgVm9sdW1l
IHNsaWRlciB2YWx1ZSBzaG91bGQgYmUgMCB3aGVuIGF1ZGlvIGlzIG11dGVkCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1NTMKLQotICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCi0KLSAgICAgICAgRml4ZWQgdGhlIHByb2JsZW0gb2Yg
c2hvd2luZyBhIG5vbiBlbXB0eSBzbGlkZXIgd2hlbiBhdWRpbyBpcwotICAgICAgICBtdXRlZC4K
LQotICAgICAgICBUZXN0OiBtZWRpYS92b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQuaHRtbC4K
LQotICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sczo6cmVzZXQpOiBVc2Ugc2V0U2xpZGVyVm9sdW1lLgotICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6Y2hhbmdlZFZvbHVtZSk6IFVzZSBzZXRTbGlkZXJW
b2x1bWUuCi0gICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzZXRTbGlkZXJWb2x1bWUp
OiBBZGRlZCB0byBzZXQgdGhlIHZvbHVtZQotICAgICAgICB0byAwIHdoZW4gbXV0ZWQgYW5kIHRv
IGl0cyB2YWx1ZSBvdGhlcndpc2UuCi0gICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5oOiBBZGRlZCBzZXRTbGlkZXJWb2x1bWUuCi0gICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0FwcGxlLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6
cmVzZXQpOiBVc2VkIHNldFNsaWRlclZvbHVtZSBhbmQKLSAgICAgICAgc2V0RnVsbHNjcmVlblNs
aWRlclZvbHVtZS4KLSAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6Y2hhbmdl
ZFZvbHVtZSk6IFVzZWQKLSAgICAgICAgc2V0RnVsbHNjcmVlblNsaWRlclZvbHVtZS4KLSAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2V0RnVsbHNjcmVlblNsaWRlclZvbHVt
ZSk6IEFkZGVkIHRvCi0gICAgICAgIHNldCB0aGUgdm9sdW1lIHRvIDAgd2hlbiBtdXRlZCBhbmQg
dG8gaXRzIHZhbHVlIG90aGVyd2lzZS4KLSAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuaDogQWRkZWQgc2V0RnVsbHNjcmVlblNsaWRlclZvbHVtZQotICAgICAgICAqIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpyZXNldCk6IFVzZWQgc2V0U2xpZGVyVm9sdW1lLgot
Ci0yMDEzLTA5LTAxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAgICAg
ICBHaXZlIEVkaXRDb21tYW5kIGEgcHJvdGVjdGVkIEZyYW1lJiBnZXR0ZXIuCi0gICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xMjA1NzQ+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCi0KLSAgICAgICAgRWRpdENvbW1hbmQgaXMgb25seSBjcmVhdGVkIGZvciBkb2N1bWVu
dHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBGcmFtZSwKLSAgICAgICAgd2UgYWxyZWFkeSBBU1NF
UlRlZCBhcyBtdWNoIGluIHRoZSBFZGl0Q29tbWFuZCBjb25zdHJ1Y3Rvci4KLQotICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSAiRnJhbWUmIEVkaXRDb21tYW5kOjpmcmFtZSgpIiBoZWxwZXIsIHNv
IEVkaXRDb21tYW5kCi0gICAgICAgIGFuZCBpdHMgc3ViY2xhc3NlcyBkb24ndCBoYXZlIHRvIGZ1
bWJsZSBhcm91bmQgd2l0aCBwb2ludGVycy4KLQotMjAxMy0wOC0zMSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+Ci0KLSAgICAgICAgQWRkIGVsZW1lbnQgYW5jZXN0b3IgaXRlcmF0
b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2
MwotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGFuY2VzdG9yIGl0ZXJhdG9ycy4gVGhleSBpdGVyYXRlIG92ZXIgZWxlbWVudHMg
cGFyZW50IGNoYWluIHVwIHRvIHRoZSByb290LgotICAgICAgICAKLSAgICAgICAgVG8gaXRlcmF0
ZSBvdmVyIEVsZW1lbnQgYW5jZXN0b3JzOgotICAgICAgICAKLSAgICAgICAgYXV0byBhbmNlc3Rv
cnMgPSBlbGVtZW50QW5jZXN0b3JzKHRoaXMpOwotICAgICAgICBmb3IgKGF1dG8gaXQgPSBhbmNl
c3RvcnMuYmVnaW4oKSwgZW5kID0gYW5jZXN0b3JzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSAqaXQ7Ci0gICAgICAgICAgICAuLi4KLQot
ICAgICAgICBUbyBpdGVyYXRlIG92ZXIgRWxlbWVudCBhbmNlc3RvcnMgaW5jbHVkaW5nIHRoZSBj
dXJyZW50IGVsZW1lbnQ6Ci0gICAgICAgIAotICAgICAgICBhdXRvIGxpbmVhZ2UgPSBlbGVtZW50
TGluZWFnZSh0aGlzKTsKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gbGluZWFnZS5iZWdpbigpLCBl
bmQgPSBsaW5lYWdlLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEVsZW1l
bnQmIGVsZW1lbnQgPSAqaXQ7Ci0gICAgICAgICAgICAuLi4KLSAgICAgICAgICAgIAotICAgICAg
ICBUbyBpdGVyYXRlIG92ZXIgYW5jZXN0b3JzIG9mIGEgc3BlY2lmaWMgRWxlbWVudCBzdWJjbGFz
czoKLQotICAgICAgICBhdXRvIGh0bWxBbmNlc3RvcnMgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTEVs
ZW1lbnQ+KHRoaXMpOwotICAgICAgICBmb3IgKGF1dG8gaXQgPSBodG1sQW5jZXN0b3JzLmJlZ2lu
KCksIGVuZCA9IGh0bWxBbmNlc3RvcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgSFRNTEVsZW1lbnQmIGh0bWxFbGVtZW50ID0gKml0OwotICAgICAgICAgICAgLi4uCi0g
ICAgICAgICAgICAKLSAgICAgICAgVG8gaXRlcmF0ZSBvdmVyIGFuY2VzdG9ycyBvZiBhIHNwZWNp
ZmljIEVsZW1lbnQgc3ViY2xhc3MgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGVsZW1lbnQ6Ci0KLSAg
ICAgICAgYXV0byBodG1sTGluZWFnZSA9IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KHRoaXMp
OwotICAgICAgICBmb3IgKGF1dG8gaXQgPSBodG1sTGluZWFnZS5iZWdpbigpLCBlbmQgPSBodG1s
TGluZWFnZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBIVE1MRWxlbWVu
dCYgaHRtbEVsZW1lbnQgPSAqaXQ7Ci0gICAgICAgICAgICAuLi4KLSAgICAgICAgICAgIAotICAg
ICAgICBUaGUgcGF0Y2ggYWxzbyB1c2VzIHRoZSBuZXcgdHlwZXMgaW4gYSBmZXcgcGxhY2VzLgot
Ci0gICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIpOgotICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmxhYmVsRm9yRWxlbWVudCk6
Ci0gICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg6IEFkZGVkLgotICAgICAg
ICAoV2ViQ29yZTo6OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvcik6Ci0gICAgICAgIChXZWJDb3Jl
Ojo6Om9wZXJhdG9yKToKLSAgICAgICAgKFdlYkNvcmU6Ojo6RWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvcik6Ci0gICAgICAgIChXZWJDb3JlOjo6OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRh
cHRlcik6Ci0gICAgICAgIChXZWJDb3JlOjo6OmJlZ2luKToKLSAgICAgICAgKFdlYkNvcmU6Ojo6
ZW5kKToKLSAgICAgICAgKFdlYkNvcmU6Ojo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFk
YXB0ZXIpOgotICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudExpbmVhZ2UpOgotICAgICAgICAoV2Vi
Q29yZTo6ZWxlbWVudEFuY2VzdG9ycyk6Ci0gICAgICAgIChXZWJDb3JlOjphbmNlc3RvcnNPZlR5
cGUpOgotICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDoKLSAgICAgICAgKFdlYkNvcmU6
OmZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGUpOgotICAgICAgICAoV2ViQ29yZTo6Ojp0cmF2ZXJz
ZUFuY2VzdG9yKToKLSAgICAgICAgKFdlYkNvcmU6Oj0pOgotICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlv
bmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZCk6Ci0gICAgICAgICogaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjppc0hUTUxGaWVsZFNl
dEVsZW1lbnQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudCk6Ci0gICAg
ICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkhU
TUxGcmFtZVNldEVsZW1lbnQ6OmZpbmRDb250YWluaW5nKToKLSAgICAgICAgKiBodG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuaDoKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQp
OgotICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgotICAgICAgICAoV2ViQ29yZTo6
aXNIVE1MSW5wdXRFbGVtZW50KToKLSAgICAgICAgKFdlYkNvcmU6OnRvSFRNTElucHV0RWxlbWVu
dCk6Ci0gICAgICAgICogaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpIVE1MTGVnZW5kRWxlbWVudDo6YXNzb2NpYXRlZENvbnRyb2wpOgotCi0yMDEzLTA4LTMx
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBSZWZhY3RvciBVUkwg
YW5kIGltYWdlIHdyaXRpbmcgc28gbGF5ZXItdmlvbGF0aW5nIHBhcnRzIGFyZSBpbiBFZGl0b3Is
IG5vdCBQYXN0ZWJvYXJkIChNYWMtb25seSBhdCBmaXJzdCkKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU3MwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmNvcHkpOiBVc2Ugd3JpdGVJbWFnZVRvUGFzdGVib2FyZCBpbnN0
ZWFkIG9mIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2Ugb24gTWFjLgotICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpjb3B5VVJMKTogVXNlIHdyaXRlVVJMVG9QYXN0ZWJvYXJkIGluc3RlYWQgb2YgUGFz
dGVib2FyZDo6d3JpdGVVUkwgb24gTWFjLgotICAgICAgICAoV2ViQ29yZTo6aW5uZXJOb25TaGFy
ZWRFbGVtZW50KTogQWRkZWQuIFVzZWQgaW4gY29weUltYWdlLgotICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpjb3B5SW1hZ2UpOiBVc2UgaW5uZXJOb25TaGFyZWRFbGVtZW50IGluc3RlYWQgb2Yg
aW5uZXJOb25TaGFyZWROb2RlLgotICAgICAgICBVc2Ugd3JpdGVJbWFnZVRvUGFzdGVib2FyZCBp
bnN0ZWFkIG9mIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2Ugb24gTWFjLgotCi0gICAgICAgICogZWRp
dGluZy9FZGl0b3IuaDogQWRkIG5ldyBmdW5jdGlvbnMsIHdyaXRlVVJMVG9QYXN0ZWJvYXJkIGFu
ZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkLAotICAgICAgICBib3RoIE1hYy1vbmx5IGZvciBub3cu
Ci0KLSAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06Ci0gICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQpOiBSZW1vdmVkIHVubmVlZGVkICJtX2ZyYW1l
LmVkaXRvcigpIiByb3VuZCB0cmlwIHRoYXQKLSAgICAgICAgd2FzIGxlZnQgYmVoaW5kIGluIHRo
aXMgZnVuY3Rpb24uCi0gICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZSk6IEFkZGVkLiBIZWxwZXIg
dXNlZCBieSB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkLgotICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp3cml0ZVVSTFRvUGFzdGVib2FyZCk6IEFkZGVkLiBTZXRzIHVwIFBhc3RlYm9hcmRVUkwgYW5k
IHRoZW4gY2FsbHMKLSAgICAgICAgUGFzdGVib2FyZDo6d3JpdGUgd2l0aCBpdC4KLSAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IEFkZGVkLiBTZXRzIHVw
IFBhc3RlYm9hcmRJbWFnZSBhbmQgdGhlbiBjYWxscwotICAgICAgICBQYXN0ZWJvYXJkOjp3cml0
ZSB3aXRoIGl0LgotICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6IFVzZSBFZGl0b3I6OndyaXRlVVJM
VG9QYXN0ZWJvYXJkIGluc3RlYWQgb2YKLSAgICAgICAgUGFzdGVib2FyZDo6d3JpdGVVUkwgb24g
TWFjLgotCi0gICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOiBBZGRlZCBQYXN0ZWJvYXJk
VVJMIGFuZCBQYXN0ZWJvYXJkSW1hZ2Ugc3RydWN0dXJlcy4KLSAgICAgICAgRGVjbGFyZSB3cml0
ZSBmdW5jdGlvbnMgZm9yIFBhc3RlYm9hcmRXZWJDb250ZW50LCBQYXN0ZWJvYXJkVVJMLCBhbmQg
UGFzdGVib2FyZEltYWdlLgotICAgICAgICBHdWFyZCB3cml0ZVVSTCBhbmQgd3JpdGVJbWFnZSB3
aXRoICFQTEFURk9STShNQUMpLgotCi0gICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW06Ci0gICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTEZvclR5cGVzKTogQ2hhbmdlZCB0aGlz
IHRvIHRha2UgYSBQYXN0ZWJvYXJkVVJMLgotICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGUpOiBSZW5hbWVkIHdyaXRlVVJMIGFuZCB3cml0ZUltYWdlIHRvIHRoaXMuIFJlZmFjdG9y
IGJvdGgKLSAgICAgICAgdG8gdGFrZSBQYXN0ZWJvYXJkVVJMIGFuZCBQYXN0ZWJvYXJkSW1hZ2Ug
YXJndW1lbnRzLgotICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOiBSZW5hbWVkIGZyb20g
ZmlsZVdyYXBwZXJGb3JJbWFnZSBzaW5jZSB0aGUgZmFjdCB0aGF0IHRoaXMgaXMKLSAgICAgICAg
Zm9yIGFuIGltYWdlIGlzIG5vdyBjbGVhciBmcm9tIGl0cyBhcmd1bWVudCwgYSBQYXN0ZWJvYXJk
SW1hZ2UuCi0gICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVu
dCk6IENoYW5nZWQgdGhpcyBmdW5jdGlvbiB0byB1c2UgZWFybHkgcmV0dXJuLgotCi0yMDEzLTA4
LTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBFZGl0Q29t
bWFuZCBjb25zdHJ1Y3RvcnMgc2hvdWxkIHRha2UgRG9jdW1lbnQmLgotICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTIwNTY2PgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgotCi0gICAgICAgIExldCBFZGl0Q29tbWFuZCdzIGFuZCBhbGwgc3ViY2xhc3MgY29uc3RydWN0
b3JzIHRha2UgRG9jdW1lbnQmIGluc3RlYWQgb2YgRG9jdW1lbnQqLgotICAgICAgICBFZGl0Q29t
bWFuZDo6ZG9jdW1lbnQoKSBub3cgcmV0dXJucyBhIERvY3VtZW50Ji4KLQotICAgICAgICBBZGRl
ZCBFZGl0b3I6OmRvY3VtZW50KCkgd2hpY2ggcmV0dXJucyBFZGl0b3I6OmZyYW1lKCkuZG9jdW1l
bnQoKSBhZnRlciBhc3NlcnRpbmcKLSAgICAgICAgdGhhdCBpdCdzIG5vbi1udWxsLCB0byBtYWtl
IHBhc3NpbmcgYSBEb2N1bWVudCYgZnJvbSBFZGl0b3IgZnVuY3Rpb25zIGVhc2llci4KLQotMjAx
My0wOC0zMSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgTWFr
ZSBtb3JlIHVzZSBvZiB0b1JlbmRlckZvbyhSZW5kZXJPYmplY3QmKSBjYXN0IGhlbHBlcnMuCi0g
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjA1NjU+Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgVG8gbWFrZSBhbWVuZHMgZm9yIHB1dHRpbmcgdWds
eSB0b1JlbmRlckZvbygmcmVuZGVyZXIpIGNhc3RzIGV2ZXJ5d2hlcmUsCi0gICAgICAgIGhlcmUn
cyBhIHBhdGNoIHRoYXQgc3dpdGNoZXMgYSBidW5jaCBvZiBjb2RlIG92ZXIgdG8gdXNpbmcgcmVm
ZXJlbmNlLWJhc2VkIGNhc3RzLgotCi0gICAgICAgIEkgcmVtb3ZlZCBwb2ludGVyLWJhc2VkIGNh
c3RzIGFsdG9nZXRoZXIgZm9yIHRoZXNlIHJlbmRlcmVyczoKLQotICAgICAgICAgICAgLSBSZW5k
ZXJCUgotICAgICAgICAgICAgLSBSZW5kZXJDb21iaW5lVGV4dAotICAgICAgICAgICAgLSBSZW5k
ZXJMaXN0TWFya2VyCi0gICAgICAgICAgICAtIFJlbmRlclZpZGVvCi0gICAgICAgICAgICAtIFJl
bmRlclZpZXcKLQotMjAxMy0wOC0zMSAgU2FudG9zaCBNYWh0byAgPHNhbnRvc2gubWFAc2Ftc3Vu
Zy5jb20+Ci0KLSAgICAgICAgd2FybmluZzogdW51c2VkIHBhcmFtZXRlciDigJhyZW5kZXJpbmdN
b2RlJyAgaW4gSW1hZ2VCdWZmZXJDYWlyby5jcHA6OTQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU0MwotCi0gICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgotCi0gICAgICAgIEZpeGluZyB3YXJuaW5nIGJ5IGFkZGluZyBBU1NFUlRfVU5V
U0VELgotCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgotCi0y
MDEzLTA4LTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAgICAgICBG
aXggdHlwbyBpbiByMTU0OTMxIHRoYXQgY2F1c2VkIGFzc2VydGlvbnMgaW4gY29udGludWF0aW9u
IHRlc3RzLgotCi0gICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnQpOgotCi0yMDEzLTA4LTMxICBSb2IgQnVp
cyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KLQotICAgICAgICBYTUxTZXJpYWxpemVyLWF0dHJpYnV0
ZS1uYW1lc3BhY2UtcHJlZml4LWNvbmZsaWN0cyBjYW4ndCBwcm9kdWNlIHJlbGlhYmxlIHJlc3Vs
dHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQ5
MAotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KLQotICAgICAgICBSZXRhaW4g
dGhlIGtleSBvZiB0aGUgbmFtZXNwYWNlcyBtYXAgYnkgdXNpbmcgQXRvbWljU3RyaW5nIGFzIGtl
eSBpbnN0ZWFkIG9mIEF0b21pY1N0cmluZ0ltcGwqLgotCi0gICAgICAgICogZWRpdGluZy9NYXJr
dXBBY2N1bXVsYXRvci5oOgotCi0yMDEzLTA4LTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KLQotICAgICAgICBJbmxpbmVCb3g6OnJlbmRlcmVyKCkgYW5kIHBhbHMgc2hvdWxk
IHJldHVybiByZWZlcmVuY2VzLgotICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIwNTYy
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgIE1ha2Ug
SW5saW5lQm94OjpyZW5kZXJlcigpIGFuZCBpdHMgZnJpZW5kcyByZXR1cm4gcmVmZXJlbmNlcyBp
bnN0ZWFkIG9mIHBvaW50ZXJzLgotICAgICAgICBFdmVyeSBib3ggYWx3YXlzIGhhcyBhIHJlbmRl
cmVyLCBzbyB0aGlzIGNsZWFycyB1cCBhbnkgYW1iaWd1aXR5LCBhbmQgYSBudW1iZXIgb2YKLSAg
ICAgICAgd2VpcmQgYXNzZXJ0aW9ucyBpbiBTVkcgY29kZS4KLQotICAgICAgICBNYWRlIElubGlu
ZUJveDo6bV9yZW5kZXJlciBwcml2YXRlIHNvIHN1YmNsYXNzZXMgaGF2ZSB0byBnbyB0aHJvdWdo
IHJlbmRlcmVyKCkuCi0gICAgICAgIFRoZSBuZXh0IHN0ZXAgd2lsbCBiZSB0byByZXBsYWNlIHJl
bmRlcmVyKCkgd2l0aCB0aWdodGx5LXR5cGVkIGFjY2Vzc29ycyB3aGVyZQotICAgICAgICBhcHBs
aWNhYmxlIChlLmcgSW5saW5lVGV4dEJveCdzIHJlbmRlcmVyIGlzIGFsd2F5cyBhIFJlbmRlclRl
eHQuKQotCi0gICAgICAgIEFsc28gYWRkZWQgcmVmZXJlbmNlIHZlcnNpb25zIG9mIHRoZXNlIFJl
bmRlck9iamVjdCBjYXN0czoKLQotICAgICAgICAgICAgLSB0b1JlbmRlckJveCgpCi0gICAgICAg
ICAgICAtIHRvUmVuZGVyQmxvY2soKQotICAgICAgICAgICAgLSB0b1JlbmRlcklubGluZSgpCi0g
ICAgICAgICAgICAtIHRvUmVuZGVyU1ZHSW5saW5lVGV4dCgpCi0KLTIwMTMtMDgtMzEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgotCi0gICAgICAgIFBvc3RBdHRhY2hDYWxsYmFj
a0Rpc2FibGVyIHNob3VsZCB0YWtlIGEgQ29udGFpbmVyTm9kZSYuCi0gICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xMjA1NjA+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8uCi0KLSAgICAgICAgTGV0IFBvc3RBdHRhY2hDYWxsYmFja0Rpc2FibGVyIHRha2UgYSByZWZl
cmVuY2UgYW5kIHJlbW92ZSBhbiB1Z2x5IGFzc2VydGlvbi4KLQotICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlLmg6Ci0gICAgICAgIChXZWJDb3JlOjpQb3N0QXR0YWNoQ2FsbGJhY2tEaXNhYmxl
cjo6UG9zdEF0dGFjaENhbGxiYWNrRGlzYWJsZXIpOgotICAgICAgICAoV2ViQ29yZTo6UG9zdEF0
dGFjaENhbGxiYWNrRGlzYWJsZXI6On5Qb3N0QXR0YWNoQ2FsbGJhY2tEaXNhYmxlcik6Ci0gICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWNh
bGNTdHlsZSk6Ci0gICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6YXR0YWNoUmVuZGVyVHJlZSk6Ci0KLTIwMTMtMDgtMzEgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbmFtZSBDaGlsZEl0ZXJh
dG9yIC0+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yLCBEZXNjZW5kYW50SXRlcmF0b3IgLT4gRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIwNTYxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4K
LQotICAgICAgICBOZXcgbmFtZXMgYXJlIG1vcmUgZGVzY3JpcHRpdmUgYW5kIGNvbnNpc3RlbnQu
IFRoZXkgYWxzbyBwdXQgcmVsYXRlZCBpdGVyYXRvciBmaWxlcyBjbG9zZSBieSBpbiBmaWxlIGxp
c3RzLgotICAgICAgICBUaGUgdHlwZXMgYXJlIGFsd2F5cyB1c2VkIHdpdGggYXV0byBzbyBsb25n
ZXIgbmFtZXMgZG9uJ3QgbWFrZSB0aGVtIGFueSBjbHVtc2llciB0byB1c2UuCi0KLSAgICAgICAg
Rm9yIHNpbXBsaWNpdHkgaW5jbHVkZWQgYWxsIEVsZW1lbnQgaXRlcmF0b3IgdHlwZXMgZnJvbSBF
bGVtZW50SXRlcmF0b3IuaCBzbyBpdCBpcyB0aGUgb25seSBmaWxlIHRoYXQgaGFzCi0gICAgICAg
IHRvIGJlIGluY2x1ZGVkIGJ5IHRoZSBjbGllbnRzLgotCi0gICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKLSAgICAgICAgKiBUYXJnZXQucHJpOgotICAgICAgICAqIFdlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2o6Ci0gICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgotICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwOgotICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHA6Ci0gICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgotICAg
ICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6Ci0gICAgICAgICogZG9tL0NoaWxkSXRl
cmF0b3IuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBkb20vRGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJl
bW92ZWQuCi0gICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKLSAgICAgICAgKiBkb20vRWxlbWVu
dENoaWxkSXRlcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkSXRl
cmF0b3IuaC4KLSAgICAgICAgKFdlYkNvcmU6Ojo6RWxlbWVudENoaWxkSXRlcmF0b3IpOgotICAg
ICAgICAoV2ViQ29yZTo6OjpvcGVyYXRvcik6Ci0gICAgICAgIChXZWJDb3JlOjo6OkVsZW1lbnRD
aGlsZENvbnN0SXRlcmF0b3IpOgotICAgICAgICAoV2ViQ29yZTo6OjpFbGVtZW50Q2hpbGRJdGVy
YXRvckFkYXB0ZXIpOgotICAgICAgICAoV2ViQ29yZTo6OjpiZWdpbik6Ci0gICAgICAgIChXZWJD
b3JlOjo6OmVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjo6OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3JBZGFwdGVyKToKLSAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRDaGlsZHJlbik6Ci0gICAgICAg
IChXZWJDb3JlOjpjaGlsZHJlbk9mVHlwZSk6Ci0gICAgICAgICogZG9tL0VsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0Rlc2NlbmRhbnRJ
dGVyYXRvci5oLgotICAgICAgICAoV2ViQ29yZTo6OjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
KToKLSAgICAgICAgKFdlYkNvcmU6Ojo6b3BlcmF0b3IpOgotICAgICAgICAoV2ViQ29yZTo6OjpF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IpOgotICAgICAgICAoV2ViQ29yZTo6OjpFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcik6Ci0gICAgICAgIChXZWJDb3JlOjo6OmJlZ2lu
KToKLSAgICAgICAgKFdlYkNvcmU6Ojo6ZW5kKToKLSAgICAgICAgKFdlYkNvcmU6Ojo6RWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcik6Ci0gICAgICAgIChXZWJDb3JlOjplbGVt
ZW50RGVzY2VuZGFudHMpOgotICAgICAgICAoV2ViQ29yZTo6ZGVzY2VuZGFudHNPZlR5cGUpOgot
ICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDoKLSAgICAgICAgKiBkb20vTm9kZS5jcHA6
Ci0gICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6Ci0gICAgICAgICogZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHA6Ci0gICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgotICAgICAgICAq
IGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwOgotICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0
RWxlbWVudC5jcHA6Ci0gICAgICAgICogaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcDoKLSAgICAg
ICAgKiBodG1sL0hUTUxNYXBFbGVtZW50LmNwcDoKLSAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgotICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgotICAgICAg
ICAqIGxvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmNwcDoKLSAgICAgICAgKiByZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgotICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRy
ZWUuY3BwOgotICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKLSAgICAgICAgKiBzdmcvU1ZH
U1ZHRWxlbWVudC5jcHA6Ci0gICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5l
ci5jcHA6Ci0gICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKLQotMjAxMy0wOC0z
MSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgRG9uJ3QgZG8g
ZG9jdW1lbnQgc3R5bGUgcmVjYWxjIHVubGVzcyB0aGVyZSdzIGEgUmVuZGVyVmlldy4KLSAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDU1OD4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
bnR0aSBLb2l2aXN0by4KLQotICAgICAgICBUaGVyZSdzIG5vIHNlbnNlIGluIGNvbXB1dGluZyBz
dHlsZSBmb3IgYSBEb2N1bWVudCB0aGF0IGhhcyBubyBSZW5kZXJWaWV3LgotICAgICAgICBDaGVj
a2luZyB0aGlzIGJlZm9yZSBjb250aW51aW5nIGFsc28gbGV0cyB1cyBrbm93IHRoYXQgdGhlcmUn
cyBhIEZyYW1lICYgRnJhbWVWaWV3Ci0gICAgICAgIHByZXNlbnQsIHNpbXBsaWZ5aW5nIHNvbWUg
dGhpbmdzIGxhdGVyIG9uLgotCi0gICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6Ci0gICAgICAgICogc3R5bGUvU3R5bGVS
ZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVG
b3JEb2N1bWVudCk6Ci0KLTIwMTMtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgotCi0gICAgICAgIEFkZCBjb21tb24gYmFzZSBmb3IgZWxlbWVudCBpdGVyYXRvcnMKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU1NwotCi0g
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgQWRkIEVsZW1lbnRJ
dGVyYXRvciBhbmQgdXNlIGl0IGFzIHRoZSBiYXNlIGZvciBjaGlsZCBhbmQgZGVzY2VuZGFudCBp
dGVyYXRvcnMuIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIGRlZmluaXRpb24gb2Ygb3BlcmF0
b3IrKy4KLSAgICAgICAgCi0gICAgICAgIEFsc28gcmVuYW1lZCBEZXNjZW5kYW50SXRlcmF0b3JB
c3NlcnRpb25zIHRvIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuCi0KLSAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgotICAgICAgICAqIFRhcmdldC5wcmk6Ci0gICAgICAgICogV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKLSAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6Ci0gICAgICAgICogZG9tL0NoaWxkSXRlcmF0b3IuaDoKLSAgICAgICAg
KFdlYkNvcmU6Ojo6Q2hpbGRJdGVyYXRvcik6Ci0gICAgICAgIChXZWJDb3JlOjo6Om9wZXJhdG9y
KToKLSAgICAgICAgKFdlYkNvcmU6Ojo6Q2hpbGRDb25zdEl0ZXJhdG9yKToKLSAgICAgICAgKFdl
YkNvcmU6Ojo6YmVnaW4pOgotICAgICAgICAoV2ViQ29yZTo6OjplbmQpOgotICAgICAgICAqIGRv
bS9EZXNjZW5kYW50SXRlcmF0b3IuaDoKLSAgICAgICAgKFdlYkNvcmU6Ojo6RGVzY2VuZGFudEl0
ZXJhdG9yKToKLSAgICAgICAgKFdlYkNvcmU6Ojo6b3BlcmF0b3IpOgotICAgICAgICAoV2ViQ29y
ZTo6OjpEZXNjZW5kYW50Q29uc3RJdGVyYXRvcik6Ci0gICAgICAgICogZG9tL0Rlc2NlbmRhbnRJ
dGVyYXRvckFzc2VydGlvbnMuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJh
dG9yLmg6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6OjpFbGVtZW50SXRlcmF0b3IpOgotICAg
ICAgICAoV2ViQ29yZTo6Ojp0cmF2ZXJzZU5leHQpOgotICAgICAgICAoV2ViQ29yZTo6Ojp0cmF2
ZXJzZVByZXZpb3VzKToKLSAgICAgICAgKFdlYkNvcmU6Ojo6dHJhdmVyc2VOZXh0U2libGluZyk6
Ci0gICAgICAgIChXZWJDb3JlOjo6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKToKLSAgICAgICAg
KFdlYkNvcmU6Ojo6b3BlcmF0b3IpOgotICAgICAgICAoV2ViQ29yZTo6PSk6Ci0gICAgICAgIChX
ZWJDb3JlOjo6OkVsZW1lbnRDb25zdEl0ZXJhdG9yKToKLSAgICAgICAgKiBkb20vRWxlbWVudEl0
ZXJhdG9yQXNzZXJ0aW9ucy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRGVzY2Vu
ZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oLgotICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJh
dG9yQXNzZXJ0aW9uczo6RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyk6Ci0gICAgICAgIChXZWJD
b3JlOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpkb21UcmVlSGFzTXV0YXRlZCk6Ci0gICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpkcm9wRXZlbnREaXNwYXRj
aEFzc2VydGlvbik6Ci0KLTIwMTMtMDgtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgW1dpbmRvd3NdIEJ1aWxkIGZpeCBhZnRlciByMTU0OTIxLgotCi0g
ICAgICAgIEFWRm91bmRhdGlvbkNGIHVzZXMgYW4gaW50ZXJuYWwgd3JhcHBlciBvYmplY3QgYXJv
dW5kIHRoZSBDLUFQSS4gVGhlIGNhbGwgcG9pbnQKLSAgICAgICAgaW4gdGhlIG9yaWdpbmFsIHBh
dGNoIHdhcyBpbnNpZGUgdGhlIHdyYXBwZXIsIHdoaWNoIGRpZCBub3QgKHlldCkgcHJvdmlkZQot
ICAgICAgICBhIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KLQotICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
dXBkYXRlVmlkZW9MYXllckdyYXZpdHkpOgotICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
dXBkYXRlVmlkZW9MYXllckdyYXZpdHkpOgotCi0yMDEzLTA4LTMwICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgotCi0gICAgICAgIFZpZGVvIHdpdGggb2JqZWN0LWZpdDog
Y292ZXIgY2FuIHNwaWxsIG91dHNpZGUgdGhlIGJveAotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMDMKLQotICAgICAgICBSZXZpZXdlZCBieSBEZWFu
IEphY2tzb24uCi0gICAgICAgIAotICAgICAgICBvYmplY3QtZml0IG9uIHJlbmRlcmVycyB3aGlj
aCB1c2UgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbmVlZHMgc3BlY2lhbAotICAgICAgICB0cmVh
dG1lbnQuCi0gICAgICAgIAotICAgICAgICBGb3IgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZXMs
IGFuZCB2aWRlbywgR3JhcGhpY3NMYXllciBuZWVkcyB0byBrbm93Ci0gICAgICAgIGJvdGggdGhl
IHNpemUgb2YgdGhlIGNvbnRlbnQgbGF5ZXIsIGFuZCBhbHNvIGEgcmVjdGFuZ2xlIGF0IHdoaWNo
IHRoaXMKLSAgICAgICAgc2hvdWxkIGJlIGNsaXBwZWQgKGJlY2F1c2UsIGZvciB0aGUgZmlyc3Qg
dGltZSwgdGhhdCBjb250ZW50IGxheWVyIGNhbiBiZQotICAgICAgICBsYXJnZXIgdGhhbiB0aGUg
cmVuZGVyZXIncyBjb250ZW50IGJveCkuCi0gICAgICAgIAotICAgICAgICBBVkZvdW5kYXRpb24g
d291bGQgYWx3YXlzIGFzcGVjdC1yYXRpbyBmaXQgdmlkZW8gYnkgZGVmYXVsdCwgc28gcGx1bWIK
LSAgICAgICAgdGhyb3VnaCBNZWRpYVBsYXllciBhIHdheSB0byBvdmVycmlkZSB0aGF0IHdoZW4g
b2JqZWN0LWZpdCByZXF1aXJlcyBpdC4KLSAgICAgICAgCi0gICAgICAgIEFkZGVkIGEgTEFZRVJf
VFJFRV9JTkNMVURFU19DT05URU5UX0xBWUVSUyBlbnVtIHRvIHRoZSBsYXllclRyZWVBc1RleHQo
KQotICAgICAgICBmbGFncyBzbyB3ZSBjYW4gZHVtcCBjb250ZW50IGxheWVycyBmb3IgdGVzdGlu
Zy4KLQotICAgICAgICBUZXN0czogY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1vYmpl
Y3QtZml0Lmh0bWwKLSAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2RpcmVj
dC1pbWFnZS1vYmplY3QtZml0LXJlZmxlY3RlZC5odG1sCi0gICAgICAgICAgICAgICBjb21wb3Np
dGluZy92aWRlby92aWRlby1vYmplY3QtZml0Lmh0bWwKLQotICAgICAgICAqIHBhZ2UvRnJhbWUu
aDogTmV3IExheWVyVHJlZUZsYWdzSW5jbHVkZUNvbnRlbnRMYXllcnMgZmxhZy4KLSAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6IE5ldyBmbGFnLgotICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKLSAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKLSAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKLSAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3Bl
Y3RSYXRpbyk6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbik6
Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDoKLSAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwOgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OnVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KToKLSAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIpOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oOgotICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaDoKLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgotICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlk
ZW9MYXllcik6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6Ci0gICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDogV2UgbmVlZCBhIG5ldyBtX2NvbnRlbnRzQ2xp
cHBpbmdMYXllciB0bwotICAgICAgICBjbGlwIHRoZSBjb250ZW50cyBsYXllciwgd2hpY2ggb25s
eSBnZXRzIGNyZWF0ZWQgd2hlbiBuZWNlc3NhcnkuIEl0IGhhcyB0byBiZSBjbG9uZWQKLSAgICAg
ICAgZm9yIHJlZmxlY3Rpb25zLgotICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp3
aWxsQmVEZXN0cm95ZWQpOgotICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRD
b250ZW50c1JlY3QpOgotICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c0NsaXBwaW5nUmVjdCk6Ci0gICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNv
bW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycyk6Ci0gICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdCk6Ci0gICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgotICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIpOgotICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKToKLSAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNDb2xvckxheWVyKToKLSAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNSZWN0cyk6Ci0g
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmR1bXBBZGRpdGlvbmFsUHJvcGVydGll
cyk6Ci0gICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJz
KToKLSAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQ2xvbmVMYXllcnMp
OgotICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJzKToK
LSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKLSAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDogTmVlZCB0byBwdXNoIGJvdGgg
dGhlIGNvbnRlbnRzUmVjdCBhbmQKLSAgICAgICAgdGhlIGNvbnRlbnRzQ2xpcHBpbmdSZWN0IGRv
d24gdG8gdGhlIEdyYXBoaWNzTGF5ZXJzLiBNb3N0IG9mIHRoZSB0aW1lIHRoZXkKLSAgICAgICAg
YXJlIHRoZSBzYW1lLCB1bmxlc3Mgb2JqZWN0LWZpdCBtYWtlcyB0aGVtIGRpZmZlcmVudC4KLSAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVzZXRDb250ZW50c1JlY3QpOgot
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwb3NpdGlvbk92ZXJmbG93Q29u
dHJvbHNMYXllcnMpOgotICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kQ29sb3IpOgotICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1h
Z2UpOgotICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNv
bnRlbnRzKToKLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29udGVudHNC
b3gpOgotICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBc1RleHQpOgot
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWRlbzo6dXBkYXRlUGxheWVyKToKLSAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmxheWVyVHJlZUFzVGV4dCk6Ci0gICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKLSAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6Ci0KLTIwMTMtMDgtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+Ci0K
LSAgICAgICAgW1dpbmRvd3NdIFVwZGF0ZSB0byBpbmNvcnBvcmF0ZSBhZGRpdGlvbmFsIHN1Z2dl
c3Rpb25zCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjA0NDgKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlcgotCi0gICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDogQWRkCi0gICAgICAgIG5vdGVzIGFzIHRvIHdoeSBBVkZvdW5kYXRpb25DRiBu
ZWVkcyB0aGlzIGV4dHJhIG1ldGhvZCBjYWxsLgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oOiBVc2Ug
T1ZFUlJJREUKLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOiBSZXBsYWNlIHRl
cm5hcnkgb3BlcmF0b3Igd2l0aCBsb2dpY2FsICYmLgorMjAxMy0wOC0zMCAgSGFucyBNdWxsZXIg
IDxobXVsbGVyQGFkb2JlLmNvbT4KIAotMjAxMy0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KKyAgICAgICAgW0NTUyBTaGFwZXNdIFJldmlzZSB0aGUgU2hhcGVJbnRl
cnZhbCBzZXQgb3BlcmF0aW9ucycgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDM0OQogCi0gICAgICAgIFtXaW5kb3dzXSBW
aWRlIGVsZW1lbnQgaW4gcGFnZSBhbHdheXMgdXNlcyBub24taHcgYWNjZWxlcmF0ZWQgbW9kZS4K
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQ0OAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAotICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlcgorICAgICAgICBSZXZpc2VkIHRoZSBTaGFwZUludGVydmFscyB1bml0ZSwg
aW50ZXJzZWN0LCBhbmQgc3VidHJhY3Qgb3BlcmF0aW9ucyB0bworICAgICAgICBpbXByb3ZlIGVm
ZmljaWVuY3kgYW5kIGNsYXJpdHkuCiAKLSAgICAgICAgVGhpcyBwYXRjaCBpcyB1bmZvcnR1bmF0
ZWx5IGxhcmdlciB0aGFuIG15IG9yaWdpbmFsIGlkZWEsIGJ1dCBzZWVtcyB0byBtYWtlIHRoZQot
ICAgICAgICBsYXlvdXQgc3lzdGVtIGhhcHBpZXIuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIGludG8g
Y29tcG9zaXRlZCBtb2RlIHdoZW4gYnVpbGRpbmcKLSAgICAgICAgdGhlIG1lZGlhIHBsYXllciwg
d2Ugbm93IGJ1aWxkIHRoZSBvcmlnaW5hbCBsYXlvdXQgdHJlZSB3aXRoIGNvbXBvc2l0aW5nIGFj
dGl2ZQotICAgICAgICBpZiB0aGUgdW5kZXJseWluZyBtZWRpYSBlbGVtZW50IHJlcXVpcmVzIGl0
LiBUaGUgQVZGb3VuZGF0aW9uQ0YgcGxheWVyIG5lZWRzIHRvCi0gICAgICAgIGhhdmUgdGhlIGNv
bXBvc2l0b3IgYXZhaWxhYmxlIGF0IGNvbnN0cnVjdGlvbiB0aW1lIHNvIGl0IGNhbiBhdHRhY2gg
dG8gdGhlCi0gICAgICAgIHJlbmRlcmluZyBkZXZpY2UuIE90aGVyd2lzZSBpdCBmYWxscyBiYWNr
IHRvIENQVS1vbmx5IG1vZGUuCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgcmVxdWlyZWQsIHRo
aXMgaXMganVzdCBhbiBpbnRlcm5hbCByZWZhY3RvcmluZy4KIAotICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKTogQWRkZWQKLSAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oOgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlOjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKTogQWRkZWQKLSAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwOgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OmNyZWF0ZUFWUGxheWVyKTogQWRkZWQKLSAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
aDoKLSAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpy
ZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKToKLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKTogVXNlcyBuZXcKLSAgICAgICAgJ3Jl
cXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcnIHRvIHNob3J0LWNpcmN1aXQgY2hlY2sgZm9yIHdo
ZXRoZXIgYQotICAgICAgICBjb21wb3NpdG9yIGlzIHJlcXVpcmVkLgotICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6cmVx
dWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZyk6Ci0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyk6IFJlbW92
ZWQgY2FsbCB0byBTaGFwZUludGVydmFsPFQ+c29ydFZlY3RvcigpLCBzaW5jZSBjYWxsaW5nIHN0
ZDo6c29ydCBkaXJlY3RseSBpcyBzaW1wbGVyLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGVJbnRlcnZhbC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6Y29udGFp
bnMpOiBUcnVlIGlmIHRoZSBpbnRlcnZhbCBwYXJhbWV0ZXIgaXMgd2l0aGluIHRoaXMgaW50ZXJ2
YWwuCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3QpOiBTdWJzdGFu
dGlhbGx5IHJldmlzZWQgdmVyc2lvbiBvZiB0aGUgb3JpZ2luYWwgbWV0aG9kLgorICAgICAgICAo
V2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6dW5pdGVWZWN0b3JzKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3RWZWN0b3JzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMpOiBEaXR0by4KIAogMjAx
My0wOC0zMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTT05PYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNPTk9iamVjdC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTg0Yzc3Li4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNPTk9iamVjdC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX0pTT05PYmplY3Rf
aAotI2RlZmluZSBXZWJDb3JlX0ZXRF9KU09OT2JqZWN0X2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU09OT2JqZWN0Lmg+Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTRiODhl
OS4uNGQ3ZTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI5OCw3ICsyOTgsNiBAQCBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1BsdWdJbnNSZXNvdXJjZXMuaDogJChXZWJDb3JlKS9jc3MvbWFr
ZS1jc3MtZmlsZS1hcnJheXMucAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnkuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFj
dG9yeS5jcHAKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDog
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuaAogRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuaDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9I
VE1MTmFtZXMuY3BwCi1EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50VHlwZUNoZWNr
cy5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5oCiBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0hUTUxOYW1lcy5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTE5hbWVzLmgK
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTE5hbWVzLmg6ICQoV2ViQ29yZSkvZG9tL21ha2Vf
bmFtZXMucGwgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtICQoV2ViQ29yZSkvaHRtbC9IVE1MVGFn
TmFtZXMuaW4gJChXZWJDb3JlKS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgogCSQoQU1fVl9H
RU4pJChQRVJMKSAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLXRhZ3MgJChXZWJD
b3JlKS9odG1sL0hUTUxUYWdOYW1lcy5pbiAtLWF0dHJzICQoV2ViQ29yZSkvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4gLS1leHRyYURlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgLS1mYWN0
b3J5IC0td3JhcHBlckZhY3RvcnkgLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJDT1JFKSIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGJkZjdiNzIuLmI3YThlNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTUsNyArMTUsNiBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXhjZXB0aW9uSW50ZXJmYWNl
cy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmggXAotCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRUeXBlQ2hlY2tzLmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSFRNTEVudGl0eVRhYmxlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9I
VE1MTmFtZXMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5oIFwKQEAg
LTI3NzYsNiArMjc3NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1
dHRvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0
LmNwcCBcCkBAIC0yODIwLDYgKzI4MjAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBcCisJU291
cmNlL1dlYkNvcmUvZG9tL0Rlc2NlbmRhbnRJdGVyYXRvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9k
b20vRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
RGV2aWNlTW90aW9uQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25D
b250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xs
ZXIuaCBcCkBAIC0yODcwLDEzICsyODcyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NVGltZVN0YW1wLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50Q2hpbGRJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaCBcCi0JU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBcCi0JU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRJdGVyYXRvci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9y
QXNzZXJ0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggMDczNTk5Ni4uYzdhNjVjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5j
cHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKICNpbmNsdWRlICJDb29yZGluYXRlcy5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29u
dHJvbGxlci5oIgpAQCAtMTQ4LDcgKzE0Nyw3IEBAIHZvaWQgR2VvbG9jYXRpb246Okdlb05vdGlm
aWVyOjp0aW1lckZpcmVkKFRpbWVyPEdlb05vdGlmaWVyPiopCiAKICAgICAvLyBQcm90ZWN0IHRo
aXMgR2VvTm90aWZpZXIgb2JqZWN0LCBzaW5jZSBpdAogICAgIC8vIGNvdWxkIGJlIGRlbGV0ZWQg
YnkgYSBjYWxsIHRvIGNsZWFyV2F0Y2ggaW4gYSBjYWxsYmFjay4KLSAgICBSZWY8R2VvTm90aWZp
ZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gcHJvdGVjdCh0aGlz
KTsKIAogICAgIC8vIFRlc3QgZm9yIGZhdGFsIGVycm9yIGZpcnN0LiBUaGlzIGlzIHJlcXVpcmVk
IGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgRnJhbWUgaXMKICAgICAvLyBkaXNjb25uZWN0ZWQgYW5k
IHJlcXVlc3RzIGFyZSBjYW5jZWxsZWQuCkBAIC0xODgsMjAgKzE4NywyOSBAQCBib29sIEdlb2xv
Y2F0aW9uOjpXYXRjaGVyczo6YWRkKGludCBpZCwgUGFzc1JlZlB0cjxHZW9Ob3RpZmllcj4gcHJw
Tm90aWZpZXIpCiBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXIqIEdlb2xvY2F0aW9uOjpXYXRjaGVy
czo6ZmluZChpbnQgaWQpCiB7CiAgICAgQVNTRVJUKGlkID4gMCk7Ci0gICAgcmV0dXJuIG1faWRU
b05vdGlmaWVyTWFwLmdldChpZCk7CisgICAgSWRUb05vdGlmaWVyTWFwOjppdGVyYXRvciBpdGVy
ID0gbV9pZFRvTm90aWZpZXJNYXAuZmluZChpZCk7CisgICAgaWYgKGl0ZXIgPT0gbV9pZFRvTm90
aWZpZXJNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBpdGVyLT52YWx1
ZS5nZXQoKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OnJlbW92ZShpbnQgaWQp
CiB7CiAgICAgQVNTRVJUKGlkID4gMCk7Ci0gICAgaWYgKGF1dG8gbm90aWZpZXIgPSBtX2lkVG9O
b3RpZmllck1hcC50YWtlKGlkKSkKLSAgICAgICAgbV9ub3RpZmllclRvSWRNYXAucmVtb3ZlKG5v
dGlmaWVyKTsKKyAgICBJZFRvTm90aWZpZXJNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2lkVG9Ob3Rp
Zmllck1hcC5maW5kKGlkKTsKKyAgICBpZiAoaXRlciA9PSBtX2lkVG9Ob3RpZmllck1hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fbm90aWZpZXJUb0lkTWFwLnJlbW92ZShpdGVyLT52
YWx1ZSk7CisgICAgbV9pZFRvTm90aWZpZXJNYXAucmVtb3ZlKGl0ZXIpOwogfQogCiB2b2lkIEdl
b2xvY2F0aW9uOjpXYXRjaGVyczo6cmVtb3ZlKEdlb05vdGlmaWVyKiBub3RpZmllcikKIHsKLSAg
ICBpZiAoYXV0byBpZGVudGlmaWVyID0gbV9ub3RpZmllclRvSWRNYXAudGFrZShub3RpZmllcikp
Ci0gICAgICAgIG1faWRUb05vdGlmaWVyTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICBOb3Rp
ZmllclRvSWRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWVyVG9JZE1hcC5maW5kKG5vdGlm
aWVyKTsKKyAgICBpZiAoaXRlciA9PSBtX25vdGlmaWVyVG9JZE1hcC5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1faWRUb05vdGlmaWVyTWFwLnJlbW92ZShpdGVyLT52YWx1ZSk7CisgICAg
bV9ub3RpZmllclRvSWRNYXAucmVtb3ZlKGl0ZXIpOwogfQogCiBib29sIEdlb2xvY2F0aW9uOjpX
YXRjaGVyczo6Y29udGFpbnMoR2VvTm90aWZpZXIqIG5vdGlmaWVyKSBjb25zdApAQCAtMzcxLDcg
KzM3OSw5IEBAIHZvaWQgR2VvbG9jYXRpb246Om1ha2VDYWNoZWRQb3NpdGlvbkNhbGxiYWNrcygp
CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG9uZS1zaG90IHJlcXVlc3QsIHN0b3AgaXQuIE90
aGVyd2lzZSwgaWYgdGhlIHdhdGNoIHN0aWxsCiAgICAgICAgIC8vIGV4aXN0cywgc3RhcnQgdGhl
IHNlcnZpY2UgdG8gZ2V0IHVwZGF0ZXMuCi0gICAgICAgIGlmICghbV9vbmVTaG90cy5yZW1vdmUo
bm90aWZpZXIpICYmIG1fd2F0Y2hlcnMuY29udGFpbnMobm90aWZpZXIpKSB7CisgICAgICAgIGlm
IChtX29uZVNob3RzLmNvbnRhaW5zKG5vdGlmaWVyKSkKKyAgICAgICAgICAgIG1fb25lU2hvdHMu
cmVtb3ZlKG5vdGlmaWVyKTsKKyAgICAgICAgZWxzZSBpZiAobV93YXRjaGVycy5jb250YWlucyhu
b3RpZmllcikpIHsKICAgICAgICAgICAgIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8
fCBzdGFydFVwZGF0aW5nKG5vdGlmaWVyKSkKICAgICAgICAgICAgICAgICBub3RpZmllci0+c3Rh
cnRUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbHNlCkBAIC00MjMsNyArNDMzLDcgQEAg
dm9pZCBHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaChpbnQgd2F0Y2hJRCkKIHZvaWQgR2VvbG9jYXRp
b246OnNldElzQWxsb3dlZChib29sIGFsbG93ZWQpCiB7CiAgICAgLy8gUHJvdGVjdCB0aGUgR2Vv
bG9jYXRpb24gb2JqZWN0IGZyb20gZ2FyYmFnZSBjb2xsZWN0aW9uIGR1cmluZyBhIGNhbGxiYWNr
LgotICAgIFJlZjxHZW9sb2NhdGlvbj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPEdlb2xv
Y2F0aW9uPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgLy8gVGhpcyBtYXkgYmUgZHVlIHRvIGVpdGhl
ciBhIG5ldyBwb3NpdGlvbiBmcm9tIHRoZSBzZXJ2aWNlLCBvciBhIGNhY2hlZAogICAgIC8vIHBv
c2l0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCmluZGV4IGNjZGIzMDUuLjhhMGU4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTg0LDcgKzg0LDYgQEAKICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04NDQs
NyArODQzLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBmcm9t
IGJlaW5nIGRlbGV0ZWQgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBBdXRv
TG9ja2VyLgotICAgIFJlZjxBdWRpb0NvbnRleHQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0
cjxBdWRpb0NvbnRleHQ+IHByb3RlY3QodGhpcyk7CiAgICAgewogICAgICAgICBBdXRvTG9ja2Vy
IGxvY2tlcih0aGlzKTsKIApAQCAtOTEyLDE2ICs5MTEsMjAgQEAgdm9pZCBBdWRpb0NvbnRleHQ6
OmFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoaXNH
cmFwaE93bmVyKCkpOwogCi0gICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzLmFkZChub2RlKS5p
c05ld0VudHJ5KQorICAgIGlmICghbV9hdXRvbWF0aWNQdWxsTm9kZXMuY29udGFpbnMobm9kZSkp
IHsKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXMuYWRkKG5vZGUpOwogICAgICAgICBtX2F1
dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7CisgICAgfQogfQogCiB2b2lkIEF1
ZGlvQ29udGV4dDo6cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlKiBub2RlKQogewog
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CiAKLSAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9k
ZXMucmVtb3ZlKG5vZGUpKQorICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5jb250YWlucyhu
b2RlKSkgeworICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1vdmUobm9kZSk7CiAgICAg
ICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKKyAgICB9CiB9CiAK
IHZvaWQgQXVkaW9Db250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcAppbmRleCA2
YTJlNWRkLi41MjEzNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcApAQCAtNTQsMTAgKzU0LDExIEBAIHZvaWQgQXVkaW9Ob2Rl
SW5wdXQ6OmNvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFscmVhZHkgY29ubmVjdGVkIHRvIHRoaXMgb3V0cHV0
LgotICAgIGlmICghbV9vdXRwdXRzLmFkZChvdXRwdXQpLmlzTmV3RW50cnkpCisgICAgaWYgKG1f
b3V0cHV0cy5jb250YWlucyhvdXRwdXQpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IG91dHB1dC0+YWRkSW5wdXQodGhpcyk7CisgICAgbV9vdXRwdXRzLmFkZChvdXRwdXQpOwogICAg
IGNoYW5nZWRPdXRwdXRzKCk7CiAKICAgICAvLyBTb21ib2R5IGhhcyBqdXN0IGNvbm5lY3RlZCB0
byB1cywgc28gY291bnQgaXQgYXMgYSByZWZlcmVuY2UuCkBAIC03Myw3ICs3NCw4IEBAIHZvaWQg
QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIEZpcnN0IHRyeSB0byBkaXNjb25uZWN0IGZyb20gImFjdGl2
ZSIgY29ubmVjdGlvbnMuCi0gICAgaWYgKG1fb3V0cHV0cy5yZW1vdmUob3V0cHV0KSkgeworICAg
IGlmIChtX291dHB1dHMuY29udGFpbnMob3V0cHV0KSkgeworICAgICAgICBtX291dHB1dHMucmVt
b3ZlKG91dHB1dCk7CiAgICAgICAgIGNoYW5nZWRPdXRwdXRzKCk7CiAgICAgICAgIG91dHB1dC0+
cmVtb3ZlSW5wdXQodGhpcyk7CiAgICAgICAgIG5vZGUoKS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZU
eXBlQ29ubmVjdGlvbik7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJldHVybiBpbW1lZGlh
dGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBtYXkgYmUgZGVsZXRl
ZC4KQEAgLTgxLDcgKzgzLDggQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVjdChBdWRp
b05vZGVPdXRwdXQqIG91dHB1dCkKICAgICB9CiAgICAgCiAgICAgLy8gT3RoZXJ3aXNlLCB0cnkg
dG8gZGlzY29ubmVjdCBmcm9tIGRpc2FibGVkIGNvbm5lY3Rpb25zLgotICAgIGlmIChtX2Rpc2Fi
bGVkT3V0cHV0cy5yZW1vdmUob3V0cHV0KSkgeworICAgIGlmIChtX2Rpc2FibGVkT3V0cHV0cy5j
b250YWlucyhvdXRwdXQpKSB7CisgICAgICAgIG1fZGlzYWJsZWRPdXRwdXRzLnJlbW92ZShvdXRw
dXQpOwogICAgICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMpOwogICAgICAgICBub2RlKCkt
PmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOyAvLyBOb3RlOiBpdCdzIGltcG9y
dGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGRlcmVmKCkgY2FsbHMgc2luY2Ug
dGhlIG5vZGUgbWF5IGJlIGRlbGV0ZWQuCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDNlNDg5OWYuLjJiZTUw
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNw
cApAQCAtMTcyLDEwICsxNzIsMTEgQEAgdm9pZCBBdWRpb1BhcmFtOjpjb25uZWN0KEF1ZGlvTm9k
ZU91dHB1dCogb3V0cHV0KQogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fb3V0cHV0cy5hZGQob3V0cHV0KS5pc05ld0VudHJ5KQorICAgIGlmIChtX291dHB1
dHMuY29udGFpbnMob3V0cHV0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgb3V0cHV0LT5hZGRQ
YXJhbSh0aGlzKTsKKyAgICBtX291dHB1dHMuYWRkKG91dHB1dCk7CiAgICAgY2hhbmdlZE91dHB1
dHMoKTsKIH0KIApAQCAtMTg3LDcgKzE4OCw4IEBAIHZvaWQgQXVkaW9QYXJhbTo6ZGlzY29ubmVj
dChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKICAgICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKG1fb3V0cHV0cy5yZW1vdmUob3V0cHV0KSkgeworICAgIGlmIChtX291
dHB1dHMuY29udGFpbnMob3V0cHV0KSkgeworICAgICAgICBtX291dHB1dHMucmVtb3ZlKG91dHB1
dCk7CiAgICAgICAgIGNoYW5nZWRPdXRwdXRzKCk7CiAgICAgICAgIG91dHB1dC0+cmVtb3ZlUGFy
YW0odGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYjI5MWEwNy4uZGQzZGRkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCkBAIC0xNTc0LDYgKzE1NzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vQ0RBVEFT
ZWN0aW9uLmggXAogICAgIGRvbS9DaGFyYWN0ZXJEYXRhLmggXAogICAgIGRvbS9DaGVja2VkUmFk
aW9CdXR0b25zLmggXAorICAgIGRvbS9DaGlsZEl0ZXJhdG9yLmggXAogICAgIGRvbS9DaGlsZE5v
ZGVMaXN0LmggXAogICAgIGRvbS9DbGFzc05vZGVMaXN0LmggXAogICAgIGRvbS9DbGllbnRSZWN0
LmggXApAQCAtMTU4Nyw2ICsxNTg4LDggQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0NvbnRleHRG
ZWF0dXJlcy5oIFwKICAgICBkb20vQ3VzdG9tRXZlbnQuaCBcCiAgICAgZG9tL2RlZmF1bHQvUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBcCisgICAgZG9tL0Rlc2NlbmRhbnRJdGVyYXRvci5o
IFwKKyAgICBkb20vRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIFwKICAgICBkb20vRGV2
aWNlTW90aW9uQ2xpZW50LmggXAogICAgIGRvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmggXAog
ICAgIGRvbS9EZXZpY2VNb3Rpb25EYXRhLmggXApAQCAtMTYxMCwxMiArMTYxMyw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGRvbS9ET01UaW1lU3RhbXAuaCBcCiAgICAgZG9tL0RhdGFzZXRET01TdHJp
bmdNYXAuaCBcCiAgICAgZG9tL0VsZW1lbnQuaCBcCi0gICAgZG9tL0VsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yLmggXAotICAgIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oIFwKICAgICBkb20vRWxl
bWVudERhdGEuaCBcCi0gICAgZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBcCi0gICAg
ZG9tL0VsZW1lbnRJdGVyYXRvci5oIFwKLSAgICBkb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9u
cy5oIFwKICAgICBkb20vRWxlbWVudFRyYXZlcnNhbC5oIFwKICAgICBkb20vRW50aXR5LmggXAog
ICAgIGRvbS9FbnRpdHlSZWZlcmVuY2UuaCBcCkBAIC0zNTcyLDYgKzM1NzAsMTIgQEAgZW5hYmxl
PyhYU0xUKSB7CiAgICAgICAgICAgICAgICAgeG1sL1hTTEltcG9ydFJ1bGUuaCBcCiAgICAgICAg
ICAgICAgICAgeG1sL1hTTFRVbmljb2RlU29ydC5oCiAKKyAgICB9IGVsc2UgeworICAgICAgICBT
T1VSQ0VTICs9IFwKKyAgICAgICAgICAgIGRvbS9UcmFuc2Zvcm1Tb3VyY2VRdC5jcHAgXAorICAg
ICAgICAgICAgeG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAgXAorICAgICAgICAgICAgeG1sL1hTTFRQ
cm9jZXNzb3IuY3BwIFwKKyAgICAgICAgICAgIHhtbC9YU0xUUHJvY2Vzc29yUXQuY3BwCiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IGE3YTExODIuLjJiMjBkNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJp
CkBAIC0xMTAsMjIgKzExMCwxOSBAQCBJTkNMVURFUEFUSCArPSBcCiAKIElOQ0xVREVQQVRIICs9
ICQkV0VCQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVIKIAotdXNlPyhMSUJYTUwyKSB7Ci0gICAg
bWFjIHsKLSAgICAgICAgSU5DTFVERVBBVEggKz0gL3Vzci9pbmNsdWRlL2xpYnhtbDIKLSAgICAg
ICAgTElCUyArPSAtbHhtbDIKLSAgICB9IGVsc2UgewotICAgICAgICBQS0dDT05GSUcgKz0gbGli
eG1sLTIuMAotICAgIH0KLX0KLQogZW5hYmxlPyhYU0xUKSB7Ci0gICAgbWFjIHsKLSAgICAgICAg
SU5DTFVERVBBVEggKz0gL3Vzci9pbmNsdWRlL2xpYnhzbHQKLSAgICAgICAgTElCUyArPSAtbHhz
bHQKKyAgICB1c2U/KExJQlhNTDIpIHsKKyAgICAgICAgbWFjIHsKKyAgICAgICAgICAgIElOQ0xV
REVQQVRIICs9IC91c3IvaW5jbHVkZS9saWJ4c2x0IC91c3IvaW5jbHVkZS9saWJ4bWwyCisgICAg
ICAgICAgICBMSUJTICs9IC1seG1sMiAtbHhzbHQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIFBLR0NPTkZJRyArPSBsaWJ4c2x0IGxpYnhtbC0yLjAKKyAgICAgICAgfQogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFBLR0NPTkZJRyArPSBsaWJ4c2x0CisgICAgICAgIFFUICo9IHhtbHBhdHRl
cm5zCiAgICAgfQorfSBlbHNlOiFtYWM6dXNlPyhMSUJYTUwyKSB7CisgICAgUEtHQ09ORklHICs9
IGxpYnhtbC0yLjAKIH0KIAogdXNlPyhaTElCKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAwYjQ0ZDBkLi43Zjc1MTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTEsNCAr
MSw0IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pgor77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRz
PSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3Nv
ZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9q
ZWN0Q29uZmlndXJhdGlvbnMiPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJE
ZWJ1Z1N1ZmZpeHxXaW4zMiI+CkBAIC0xODI0MSw3ICsxODI0MSw2IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXhjZXB0aW9uSGVhZGVycy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEV4Y2Vw
dGlvbkludGVyZmFjZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xIVE1MRWxlbWVudEZhY3RvcnkuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIVE1MRWxlbWVudFR5cGVDaGVja3MuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIVE1M
TmFtZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNl
LmgiIC8+CkBAIC0xODY5OSw3ICsxODY5OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTWF0aE1MRWxlbWVudEZhY3RvcnkuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNYXRoTUxOYW1lcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFNW
R0VsZW1lbnRGYWN0b3J5LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcU1ZHRWxlbWVudFR5cGVDaGVja3MuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xTVkdOYW1lcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFVzZXJBZ2VudFN0eWxl
U2hlZXRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcV2ViS2l0Rm9udEZhbWlseU5hbWVzLmgiIC8+CkBAIC0yMDIxOSw2ICsyMDIxNyw3IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cQ0RBVEFTZWN0aW9uLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cQ2hhcmFjdGVyRGF0YS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZG9tXENoZWNrZWRSYWRpb0J1dHRvbnMuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxDaGlsZEl0ZXJhdG9yLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkb21cQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZG9tXENoaWxkTm9kZUxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGRvbVxDbGFzc05vZGVMaXN0LmgiIC8+CkBAIC0yMDIzOCw2ICsyMDIzNyw4
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cRGF0YVRyYW5zZmVySXRlbS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXERhdGFUcmFuc2Zlckl0ZW1MaXN0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cRGVjb2RlZERhdGFEb2N1bWVudFBh
cnNlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXERlc2NlbmRhbnRJdGVy
YXRvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXERlc2NlbmRhbnRJdGVy
YXRvckFzc2VydGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxEZXZp
Y2VNb3Rpb25DbGllbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxEZXZp
Y2VNb3Rpb25Db250cm9sbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21c
RGV2aWNlTW90aW9uRGF0YS5oIiAvPgpAQCAtMjAyNjQsMTIgKzIwMjY1LDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxET01TdHJpbmdNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGRvbVxET01UaW1lU3RhbXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRvbVxFbGVtZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21c
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRvbVxFbGVtZW50Q2hpbGRJdGVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZG9tXEVsZW1lbnREYXRhLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21c
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZG9tXEVsZW1lbnRJdGVyYXRvci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
ZG9tXEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRvbVxFbGVtZW50VHJhdmVyc2FsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxkb21cRW50aXR5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cRW50
aXR5UmVmZXJlbmNlLmgiIC8+CkBAIC0yMTQwOCw0ICsyMTQwNCw0IEBACiAgIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFy
Z2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlvbnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9y
dEdyb3VwPgotPC9Qcm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzZDg0NmQzLi5kNWRiYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTAxLDggKzQ1MDEsNiBAQAogCQlCNTVE
NUFBNDExOTEzMUZDMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVBQTIxMTkx
MzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLzsgfTsKIAkJ
QjU1RDVBQTUxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RDVB
QTMxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suY3BwICov
OyB9OwogCQlCNTVENUFBOTExOTEzMjUwMDBCQ0MzMTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmND
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjU1RDVBQTcxMTkxMzI1MDAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNw
cCAqLzsgfTsKLQkJQjU2MkRCNjAxN0QzQ0Q2MzAwMTBBRjk2IC8qIEhUTUxFbGVtZW50VHlwZUNo
ZWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU2
MkRCNUUxN0QzQ0Q1NjAwMTBBRjk2IC8qIEhUTUxFbGVtZW50VHlwZUNoZWNrcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUI1NjJEQjYxMTdEM0NE
NjYwMDEwQUY5NiAvKiBTVkdFbGVtZW50VHlwZUNoZWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU2MkRCNUYxN0QzQ0Q1NjAwMTBBRjk2IC8qIFNW
R0VsZW1lbnRUeXBlQ2hlY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQjU4Q0VCNjkxMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5j
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNThDRUI2
NzExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuaCAqLzsgfTsKIAkJQjU4Q0VCNkEx
MTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OENFQjY4MTE5MTM2MDcwMDJBNjc5MCAvKiBK
U0RhdGFiYXNlU3luYy5jcHAgKi87IH07CiAJCUI1OENFQjZEMTE5MTM2MUMwMDJBNjc5MCAvKiBK
U1NRTFRyYW5zYWN0aW9uU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjU4Q0VCNkIxMTkxMzYxQzAwMkE2NzkwIC8qIEpTU1FMVHJhbnNhY3Rpb25T
eW5jLmggKi87IH07CkBAIC01NDQ3LDcgKzU0NDUsNyBAQAogCQlFMUYxRTgzMDBDM0MyQkI5MDA2
REIzOTEgLyogWFNMVEV4dGVuc2lvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRjFFODJFMEMzQzJCQjkwMDZEQjM5MSAvKiBYU0xURXh0ZW5zaW9u
cy5oICovOyB9OwogCQlFMUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3
QTIwRjAxMjU1QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFF
QkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFs
RGF0YS5jcHAgKi87IH07Ci0JCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRl
cmF0b3JBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDAxQzI3NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0
aW9ucy5oICovOyB9OworCQlFNDAxQzI3NTE3Q0U1M0VDMDBDNDFBMzUgLyogRGVzY2VuZGFudEl0
ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIERlc2NlbmRhbnRJdGVyYXRvckFz
c2VydGlvbnMuaCAqLzsgfTsKIAkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNl
TG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDI5NUZBMzEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDMxMDVC
ODE2NzUwRjBDMDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDMxMDVCNzE2NzUwRjBDMDBEQjJGQjggLyog
Tm9kZVRyYXZlcnNhbC5jcHAgKi87IH07CiAJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBO
b2RlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDMxMDVCQTE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NDkzLDggKzU0OTEs
OCBAQAogCQlFNDUzOTAxRTBFQUZDQUNBMDAzNjk1QzggLyogUGFzdGVib2FyZElPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTM5MDE5MEVBRkNB
Q0EwMDM2OTVDOCAvKiBQYXN0ZWJvYXJkSU9TLm1tICovOyB9OwogCQlFNDUzOTA0NjBFQUZENjM3
MDAzNjk1QzggLyogU2hhcmVkVGltZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUzOTAzNTBFQUZENjM3MDAzNjk1QzggLyogU2hhcmVkVGlt
ZXJJT1MubW0gKi87IH07CiAJCUU0NjJBNEExMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhh
c2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjJB
NEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFNDZBMkIxQzE3Q0E2NUI5MDAwREJDRDgg
LyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2QTJCMUIxN0NBNjVCOTAwMERCQ0Q4IC8qIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgfTsKLQkJRTQ2QTJCMUUxN0NBNzZCMTAwMERCQ0Q4IC8q
IEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDZBMkIxRDE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRl
cmF0b3IuaCAqLzsgfTsKKwkJRTQ2QTJCMUMxN0NBNjVCOTAwMERCQ0Q4IC8qIERlc2NlbmRhbnRJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ2QTJCMUIxN0NBNjVCOTAwMERCQ0Q4IC8qIERlc2NlbmRhbnRJdGVyYXRvci5oICovOyB9Owor
CQlFNDZBMkIxRTE3Q0E3NkIxMDAwREJDRDggLyogQ2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2QTJCMUQxN0NBNzZCMTAwMERC
Q0Q4IC8qIENoaWxkSXRlcmF0b3IuaCAqLzsgfTsKIAkJRTQ3MTI3Q0ExNjM0MzhBMTAwRUQ2RjVB
IC8qIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3QTk3Q0UxNjMwNTlGQzAwNURDRDk5IC8qIFN0eWxl
SW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwICovOyB9OwogCQlFNDcxMjdDQjE2MzQzOEFFMDBFRDZG
NUEgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3QTk3Q0YxNjMwNTlGQzAwNURDRDk5IC8qIFN0eWxl
SW52YWxpZGF0aW9uQW5hbHlzaXMuaCAqLzsgfTsKIAkJRTQ3NzhCN0YxMTVBNTgxQTAwQjVEMzcy
IC8qIEpTQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ3NzhCN0QxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3Bw
ICovOyB9OwpAQCAtNTUwNyw4ICs1NTA1LDYgQEAKIAkJRTQ5NDZFQUYxNTZFNjRERDAwRDMyOTdG
IC8qIFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ5NDZFQUQxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5o
ICovOyB9OwogCQlFNDlCRDlGQTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlCRDlGOTEzMUZE
MkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5QkRBMEIxMzFGRDNFNTAwM0M1NkYwIC8qIENTU1Zh
bHVlUG9vbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNDlCREEwQTEzMUZEM0U1MDAzQzU2RjAgLyogQ1NTVmFsdWVQb29sLmNwcCAqLzsgfTsKLQkJ
RTRBRTdDMTYxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRTdDMTUxN0QxQkI5NTAwMDlG
QjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oICovOyB9OwotCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZC
MzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3QzE5MTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oICovOyB9OwogCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyog
VW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLzsgfTsKIAkJRTRB
RkQwMEIwREFGMzM1NDAwRjVGNTVDIC8qIFNNSUxUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDA1MERBRjMzNTQwMEY1RjU1QyAvKiBT
TUlMVGltZS5jcHAgKi87IH07CiAJCUU0QUZEMDBDMERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGlt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkQw
MDYwREFGMzM1NDAwRjVGNTVDIC8qIFNNSUxUaW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMTUzLDggKzExMTQ5LDYgQEAKIAkJQjU1RDVB
QTIxMTkxMzFGQzAwQkNDMzE1IC8qIEpTU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTVENUFBMzExOTEzMUZDMDBCQ0Mz
MTUgLyogSlNTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU1RDVBQTcxMTkxMzI1MDAwQkNDMzE1IC8qIEpT
U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjU2MkRCNUUxN0QzQ0Q1NjAwMTBBRjk2IC8qIEhUTUxFbGVtZW50VHlw
ZUNoZWNrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxlbWVudFR5cGVDaGVja3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjU2MkRCNUYxN0QzQ0Q1NjAwMTBBRjk2IC8qIFNWR0Vs
ZW1lbnRUeXBlQ2hlY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRUeXBlQ2hlY2tzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OENFQjY3MTE5MTM2MDcwMDJBNjc5MCAv
KiBKU0RhdGFiYXNlU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Rh
dGFiYXNlU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNThDRUI2ODExOTEz
NjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNEYXRhYmFzZVN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNThDRUI2QjExOTEzNjFDMDAyQTY3OTAgLyogSlNTUUxUcmFuc2FjdGlvblN5bmMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvblN5bmMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjI5LDcgKzEyMjIzLDcgQEAKIAkJ
RTFGMUU4MkUwQzNDMkJCOTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRFeHRlbnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxRkY1N0EyMEYwMTI1NUIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEdsb2JhbERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRjU3QTUwRjAxMjU2QjAwODkxRUJCIC8q
IFRocmVhZEdsb2JhbERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGhyZWFkR2xvYmFsRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0
MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1
IC8qIERlc2NlbmRhbnRJdGVyYXRvckFzc2VydGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJDNSAvKiBD
U1NQcm9wZXJ0eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDFF
QTAzOTExOTgzNzQ5MDA3MTBCQzUgLyogQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1ZUtleXdvcmRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjcwLDggKzEyMjY0LDggQEAKIAkJRTQ1MzkwMTkwRUFG
Q0FDQTAwMzY5NUM4IC8qIFBhc3RlYm9hcmRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBQYXN0ZWJvYXJkSU9TLm1tOyBwYXRoID0gaW9zL1Bhc3RlYm9hcmRJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTM5MDM1MEVBRkQ2MzcwMDM2
OTVDOCAvKiBTaGFyZWRUaW1lcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFNoYXJlZFRpbWVySU9TLm1tOyBwYXRoID0gaW9zL1NoYXJlZFRpbWVySU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDYyQTRBMDExM0U3MUJFMDA0QTQyMjAg
LyogSW50UG9pbnRIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludFBv
aW50SGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNDZBMkIxQjE3Q0E2NUI5
MDAwREJDRDggLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUU0NkEyQjFEMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hp
bGRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50Q2hp
bGRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDZBMkIxQjE3Q0E2
NUI5MDAwREJDRDggLyogRGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlc2NlbmRhbnRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDZBMkIxRDE3Q0E3NkIxMDAwREJDRDggLyogQ2hpbGRJdGVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGlsZEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0Nzc4QjdEMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDc3OEI3RTExNUE1ODFBMDBC
NUQzNzIgLyogSlNDdXN0b21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0N1c3RvbUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0E5N0NF
MTYzMDU5RkMwMDVEQ0Q5OSAvKiBTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyODQsOCArMTIyNzgsNiBAQAog
CQlFNDk0NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlUnVsZUltcG9ydC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDlCRDlGOTEzMUZEMkVEMDAzQzU2RjAgLyogQ1NTVmFsdWVQb29s
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1ZhbHVlUG9vbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlCREEwQTEzMUZEM0U1MDAzQzU2RjAgLyogQ1NT
VmFsdWVQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Zh
bHVlUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0QUU3QzE1MTdEMUJC
OTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRWxlbWVudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUU0QUU3QzE5MTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMg
LyogVW5pdEJlemllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbml0QmV6
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUZEMDA1MERBRjMzNTQwMEY1
RjU1QyAvKiBTTUlMVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTTUlMVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUZEMDA2MERB
RjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTTUlMVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQzODYsNyAr
MTQzNzgsNiBAQAogCQkJCTk3NjdDRTBBMTQ1QUJDMTMwMDVFNjREQiAvKiBFeGNlcHRpb25JbnRl
cmZhY2VzLmggKi8sCiAJCQkJQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50
RmFjdG9yeS5jcHAgKi8sCiAJCQkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVt
ZW50RmFjdG9yeS5oICovLAotCQkJCUI1NjJEQjVFMTdEM0NENTYwMDEwQUY5NiAvKiBIVE1MRWxl
bWVudFR5cGVDaGVja3MuaCAqLywKIAkJCQlBOEJDMDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyogSFRN
TEVudGl0eVRhYmxlLmNwcCAqLywKIAkJCQlBOEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRN
TE5hbWVzLmNwcCAqLywKIAkJCQlBOEQwNkIzNzBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVz
LmggKi8sCkBAIC0xNDQxMCw3ICsxNDQwMSw2IEBACiAJCQkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8sCiAJCQkJNjU2NTgxRTYwOUQxNTA4RDAwMEU2MUQ3
IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCAqLywKIAkJCQk2NTY1ODFFNzA5RDE1MDhEMDAwRTYx
RDcgLyogU1ZHRWxlbWVudEZhY3RvcnkuaCAqLywKLQkJCQlCNTYyREI1RjE3RDNDRDU2MDAxMEFG
OTYgLyogU1ZHRWxlbWVudFR5cGVDaGVja3MuaCAqLywKIAkJCQk2NTY1ODFFODA5RDE1MDhEMDAw
RTYxRDcgLyogU1ZHTmFtZXMuY3BwICovLAogCQkJCTY1NjU4MUU5MDlEMTUwOEQwMDBFNjFENyAv
KiBTVkdOYW1lcy5oICovLAogCQkJCTY1NjU4MUFFMDlEMTRFRTYwMDBFNjFENyAvKiBVc2VyQWdl
bnRTdHlsZVNoZWV0cy5oICovLApAQCAtMjAxMjEsNiArMjAxMTEsNyBAQAogCQkJCTkzRUVDMUU2
MDlDMjg3NzcwMEM1MTVEMSAvKiBDaGFyYWN0ZXJEYXRhLmlkbCAqLywKIAkJCQk5M0Y5MjU0MjBG
N0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgKi8sCiAJCQkJOTNGOTI1
NDEwRjdFRjVCODAwN0UzN0M5IC8qIENoZWNrZWRSYWRpb0J1dHRvbnMuaCAqLywKKwkJCQlFNDZB
MkIxRDE3Q0E3NkIxMDAwREJDRDggLyogQ2hpbGRJdGVyYXRvci5oICovLAogCQkJCUQ2MTlBMzA1
MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCAqLywKIAkJCQlE
NjE5QTMwNjE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oICovLAog
CQkJCUE4MTg3MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAqLywKQEAg
LTIwMTY4LDYgKzIwMTU5LDggQEAKIAkJCQk4MUFDNUFFOTEzMTYzOTJFMDAwOUE3RTAgLyogRGF0
YVRyYW5zZmVySXRlbUxpc3QuaWRsICovLAogCQkJCUE4QzIyOEEwMTFENTcyMkUwMEQ1QTdEMyAv
KiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQlBOEMyMjg5RjExRDU3MjJF
MDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oICovLAorCQkJCUU0NkEyQjFC
MTdDQTY1QjkwMDBEQkNEOCAvKiBEZXNjZW5kYW50SXRlcmF0b3IuaCAqLywKKwkJCQlFNDAxQzI3
NDE3Q0U1M0VDMDBDNDFBMzUgLyogRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovLAog
CQkJCTMxRkIxQTRGMTIwQTVEMDYwMERDMDJBMCAvKiBEZXZpY2VNb3Rpb25DbGllbnQuaCAqLywK
IAkJCQkzMUZCMUE1MDEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uQ29udHJvbGxlci5j
cHAgKi8sCiAJCQkJMzFGQjFBNTExMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkNvbnRy
b2xsZXIuaCAqLywKQEAgLTIwMjMxLDEzICsyMDIyNCw4IEBACiAJCQkJQThDNEE3RjYwOUQ1NjMy
NzAwMDNBQzhEIC8qIEVsZW1lbnQuY3BwICovLAogCQkJCUE4QzRBN0Y1MDlENTYzMjcwMDAzQUM4
RCAvKiBFbGVtZW50LmggKi8sCiAJCQkJOTNFRUMxRUEwOUMyODc3NzAwQzUxNUQxIC8qIEVsZW1l
bnQuaWRsICovLAotCQkJCUU0QUU3QzE5MTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oICovLAotCQkJCUU0NkEyQjFEMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50
Q2hpbGRJdGVyYXRvci5oICovLAogCQkJCUI1QjdBMTZGMTdDMTA4MDYwMEU0QUEwQSAvKiBFbGVt
ZW50RGF0YS5jcHAgKi8sCiAJCQkJQjVCN0ExNkUxN0MxMDQ4MDAwRTRBQTBBIC8qIEVsZW1lbnRE
YXRhLmggKi8sCi0JCQkJRTQ2QTJCMUIxN0NBNjVCOTAwMERCQ0Q4IC8qIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCAqLywKLQkJCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVu
dEl0ZXJhdG9yLmggKi8sCi0JCQkJRTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJ
dGVyYXRvckFzc2VydGlvbnMuaCAqLywKIAkJCQk0RkFCNDg2NDE2NDNBNjZEMDBGNzBDMDcgLyog
RWxlbWVudFJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MzdCN0FERTBFODc2N0I4MDBFMzIxOTQgLyog
RWxlbWVudFJhcmVEYXRhLmggKi8sCiAJCQkJRTRENThFQkExN0I4RjEyODAwQ0JEQ0E4IC8qIEVs
ZW1lbnRUcmF2ZXJzYWwuaCAqLywKQEAgLTIxMDEyLDcgKzIxMDAwLDcgQEAKIAkJCQk5NzZENkM3
RjEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYlVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5
QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCBpbiBIZWFkZXJzICov
LAotCQkJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDAxQzI3NTE3Q0U1M0VDMDBDNDFBMzUgLyogRGVz
Y2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIw
RTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VB
NDg1NTA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMzA5RERCMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKQEAgLTIxMTg1LDcgKzIxMTczLDcgQEAKIAkJCQlBODBFNkNFNjBBMTk4OUNB
MDA3RkI4QzUgLyogQ1NTUHJpbWl0aXZlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUQ4
QUMzMENDNDlCRTAwMEJGQzU1NyAvKiBDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODBFNkNGRjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJvcGVydHkuaCBp
biBIZWFkZXJzICovLAotCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hp
bGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ2QTJCMUUxN0NBNzZCMTAwMERCQ0Q4
IC8qIENoaWxkSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc4RDAyQkM2MTU0QTE4REYw
MEI2MkQwNSAvKiBDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2
NTgwRjQwOUQxMkIyMDAwMEU2MUQ3IC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgyRTNEOERGMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEu
aCBpbiBIZWFkZXJzICovLApAQCAtMjEzNDIsNyArMjEzMzAsNiBAQAogCQkJCTg1OTA5Q0RDMEFD
QzdBN0UwMERGMDFGMSAvKiBET01DU1NDaGFyc2V0UnVsZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTAzMkREOTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTRm9udEZhY2VSdWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTkwOUNERDBBQ0M3QTdFMDBERjAxRjEgLyogRE9NQ1NTRm9u
dEZhY2VSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCUI1NjJEQjYxMTdEM0NENjYw
MDEwQUY5NiAvKiBTVkdFbGVtZW50VHlwZUNoZWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUw
MzJEREIwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1OTA5Q0RFMEFDQzdBN0UwMERGMDFGMSAvKiBET01DU1NJbXBvcnRSdWxlSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMyREREMEFBOEM5QkUwMDdEM0I3RCAvKiBET01D
U1NNZWRpYVJ1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjIyMzUsNyArMjIyMjIsNiBAQAogCQkJ
CTMxRkIxQTY2MTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1OUE4NjAwODExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0Mzg5QzE0MEIxQkE4MDA1RTQzN0Ug
LyogSlNEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEFFN0MxQTE3RDIzMjM1MDAw
OUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5
ODc4NThCMTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4OTNDNDgzMzEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeVN5bmMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg5ODc4NThEMTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVj
dG9yeVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjc0Miw3ICsyMjcyOCw2IEBACiAJCQkJ
OEMwRTMzNEYxMzhBOTJDNzAwOERBOTRGIC8qIExldmVsREJXcml0ZUJhdGNoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NDczMEQ5MTEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBMaW5lYXJHcmFkaWVu
dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUI1NjJEQjYwMTdEM0NENjMwMDEwQUY5
NiAvKiBIVE1MRWxlbWVudFR5cGVDaGVja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUJCNzg3
MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFCMzFDOTFFMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODlCNUVBQTIxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcu
aCBpbiBIZWFkZXJzICovLApAQCAtMjI5MTIsNyArMjI4OTcsNyBAQAogCQkJCTM3MUU2NUNDMTM2
NjFFREMwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcx
OTdGMjQxNzU2ODlDNDAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxMjg0QUUxMTA0NDdENDUwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ2QTJCMUMxN0NBNjVCOTAwMERC
Q0Q4IC8qIERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMUVDQzMw
QzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZG
RDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzc3QUJBMDE1REVGRUVGMDAzMUZEMDQgLyogUGFnaW5hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMzU0Nyw3ICsyMzUzMiw2IEBACiAJCQkJQjIyMjdBQjYwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUwRkJG
MkIwRDlBRjA0NzAwOEZDMjkyIC8qIFNWR0hLZXJuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjI1NTk5QTQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlFNEFFN0MxNjE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdl
Q2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EyRDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5k
ZXggMmFlODg5YS4uMTVjZDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlTcGluQnV0dG9uLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCi0jaW5jbHVk
ZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiQ2hpbGRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgpAQCAtOTc3LDE2ICs5NzcsMjEgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAg
IC8vIGNoZWNrIGlmIG91ciBwYXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVuZXIKKyAgICB3
aGlsZSAobm9kZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICBub2RlID0gbm9k
ZS0+cGFyZW50Tm9kZSgpOworCisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gMDsKKwog
ICAgIC8vIEZJWE1FOiBEbyB0aGUgY29udGludWF0aW9uIHNlYXJjaCBsaWtlIGFuY2hvckVsZW1l
bnQgZG9lcwotICAgIGF1dG8gbGluZWFnZSA9IGVsZW1lbnRMaW5lYWdlKG5vZGUtPmlzRWxlbWVu
dE5vZGUoKSA/IHRvRWxlbWVudChub2RlKSA6IG5vZGUtPnBhcmVudEVsZW1lbnQoKSk7Ci0gICAg
Zm9yIChhdXRvIGVsZW1lbnQgPSBsaW5lYWdlLmJlZ2luKCksIGVuZCA9IGxpbmVhZ2UuZW5kKCk7
IGVsZW1lbnQgIT0gZW5kOyArK2VsZW1lbnQpIHsKKyAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQg
PSB0b0VsZW1lbnQobm9kZSk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKICAgICAgICAgLy8gSWYgd2UndmUgcmVhY2hlZCB0aGUgYm9keSBhbmQgdGhpcyBp
cyBub3QgYSBjb250cm9sIGVsZW1lbnQsIGRvIG5vdCBleHBvc2UgcHJlc3MgYWN0aW9uIGZvciB0
aGlzIGVsZW1lbnQuCiAgICAgICAgIC8vIEl0IGNhbiBjYXVzZSBmYWxzZSBwb3NpdGl2ZXMsIHdo
ZXJlIGV2ZXJ5IHBpZWNlIG9mIHRleHQgaXMgbGFiZWxlZCBhcyBhY2NlcHRpbmcgcHJlc3MgYWN0
aW9ucy4gCiAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGJvZHlUYWcpICYmIGlzU3Rh
dGljVGV4dCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBpZiAoZWxl
bWVudC0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHx8IGVsZW1l
bnQtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkgfHwgZWxl
bWVudC0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkpCi0gICAg
ICAgICAgICByZXR1cm4gJiplbGVtZW50OworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAg
ICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMDk0LDkgKzEwOTksMTIgQEAgSFRNTExhYmVsRWxl
bWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmxhYmVsRm9yRWxlbWVudChFbGVtZW50KiBl
bGVtZW50KSBjb24KICAgICAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAKLSAgICBhdXRv
IGxhYmVsQW5jZXN0b3JzID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KGVsZW1l
bnQpOwotICAgIGF1dG8gZW5jbG9zaW5nTGFiZWwgPSBsYWJlbEFuY2VzdG9ycy5iZWdpbigpOwot
ICAgIHJldHVybiBlbmNsb3NpbmdMYWJlbCAhPSBsYWJlbEFuY2VzdG9ycy5lbmQoKSA/ICYqZW5j
bG9zaW5nTGFiZWwgOiBudWxscHRyOworICAgIGZvciAoRWxlbWVudCogcGFyZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50RWxlbWVu
dCgpKSB7CisgICAgICAgIGlmIChpc0hUTUxMYWJlbEVsZW1lbnQocGFyZW50KSkKKyAgICAgICAg
ICAgIHJldHVybiB0b0hUTUxMYWJlbEVsZW1lbnQocGFyZW50KTsKKyAgICB9CisKKyAgICByZXR1
cm4gMDsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhQWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDdhYzVhNWQu
LjRjNTlmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5j
bHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC03MTAsNyArNzEwLDcgQEAgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICB9
CiAgICAgCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzTGlzdE1hcmtlcigpKQotICAgICAgICByZXR1
cm4gdG9SZW5kZXJMaXN0TWFya2VyKCptX3JlbmRlcmVyKS50ZXh0KCk7CisgICAgICAgIHJldHVy
biB0b1JlbmRlckxpc3RNYXJrZXIobV9yZW5kZXJlciktPnRleHQoKTsKICAgICAKICAgICBpZiAo
aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTEzMzYsNyArMTMzNiw3
IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsYXlvdXRDb3VudCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3JlbmRlcmVyLT5pc1JlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIHRvUmVuZGVyVmlldygqbV9yZW5kZXJlcikuZnJhbWVWaWV3KCkubGF5b3V0
Q291bnQoKTsKKyAgICByZXR1cm4gdG9SZW5kZXJWaWV3KG1fcmVuZGVyZXIpLT5mcmFtZVZpZXco
KS5sYXlvdXRDb3VudCgpOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
dGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAKaW5kZXggMzc5ZGNiNi4uYjM1YWViMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1
ZGUgIkNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVj
dENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0
Q2FjaGVBdGsuY3BwCmluZGV4IDE1NDIzN2QuLjUxNDY1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0xNjQs
OCArMTY0LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVgKICAgICAgICAgYXRrX3ZhbHVlX2dl
dF9jdXJyZW50X3ZhbHVlKEFUS19WQUxVRShheE9iamVjdCksICZwcm9wZXJ0eVZhbHVlcy5uZXdf
dmFsdWUpOwogCiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShBVEtfT0JKRUNUKGF4T2Jq
ZWN0KSwgInByb3BlcnR5LWNoYW5nZTo6YWNjZXNzaWJsZS12YWx1ZSIsICZwcm9wZXJ0eVZhbHVl
cywgTlVMTCk7Ci0gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb24gPT0gQVhJbnZhbGlkU3RhdHVz
Q2hhbmdlZCkKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAic3RhdGUt
Y2hhbmdlIiwgImludmFsaWQtZW50cnkiLCBjb3JlT2JqZWN0LT5pbnZhbGlkU3RhdHVzKCkgIT0g
ImZhbHNlIik7CisgICAgfQogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdl
UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRD
aGFuZ2UgdGV4dENoYW5nZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0QXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2li
aWxpdHlPYmplY3RBdGsuY3BwCmluZGV4IDFlOTMwNGIuLjhjY2M4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdGsuY3BwCkBAIC0xNTYsOCArMTU2LDEwIEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmdldExlbmd0aEZvclRleHRSYW5nZSgpIGNvbnN0CiAgICAgLy8gR3RrIEFUcyBuZWVkIHRo
aXMgZm9yIGFsbCB0ZXh0IG9iamVjdHM7IG5vdCBqdXN0IHRleHQgY29udHJvbHMuCiAgICAgTm9k
ZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9k
ZSA/IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
aXNUZXh0KCkpCi0gICAgICAgIHRleHRMZW5ndGggPSB0b1JlbmRlclRleHQoKnJlbmRlcmVyKS50
ZXh0TGVuZ3RoKCk7CisgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1RleHQoKSkgewor
ICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsK
KyAgICAgICAgdGV4dExlbmd0aCA9IHJlbmRlclRleHQgPyByZW5kZXJUZXh0LT50ZXh0TGVuZ3Ro
KCkgOiAwOworICAgIH0KIAogICAgIC8vIEdldCB0aGUgdGV4dCBsZW5ndGggZnJvbSB0aGUgZWxl
bWVudHMgdW5kZXIgdGhlCiAgICAgLy8gYWNjZXNzaWJpbGl0eSBvYmplY3QgaWYgdGhlIHZhbHVl
IGlzIHN0aWxsIHplcm8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IGZlMzQ1Nzcu
LmU3NzFhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC0yMjMsOCArMjIzLDgg
QEAgc3RhdGljIGdpbnQgZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqLCBSYW5nZSogcmFuZ2UpCiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlz
TGlzdE1hcmtlcigpKQogICAgICAgICByZXR1cm4gYmFzZUxlbmd0aDsKIAotICAgIFJlbmRlckxp
c3RNYXJrZXImIG1hcmtlciA9IHRvUmVuZGVyTGlzdE1hcmtlcigqcmVuZGVyZXIpOwotICAgIHJl
dHVybiBiYXNlTGVuZ3RoICsgbWFya2VyLnRleHQoKS5sZW5ndGgoKSArIG1hcmtlci5zdWZmaXgo
KS5sZW5ndGgoKTsKKyAgICBSZW5kZXJMaXN0TWFya2VyKiBtYXJrZXIgPSB0b1JlbmRlckxpc3RN
YXJrZXIocmVuZGVyZXIpOworICAgIHJldHVybiBiYXNlTGVuZ3RoICsgbWFya2VyLT50ZXh0KCku
bGVuZ3RoKCkgKyBtYXJrZXItPnN1ZmZpeCgpLmxlbmd0aCgpOwogfQogCiBzdGF0aWMgZ2ludCB3
ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXggZjE3Y2RjMS4uNGYwZjRi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcApAQCAtMzg4LDggKzM4OCw4
IEBAIHN0YXRpYyBndWludCBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QqIG9iamVjdCkKICAgICAvLyBzZXBhcmF0ZWx5IChhcyBpbiBnZXRBY2Nlc3Np
YmlsaXR5T2JqZWN0Rm9yT2Zmc2V0KQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBvYmpl
Y3QtPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0xpc3RNYXJr
ZXIoKSkgewotICAgICAgICBSZW5kZXJMaXN0TWFya2VyJiBtYXJrZXIgPSB0b1JlbmRlckxpc3RN
YXJrZXIoKnJlbmRlcmVyKTsKLSAgICAgICAgcmV0dXJuIG1hcmtlci50ZXh0KCkubGVuZ3RoKCkg
KyBtYXJrZXIuc3VmZml4KCkubGVuZ3RoKCk7CisgICAgICAgIFJlbmRlckxpc3RNYXJrZXIqIG1h
cmtlciA9IHRvUmVuZGVyTGlzdE1hcmtlcihyZW5kZXJlcik7CisgICAgICAgIHJldHVybiBtYXJr
ZXItPnRleHQoKS5sZW5ndGgoKSArIG1hcmtlci0+c3VmZml4KCkubGVuZ3RoKCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKaW5kZXggOGJjMjQ4
OC4uODM5ZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcApAQCAtNDk4LDIzICs0
OTgsNiBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmli
dXRlcyhBdGtPYmplY3QqIG9iamVjdCkKICAgICBpZiAoY29yZU9iamVjdC0+YXJpYUhhc1BvcHVw
KCkpCiAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0
ZVNldCwgImFyaWEtaGFzcG9wdXAiLCAidHJ1ZSIpOwogCi0gICAgU3RyaW5nIGludmFsaWRTdGF0
dXMgPSBjb3JlT2JqZWN0LT5pbnZhbGlkU3RhdHVzKCkuc3RyaW5nKCk7Ci0gICAgaWYgKCFpbnZh
bGlkU3RhdHVzLmlzRW1wdHkoKSAmJiBpbnZhbGlkU3RhdHVzICE9ICJmYWxzZSIpCi0gICAgICAg
IGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgImFyaWEt
aW52YWxpZCIsIGNvcmVPYmplY3QtPmludmFsaWRTdGF0dXMoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLQotICAgIFN0cmluZyBoZWxwVGV4dCA9IGNvcmVPYmplY3QtPmhlbHBUZXh0KCk7Ci0g
ICAgaWYgKCFoZWxwVGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRv
QXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgImFyaWEtaGVscCIsIGhlbHBUZXh0LnV0Zjgo
KS5kYXRhKCkpOwotCi0gICAgY29uc3QgY2hhciogc29ydERlc2NyaXB0aW9uID0gIkFYVW5rbm93
blNvcnREaXJlY3Rpb24iOwotICAgIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJl
Y3Rpb24gPSBjb3JlT2JqZWN0LT5zb3J0RGlyZWN0aW9uKCk7Ci0gICAgaWYgKHNvcnREaXJlY3Rp
b24gPT0gU29ydERpcmVjdGlvbkFzY2VuZGluZykKLSAgICAgICAgc29ydERlc2NyaXB0aW9uID0g
IkFYQXNjZW5kaW5nU29ydERpcmVjdGlvbiI7Ci0gICAgZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9
PSBTb3J0RGlyZWN0aW9uRGVzY2VuZGluZykKLSAgICAgICAgc29ydERlc2NyaXB0aW9uID0gIkFY
RGVzY2VuZGluZ1NvcnREaXJlY3Rpb24iOwotCi0gICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtB
dHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAiYXJpYS1zb3J0Iiwgc29ydERlc2NyaXB0aW9uKTsK
LQogICAgIHJldHVybiBhdHRyaWJ1dGVTZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KaW5kZXggMTk3NjdlMi4uYWVjNTExOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTQyMCwyMSArNDIwLDIxIEBAIHN0YXRpYyBpZCBB
WFRleHRNYXJrZXJSYW5nZShpZCBzdGFydE1hcmtlciwgaWQgZW5kTWFya2VyKQogICAgIEFTU0VS
VChlbmRNYXJrZXIgIT0gbmlsKTsKICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoc3RhcnRNYXJrZXIp
ID09IHdrR2V0QVhUZXh0TWFya2VyVHlwZUlEKCkpOwogICAgIEFTU0VSVChDRkdldFR5cGVJRChl
bmRNYXJrZXIpID09IHdrR2V0QVhUZXh0TWFya2VyVHlwZUlEKCkpOwotICAgIHJldHVybiBDRkJy
aWRnaW5nUmVsZWFzZSh3a0NyZWF0ZUFYVGV4dE1hcmtlclJhbmdlKChDRlR5cGVSZWYpc3RhcnRN
YXJrZXIsIChDRlR5cGVSZWYpZW5kTWFya2VyKSk7CisgICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFz
ZSh3a0NyZWF0ZUFYVGV4dE1hcmtlclJhbmdlKChDRlR5cGVSZWYpc3RhcnRNYXJrZXIsIChDRlR5
cGVSZWYpZW5kTWFya2VyKSk7CiB9CiAKIHN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5nZVN0YXJ0
KGlkIHJhbmdlKQogewogICAgIEFTU0VSVChyYW5nZSAhPSBuaWwpOwogICAgIEFTU0VSVChDRkdl
dFR5cGVJRChyYW5nZSkgPT0gd2tHZXRBWFRleHRNYXJrZXJSYW5nZVR5cGVJRCgpKTsKLSAgICBy
ZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VTdGFydChyYW5n
ZSkpOworICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2Uod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VT
dGFydChyYW5nZSkpOwogfQogCiBzdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2VFbmQoaWQgcmFu
Z2UpCiB7CiAgICAgQVNTRVJUKHJhbmdlICE9IG5pbCk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlE
KHJhbmdlKSA9PSB3a0dldEFYVGV4dE1hcmtlclJhbmdlVHlwZUlEKCkpOwotICAgIHJldHVybiBD
RkJyaWRnaW5nUmVsZWFzZSh3a0NvcHlBWFRleHRNYXJrZXJSYW5nZUVuZChyYW5nZSkpOworICAg
IHJldHVybiBIYXJkQXV0b3JlbGVhc2Uod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VFbmQocmFuZ2Up
KTsKIH0KIAogI3ByYWdtYSBtYXJrIFNlYXJjaCBoZWxwZXJzCkBAIC01MTksNyArNTE5LDcgQEAg
c3RhdGljIGlkIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oQVhPYmplY3RDYWNoZSogY2Fj
aGUsIGNvbnN0IFZpc2libGVQb3NpdGkKICAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKHdr
Q3JlYXRlQVhUZXh0TWFya2VyKCZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRh
KSkpOworICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2Uod2tDcmVhdGVBWFRleHRNYXJrZXIoJnRl
eHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CiB9CiAKIC0gKGlkKXRleHRN
YXJrZXJGb3JWaXNpYmxlUG9zaXRpb246KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKXZpc2libGVQ
b3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCmluZGV4IGI0ZTMxNWUuLjk2ZDNjOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2lu
Y2x1ZGUgIkpTU1FMVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNyArNDYsNyBAQCBib29sIEpTU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBTUUxFcgogICAgIGlmICghbV9kYXRhIHx8ICFtX2RhdGEtPmdsb2JhbE9iamVjdCgpIHx8
ICFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxK
U1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxK
U1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CiAKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAKaW5kZXggODRlNzExYi4uMTI1YjkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw3ICs4Niw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRo
TlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAg
ICAgICBmdW5jdGlvbiA9IG1fY3VzdG9tUmVzb2x2ZXIuZ2V0KCk7CiAgICAgfQogCi0gICAgUmVm
PEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPiBzZWxmUHJvdGVjdG9yKCp0aGlzKTsKKyAgICBSZWZQ
dHI8SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI+IHNlbGZQcm90ZWN0b3IodGhpcyk7CiAKICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKGV4ZWMsIHByZWZpeCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKaW5kZXggMjQxYWQyNy4uOTNlZTE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2su
Y3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lu
bGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
QEAgLTQ3LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNr
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmVmPEpTR2xvYmFsT2JqZWN0Q2Fs
bGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgICAgICBSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxs
YmFjaz4gcHJvdGVjdCh0aGlzKTsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9nbG9iYWxP
YmplY3QtPnZtKCkpOwogCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFu
ZGxlci5jcHAKaW5kZXggYzY4YWFhNi4uZjI4ZjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUg
IkpTRXZlbnQuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIApAQCAtODAsNyArNzksNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAg
IENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERh
dGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwogCiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBl
Tm9uZSkgewotICAgICAgICBSZWY8SlNFcnJvckhhbmRsZXI+IHByb3RlY3RlZGN0b3IoKnRoaXMp
OworICAgICAgICBSZWZQdHI8SlNFcnJvckhhbmRsZXI+IHByb3RlY3RlZGN0b3IodGhpcyk7CiAK
ICAgICAgICAgRXZlbnQqIHNhdmVkRXZlbnQgPSBnbG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgp
OwogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBhM2Y4NDQ5
Li44MGNmMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTExMiw3ICsxMTEs
NyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIH0KIAogICAgIGlmIChjYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gcHJvdGVjdCgq
dGhpcyk7CisgICAgICAgIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IHByb3RlY3QodGhpcyk7CiAK
ICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICAgICAgYXJncy5hcHBlbmQo
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDNlYzE2N2MuLmM5OTU1YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFr
Lmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCw3ICs3OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICB7CiAgICAgICAgIC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2Vy
IGNvZGUgdGhhdCBkZWxldGVzIHRoaXMgZXZlbnQgbGlzdGVuZXIKICAgICAgICAgLy8gYmVmb3Jl
IHdlJ3JlIGRvbmUuIEl0IHNob3VsZCBhbHdheXMgcmV0dXJuIDAgaW4gdGhpcyBjYXNlLgotICAg
ICAgICBSZWY8SlNFdmVudExpc3RlbmVyPiBwcm90ZWN0KGNvbnN0X2Nhc3Q8SlNFdmVudExpc3Rl
bmVyJj4oKnRoaXMpKTsKKyAgICAgICAgUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gcHJvdGVjdChj
b25zdF9jYXN0PEpTRXZlbnRMaXN0ZW5lcio+KHRoaXMpKTsKICAgICAgICAgSlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4gd3JhcHBlcigqbV9pc29sYXRlZFdvcmxkLT52bSgpLCBtX3dyYXBwZXIu
Z2V0KCkpOwogCiAgICAgICAgIGlmICghbV9qc0Z1bmN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGJi
NzM3YzQuLjIyOWFhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSA8
cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
T05PYmplY3QuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNzYsOSArNzUsNiBAQCB2
b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICBpZiAoQmxvYiogcmVzcG9uc2VCbG9iID0gdGhpc09iamVjdC0+
bV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQmxvYigpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QocmVzcG9uc2VCbG9iKTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5tX3Jlc3BvbnNlKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNwb25zZSk7Ci0KICAgICB0
aGlzT2JqZWN0LT5tX2ltcGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIApA
QCAtMTcyLDI2ICsxNjgsNiBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5
cGVUZXh0OgogICAgICAgICByZXR1cm4gcmVzcG9uc2VUZXh0KGV4ZWMpOwogCi0gICAgY2FzZSBY
TUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlSlNPTjoKLSAgICAgICAgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFVzZSBDYWNoZWRBdHRyaWJ1dGUgZm9yIG90aGVyIHR5cGVzIGFzIHdlbGwuCi0g
ICAgICAgICAgICBpZiAobV9yZXNwb25zZSAmJiBpbXBsKCktPnJlc3BvbnNlQ2FjaGVJc1ZhbGlk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcmVzcG9uc2UuZ2V0KCk7Ci0KLSAgICAgICAg
ICAgIGlmICghaW1wbCgpLT5kb25lV2l0aG91dEVycm9ycygpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKLQotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZShl
eGVjLCBpbXBsKCktPnJlc3BvbnNlVGV4dElnbm9yaW5nUmVzcG9uc2VUeXBlKCkpOwotICAgICAg
ICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVsbCgpOwotICAg
ICAgICAgICAgSlNYTUxIdHRwUmVxdWVzdCoganNSZXF1ZXN0ID0gY29uc3RfY2FzdDxKU1hNTEh0
dHBSZXF1ZXN0Kj4odGhpcyk7Ci0gICAgICAgICAgICBqc1JlcXVlc3QtPm1fcmVzcG9uc2Uuc2V0
KGV4ZWMtPnZtKCksIGpzUmVxdWVzdCwgdmFsdWUpOwotCi0gICAgICAgICAgICBpbXBsKCktPmRp
ZENhY2hlUmVzcG9uc2VKU09OKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAg
ICAgfQotCiAgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlRG9jdW1lbnQ6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggOWU2ZjY4NC4uN2VhZGQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC03MCw4ICs3MCw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVtb3ZlKFJvb3RPYmplY3QqIHJvb3RPYmplY3QpCiAgICAgewotICAgICAgICBBU1NF
UlQobV9tYXAuY29udGFpbnMocm9vdE9iamVjdCkpOwotICAgICAgICBtX21hcC5yZW1vdmUocm9v
dE9iamVjdCk7CisgICAgICAgIEhhc2hNYXA8Um9vdE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46
Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHJvb3RPYmplY3QpOworICAgICAgICBBU1NFUlQo
aXRlciAhPSBtX21hcC5lbmQoKSk7CisgICAgICAgIG1fbWFwLnJlbW92ZShpdGVyKTsKICAgICB9
CiAKICAgICB2b2lkIHJlbW92ZShSb290T2JqZWN0KiByb290T2JqZWN0LCBKU09iamVjdCoganNP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCmluZGV4IGU4NjU0OWYu
LjczOTFkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCkBAIC0zNCw3
ICszNCw2IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCaW5kaW5ncyB7CkBAIC0yMDIsNyArMjAxLDcgQEAgdm9pZCBSb290
T2JqZWN0OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCop
CiB7CiAgICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVj
dCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAKLSAgICBSZWY8Um9vdE9iamVjdD4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmUHRyPFJvb3RPYmplY3Q+IHByb3RlY3QodGhpcyk7CiAgICAgb2Jq
ZWN0LT5pbnZhbGlkYXRlKCk7CiAgICAgd2Vha1JlbW92ZShtX3J1bnRpbWVPYmplY3RzLCBvYmpl
Y3QsIG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDU3Y2YwZGUuLmUyNWUwZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xMTUz
LDE1ICsxMTUzLDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRQ
b3NpdGlvbihjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIGlmIChwb3NpdGlvbi5p
c0F1dG8oKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUF1dG8pOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAocG9zaXRpb24uaXNT
cGFuKCkpIHsKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4pKTsKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZVZhbHVlKHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUikpOwotICAgIH0gZWxzZQotICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgaWYgKHBvc2l0aW9uLmlzSW50ZWdlcigp
KQorICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocG9zaXRpb24uaW50
ZWdlclBvc2l0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKIAotICAgIGlm
ICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKQotICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNwYW4p
KTsKKyAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocG9zaXRpb24u
c3BhblBvc2l0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CiAgICAgcmV0
dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKaW5kZXggOWJjNzIwOS4uZDhjMjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGNvbnN0IEludFNpCiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlUmVjdChGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKSk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldEZpbHRl
clJlZ2lvbihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKSk7CiAgICAgLy8gRklYTUU6IFNW
RyBGaWx0ZXIgZG9uJ3Qgd29yayBhdCB0aGUgbW9tZW50LgotICAgIGlmICghZmlsdGVyUmVuZGVy
ZXItPmJ1aWxkKDAsIG1fZmlsdGVyT3BlcmF0aW9ucywgRmlsdGVyRnVuY3Rpb24pKQorICAgIGlm
ICghZmlsdGVyUmVuZGVyZXItPmJ1aWxkKDAsIG1fZmlsdGVyT3BlcmF0aW9ucywgdHJ1ZSkpCiAg
ICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPmFw
cGx5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDBk
ODJhNTUuLmE2MjdlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgogI2luY2x1
ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2lu
Y2x1ZGUgIkNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZv
bnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGY5OGJkNDIuLjI4ZGU3YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIldl
YktpdEZvbnRGYW1pbHlOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShTVkcpCkBAIC01OTksNyArNTk4
LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZFRpbWVyRmlyZWQoVGltZXI8V2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yPiopCiAgICAgZm9udHNUb0JlZ2luTG9hZGluZy5zd2FwKG1f
Zm9udHNUb0JlZ2luTG9hZGluZyk7CiAKICAgICAvLyBDU1NGb250U2VsZWN0b3IgY291bGQgZ2V0
IGRlbGV0ZWQgdmlhIGJlZ2luTG9hZElmTmVlZGVkKCkgb3IgbG9hZERvbmUoKSB1bmxlc3MgcHJv
dGVjdGVkLgotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZlB0cjxDU1NGb250U2VsZWN0b3I+IHByb3RlY3QodGhpcyk7CiAKICAgICBDYWNoZWRSZXNvdXJj
ZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm9udHNUb0JlZ2luTG9hZGlu
Zy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA5YWRkM2FlLi5m
NGRmOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDc5NCwzMyArNDc5NCw2IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJv
cElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBUaGUg
ZnVuY3Rpb24gcGFyc2VzIFsgPGludGVnZXI+IHx8IDxzdHJpbmc+IF0gaW4gPGdyaWQtbGluZT4g
KHdoaWNoIGNhbiBiZSBzdGFuZCBhbG9uZSBvciB3aXRoICdzcGFuJykuCi1ib29sIENTU1BhcnNl
cjo6cGFyc2VJbnRlZ2VyT3JTdHJpbmdGcm9tR3JpZFBvc2l0aW9uKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4mIG51bWVyaWNWYWx1ZSwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgZ3JpZExp
bmVOYW1lKQotewotICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCk7Ci0gICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIpICYmIHZhbHVlLT5mVmFs
dWUpIHsKLSAgICAgICAgbnVtZXJpY1ZhbHVlID0gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVl
KHZhbHVlKTsKLSAgICAgICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgpOwotICAgICAgICBp
ZiAodmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcp
IHsKLSAgICAgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVl
KG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpOwotICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQo
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAodmFs
dWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpIHsKLSAgICAgICAgZ3Jp
ZExpbmVOYW1lID0gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUobV92YWx1ZUxpc3QtPmN1cnJl
bnQoKSk7Ci0gICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgaWYg
KHZhbHVlICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIpICYmIHZhbHVlLT5mVmFsdWUpIHsK
LSAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZSh2
YWx1ZSk7Ci0gICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRQb3NpdGlvbigpCiB7CiAgICAgQ1NT
UGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTQ4MzAsNDIg
KzQ4MDMsMzggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRQb3Np
dGlvbigpCiAgICAgfQogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBudW1lcmljVmFs
dWU7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBncmlkTGluZU5hbWU7CiAgICAgYm9v
bCBoYXNTZWVuU3BhbktleXdvcmQgPSBmYWxzZTsKIAotICAgIGlmIChwYXJzZUludGVnZXJPclN0
cmluZ0Zyb21HcmlkUG9zaXRpb24obnVtZXJpY1ZhbHVlLCBncmlkTGluZU5hbWUpKSB7Ci0gICAg
ICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKyAgICBpZiAodmFsaWRVbml0KHZh
bHVlLCBGSW50ZWdlcikgJiYgdmFsdWUtPmZWYWx1ZSkgeworICAgICAgICBudW1lcmljVmFsdWUg
PSBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUodmFsdWUpOworICAgICAgICB2YWx1ZSA9IG1f
dmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVTcGFuKSB7CiAgICAgICAgICAgICBoYXNTZWVuU3BhbktleXdvcmQgPSB0cnVlOwogICAg
ICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlU3BhbikgewogICAgICAgICBoYXNTZWVuU3BhbktleXdvcmQg
PSB0cnVlOwotICAgICAgICBpZiAobV92YWx1ZUxpc3QtPm5leHQoKSkKLSAgICAgICAgICAgIHBh
cnNlSW50ZWdlck9yU3RyaW5nRnJvbUdyaWRQb3NpdGlvbihudW1lcmljVmFsdWUsIGdyaWRMaW5l
TmFtZSk7CisgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgaWYg
KHZhbHVlICYmICh2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyKSAmJiB2YWx1ZS0+ZlZhbHVlKSkg
eworICAgICAgICAgICAgbnVtZXJpY1ZhbHVlID0gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVl
KHZhbHVlKTsKKyAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIH0KICAg
ICB9CiAKLSAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgY29uc3VtZWQgYWxsIHRoZSB2YWx1ZSBs
aXN0LiBGb3Igc2hvcnRoYW5kcywgdGhlIHBhcnNlciB3aWxsIHBhc3MKLSAgICAvLyB0aGUgd2hv
bGUgdmFsdWUgbGlzdCAoaW5jbHVkaW5nIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbikuCi0gICAgaWYg
KG1fdmFsdWVMaXN0LT5jdXJyZW50KCkgJiYgIWlzRm9yd2FyZFNsYXNoT3BlcmF0b3IobV92YWx1
ZUxpc3QtPmN1cnJlbnQoKSkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghaGFzU2VlblNw
YW5LZXl3b3JkKQorICAgICAgICByZXR1cm4gbnVtZXJpY1ZhbHVlLnJlbGVhc2UoKTsKIAotICAg
IC8vIElmIHdlIGRpZG4ndCBwYXJzZSBhbnl0aGluZywgdGhpcyBpcyBub3QgYSB2YWxpZCBncmlk
IHBvc2l0aW9uLgotICAgIGlmICghaGFzU2VlblNwYW5LZXl3b3JkICYmICFncmlkTGluZU5hbWUg
JiYgIW51bWVyaWNWYWx1ZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFudW1lcmljVmFs
dWUgJiYgaGFzU2VlblNwYW5LZXl3b3JkKQorICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCku
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3Bhbik7CiAKICAgICAvLyBOZWdhdGl2ZSBu
dW1iZXJzIGFyZSBub3QgYWxsb3dlZCBmb3Igc3BhbiAoYnV0IGFyZSBmb3IgPGludGVnZXI+KS4K
LSAgICBpZiAoaGFzU2VlblNwYW5LZXl3b3JkICYmIG51bWVyaWNWYWx1ZSAmJiBudW1lcmljVmFs
dWUtPmdldEludFZhbHVlKCkgPCAwKQorICAgIGlmIChudW1lcmljVmFsdWUgJiYgbnVtZXJpY1Zh
bHVlLT5nZXRJbnRWYWx1ZSgpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7Ci0gICAgaWYgKGhhc1NlZW5TcGFuS2V5d29yZCkKLSAgICAgICAgdmFsdWVzLT5hcHBlbmQo
Y3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU3BhbikpOworICAg
IHZhbHVlcy0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZVNwYW4pKTsKICAgICBpZiAobnVtZXJpY1ZhbHVlKQogICAgICAgICB2YWx1ZXMtPmFwcGVu
ZChudW1lcmljVmFsdWUucmVsZWFzZSgpKTsKLSAgICBpZiAoZ3JpZExpbmVOYW1lKQotICAgICAg
ICB2YWx1ZXMtPmFwcGVuZChncmlkTGluZU5hbWUucmVsZWFzZSgpKTsKLSAgICBBU1NFUlQodmFs
dWVzLT5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHZhbHVlcy5yZWxlYXNlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAppbmRleCA2MDBkODQzLi42NzBiYWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCkBAIC01NzEsOCArNTcxLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGFyc2VDb2xvcihj
b25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgcGFyc2VJbnRlZ2VyT3JTdHJpbmdGcm9tR3JpZFBv
c2l0aW9uKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIG51bWVyaWNWYWx1ZSwgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiYgZ3JpZExpbmVOYW1lKTsKLQogICAgIGVudW0gUGFyc2luZ01vZGUg
ewogICAgICAgICBOb3JtYWxNb2RlLAogICAgICAgICBNZWRpYVF1ZXJ5TW9kZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA1YTYxZmRjLi5lMzc3ODAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xOTczLDQ5ICsxOTczLDMwIEBAIHN0YXRpYyBi
b29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4mIHRyYWNrU2l6CiAKIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1
ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAgLy8gRm9yIG5vdywgd2Ug
b25seSBhY2NlcHQ6ICdhdXRvJyB8IFsgPGludGVnZXI+IHx8IDxzdHJpbmc+IF0gfCBzcGFuICYm
IDxpbnRlZ2VyPj8KKyAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFjY2VwdDogJ2F1dG8nIHwgPGlu
dGVnZXI+IHwgc3BhbiAmJiA8aW50ZWdlcj4/CiAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OwotICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUF1dG8pOwotI2VuZGlmCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlU3BhbikgeworICAgICAg
ICAgICAgLy8gSWYgdGhlIDxpbnRlZ2VyPiBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAnMScu
CisgICAgICAgICAgICBwb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oMSk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS0+
aXNOdW1iZXIoKSk7CisgICAgICAgIHBvc2l0aW9uLnNldEludGVnZXJQb3NpdGlvbihwcmltaXRp
dmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHZhbHVlLT5pc1ZhbHVlTGlzdCgp
KTsKICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsKLSAgICBBU1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7Ci0KLSAgICBib29sIGlzU3Bh
blBvc2l0aW9uID0gZmFsc2U7Ci0gICAgLy8gVGhlIHNwZWNpZmljYXRpb24gbWFrZXMgdGhlIDxp
bnRlZ2VyPiBvcHRpb25hbCwgaW4gd2hpY2ggY2FzZSBpdCBkZWZhdWx0IHRvICcxJy4KLSAgICBp
bnQgZ3JpZExpbmVOdW1iZXIgPSAxOwotICAgIFN0cmluZyBncmlkTGluZU5hbWU7Ci0KLSAgICBD
U1NWYWx1ZUxpc3RJdGVyYXRvciBpdCA9IHZhbHVlczsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSog
Y3VycmVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdC52YWx1ZSgp
KTsKLSAgICBpZiAoY3VycmVudFZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTcGFuKSB7
Ci0gICAgICAgIGlzU3BhblBvc2l0aW9uID0gdHJ1ZTsKLSAgICAgICAgaXQuYWR2YW5jZSgpOwot
ICAgICAgICBjdXJyZW50VmFsdWUgPSBpdC5oYXNNb3JlKCkgPyBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpIDogMDsKLSAgICB9Ci0KLSAgICBpZiAoY3VycmVudFZh
bHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNOdW1iZXIoKSkgewotICAgICAgICBncmlkTGluZU51bWJl
ciA9IGN1cnJlbnRWYWx1ZS0+Z2V0SW50VmFsdWUoKTsKLSAgICAgICAgaXQuYWR2YW5jZSgpOwot
ICAgICAgICBjdXJyZW50VmFsdWUgPSBpdC5oYXNNb3JlKCkgPyBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpIDogMDsKLSAgICB9Ci0KLSAgICBpZiAoY3VycmVudFZh
bHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNTdHJpbmcoKSkgewotICAgICAgICBncmlkTGluZU5hbWUg
PSBjdXJyZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgIGl0LmFkdmFuY2UoKTsK
LSAgICB9Ci0KLSAgICBBU1NFUlQoIWl0Lmhhc01vcmUoKSk7Ci0gICAgaWYgKGlzU3BhblBvc2l0
aW9uKQotICAgICAgICBwb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oZ3JpZExpbmVOdW1iZXIsIGdy
aWRMaW5lTmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBwb3NpdGlvbi5zZXRFeHBsaWNpdFBvc2l0
aW9uKGdyaWRMaW5lTnVtYmVyLCBncmlkTGluZU5hbWUpOwotCisgICAgQVNTRVJUKHZhbHVlcy0+
bGVuZ3RoKCkgPT0gMik7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odmFs
dWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBudW1lcmljVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CisgICAgQVNTRVJU
KG51bWVyaWNWYWx1ZS0+aXNOdW1iZXIoKSk7CisgICAgcG9zaXRpb24uc2V0U3BhblBvc2l0aW9u
KG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXggZWY1ZDUzOS4uNzFh
MmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTM0
LDcgKzM0LDYgQEAKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGVJ
bXBvcnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQyLDEwICszNDEsMTIgQEAgdm9pZCBTdHlsZVNo
ZWV0Q29udGVudHM6OmNoZWNrTG9hZGVkKCkKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHByb3RlY3QodGhpcyk7
CisKICAgICAvLyBBdm9pZCB8dGhpc3wgYmVpbmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVu
IHZpYQogICAgIC8vIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0
aW5nRm9yU3R5bGVzaGVldHMoKS4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+
LgotICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0
cjxTdHlsZVNoZWV0Q29udGVudHM+IHByb3RlY3Rvcih0aGlzKTsKICAgICBTdHlsZVNoZWV0Q29u
dGVudHMqIHBhcmVudFNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOwogICAgIGlmIChwYXJlbnRT
aGVldCkgewogICAgICAgICBwYXJlbnRTaGVldC0+Y2hlY2tMb2FkZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNw
cAppbmRleCA5YTA3YjRiLi4xN2NlMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBBdHRyOjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAg
ICAgfQogfQogCi12b2lkIEF0dHI6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
Cit2b2lkIEF0dHI6OmNoaWxkcmVuQ2hhbmdlZChib29sLCBOb2RlKiwgTm9kZSosIGludCkKIHsK
ICAgICBpZiAobV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQgPiAwKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuaAppbmRleCA5NzM0YmM3Li41MmFiNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTg2LDcgKzg2
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRyaWJ1dGVOb2RlKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUq
IGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgQXR0cmli
dXRlJiBlbGVtZW50QXR0cmlidXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cAppbmRleCA0MDdiMDU4Li4wOGYwMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgogCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJG
cmFtZVNlbGVjdGlvbi5oIgpAQCAtMzUsNyArMzQsNiBAQAogI2luY2x1ZGUgIlN0eWxlSW5oZXJp
dGVkRGF0YS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRv
ci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAt
NDcsNyArNDUsNyBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGEoY29uc3QgU3RyaW5nJiBk
YXRhLCBFeGNlcHRpb25Db2RlJikKICAgICBpZiAobV9kYXRhID09IG5vbk51bGxEYXRhKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZWY8Q2hhcmFjdGVyRGF0YT4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmUHRyPENoYXJhY3RlckRhdGE+IHByb3RlY3QgPSB0aGlzOwogCiAgICAgdW5zaWduZWQg
b2xkTGVuZ3RoID0gbGVuZ3RoKCk7CiAKQEAgLTk4LDE1ICs5Niw4IEBAIHVuc2lnbmVkIENoYXJh
Y3RlckRhdGE6OnBhcnNlckFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVk
IG9mZnNldCwKICAgICBkb2N1bWVudCgpLmluY0RPTVRyZWVWZXJzaW9uKCk7CiAgICAgLy8gV2Ug
ZG9uJ3QgY2FsbCBkaXNwYXRjaE1vZGlmaWVkRXZlbnQgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdh
bnQgdGhlCiAgICAgLy8gcGFyc2VyIHRvIGRpc3BhdGNoIERPTSBtdXRhdGlvbiBldmVudHMuCi0g
ICAgaWYgKHBhcmVudE5vZGUoKSkgewotICAgICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5n
ZSBjaGFuZ2UgPSB7Ci0gICAgICAgICAgICBDb250YWluZXJOb2RlOjpUZXh0Q2hhbmdlZCwKLSAg
ICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyh0aGlzKSwKLSAgICAg
ICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKHRoaXMpLAotICAgICAgICAgICAg
Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIKLSAgICAgICAgfTsKLSAgICAg
ICAgcGFyZW50Tm9kZSgpLT5jaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKLSAgICB9CisgICAgaWYg
KHBhcmVudE5vZGUoKSkKKyAgICAgICAgcGFyZW50Tm9kZSgpLT5jaGlsZHJlbkNoYW5nZWQoKTsK
IAogICAgIHJldHVybiBjaGFyYWN0ZXJMZW5ndGhMaW1pdDsKIH0KQEAgLTIxNCwxNSArMjA1LDgg
QEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQoY29uc3QgU3RyaW5n
JiBvbGREYXRhKQogICAgIGlmIChPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+
IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVh
dGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24odGhpcykpCiAgICAgICAgIG11dGF0aW9uUmVjaXBp
ZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGFyYWN0
ZXJEYXRhKHRoaXMsIG9sZERhdGEpKTsKICAgICBpZiAoIWlzSW5TaGFkb3dUcmVlKCkpIHsKLSAg
ICAgICAgaWYgKHBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2UgY2hhbmdlID0gewotICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OlRleHRD
aGFuZ2VkLAotICAgICAgICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGlu
Zyh0aGlzKSwKLSAgICAgICAgICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyh0
aGlzKSwKLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZUFQ
SQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHBhcmVudE5vZGUoKSkKKyAgICAg
ICAgICAgIHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgICAgIGlmIChkb2N1
bWVudCgpLmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQ0hBUkFDVEVSREFUQU1PRElGSUVE
X0xJU1RFTkVSKSkKICAgICAgICAgICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWRFdmVudCwgdHJ1
ZSwgMCwgb2xkRGF0YSwgbV9kYXRhKSk7CiAgICAgICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVk
RXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZEl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjBjMGI0ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGRJdGVyYXRvci5oCkBAIC0wLDAgKzEsMjc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDaGlsZEl0ZXJhdG9yX2gKKyNk
ZWZpbmUgQ2hpbGRJdGVyYXRvcl9oCisKKyNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCisK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisjaW5jbHVkZSAiRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0
aW9ucy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgorY2xhc3MgQ2hpbGRJdGVyYXRvciB7CitwdWJsaWM6CisgICAgQ2hp
bGRJdGVyYXRvcigpOworICAgIENoaWxkSXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1cnJlbnQpOwor
ICAgIENoaWxkSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKKyAgICBFbGVtZW50VHlwZSYgb3BlcmF0
b3IqKCk7CisgICAgRWxlbWVudFR5cGUqIG9wZXJhdG9yLT4oKTsKKyAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgQ2hpbGRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OworCitwcml2YXRlOgorICAgIEVs
ZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgRGVzY2Vu
ZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CisjZW5kaWYKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2NsYXNzIENoaWxkQ29uc3RJdGVyYXRvciB7Citw
dWJsaWM6CisgICAgQ2hpbGRDb25zdEl0ZXJhdG9yKCk7CisgICAgQ2hpbGRDb25zdEl0ZXJhdG9y
KGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBDaGlsZENvbnN0SXRlcmF0b3ImIG9w
ZXJhdG9yKysoKTsKKyAgICBjb25zdCBFbGVtZW50VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7Cisg
ICAgY29uc3QgRWxlbWVudFR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdDsKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ2hpbGRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKKworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICBEZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKKyNlbmRp
ZgorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgorY2xhc3MgQ2hpbGRJdGVy
YXRvckFkYXB0ZXIgeworcHVibGljOgorICAgIENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5l
ck5vZGUqIHJvb3QpOworICAgIENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Cisg
ICAgQ2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7CisKK3ByaXZhdGU6CisgICAgY29u
c3QgQ29udGFpbmVyTm9kZSogbV9yb290OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgorY2xhc3MgQ2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitwdWJsaWM6CisgICAg
Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlKiByb290KTsKKyAg
ICBDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7CisgICAgQ2hp
bGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7Cit9OworCitDaGlsZEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50PiBlbGVtZW50Q2hpbGRyZW4oQ29udGFpbmVyTm9kZSogcm9vdCk7CitDaGlsZENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRDaGlsZHJlbihjb25zdCBDb250YWlu
ZXJOb2RlKiByb290KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gQ2hpbGRJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUqIHJv
b3QpOwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBDaGlsZENvbnN0SXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2RlKiBy
b290KTsKKworLy8gQ2hpbGRJdGVyYXRvcgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+CitpbmxpbmUgQ2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkNoaWxkSXRlcmF0b3IoKQor
ICAgIDogbV9jdXJyZW50KG51bGxwdHIpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KK2lubGluZSBDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6Q2hpbGRJdGVyYXRv
cihFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IG1fY3VycmVudChjdXJyZW50KQorI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQorI2VuZGlmCit7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBDaGlsZEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiYgQ2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQor
eworICAgIEFTU0VSVChtX2N1cnJlbnQpOworICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRy
ZWVIYXNNdXRhdGVkKCkpOworICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
Om5leHRTaWJsaW5nKG1fY3VycmVudCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIC8vIERy
b3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCisgICAg
aWYgKCFtX2N1cnJlbnQpCisgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFz
c2VydGlvbigpOworI2VuZGlmCisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudFR5cGUmIENoaWxkSXRlcmF0b3I8RWxl
bWVudFR5cGU+OjpvcGVyYXRvciooKQoreworICAgIEFTU0VSVChtX2N1cnJlbnQpOworICAgIEFT
U0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOworICAgIHJldHVybiAqbV9j
dXJyZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxl
bWVudFR5cGUqIENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0+KCkKK3sKKyAg
ICBBU1NFUlQobV9jdXJyZW50KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFz
TXV0YXRlZCgpKTsKKyAgICByZXR1cm4gbV9jdXJyZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+CitpbmxpbmUgYm9vbCBDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
b3BlcmF0b3IhPShjb25zdCBDaGlsZEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3sKKyAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKKyAgICByZXR1cm4gbV9jdXJy
ZW50ICE9IG90aGVyLm1fY3VycmVudDsKK30KKworLy8gQ2hpbGRDb25zdEl0ZXJhdG9yCisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBDaGlsZENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpDaGlsZENvbnN0SXRlcmF0b3IoKQorICAgIDogbV9jdXJyZW50KG51bGxw
dHIpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgRWxl
bWVudFR5cGUqIGN1cnJlbnQpCisgICAgOiBtX2N1cnJlbnQoY3VycmVudCkKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKKyNlbmRpZgoreworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgQ2hpbGRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiYgQ2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Ir
KygpCit7CisgICAgQVNTRVJUKG1fY3VycmVudCk7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMu
ZG9tVHJlZUhhc011dGF0ZWQoKSk7CisgICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRU
eXBlPjo6bmV4dFNpYmxpbmcobV9jdXJyZW50KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
Ly8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4K
KyAgICBpZiAoIW1fY3VycmVudCkKKyAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3Bh
dGNoQXNzZXJ0aW9uKCk7CisjZW5kaWYKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBjb25zdCBFbGVtZW50VHlwZSYgQ2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV9jdXJyZW50KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKKyAgICByZXR1cm4gKm1fY3VycmVudDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgoraW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBDaGlsZENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpvcGVyYXRvci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50
KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKKyAgICBy
ZXR1cm4gbV9jdXJyZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Citp
bmxpbmUgYm9vbCBDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciE9KGNv
bnN0IENoaWxkQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2Fz
c2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CisgICAgcmV0dXJuIG1fY3VycmVudCAhPSBv
dGhlci5tX2N1cnJlbnQ7Cit9CisKKy8vIENoaWxkSXRlcmF0b3JBZGFwdGVyCisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OkNoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUqIHJvb3QpCisgICAg
OiBtX3Jvb3Qocm9vdCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgor
aW5saW5lIENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IENoaWxkSXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPjo6YmVnaW4oKQoreworICAgIHJldHVybiBDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcm9vdCkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgQ2hpbGRJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gQ2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKQoreworICAg
IHJldHVybiBDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigpOworfQorCisvLyBDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGlu
ZSBDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6Q2hpbGRDb25zdEl0ZXJh
dG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQorICAgIDogbV9yb290KHJvb3Qp
Cit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBDaGlsZENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpiZWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENoaWxkQ29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4oVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3Jvb3QpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIENoaWxkQ29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gQ2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OmVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4oKTsKK30KKworLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKKworaW5saW5lIENoaWxkSXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRDaGlsZHJlbihDb250YWluZXJOb2RlKiByb290
KQoreworICAgIHJldHVybiBDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50Pihyb290KTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIENoaWxkSXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShDb250YWluZXJOb2RlKiByb290KQor
eworICAgIHJldHVybiBDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocm9vdCk7Cit9
CisKK2lubGluZSBDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRDaGls
ZHJlbihjb25zdCBDb250YWluZXJOb2RlKiByb290KQoreworICAgIHJldHVybiBDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KHJvb3QpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CitpbmxpbmUgQ2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKK3sKKyAgICByZXR1
cm4gQ2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocm9vdCk7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZDQxOGE1ZS4u
YzdhNDc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZl
cnNhbC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC01NSw3ICs1NCw2IEBACiAjaW5jbHVkZSAi
VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKERFTEVUSU9OX1VJKQpAQCAtNjgsNiArNjYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNl
cnRpb25FdmVudHMoTm9kZSopOwogc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVu
dHMoTm9kZSopOworc3RhdGljIHZvaWQgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKENvbnRhaW5l
ck5vZGUqLCBOb2RlKiwgQXR0YWNoQmVoYXZpb3IpOwogCiB0eXBlZGVmIHBhaXI8UmVmUHRyPE5v
ZGU+LCB1bnNpZ25lZD4gQ2FsbGJhY2tQYXJhbWV0ZXJzOwogdHlwZWRlZiBwYWlyPE5vZGVDYWxs
YmFjaywgQ2FsbGJhY2tQYXJhbWV0ZXJzPiBDYWxsYmFja0luZm87CkBAIC0yNjMsNyArMjYyLDcg
QEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdD
aGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRl
bGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KICAgICBB
U1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCi0gICAgUmVm
PENvbnRhaW5lck5vZGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0
KHRoaXMpOwogCiAgICAgZWMgPSAwOwogCkBAIC0zMTYsNyArMzE1LDcgQEAgYm9vbCBDb250YWlu
ZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVm
Q2hpbGQsIEV4Y2UKIAogICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hp
bGQpOwogCi0gICAgICAgIHVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihjaGlsZCwgYXR0YWNoQmVo
YXZpb3IpOworICAgICAgICB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24odGhpcywgY2hpbGQsIGF0
dGFjaEJlaGF2aW9yKTsKICAgICB9CiAKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50
KCk7CkBAIC0zNDksMjggKzM0OCw2IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3Jl
Q29tbW9uKE5vZGUqIG5leHRDaGlsZCwgTm9kZSogbmV3Q2hpbGQpCiAgICAgbmV3Q2hpbGQtPnNl
dE5leHRTaWJsaW5nKG5leHRDaGlsZCk7CiB9CiAKLXZvaWQgQ29udGFpbmVyTm9kZTo6bm90aWZ5
Q2hpbGRJbnNlcnRlZChOb2RlKiBjaGlsZCwgQ2hpbGRDaGFuZ2VTb3VyY2Ugc291cmNlKQotewot
ICAgIENoaWxkQ2hhbmdlIGNoYW5nZTsKLSAgICBjaGFuZ2UudHlwZSA9IGNoaWxkLT5pc0VsZW1l
bnROb2RlKCkgPyBFbGVtZW50SW5zZXJ0ZWQgOiBjaGlsZC0+aXNUZXh0Tm9kZSgpID8gVGV4dElu
c2VydGVkIDogTm9uQ29udGVudHNDaGlsZENoYW5nZWQ7Ci0gICAgY2hhbmdlLnByZXZpb3VzU2li
bGluZ0VsZW1lbnQgPSAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKTsK
LSAgICBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoY2hpbGQpOwotICAgIGNoYW5nZS5zb3VyY2UgPSBzb3VyY2U7Ci0KLSAgICBjaGlsZHJl
bkNoYW5nZWQoY2hhbmdlKTsKLX0KLQotdm9pZCBDb250YWluZXJOb2RlOjpub3RpZnlDaGlsZFJl
bW92ZWQoTm9kZSogY2hpbGQsIE5vZGUqIHByZXZpb3VzU2libGluZywgTm9kZSogbmV4dFNpYmxp
bmcsIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZSkKLXsKLSAgICBDaGlsZENoYW5nZSBjaGFuZ2U7
Ci0gICAgY2hhbmdlLnR5cGUgPSBjaGlsZC0+aXNFbGVtZW50Tm9kZSgpID8gRWxlbWVudFJlbW92
ZWQgOiBjaGlsZC0+aXNUZXh0Tm9kZSgpID8gVGV4dFJlbW92ZWQgOiBOb25Db250ZW50c0NoaWxk
Q2hhbmdlZDsKLSAgICBjaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCA9ICghcHJldmlvdXNT
aWJsaW5nIHx8IHByZXZpb3VzU2libGluZy0+aXNFbGVtZW50Tm9kZSgpKSA/IHRvRWxlbWVudChw
cmV2aW91c1NpYmxpbmcpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKHByZXZp
b3VzU2libGluZyk7Ci0gICAgY2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCA9ICghbmV4dFNpYmxp
bmcgfHwgbmV4dFNpYmxpbmctPmlzRWxlbWVudE5vZGUoKSkgPyB0b0VsZW1lbnQobmV4dFNpYmxp
bmcpIDogRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcobmV4dFNpYmxpbmcpOwotICAgIGNo
YW5nZS5zb3VyY2UgPSBzb3VyY2U7Ci0KLSAgICBjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKLX0K
LQogdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2Rl
PiBuZXdDaGlsZCwgTm9kZSogbmV4dENoaWxkKQogewogICAgIEFTU0VSVChuZXdDaGlsZCk7CkBA
IC0zOTMsOCArMzcwLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUo
UGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogbmV4dENoaWwKIAogICAgIENoaWxkTGlz
dE11dGF0aW9uU2NvcGUodGhpcykuY2hpbGRBZGRlZChuZXdDaGlsZC5nZXQoKSk7CiAKLSAgICBu
b3RpZnlDaGlsZEluc2VydGVkKG5ld0NoaWxkLmdldCgpLCBDaGlsZENoYW5nZVNvdXJjZVBhcnNl
cik7Ci0KKyAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbmV3Q2hpbGQtPnByZXZpb3VzU2libGlu
ZygpLCBuZXh0Q2hpbGQsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMp
Lm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CiAKQEAgLTQwNCw3ICszODAsNyBAQCBib29sIENv
bnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2Rl
KiBvbGRDaGlsZCwgRXhjZQogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBh
IHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgogICAgIEFTU0VSVChyZWZD
b3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKLSAgICBSZWY8Q29udGFpbmVy
Tm9kZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPE5vZGU+IHByb3RlY3QodGhpcyk7CiAK
ICAgICBlYyA9IDA7CiAKQEAgLTQ3OCw3ICs0NTQsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJl
cGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhj
ZQogICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkVG9Db250YWluZXIoY2hpbGQsIHRoaXMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKGNoaWxkLCBhdHRh
Y2hCZWhhdmlvcik7CisgICAgICAgIHVwZGF0ZVRyZWVBZnRlckluc2VydGlvbih0aGlzLCBjaGls
ZCwgYXR0YWNoQmVoYXZpb3IpOwogICAgIH0KIAogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVk
RXZlbnQoKTsKQEAgLTUyNyw3ICs1MDMsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNo
aWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBJZiBpdCBpcywg
aXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2
ZW50cy4KICAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkp
OwogCi0gICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxO
b2RlPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgZWMgPSAwOwogCkBAIC01NzIsOSArNTQ4LDcgQEAg
Ym9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgICAgIE5vZGUqIHByZXYgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7
CiAgICAgICAgIE5vZGUqIG5leHQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVt
b3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBjaGlsZC5nZXQoKSk7Ci0KLSAgICAgICAgbm90aWZ5Q2hp
bGRSZW1vdmVkKGNoaWxkLmdldCgpLCBwcmV2LCBuZXh0LCBDaGlsZENoYW5nZVNvdXJjZUFQSSk7
Ci0KKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7CiAgICAg
ICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQuZ2V0KCkpOwog
ICAgIH0KICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CkBAIC02MjUsOCArNTk5
LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlKiBvbGRDaGls
ZCkKIAogICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgb2xkQ2hpbGQpOwogCi0gICAgbm90
aWZ5Q2hpbGRSZW1vdmVkKG9sZENoaWxkLCBwcmV2LCBuZXh0LCBDaGlsZENoYW5nZVNvdXJjZVBh
cnNlcik7Ci0KKyAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgcHJldiwgbmV4dCwgLTEpOwogICAg
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkob2xkQ2hpbGQpOwogfQogCkBA
IC02MzgsNyArNjExLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBjb250YWluZXIgbm9kZSBjYW4gYmUgcmVtb3Zl
ZCBmcm9tIGV2ZW50IGhhbmRsZXJzLgotICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCh0aGlzKTsKIAogICAgIC8v
IGV4Y2x1ZGUgdGhpcyBub2RlIHdoZW4gbG9va2luZyBmb3IgcmVtb3ZlZCBmb2N1c2VkTm9kZSBz
aW5jZSBvbmx5IGNoaWxkcmVuIHdpbGwgYmUgcmVtb3ZlZAogICAgIGRvY3VtZW50KCkucmVtb3Zl
Rm9jdXNlZE5vZGVPZlN1YnRyZWUodGhpcywgdHJ1ZSk7CkBAIC02NDksNyArNjIyLDcgQEAgdm9p
ZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAKICAgICAvLyBEbyBhbnkgcHJlcCB3
b3JrIG5lZWRlZCBiZWZvcmUgYWN0dWFsbHkgc3RhcnRpbmcgdG8gZGV0YWNoCiAgICAgLy8gYW5k
IHJlbW92ZS4uLiBlLmcuIHN0b3AgbG9hZGluZyBmcmFtZXMsIGZpcmUgdW5sb2FkIGV2ZW50cy4K
LSAgICB3aWxsUmVtb3ZlQ2hpbGRyZW4odGhpcyk7CisgICAgd2lsbFJlbW92ZUNoaWxkcmVuKHBy
b3RlY3QuZ2V0KCkpOwogCiAgICAgTm9kZVZlY3RvciByZW1vdmVkQ2hpbGRyZW47CiAgICAgewpA
QCAtNjYzLDggKzYzNiw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4oKQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlID0g
eyBBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIENoaWxkQ2hhbmdlU291cmNl
QVBJIH07Ci0gICAgICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgICAgICBjaGlsZHJl
bkNoYW5nZWQoZmFsc2UsIDAsIDAsIC1zdGF0aWNfY2FzdDxpbnQ+KHJlbW92ZWRDaGlsZHJlbi5z
aXplKCkpKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVtb3Zl
ZENoaWxkcmVuLnNpemUoKTsgKytpKQogICAgICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0uZ2V0KCkpOwpAQCAtNjc1LDcgKzY0
Nyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4oKQogCiBib29sIENvbnRh
aW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlv
bkNvZGUmIGVjLCBBdHRhY2hCZWhhdmlvciBhdHRhY2hCZWhhdmlvcikKIHsKLSAgICBSZWY8Q29u
dGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBy
b3RlY3QodGhpcyk7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0
aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVj
dCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KQEAgLTcyMyw3ICs2OTUsNyBAQCBib29sIENv
bnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2Vw
dGlvbkNvZGUmIGVjLCBBdAogICAgICAgICAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihjaGls
ZCwgdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24o
Y2hpbGQsIGF0dGFjaEJlaGF2aW9yKTsKKyAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9u
KHRoaXMsIGNoaWxkLCBhdHRhY2hCZWhhdmlvcik7CiAgICAgfQogCiAgICAgZGlzcGF0Y2hTdWJ0
cmVlTW9kaWZpZWRFdmVudCgpOwpAQCAtNzQyLDYgKzcxNCw3IEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6cGFyc2VyQXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAgICBpZiAo
JmRvY3VtZW50KCkgIT0gJm5ld0NoaWxkLT5kb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgp
LmFkb3B0Tm9kZShuZXdDaGlsZC5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKKyAgICBO
b2RlKiBsYXN0ID0gbV9sYXN0Q2hpbGQ7CiAgICAgewogICAgICAgICBOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBt
ZXRob2Qgc2hvdWxkIHRha2UgYSBQYXNzUmVmUHRyLgpAQCAtNzUzLDggKzcyNiw3IEBAIHZvaWQg
Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCkKIAogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUodGhpcykuY2hpbGRBZGRlZChuZXdDaGls
ZC5nZXQoKSk7CiAKLSAgICBub3RpZnlDaGlsZEluc2VydGVkKG5ld0NoaWxkLmdldCgpLCBDaGls
ZENoYW5nZVNvdXJjZVBhcnNlcik7Ci0KKyAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbGFzdCwg
MCwgMSk7CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIodGhpcykubm90aWZ5KG5ld0No
aWxkLmdldCgpKTsKIH0KIApAQCAtNzc4LDcgKzc1MCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6
c3VzcGVuZFBvc3RBdHRhY2hDYWxsYmFja3MoKQogdm9pZCBDb250YWluZXJOb2RlOjpyZXN1bWVQ
b3N0QXR0YWNoQ2FsbGJhY2tzKCkKIHsKICAgICBpZiAoc19hdHRhY2hEZXB0aCA9PSAxKSB7Ci0g
ICAgICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmUHRy
PENvbnRhaW5lck5vZGU+IHByb3RlY3QodGhpcyk7CiAKICAgICAgICAgaWYgKHNfcG9zdEF0dGFj
aENhbGxiYWNrUXVldWUpCiAgICAgICAgICAgICBkaXNwYXRjaFBvc3RBdHRhY2hDYWxsYmFja3Mo
KTsKQEAgLTgzMiwxMCArODA0LDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6c2NoZWR1bGVTZXRO
ZWVkc1N0eWxlUmVjYWxjKFN0eWxlQ2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogICAgICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKGNoYW5nZVR5cGUpOwogfQogCi12b2lkIENvbnRhaW5lck5vZGU6OmNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBDb250YWluZXJO
b2RlOjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqLCBOb2RlKiwg
aW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBkb2N1bWVudCgpLmluY0RPTVRyZWVWZXJzaW9u
KCk7Ci0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VBUEkgJiYgY2hh
bmdlLnR5cGUgIT0gVGV4dENoYW5nZWQpCisgICAgaWYgKCFjaGFuZ2VkQnlQYXJzZXIgJiYgY2hp
bGRDb3VudERlbHRhKQogICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVJhbmdlc0FmdGVyQ2hpbGRy
ZW5DaGFuZ2VkKHRoaXMpOwogICAgIGludmFsaWRhdGVOb2RlTGlzdENhY2hlc0luQW5jZXN0b3Jz
KCk7CiB9CkBAIC0xMDY0LDE5ICsxMDM2LDIwIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRS
ZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIH0KIH0KIAotdm9pZCBDb250YWluZXJOb2Rl
Ojp1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oTm9kZSogY2hpbGQsIEF0dGFjaEJlaGF2aW9yIGF0
dGFjaEJlaGF2aW9yKQorc3RhdGljIHZvaWQgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKENvbnRh
aW5lck5vZGUqIHBhcmVudCwgTm9kZSogY2hpbGQsIEF0dGFjaEJlaGF2aW9yIGF0dGFjaEJlaGF2
aW9yKQogeworICAgIEFTU0VSVChwYXJlbnQtPnJlZkNvdW50KCkpOwogICAgIEFTU0VSVChjaGls
ZC0+cmVmQ291bnQoKSk7CiAKLSAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLmNoaWxk
QWRkZWQoY2hpbGQpOworICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUocGFyZW50KS5jaGlsZEFk
ZGVkKGNoaWxkKTsKIAotICAgIG5vdGlmeUNoaWxkSW5zZXJ0ZWQoY2hpbGQsIENoaWxkQ2hhbmdl
U291cmNlQVBJKTsKKyAgICBwYXJlbnQtPmNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgY2hpbGQtPnBy
ZXZpb3VzU2libGluZygpLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgMSk7CiAKLSAgICBDaGlsZE5v
ZGVJbnNlcnRpb25Ob3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQpOworICAgIENoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyKHBhcmVudCkubm90aWZ5KGNoaWxkKTsKIAogICAgIC8vIEZJWE1FOiBB
dHRhY2htZW50IHNob3VsZCBiZSB0aGUgZmlyc3Qgb3BlcmF0aW9uIGluIHRoaXMgZnVuY3Rpb24s
IGJ1dCBzb21lIGNvZGUKICAgICAvLyAoZm9yIGV4YW1wbGUsIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQncyBhdXRvZm9jdXMgc3VwcG9ydCkgcmVxdWlyZXMgdGhpcyBvcmRlcmluZy4KLSAgICBpZiAo
YXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9
PSB0aGlzKSB7CisgICAgaWYgKHBhcmVudC0+YXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVk
KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9PSBwYXJlbnQpIHsKICAgICAgICAgaWYgKGF0dGFj
aEJlaGF2aW9yID09IEF0dGFjaExhemlseSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0Vs
ZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgdG9FbGVtZW50KGNoaWxkKS0+bGF6eUF0dGFj
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggODVhNTI5Yy4uOTk4NTExOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0xMDksMTUgKzEwOSwxMiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlU2V0TmVlZHNTdHlsZVJlY2FsYyhTdHlsZUNoYW5n
ZVR5cGUgPSBGdWxsU3R5bGVDaGFuZ2UpIE9WRVJSSURFIEZJTkFMOwogCi0gICAgZW51bSBDaGls
ZENoYW5nZVR5cGUgeyBFbGVtZW50SW5zZXJ0ZWQsIEVsZW1lbnRSZW1vdmVkLCBUZXh0SW5zZXJ0
ZWQsIFRleHRSZW1vdmVkLCBUZXh0Q2hhbmdlZCwgQWxsQ2hpbGRyZW5SZW1vdmVkLCBOb25Db250
ZW50c0NoaWxkQ2hhbmdlZCB9OwotICAgIGVudW0gQ2hpbGRDaGFuZ2VTb3VyY2UgeyBDaGlsZENo
YW5nZVNvdXJjZVBhcnNlciwgQ2hpbGRDaGFuZ2VTb3VyY2VBUEkgfTsKLSAgICBzdHJ1Y3QgQ2hp
bGRDaGFuZ2UgewotICAgICAgICBDaGlsZENoYW5nZVR5cGUgdHlwZTsKLSAgICAgICAgRWxlbWVu
dCogcHJldmlvdXNTaWJsaW5nRWxlbWVudDsKLSAgICAgICAgRWxlbWVudCogbmV4dFNpYmxpbmdF
bGVtZW50OwotICAgICAgICBDaGlsZENoYW5nZVNvdXJjZSBzb3VyY2U7Ci0gICAgfTsKLSAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CisgICAgLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBOb3RpZmljYXRpb24gb2YgZG9jdW1lbnQgc3Ry
dWN0dXJlIGNoYW5nZXMgKHNlZSBOb2RlLmggZm9yIG1vcmUgbm90aWZpY2F0aW9uIG1ldGhvZHMp
CisKKyAgICAvLyBOb3RpZmllcyB0aGUgbm9kZSB0aGF0IGl0J3MgbGlzdCBvZiBjaGlsZHJlbiBo
YXZlIGNoYW5nZWQgKGVpdGhlciBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGQgbm9kZXMpLCBv
ciBhIGNoaWxkCisgICAgLy8gbm9kZSB0aGF0IGlzIG9mIHRoZSB0eXBlIENEQVRBX1NFQ1RJT05f
Tk9ERSwgVEVYVF9OT0RFIG9yIENPTU1FTlRfTk9ERSBoYXMgY2hhbmdlZCBpdHMgdmFsdWUuCisg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNyZWF0ZWRCeVBhcnNlciA9IGZh
bHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBj
aGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdERlc2NlbmRhbnRGcmFt
ZXMoKTsKIApAQCAtMTUwLDExICsxNDcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgZ2V0VXBwZXJM
ZWZ0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGdldExvd2VyUmlnaHRDb3Ju
ZXIoRmxvYXRQb2ludCYpIGNvbnN0OwogCi0gICAgdm9pZCBub3RpZnlDaGlsZEluc2VydGVkKE5v
ZGUqIGNoaWxkLCBDaGlsZENoYW5nZVNvdXJjZSk7Ci0gICAgdm9pZCBub3RpZnlDaGlsZFJlbW92
ZWQoTm9kZSogY2hpbGQsIE5vZGUqIHByZXZpb3VzU2libGluZywgTm9kZSogbmV4dFNpYmxpbmcs
IENoaWxkQ2hhbmdlU291cmNlKTsKLQotICAgIHZvaWQgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9u
KE5vZGUqIGNoaWxkLCBBdHRhY2hCZWhhdmlvcik7Ci0KICAgICBib29sIGlzQ29udGFpbmVyTm9k
ZSgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwogCiAgICAgTm9kZSogbV9maXJzdENoaWxk
OwpAQCAtMzEzLDE5ICszMDUsMjAgQEAgcHJpdmF0ZToKIAogY2xhc3MgUG9zdEF0dGFjaENhbGxi
YWNrRGlzYWJsZXIgewogcHVibGljOgotICAgIFBvc3RBdHRhY2hDYWxsYmFja0Rpc2FibGVyKENv
bnRhaW5lck5vZGUmIG5vZGUpCisgICAgUG9zdEF0dGFjaENhbGxiYWNrRGlzYWJsZXIoQ29udGFp
bmVyTm9kZSogbm9kZSkKICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICB7Ci0gICAgICAgIG1f
bm9kZS5zdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOworICAgICAgICBBU1NFUlQobV9ub2Rl
KTsKKyAgICAgICAgbV9ub2RlLT5zdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwogICAgIH0K
IAogICAgIH5Qb3N0QXR0YWNoQ2FsbGJhY2tEaXNhYmxlcigpCiAgICAgewotICAgICAgICBtX25v
ZGUucmVzdW1lUG9zdEF0dGFjaENhbGxiYWNrcygpOworICAgICAgICBtX25vZGUtPnJlc3VtZVBv
c3RBdHRhY2hDYWxsYmFja3MoKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9k
ZSYgbV9ub2RlOworICAgIENvbnRhaW5lck5vZGUqIG1fbm9kZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmgKaW5kZXggMTUxYjNmMi4uYjczMzZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJOb2RlVHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTE4NCw3ICsxODMsNyBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAKICAgICAgICAgICAgICAgICB0
YWlsID0gbjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmPEdlbmVy
aWNOb2RlPiBwcm90ZWN0KCpuKTsgLy8gcmVtb3ZlZEZyb21Eb2N1bWVudCBtYXkgcmVtb3ZlIHJl
bW92ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIG5vZGUuCisgICAgICAgICAgICAgICAgUmVmUHRy
PEdlbmVyaWNOb2RlPiBwcm90ZWN0KG4pOyAvLyByZW1vdmVkRnJvbURvY3VtZW50IG1heSByZW1v
dmUgcmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIHRoaXMgbm9kZS4KICAgICAgICAgICAgICAgICBO
b2RlUmVtb3ZhbERpc3BhdGNoZXI8R2VuZXJpY05vZGUsIEdlbmVyaWNOb2RlQ29udGFpbmVyLCBT
aG91bGREaXNwYXRjaFJlbW92YWxOb3RpZmljYXRpb248R2VuZXJpY05vZGU+Ojp2YWx1ZT46OmRp
c3BhdGNoKG4sIGNvbnRhaW5lcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE5Nyw3
ICsxOTYsNyBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZGUp
CiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7Ci0gICAgUmVm
PE5vZGU+IHByb3RlY3QoKm5vZGUpOworICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0KG5vZGUpOwog
ICAgIGlmIChOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlv
bnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpKQogICAgICAgICBtX3Bv
c3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLmFwcGVuZChub2RlKTsKICAgICBpZiAobm9k
ZS0+aXNDb250YWluZXJOb2RlKCkpCkBAIC0yMjIsOCArMjIxLDggQEAgaW5saW5lIHZvaWQgQ2hp
bGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeShOb2RlKiBub2RlKQogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZSgmbm9kZS0+ZG9jdW1lbnQoKSwgbm9k
ZSk7CiAjZW5kaWYKIAotICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG5vZGUtPmRv
Y3VtZW50KCkpOwotICAgIFJlZjxOb2RlPiBwcm90ZWN0Tm9kZSgqbm9kZSk7CisgICAgUmVmUHRy
PERvY3VtZW50PiBwcm90ZWN0RG9jdW1lbnQoJm5vZGUtPmRvY3VtZW50KCkpOworICAgIFJlZlB0
cjxOb2RlPiBwcm90ZWN0Tm9kZShub2RlKTsKIAogICAgIGlmIChtX2luc2VydGlvblBvaW50LT5p
bkRvY3VtZW50KCkpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChub2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXNjZW5kYW50SXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXNjZW5kYW50SXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xZjM0NjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0Rlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEZXNjZW5kYW50
SXRlcmF0b3JfaAorI2RlZmluZSBEZXNjZW5kYW50SXRlcmF0b3JfaAorCisjaW5jbHVkZSAiRWxl
bWVudFRyYXZlcnNhbC5oIgorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorI2luY2x1ZGUgIkRlc2Nl
bmRhbnRJdGVyYXRvckFzc2VydGlvbnMuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2NsYXNzIERlc2NlbmRhbnRJdGVy
YXRvciB7CitwdWJsaWM6CisgICAgRGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHJvb3QpOworICAgIERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiBy
b290LCBFbGVtZW50VHlwZSogY3VycmVudCk7CisgICAgRGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCk7CisgICAgRWxlbWVudFR5cGUmIG9wZXJhdG9yKigpOworICAgIEVsZW1lbnRUeXBl
KiBvcGVyYXRvci0+KCk7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc2NlbmRhbnRJdGVy
YXRvciYgb3RoZXIpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0IENvbnRhaW5lck5vZGUq
IG1fcm9vdDsKKyAgICBFbGVtZW50VHlwZSogbV9jdXJyZW50OworCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgIERlc2NlbmRhbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOworI2Vu
ZGlmCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitjbGFzcyBEZXNjZW5k
YW50Q29uc3RJdGVyYXRvciB7CitwdWJsaWM6CisgICAgRGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7CisgICAgRGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwor
ICAgIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgY29uc3QgRWxl
bWVudFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0OworICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBvcGVy
YXRvci0+KCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3QgQ29udGFpbmVy
Tm9kZSogbV9yb290OworICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CisKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2Vy
dGlvbnM7CisjZW5kaWYKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2Ns
YXNzIERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgeworcHVibGljOgorICAgIERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSogcm9vdCk7CisgICAgRGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOworICAgIERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gZW5kKCk7CisKK3ByaXZhdGU6CisgICAgQ29udGFpbmVyTm9kZSogbV9yb290OworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgorY2xhc3MgRGVzY2VuZGFudENvbnN0
SXRlcmF0b3JBZGFwdGVyIHsKK3B1YmxpYzoKKyAgICBEZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7CisgICAgRGVzY2VuZGFudENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7CisgICAgRGVzY2VuZGFudENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0IENv
bnRhaW5lck5vZGUqIG1fcm9vdDsKK307CisKK0Rlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudD4gZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUqIHJvb3QpOworRGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdCBD
b250YWluZXJOb2RlKiByb290KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29u
dGFpbmVyTm9kZSogcm9vdCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUo
Y29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7CisKKy8vIERlc2NlbmRhbnRJdGVyYXRvcgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJv
b3QpCisgICAgOiBtX3Jvb3Qocm9vdCkKKyAgICAsIG1fY3VycmVudChudWxscHRyKQoreworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUq
IHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQorICAgIDogbV9yb290KHJvb3QpCisgICAgLCBt
X2N1cnJlbnQoY3VycmVudCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2Fzc2VydGlv
bnMoY3VycmVudCkKKyNlbmRpZgoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+CitpbmxpbmUgRGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit7CisgICAgQVNTRVJUKG1fY3VycmVu
dCk7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CisgICAg
bV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChtX2N1cnJlbnQsIG1fcm9v
dCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVu
IHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCisgICAgaWYgKCFtX2N1cnJlbnQpCisgICAg
ICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOworI2VuZGlmCisg
ICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Citp
bmxpbmUgRWxlbWVudFR5cGUmIERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yKigpCit7CisgICAgQVNTRVJUKG1fY3VycmVudCk7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlv
bnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CisgICAgcmV0dXJuICptX2N1cnJlbnQ7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBFbGVtZW50VHlwZSogRGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpCit7CisgICAgQVNTRVJUKG1f
Y3VycmVudCk7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7
CisgICAgcmV0dXJuIG1fY3VycmVudDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgoraW5saW5lIGJvb2wgRGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0
b3IhPShjb25zdCBEZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAoreworICAgIEFTU0VS
VChtX3Jvb3QgPT0gb3RoZXIubV9yb290KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21U
cmVlSGFzTXV0YXRlZCgpKTsKKyAgICByZXR1cm4gbV9jdXJyZW50ICE9IG90aGVyLm1fY3VycmVu
dDsKK30KKworLy8gRGVzY2VuZGFudENvbnN0SXRlcmF0b3IKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgoraW5saW5lIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKKyAg
ICA6IG1fcm9vdChyb290KQorICAgICwgbV9jdXJyZW50KG51bGxwdHIpCit7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBEZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46OkRlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQorICAgIDogbV9yb290KHJvb3Qp
CisgICAgLCBtX2N1cnJlbnQoY3VycmVudCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBt
X2Fzc2VydGlvbnMoY3VycmVudCkKKyNlbmRpZgoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBEZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQorewor
ICAgIEFTU0VSVChtX2N1cnJlbnQpOworICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVI
YXNNdXRhdGVkKCkpOworICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5l
eHQobV9jdXJyZW50LCBtX3Jvb3QpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAvLyBEcm9w
IHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgorICAgIGlm
ICghbV9jdXJyZW50KQorICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24oKTsKKyNlbmRpZgorICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlJiBEZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fY3VycmVudCk7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQo
KSk7CisgICAgcmV0dXJuICptX2N1cnJlbnQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KK2lubGluZSBjb25zdCBFbGVtZW50VHlwZSogRGVzY2VuZGFudENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jdXJy
ZW50KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKKyAg
ICByZXR1cm4gbV9jdXJyZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
CitpbmxpbmUgYm9vbCBEZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yIT0oY29uc3QgRGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAoreworICAg
IEFTU0VSVChtX3Jvb3QgPT0gb3RoZXIubV9yb290KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9u
cy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKKyAgICByZXR1cm4gbV9jdXJyZW50ICE9IG90aGVyLm1f
Y3VycmVudDsKK30KKworLy8gRGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OkRlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSogcm9v
dCkKKyAgICA6IG1fcm9vdChyb290KQoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBEZXNjZW5kYW50
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQoreworICAgIHJldHVybiBEZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBl
Pjo6Zmlyc3RXaXRoaW4obV9yb290KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KK2lubGluZSBEZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKQoreworICAgIHJldHVybiBEZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCk7Cit9CisKKy8vIERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yQWRhcHRlcgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Citpbmxp
bmUgRGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCisgICAgOiBt
X3Jvb3Qocm9vdCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5s
aW5lIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBEZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+IERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3Jvb3QpOworfQorCisvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucworCitpbmxpbmUgRGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50RGVzY2VuZGFudHMoQ29udGFpbmVyTm9k
ZSogcm9vdCkKK3sKKyAgICByZXR1cm4gRGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
Pihyb290KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENv
bnRhaW5lck5vZGUqIHJvb3QpCit7CisgICAgcmV0dXJuIERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworfQorCitpbmxpbmUgRGVzY2VuZGFudENvbnN0SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJOb2Rl
KiByb290KQoreworICAgIHJldHVybiBEZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudD4ocm9vdCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGlu
ZSBEZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRz
T2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCit7CisgICAgcmV0dXJuIERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocm9vdCk7Cit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVzY2VuZGFudEl0ZXJhdG9yQXNz
ZXJ0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rlc2NlbmRhbnRJdGVyYXRvckFzc2VydGlv
bnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjc2OWM3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rlc2NlbmRhbnRJdGVyYXRvckFzc2VydGlv
bnMuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBEZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRpb25zX2gKKyNkZWZp
bmUgRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9uc19oCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
ZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRpb25zIHsKK3B1YmxpYzoKKyAgICBEZXNjZW5kYW50SXRl
cmF0b3JBc3NlcnRpb25zKCk7CisgICAgRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucyhjb25z
dCBFbGVtZW50KiBmaXJzdCk7CisgICAgYm9vbCBkb21UcmVlSGFzTXV0YXRlZCgpIGNvbnN0Owor
ICAgIHZvaWQgZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKKworcHJpdmF0ZToKKyAgICBj
b25zdCBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICB1aW50NjRfdCBtX2luaXRpYWxET01UcmVl
VmVyc2lvbjsKKyAgICBPd25QdHI8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uPiBtX25vRXZlbnRE
aXNwYXRjaEFzc2VydGlvbjsKK307CisKK2lubGluZSBEZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRp
b25zOjpEZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRpb25zKCkKKyAgICA6IG1fZG9jdW1lbnQobnVs
bHB0cikKKyAgICAsIG1faW5pdGlhbERPTVRyZWVWZXJzaW9uKDApCit7Cit9CisKK2lubGluZSBE
ZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRpb25zOjpEZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRpb25z
KGNvbnN0IEVsZW1lbnQqIGZpcnN0KQorICAgIDogbV9kb2N1bWVudChmaXJzdCA/ICZmaXJzdC0+
ZG9jdW1lbnQoKSA6IG51bGxwdHIpCisgICAgLCBtX2luaXRpYWxET01UcmVlVmVyc2lvbihtX2Rv
Y3VtZW50ID8gbV9kb2N1bWVudC0+ZG9tVHJlZVZlcnNpb24oKSA6IDApCisgICAgLCBtX25vRXZl
bnREaXNwYXRjaEFzc2VydGlvbihtX2RvY3VtZW50ID8gYWRvcHRQdHIobmV3IE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbikgOiBudWxscHRyKQoreworfQorCitpbmxpbmUgYm9vbCBEZXNjZW5kYW50
SXRlcmF0b3JBc3NlcnRpb25zOjpkb21UcmVlSGFzTXV0YXRlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW5pdGlhbERPTVRyZWVWZXJzaW9uICYmIG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+
ZG9tVHJlZVZlcnNpb24oKSAhPSBtX2luaXRpYWxET01UcmVlVmVyc2lvbjsKK30KKworaW5saW5l
IHZvaWQgRGVzY2VuZGFudEl0ZXJhdG9yQXNzZXJ0aW9uczo6ZHJvcEV2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24oKQoreworICAgIG1fbm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uID0gbnVsbHB0cjsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM1NGUxNzkuLjE5MTgy
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDaGlsZEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ29tbWVudC5oIgpAQCAtNDksNiArNTAsNyBAQAogI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0Nv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRlQ29tcG9u
ZW50cy5oIgorI2luY2x1ZGUgIkRlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRpY3Rp
b25hcnkuaCIKICNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCkBAIC01OSw3ICs2MSw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBl
LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUg
IkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVudGl0eVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRGYWN0b3J5LmgiCkBAIC0xNjUsNyArMTY2LDYg
QEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWZmZXIuaD4KIApAQCAtNjI0LDYgKzYyNCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpc3Bvc2Uo
KQogICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAvLyBXZSBtdXN0IG1ha2Ug
c3VyZSBub3QgdG8gYmUgcmV0YWluaW5nIGFueSBvZiBvdXIgY2hpbGRyZW4gdGhyb3VnaAogICAg
IC8vIHRoZXNlIGV4dHJhIHBvaW50ZXJzIG9yIHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5
Y2xlLgorICAgIG1fZG9jVHlwZSA9IDA7CiAgICAgbV9mb2N1c2VkRWxlbWVudCA9IDA7CiAgICAg
bV9ob3ZlcmVkRWxlbWVudCA9IDA7CiAgICAgbV9hY3RpdmVFbGVtZW50ID0gMDsKQEAgLTc0NCw2
ICs3NDUsMjIgQEAgdm9pZCBEb2N1bWVudDo6cmVzZXRBY3RpdmVMaW5rQ29sb3IoKQogICAgIG1f
YWN0aXZlTGlua0NvbG9yLnNldE5hbWVkQ29sb3IoInJlZCIpOwogfQogCit2b2lkIERvY3VtZW50
OjpzZXREb2NUeXBlKFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2NUeXBlKQoreworICAgIC8v
IFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KKyAgICBBU1NFUlQo
IW1fZG9jVHlwZSB8fCAhZG9jVHlwZSk7CisgICAgbV9kb2NUeXBlID0gZG9jVHlwZTsKKyAgICBp
ZiAobV9kb2NUeXBlKSB7CisgICAgICAgIHRoaXMtPmFkb3B0SWZOZWVkZWQobV9kb2NUeXBlLmdl
dCgpKTsKKyNpZiBFTkFCTEUoTEVHQUNZX1ZJRVdQT1JUX0FEQVBUSU9OKQorICAgICAgICBpZiAo
bV9kb2NUeXBlLT5wdWJsaWNJZCgpLnN0YXJ0c1dpdGgoIi0vL3dhcGZvcnVtLy9kdGQgeGh0bWwg
bW9iaWxlIDEuIiwgLyogY2FzZVNlbnNpdGl2ZSAqLyBmYWxzZSkpCisgICAgICAgICAgICBwcm9j
ZXNzVmlld3BvcnQoIndpZHRoPWRldmljZS13aWR0aCwgaGVpZ2h0PWRldmljZS1oZWlnaHQiLCBW
aWV3cG9ydEFyZ3VtZW50czo6WEhUTUxNb2JpbGVQcm9maWxlKTsKKyNlbmRpZgorICAgIH0KKyAg
ICAvLyBEb2N0eXBlIGFmZmVjdHMgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBzdHlsZXNoZWV0
cy4KKyAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKK30KKwogRE9NSW1wbGVtZW50YXRpb24qIERv
Y3VtZW50OjppbXBsZW1lbnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uKQpA
QCAtNzU2LDI3ICs3NzMsOSBAQCBib29sIERvY3VtZW50OjpoYXNNYW5pZmVzdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdO
YW1lKGh0bWxUYWcpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNBdHRyaWJ1dGUobWFuaWZlc3RB
dHRyKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IERvY3VtZW50Ojpkb2N0eXBlKCkg
Y29uc3QKLXsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUg
PSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5pc0RvY3VtZW50VHlw
ZU5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudFR5cGUqPihu
b2RlKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBEb2N1bWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUq
IGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIENvbnRhaW5lck5vZGU6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwotCi0gICAgLy8gTk9URTogUGVyIERPTSwgZHluYW1p
Y2FsbHkgaW5zZXJ0aW5nL3JlbW92aW5nIGRvY3R5cGUgbm9kZXMgZG9lc24ndCBhZmZlY3QgY29t
cGF0aWJpbGl0eSBtb2RlLgotCi0jaWYgRU5BQkxFKExFR0FDWV9WSUVXUE9SVF9BREFQVElPTikK
LSAgICBpZiAoUmVmUHRyPERvY3VtZW50VHlwZT4gZG9jdW1lbnRUeXBlID0gZG9jdHlwZSgpKSB7
Ci0gICAgICAgIGlmIChkb2N1bWVudFR5cGUtPnB1YmxpY0lkKCkuc3RhcnRzV2l0aCgiLS8vd2Fw
Zm9ydW0vL2R0ZCB4aHRtbCBtb2JpbGUgMS4iLCAvKiBjYXNlU2Vuc2l0aXZlICovIGZhbHNlKSkK
LSAgICAgICAgICAgIHByb2Nlc3NWaWV3cG9ydCgid2lkdGg9ZGV2aWNlLXdpZHRoLCBoZWlnaHQ9
ZGV2aWNlLWhlaWdodCIsIFZpZXdwb3J0QXJndW1lbnRzOjpYSFRNTE1vYmlsZVByb2ZpbGUpOwot
ICAgIH0KLSNlbmRpZgorICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAK
ICAgICBFbGVtZW50KiBuZXdEb2N1bWVudEVsZW1lbnQgPSAwOwogICAgIGF1dG8gZmlyc3RFbGVt
ZW50Q2hpbGQgPSBlbGVtZW50Q2hpbGRyZW4odGhpcykuYmVnaW4oKTsKQEAgLTE3MzUsMTQgKzE3
MzQsOSBAQCB2b2lkIERvY3VtZW50OjpzdHlsZVJlY2FsY1RpbWVyRmlyZWQoVGltZXI8RG9jdW1l
bnQ+KikKIAogdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBjaGFuZ2Up
CiB7CisgICAgLy8gd2Ugc2hvdWxkIG5vdCBlbnRlciBzdHlsZSByZWNhbGMgd2hpbGUgcGFpbnRp
bmcKICAgICBBU1NFUlQoIXZpZXcoKSB8fCAhdmlldygpLT5pc1BhaW50aW5nKCkpOwotCi0gICAg
Ly8gTk9URTogWFNMIGNvZGUgc2VlbXMgdG8gYmUgdGhlIG9ubHkgY2xpZW50IHN0dW1ibGluZyBp
biBoZXJlIHdpdGhvdXQgYSBSZW5kZXJWaWV3LgotICAgIGlmICghbV9yZW5kZXJWaWV3KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+
ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKGZyYW1lVmlldy5pc1BhaW50aW5nKCkpCisgICAgaWYgKHZp
ZXcoKSAmJiB2aWV3KCktPmlzUGFpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IGlmIChtX2luU3R5bGVSZWNhbGMpCkBAIC0xNzY0LDExICsxNzU4LDE4IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UgY2hhbmdlKQogCiAgICAgbV9pblN0eWxlUmVj
YWxjID0gdHJ1ZTsKICAgICB7Ci0gICAgICAgIFBvc3RBdHRhY2hDYWxsYmFja0Rpc2FibGVyIGRp
c2FibGVyKCp0aGlzKTsKKyAgICAgICAgUG9zdEF0dGFjaENhbGxiYWNrRGlzYWJsZXIgZGlzYWJs
ZXIodGhpcyk7CiAgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUg
c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAKLSAgICAgICAgZnJhbWVWaWV3LnBhdXNl
U2NoZWR1bGVkRXZlbnRzKCk7Ci0gICAgICAgIGZyYW1lVmlldy5iZWdpbkRlZmVycmVkUmVwYWlu
dHMoKTsKKyAgICAgICAgUmVmUHRyPEZyYW1lVmlldz4gZnJhbWVWaWV3ID0gdmlldygpOworICAg
ICAgICBpZiAoZnJhbWVWaWV3KSB7CisgICAgICAgICAgICBmcmFtZVZpZXctPnBhdXNlU2NoZWR1
bGVkRXZlbnRzKCk7CisgICAgICAgICAgICBmcmFtZVZpZXctPmJlZ2luRGVmZXJyZWRSZXBhaW50
cygpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKCFyZW5kZXJlcigpIHx8IHJlbmRlckFy
ZW5hKCkpOworICAgICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlckFyZW5hKCkpCisgICAg
ICAgICAgICBnb3RvIGJhaWxPdXQ7CiAKICAgICAgICAgaWYgKG1fcGVuZGluZ1N0eWxlUmVjYWxj
U2hvdWxkRm9yY2UpCiAgICAgICAgICAgICBjaGFuZ2UgPSBTdHlsZTo6Rm9yY2U7CkBAIC0xNzgx
LDkgKzE3ODIsMTEgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBj
aGFuZ2UpCiAgICAgICAgIFN0eWxlOjpyZXNvbHZlVHJlZSgqdGhpcywgY2hhbmdlKTsKIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTdHlsZUNoYW5nZSgpOworICAgICAgICBpZiAodmlldygpKQor
ICAgICAgICAgICAgdmlldygpLT51cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU3R5bGVDaGFu
Z2UoKTsKICNlbmRpZgogCisgICAgYmFpbE91dDoKICAgICAgICAgY2xlYXJOZWVkc1N0eWxlUmVj
YWxjKCk7CiAgICAgICAgIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIHVu
c2NoZWR1bGVTdHlsZVJlY2FsYygpOwpAQCAtMTc5NCw4ICsxNzk3LDEwIEBAIHZvaWQgRG9jdW1l
bnQ6OnJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UgY2hhbmdlKQogICAgICAgICBpZiAobV9zdHls
ZVJlc29sdmVyKQogICAgICAgICAgICAgbV9zdHlsZVNoZWV0Q29sbGVjdGlvbi0+cmVzZXRDU1NG
ZWF0dXJlRmxhZ3MoKTsKIAotICAgICAgICBmcmFtZVZpZXcucmVzdW1lU2NoZWR1bGVkRXZlbnRz
KCk7Ci0gICAgICAgIGZyYW1lVmlldy5lbmREZWZlcnJlZFJlcGFpbnRzKCk7CisgICAgICAgIGlm
IChmcmFtZVZpZXcpIHsKKyAgICAgICAgICAgIGZyYW1lVmlldy0+cmVzdW1lU2NoZWR1bGVkRXZl
bnRzKCk7CisgICAgICAgICAgICBmcmFtZVZpZXctPmVuZERlZmVycmVkUmVwYWludHMoKTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIC8vIElmIHdlIHdhbnRlZCB0byBjYWxsIGltcGxpY2l0Q2xv
c2UoKSBkdXJpbmcgcmVjYWxjU3R5bGUsIGRvIHNvIG5vdyB0aGF0IHdlJ3JlIGZpbmlzaGVkLgpA
QCAtMTgwOSw4ICsxODE0LDggQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGU6OkNo
YW5nZSBjaGFuZ2UpCiAgICAgLy8gQXMgYSByZXN1bHQgb2YgdGhlIHN0eWxlIHJlY2FsY3VsYXRp
b24sIHRoZSBjdXJyZW50bHkgaG92ZXJlZCBlbGVtZW50IG1pZ2h0IGhhdmUgYmVlbgogICAgIC8v
IGRldGFjaGVkIChmb3IgZXhhbXBsZSwgYnkgc2V0dGluZyBkaXNwbGF5Om5vbmUgaW4gdGhlIDpo
b3ZlciBzdHlsZSksIHNjaGVkdWxlIGFub3RoZXIgbW91c2VNb3ZlIGV2ZW50CiAgICAgLy8gdG8g
Y2hlY2sgaWYgYW55IG90aGVyIGVsZW1lbnRzIGVuZGVkIHVwIHVuZGVyIHRoZSBtb3VzZSBwb2lu
dGVyIGR1ZSB0byByZS1sYXlvdXQuCi0gICAgaWYgKG1faG92ZXJlZEVsZW1lbnQgJiYgIW1faG92
ZXJlZEVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgIGZyYW1lVmlldy5mcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOworICAgIGlmIChtX2hv
dmVyZWRFbGVtZW50ICYmICFtX2hvdmVyZWRFbGVtZW50LT5yZW5kZXJlcigpICYmIGZyYW1lKCkp
CisgICAgICAgIGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLmRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2
ZW50U29vbigpOwogfQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKQEAg
LTIzNzMsNyArMjM3OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBDYWxsIHRvIGRpc3BhdGNoV2luZG93TG9hZEV2ZW50IGNhbiBi
bG93IHVzIGZyb20gdW5kZXJuZWF0aC4KLSAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdCh0aGlzKTsKIAogICAgIG1fcHJvY2Vzc2lu
Z0xvYWRFdmVudCA9IHRydWU7CiAKQEAgLTUzMjMsNyArNTMyOCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKICAgICAv
LyBTaW5jZSB3ZSBkaXNwYXRjaCBldmVudHMgaW4gdGhpcyBmdW5jdGlvbiwgaXQncyBwb3NzaWJs
ZSB0aGF0IHRoZQogICAgIC8vIGRvY3VtZW50IHdpbGwgYmUgZGV0YWNoZWQgYW5kIEdDJ2QuIFdl
IHByb3RlY3QgaXQgaGVyZSB0byBtYWtlIHN1cmUgd2UKICAgICAvLyBjYW4gZmluaXNoIHRoZSBm
dW5jdGlvbiBzdWNjZXNzZnVsbHkuCi0gICAgUmVmPERvY3VtZW50PiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3REb2N1bWVudCh0aGlzKTsKICAgICBEZXF1ZTxS
ZWZQdHI8Tm9kZT4gPiBjaGFuZ2VRdWV1ZTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRh
cmdldFF1ZXVlLnN3YXAoY2hhbmdlUXVldWUpOwogICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IGVy
cm9yUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGI5Yzk5NjYuLmI4NzhkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0zMjcsNyArMzI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJl
clBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQ
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAKLSAgICBQYXNzUmVm
UHRyPERvY3VtZW50VHlwZT4gZG9jdHlwZSgpIGNvbnN0OworICAgIERvY3VtZW50VHlwZSogZG9j
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jVHlwZS5nZXQoKTsgfQogCiAgICAgRE9NSW1wbGVt
ZW50YXRpb24qIGltcGxlbWVudGF0aW9uKCk7CiAgICAgCkBAIC04ODUsNiArODg1LDggQEAgcHVi
bGljOgogICAgIHZvaWQgaW5jRE9NVHJlZVZlcnNpb24oKSB7IG1fZG9tVHJlZVZlcnNpb24gPSAr
K3NfZ2xvYmFsVHJlZVZlcnNpb247IH0KICAgICB1aW50NjRfdCBkb21UcmVlVmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZG9tVHJlZVZlcnNpb247IH0KIAorICAgIHZvaWQgc2V0RG9jVHlwZShQ
YXNzUmVmUHRyPERvY3VtZW50VHlwZT4pOworCiAgICAgLy8gWFBhdGhFdmFsdWF0b3IgbWV0aG9k
cwogICAgIFBhc3NSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBjcmVhdGVFeHByZXNzaW9uKGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyLApAQCAtMTE5OSw3ICsxMjAx
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdl
ID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdDsKQEAgLTEzMDQsNiArMTMwNiw3IEBAIHByaXZhdGU6CiAKICAg
ICBTdHJpbmcgbV9iYXNlVGFyZ2V0OwogCisgICAgUmVmUHRyPERvY3VtZW50VHlwZT4gbV9kb2NU
eXBlOwogICAgIE93blB0cjxET01JbXBsZW1lbnRhdGlvbj4gbV9pbXBsZW1lbnRhdGlvbjsKIAog
ICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX2VsZW1lbnRTaGVldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMzVhN2IzMi4uOWQwN2VmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3VzcGVuZGFibGVUaW1lci5oIgotI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtMTM2LDcgKzEz
NSw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkK
ICAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLmlzTmV3RW50cnk7CiAg
ICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAvLyBJdCBzaG91bGQgbm90IGhh
dmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgogCi0gICAgUmVmPERvY3VtZW50RXZlbnRRdWV1
ZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gcHJvdGVj
dG9yKHRoaXMpOwogCiAgICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiwgMTY+OjppdGVyYXRvciBpdGVyID0gbV9x
dWV1ZWRFdmVudHMuYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKaW5kZXgg
ODQ0YmQ4MC4uNjFlNjBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKQEAgLTU2
LDQgKzU2LDI4IEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnRUeXBlOjpjbG9uZU5vZGUoYm9v
bCAvKmRlZXAqLykKICAgICByZXR1cm4gY3JlYXRlKCZkb2N1bWVudCgpLCBtX25hbWUsIG1fcHVi
bGljSWQsIG1fc3lzdGVtSWQpOwogfQogCitOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IERvY3VtZW50VHlwZTo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQoreworICAgIE5vZGU6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CisgICAgaWYg
KCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gSW5zZXJ0aW9u
RG9uZTsKKworICAgIC8vIE91ciBkb2N1bWVudCBub2RlIGNhbiBiZSBudWxsIGlmIHdlIHdlcmUg
Y3JlYXRlZCBieSBhIERPTUltcGxlbWVudGF0aW9uLiAgV2UgdXNlIHRoZSBwYXJlbnQoKSBpbnN0
ZWFkLgorICAgIEFTU0VSVChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0RvY3VtZW50
Tm9kZSgpKTsKKyAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNEb2N1bWVu
dE5vZGUoKSkgeworICAgICAgICBEb2N1bWVudCogZG9jID0gdG9Eb2N1bWVudChwYXJlbnROb2Rl
KCkpOworICAgICAgICBpZiAoIWRvYy0+ZG9jdHlwZSgpKQorICAgICAgICAgICAgZG9jLT5zZXRE
b2NUeXBlKHRoaXMpOworICAgIH0KKworICAgIHJldHVybiBJbnNlcnRpb25Eb25lOworfQorCit2
b2lkIERvY3VtZW50VHlwZTo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCit7CisgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkmJiBkb2N1bWVudCgp
LmRvY3R5cGUoKSA9PSB0aGlzKQorICAgICAgICBkb2N1bWVudCgpLnNldERvY1R5cGUoMCk7Cisg
ICAgTm9kZTo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUeXBlLmgKaW5kZXggZTFjMTExYS4uYzU3YWMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFR5cGUuaApAQCAtNTQsNiArNTQsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVO
b2RlKGJvb2wgZGVlcCk7CiAKKyAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOworCiAgICAgT3duUHRyPE5h
bWVkTm9kZU1hcD4gbV9lbnRpdGllczsKICAgICBPd25QdHI8TmFtZWROb2RlTWFwPiBtX25vdGF0
aW9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIwZTJhM2EuLjU0N2E5ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTk2MywyMSArOTYzLDI0IEBAIGlubGluZSB2b2lkIEVsZW1l
bnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHVuc2lnbmVkIGluZGV4LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBib29sIHZhbHVlQ2hhbmdlZCA9
IG5ld1ZhbHVlICE9IGF0dHJpYnV0ZUF0KGluZGV4KS52YWx1ZSgpOworICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUgPSAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmli
dXRlIHx8IHZhbHVlQ2hhbmdlZCkgPyBhdHRyaWJ1dGVBdChpbmRleCkubmFtZSgpIDogbmFtZTsK
KwogICAgIGlmICghaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpCi0gICAgICAgIHdp
bGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlQXQoaW5kZXgpLnZhbHVlKCksIG5ld1Zh
bHVlKTsKKyAgICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1
dGVBdChpbmRleCkudmFsdWUoKSwgbmV3VmFsdWUpOwogCi0gICAgaWYgKG5ld1ZhbHVlICE9IGF0
dHJpYnV0ZUF0KGluZGV4KS52YWx1ZSgpKSB7CisgICAgaWYgKHZhbHVlQ2hhbmdlZCkgewogICAg
ICAgICAvLyBJZiB0aGVyZSBpcyBhbiBBdHRyIG5vZGUgaG9va2VkIHRvIHRoaXMgYXR0cmlidXRl
LCB0aGUgQXR0cjo6c2V0VmFsdWUoKSBjYWxsIGJlbG93CiAgICAgICAgIC8vIHdpbGwgd3JpdGUg
aW50byB0aGUgRWxlbWVudERhdGEuCiAgICAgICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHNv
IGl0IG1ha2VzIHNvbWUgc2Vuc2UuCi0gICAgICAgIGlmIChSZWZQdHI8QXR0cj4gYXR0ck5vZGUg
PSBpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSA/IDAgOiBhdHRySWZFeGlzdHMobmFt
ZSkpCisgICAgICAgIGlmIChSZWZQdHI8QXR0cj4gYXR0ck5vZGUgPSBpblN5bmNocm9uaXphdGlv
bk9mTGF6eUF0dHJpYnV0ZSA/IDAgOiBhdHRySWZFeGlzdHMoYXR0cmlidXRlTmFtZSkpCiAgICAg
ICAgICAgICBhdHRyTm9kZS0+c2V0VmFsdWUobmV3VmFsdWUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRW
YWx1ZShuZXdWYWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6
eUF0dHJpYnV0ZSkKLSAgICAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKG5hbWUsIG5ld1ZhbHVlKTsK
KyAgICAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlKTsKIH0K
IAogc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgbWFrZUlkRm9yU3R5bGVSZXNvbHV0aW9uKGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJvb2wgaW5RdWlya3NNb2RlKQpAQCAtMTUzMiw1NyAr
MTUzNSw3MSBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoRWxlbWVudCog
ZWxlbWVudCwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiB9CiAKLWVudW0gU2libGluZ0NoZWNrVHlwZSB7IEZpbmlzaGVkUGFyc2lu
Z0NoaWxkcmVuLCBTaWJsaW5nRWxlbWVudFJlbW92ZWQsIE90aGVyIH07Ci0KLXN0YXRpYyB2b2lk
IGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBwYXJlbnQsIFNpYmxpbmdDaGVj
a1R5cGUgY2hlY2tUeXBlLCBFbGVtZW50KiBlbGVtZW50QmVmb3JlQ2hhbmdlLCBFbGVtZW50KiBl
bGVtZW50QWZ0ZXJDaGFuZ2UpCitzdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5n
ZXMoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGZpbmlzaGVkUGFyc2luZ0Nh
bGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGJl
Zm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7Ci0g
ICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcGFyZW50LT5yZW5kZXJTdHlsZSgpOwogICAgIC8vIDpl
bXB0eSBzZWxlY3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50LCBzdHls
ZSk7CisgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKGUsIHN0eWxlKTsKICAgICAKLSAgICBp
ZiAoIXN0eWxlIHx8IChwYXJlbnQtPm5lZWRzU3R5bGVSZWNhbGMoKSAmJiBwYXJlbnQtPmNoaWxk
cmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpKSkKKyAgICBpZiAoIXN0eWxlIHx8IChlLT5u
ZWVkc1N0eWxlUmVjYWxjKCkgJiYgZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVz
KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA6Zmlyc3QtY2hpbGQuICBJbiB0aGUgcGFy
c2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNl
IHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCiAgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3
ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCiAg
ICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRoZSBwYXJzZXIgY2FzZSwgc28gaXQgd29ya3Mg
b3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2NrLgotICAgIGlmIChwYXJlbnQtPmNoaWxkcmVu
QWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgeworICAg
IGlmIChlLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBhZnRlckNoYW5n
ZSkgewogICAgICAgICAvLyBGaW5kIG91ciBuZXcgZmlyc3QgY2hpbGQuCi0gICAgICAgIEVsZW1l
bnQqIG5ld0ZpcnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQocGFyZW50
KTsKKyAgICAgICAgTm9kZSogbmV3Rmlyc3RDaGlsZCA9IDA7CisgICAgICAgIGZvciAobmV3Rmly
c3RDaGlsZCA9IGUtPmZpcnN0Q2hpbGQoKTsgbmV3Rmlyc3RDaGlsZCAmJiAhbmV3Rmlyc3RDaGls
ZC0+aXNFbGVtZW50Tm9kZSgpOyBuZXdGaXJzdENoaWxkID0gbmV3Rmlyc3RDaGlsZC0+bmV4dFNp
YmxpbmcoKSkge307CisgICAgICAgIAogICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50
IG5vZGUgZm9sbG93aW5nIHxhZnRlckNoYW5nZXwKLQorICAgICAgICBOb2RlKiBmaXJzdEVsZW1l
bnRBZnRlckluc2VydGlvbiA9IDA7CisgICAgICAgIGZvciAoZmlyc3RFbGVtZW50QWZ0ZXJJbnNl
cnRpb24gPSBhZnRlckNoYW5nZTsKKyAgICAgICAgICAgICBmaXJzdEVsZW1lbnRBZnRlckluc2Vy
dGlvbiAmJiAhZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPmlzRWxlbWVudE5vZGUoKTsKKyAg
ICAgICAgICAgICBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiA9IGZpcnN0RWxlbWVudEFmdGVy
SW5zZXJ0aW9uLT5uZXh0U2libGluZygpKSB7fTsKKyAgICAgICAgCiAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KLSAgICAgICAgaWYgKG5ld0ZpcnN0RWxlbWVudCAh
PSBlbGVtZW50QWZ0ZXJDaGFuZ2UgJiYgZWxlbWVudEFmdGVyQ2hhbmdlLT5hdHRhY2hlZCgpCi0g
ICAgICAgICAgICAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UtPnJlbmRlclN0eWxlKCkgJiYgZWxlbWVu
dEFmdGVyQ2hhbmdlLT5yZW5kZXJTdHlsZSgpLT5maXJzdENoaWxkU3RhdGUoKSkKLSAgICAgICAg
ICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICBp
ZiAobmV3Rmlyc3RDaGlsZCAhPSBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiAmJiBmaXJzdEVs
ZW1lbnRBZnRlckluc2VydGlvbiAmJiBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbi0+YXR0YWNo
ZWQoKSAmJgorICAgICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPnJlbmRlclN0
eWxlKCkgJiYgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPnJlbmRlclN0eWxlKCktPmZpcnN0
Q2hpbGRTdGF0ZSgpKQorICAgICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPnNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgICAgIAogICAgICAgICAvLyBXZSBhbHNvIGhh
dmUgdG8gaGFuZGxlIG5vZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJs
aW5nRWxlbWVudFJlbW92ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5n
ZSAmJiBuZXdGaXJzdEVsZW1lbnQgJiYgKCFuZXdGaXJzdEVsZW1lbnQtPnJlbmRlclN0eWxlKCkg
fHwgIW5ld0ZpcnN0RWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+Zmlyc3RDaGlsZFN0YXRlKCkpKQot
ICAgICAgICAgICAgbmV3Rmlyc3RFbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAg
ICAgIGlmIChjaGlsZENvdW50RGVsdGEgPCAwICYmIG5ld0ZpcnN0Q2hpbGQgPT0gZmlyc3RFbGVt
ZW50QWZ0ZXJJbnNlcnRpb24gJiYgbmV3Rmlyc3RDaGlsZCAmJiAoIW5ld0ZpcnN0Q2hpbGQtPnJl
bmRlclN0eWxlKCkgfHwgIW5ld0ZpcnN0Q2hpbGQtPnJlbmRlclN0eWxlKCktPmZpcnN0Q2hpbGRT
dGF0ZSgpKSkKKyAgICAgICAgICAgIG5ld0ZpcnN0Q2hpbGQtPnNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKICAgICB9CiAKICAgICAvLyA6bGFzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sg
Y2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdo
dCB0aGUgZmlyc3QgdGltZS4KICAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0
byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50
LT5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRCZWZvcmVDaGFu
Z2UpIHsKKyAgICBpZiAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBi
ZWZvcmVDaGFuZ2UpIHsKICAgICAgICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCi0gICAg
ICAgIEVsZW1lbnQqIG5ld0xhc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxk
KHBhcmVudCk7Ci0KLSAgICAgICAgaWYgKG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVD
aGFuZ2UgJiYgZWxlbWVudEJlZm9yZUNoYW5nZS0+YXR0YWNoZWQoKQotICAgICAgICAgICAgJiYg
ZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdl
LT5yZW5kZXJTdHlsZSgpLT5sYXN0Q2hpbGRTdGF0ZSgpKQotICAgICAgICAgICAgZWxlbWVudEJl
Zm9yZUNoYW5nZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICBOb2RlKiBuZXdMYXN0
Q2hpbGQgPSAwOworICAgICAgICBmb3IgKG5ld0xhc3RDaGlsZCA9IGUtPmxhc3RDaGlsZCgpOyBu
ZXdMYXN0Q2hpbGQgJiYgIW5ld0xhc3RDaGlsZC0+aXNFbGVtZW50Tm9kZSgpOyBuZXdMYXN0Q2hp
bGQgPSBuZXdMYXN0Q2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7fTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEZpbmQgdGhlIGxhc3QgZWxlbWVudCBub2RlIGdvaW5nIGJhY2t3YXJkcyBmcm9tIHxi
ZWZvcmVDaGFuZ2V8CisgICAgICAgIE5vZGUqIGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uID0g
MDsKKyAgICAgICAgZm9yIChsYXN0RWxlbWVudEJlZm9yZUluc2VydGlvbiA9IGJlZm9yZUNoYW5n
ZTsKKyAgICAgICAgICAgICBsYXN0RWxlbWVudEJlZm9yZUluc2VydGlvbiAmJiAhbGFzdEVsZW1l
bnRCZWZvcmVJbnNlcnRpb24tPmlzRWxlbWVudE5vZGUoKTsKKyAgICAgICAgICAgICBsYXN0RWxl
bWVudEJlZm9yZUluc2VydGlvbiA9IGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5wcmV2aW91
c1NpYmxpbmcoKSkge307CisgICAgICAgIAorICAgICAgICBpZiAobmV3TGFzdENoaWxkICE9IGxh
c3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uICYmIGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uICYm
IGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5hdHRhY2hlZCgpICYmCisgICAgICAgICAgICBs
YXN0RWxlbWVudEJlZm9yZUluc2VydGlvbi0+cmVuZGVyU3R5bGUoKSAmJiBsYXN0RWxlbWVudEJl
Zm9yZUluc2VydGlvbi0+cmVuZGVyU3R5bGUoKS0+bGFzdENoaWxkU3RhdGUoKSkKKyAgICAgICAg
ICAgIGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92
YWwuICBUaGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UgaXMgc2ltaWxhciB0byBub2RlIHJlbW92YWwg
YXMgd2VsbCBpbiB0aGF0IHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBsYXN0IGNoaWxkCiAgICAgICAg
IC8vIHRvIG1hdGNoIG5vdy4KLSAgICAgICAgaWYgKChjaGVja1R5cGUgPT0gU2libGluZ0VsZW1l
bnRSZW1vdmVkIHx8IGNoZWNrVHlwZSA9PSBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbikgJiYgbmV3
TGFzdEVsZW1lbnQgPT0gZWxlbWVudEJlZm9yZUNoYW5nZSAmJiBuZXdMYXN0RWxlbWVudAotICAg
ICAgICAgICAgJiYgKCFuZXdMYXN0RWxlbWVudC0+cmVuZGVyU3R5bGUoKSB8fCAhbmV3TGFzdEVs
ZW1lbnQtPnJlbmRlclN0eWxlKCktPmxhc3RDaGlsZFN0YXRlKCkpKQotICAgICAgICAgICAgbmV3
TGFzdEVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgaWYgKChjaGlsZENv
dW50RGVsdGEgPCAwIHx8IGZpbmlzaGVkUGFyc2luZ0NhbGxiYWNrKSAmJiBuZXdMYXN0Q2hpbGQg
PT0gbGFzdEVsZW1lbnRCZWZvcmVJbnNlcnRpb24gJiYgbmV3TGFzdENoaWxkICYmICghbmV3TGFz
dENoaWxkLT5yZW5kZXJTdHlsZSgpIHx8ICFuZXdMYXN0Q2hpbGQtPnJlbmRlclN0eWxlKCktPmxh
c3RDaGlsZFN0YXRlKCkpKQorICAgICAgICAgICAgbmV3TGFzdENoaWxkLT5zZXROZWVkc1N0eWxl
UmVjYWxjKCk7CiAgICAgfQogCiAgICAgLy8gVGhlICsgc2VsZWN0b3IuICBXZSBuZWVkIHRvIGlu
dmFsaWRhdGUgdGhlIGZpcnN0IGVsZW1lbnQgZm9sbG93aW5nIHRoZSBpbnNlcnRpb24gcG9pbnQu
ICBJdCBpcyB0aGUgb25seSBwb3NzaWJsZSBlbGVtZW50CiAgICAgLy8gdGhhdCBjb3VsZCBiZSBh
ZmZlY3RlZCBieSB0aGlzIERPTSBjaGFuZ2UuCi0gICAgaWYgKHBhcmVudC0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgewotICAg
ICAgICBpZiAoZWxlbWVudEFmdGVyQ2hhbmdlLT5hdHRhY2hlZCgpKQotICAgICAgICAgICAgZWxl
bWVudEFmdGVyQ2hhbmdlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgaWYgKGUtPmNoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSAmJiBhZnRlckNoYW5nZSkgeworICAg
ICAgICBOb2RlKiBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiA9IDA7CisgICAgICAgIGZvciAo
Zmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSBhZnRlckNoYW5nZTsKKyAgICAgICAgICAgICBm
aXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiAmJiAhZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24t
PmlzRWxlbWVudE5vZGUoKTsKKyAgICAgICAgICAgICBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlv
biA9IGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uLT5uZXh0U2libGluZygpKSB7fTsKKyAgICAg
ICAgaWYgKGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uICYmIGZpcnN0RWxlbWVudEFmdGVySW5z
ZXJ0aW9uLT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRp
b24tPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9CiAKICAgICAvLyBGb3J3YXJkIHBvc2l0
aW9uYWwgc2VsZWN0b3JzIGluY2x1ZGUgdGhlIH4gc2VsZWN0b3IsIG50aC1jaGlsZCwgbnRoLW9m
LXR5cGUsIGZpcnN0LW9mLXR5cGUgYW5kIG9ubHktb2YtdHlwZS4KQEAgLTE1OTIsMjEgKzE2MDks
MTggQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIHBh
cmVudCwgU2libGluZ0NoZWNrVHlwZSBjaGVja1QKICAgICAvLyB8YWZ0ZXJDaGFuZ2V8IGlzIDAg
aW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNlLCBzbyB3ZSB3b24ndCBkbyBhbnkgd29yayBmb3Ig
dGhlIGZvcndhcmQgY2FzZSBpZiB3ZSBkb24ndCBoYXZlIHRvLgogICAgIC8vIEZvciBwZXJmb3Jt
YW5jZSByZWFzb25zIHdlIGp1c3QgbWFyayB0aGUgcGFyZW50IG5vZGUgYXMgY2hhbmdlZCwgc2lu
Y2Ugd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGNoaWxkcmVuQ2hhbmdlZCBPKG5eMikgYnkgY3Jhd2xp
bmcgYWxsIG91ciBraWRzCiAgICAgLy8gaGVyZS4gIHJlY2FsY1N0eWxlIHdpbGwgdGhlbiBmb3Jj
ZSBhIHdhbGsgb2YgdGhlIGNoaWxkcmVuIHdoZW4gaXQgc2VlcyB0aGF0IHRoaXMgaGFzIGhhcHBl
bmVkLgotICAgIGlmIChwYXJlbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpCi0gICAgICAgIHBhcmVudC0+c2V0TmVlZHNT
dHlsZVJlY2FsYygpOwotICAgIGlmIChwYXJlbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkKLSAgICAgICAgcGFyZW50
LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgaWYgKChlLT5jaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2UpCisgICAgICAgIHx8IChlLT5j
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGJlZm9yZUNoYW5n
ZSkpCisgICAgICAgIGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKK3ZvaWQgRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFu
Z2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIENvbnRh
aW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwotICAgIGlmIChjaGFuZ2Uuc291cmNl
ID09IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQorICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxk
Q291bnREZWx0YSk7CisgICAgaWYgKGNoYW5nZWRCeVBhcnNlcikKICAgICAgICAgY2hlY2tGb3JF
bXB0eVN0eWxlQ2hhbmdlKHRoaXMsIHJlbmRlclN0eWxlKCkpOwotICAgIGVsc2UgewotICAgICAg
ICBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSA9IGNoYW5nZS50eXBlID09IEVsZW1lbnRSZW1v
dmVkID8gU2libGluZ0VsZW1lbnRSZW1vdmVkIDogT3RoZXI7Ci0gICAgICAgIGNoZWNrRm9yU2li
bGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdF
bGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9CisgICAgZWxzZQorICAg
ICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhpcywgcmVuZGVyU3R5bGUoKSwgZmFs
c2UsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAKICAgICBp
ZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkKICAgICAgICAg
c2hhZG93Um9vdC0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwpAQCAtMTYzMSw3ICsxNjQ1LDcg
QEAgdm9pZCBFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogewogICAgIENvbnRhaW5l
ck5vZGU6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHNldElzUGFyc2luZ0NoaWxkcmVu
RmluaXNoZWQoKTsKLSAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhpcywgRmluaXNo
ZWRQYXJzaW5nQ2hpbGRyZW4sIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCh0aGlzKSwgbnVs
bHB0cik7CisgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxl
KCksIHRydWUsIGxhc3RDaGlsZCgpLCAwLCAwKTsKICAgICBpZiAoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlciA9IGRvY3VtZW50KCkuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCiAgICAgICAg
IHN0eWxlUmVzb2x2ZXItPnBvcFBhcmVudEVsZW1lbnQodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA0NzVhMzQ0Li5mNTVjNDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTU1OSw3ICs1
NTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpIE9WRVJSSURFIEZJTkFMOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlOGI0MTdjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yX2gKLSNkZWZpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JfaAotCi0jaW5jbHVk
ZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IgOiBw
dWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3IoKTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcihFbGVtZW50
VHlwZSogY3VycmVudCk7Ci0gICAgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3ImIG9wZXJhdG9yKyso
KTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IHsKLXB1YmxpYzoKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKCk7Ci0g
ICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcihjb25zdCBFbGVtZW50VHlwZSogY3VycmVu
dCk7Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudEFuY2VzdG9y
SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFk
YXB0ZXIoRWxlbWVudFR5cGUqIGRlc2NlbmRhbnQpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBlbmQoKTsKLQotcHJpdmF0ZToKLSAgICBFbGVtZW50VHlwZSogbV9maXJzdDsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNl
c3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBFbGVtZW50VHlwZSogZGVzY2VuZGFudCk7Ci0gICAg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsK
LSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbV9maXJzdDsKLX07Ci0KLUVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVt
ZW50KiBmaXJzdCk7Ci1FbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
PiBlbGVtZW50TGluZWFnZShjb25zdCBFbGVtZW50KiBmaXJzdCk7Ci1FbGVtZW50QW5jZXN0b3JJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhFbGVtZW50KiBkZXNjZW5k
YW50KTsKLUVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1l
bnRBbmNlc3RvcnMoY29uc3QgRWxlbWVudCogZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4gbGluZWFnZU9mVHlwZShFbGVtZW50KiBmaXJzdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQqIGZpcnN0KTsKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PiBhbmNlc3RvcnNPZlR5cGUoRWxlbWVudCogZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoY29uc3QgRWxlbWVudCogZGVzY2VuZGFudCk7Ci0KLS8v
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yKCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVs
bHB0cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0
b3IoRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG51bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlQW5jZXN0b3IoKSk7Ci19Ci0KLS8v
IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihudWxscHRyKQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudFR5cGUqIGN1cnJl
bnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0ciwgY3Vy
cmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkpOwotfQot
Ci0vLyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcihFbGVtZW50VHlwZSogZmly
c3QpCi0gICAgOiBtX2ZpcnN0KGZpcnN0KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkKLXsKLSAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fZmlyc3QpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OmVuZCgpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPigpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRh
cHRlcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFu
Y2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBFbGVtZW50VHlwZSogZmlyc3QpCi0gICAgOiBtX2Zp
cnN0KGZpcnN0KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2Vz
dG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fZmly
c3QpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKSBjb25zdAotewotICAgIHJldHVybiBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigpOwotfQotCi0vLyBTdGFu
ZGFsb25lIGZ1bmN0aW9ucwotCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnQ+IGVsZW1lbnRMaW5lYWdlKEVsZW1lbnQqIGZpcnN0KQotewotICAgIHJldHVybiBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4oZmlyc3QpOwotfQotCi1pbmxp
bmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExp
bmVhZ2UoY29uc3QgRWxlbWVudCogZmlyc3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rv
ckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQotaW5saW5lIEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVsZW1l
bnQqIGRlc2NlbmRhbnQpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50PihkZXNjZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOwotfQotCi1pbmxpbmUg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2Vz
dG9ycyhjb25zdCBFbGVtZW50KiBkZXNjZW5kYW50KQotewotICAgIHJldHVybiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihkZXNjZW5kYW50LT5wYXJlbnRFbGVt
ZW50KCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVs
ZW1lbnRUeXBlKiBmaXJzdCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPihmaXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50VHlwZSogZmlyc3QpCi17Ci0gICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihm
aXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShF
bGVtZW50KiBkZXNjZW5kYW50KQotewotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCA9IGZpbmRFbGVt
ZW50QW5jZXN0b3JPZlR5cGU8RWxlbWVudFR5cGU+KCpkZXNjZW5kYW50KTsKLSAgICByZXR1cm4g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihmaXJzdCk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IEVs
ZW1lbnQqIGRlc2NlbmRhbnQpCi17Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0ID0gZmlu
ZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKmRlc2NlbmRhbnQpOwot
ICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4oZmlyc3QpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENo
aWxkSXRlcmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNhNjU0NC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAorKysg
L2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBFbGVtZW50Q2hpbGRJdGVyYXRvcl9oCi0jZGVmaW5l
IEVsZW1lbnRDaGlsZEl0ZXJhdG9yX2gKLQotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWNsYXNzIEVsZW1lbnRDaGlsZEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gewotcHVibGljOgotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUqIHJvb3QpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5l
ck5vZGUqIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50Q2hpbGRJdGVy
YXRvciYgb3BlcmF0b3IrKygpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotY2xhc3MgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBjb25zdCBFbGVtZW50VHlwZSogY3Vy
cmVudCk7Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENoaWxkSXRl
cmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIo
Q29udGFpbmVyTm9kZSogcm9vdCk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5
cGU+IGJlZ2luKCk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgp
OwotCi1wcml2YXRlOgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRh
cHRlcihjb25zdCBDb250YWluZXJOb2RlKiByb290KTsKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGNvbnN0
IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLX07Ci0KLUVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50PiBlbGVtZW50Q2hpbGRyZW4oQ29udGFpbmVyTm9kZSogcm9vdCk7Ci1FbGVtZW50
Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50Q2hpbGRyZW4oY29uc3Qg
Q29udGFpbmVyTm9kZSogcm9vdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29u
dGFpbmVyTm9kZSogcm9vdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShj
b25zdCBDb250YWluZXJOb2RlKiByb290KTsKLQotLy8gRWxlbWVudENoaWxkSXRlcmF0b3IKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9k
ZSogcm9vdCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4ocm9vdCkKLXsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSogcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+KHJvb3QsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1l
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7Ci19Ci0KLS8v
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCi0gICAgOiBF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4ocm9vdCkKLXsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KHJvb3QsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yKysoKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJh
dmVyc2VOZXh0U2libGluZygpKTsKLX0KLQotLy8gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVy
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIo
Q29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotewotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxl
bWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2lu
KCkKLXsKLSAgICByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9v
dCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3Jvb3QpKTsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpl
bmQoKQotewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9y
b290KTsKLX0KLQotLy8gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIo
Y29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotewotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmly
c3RDaGlsZChtX3Jvb3QpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKLX0K
LQotLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKLQotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PiBlbGVtZW50Q2hpbGRyZW4oQ29udGFpbmVyTm9kZSogcm9vdCkKLXsK
LSAgICByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KHJvb3QpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxk
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShDb250YWluZXJOb2Rl
KiByb290KQotewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+KHJvb3QpOwotfQotCi1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudD4gZWxlbWVudENoaWxkcmVuKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCi17
Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KHJv
b3QpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNv
bnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihyb290KTsKLX0KLQotfQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjJjMTQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcl9oCi0jZGVmaW5lIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JfaAotCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3Mg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vZGUqIHJvb3QpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciA6IHB1
YmxpYyBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gIHsKLXB1YmxpYzoKLSAgICBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7
Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUq
IHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIHsKLXB1
YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2Rl
KiByb290KTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bigpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOwot
Ci1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXIgewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7Ci0KLXByaXZhdGU6
Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290OwotfTsKLQotRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5v
ZGUqIHJvb3QpOwotRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
PiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlKiByb290KTsKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVy
Tm9kZSogcm9vdCk7Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHJvb3QpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KHJvb3QpCi17Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25z
dCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1l
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT4ocm9vdCwgY3VycmVudCkKLXsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3Bl
cmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VOZXh0KCkpOwotfQotCi0vLyBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihj
b25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+KHJvb3QpCi0KLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBj
b25zdCBFbGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPihyb290LCBjdXJyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiYgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0
b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46
OnRyYXZlcnNlTmV4dCgpKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotewot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmly
c3RXaXRoaW4obV9yb290KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCi17Ci0gICAgcmV0dXJu
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCk7Ci19Ci0KLS8v
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVy
KGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLXsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QpOwotfQotCi0vLyBTdGFuZGFsb25lIGZ1bmN0aW9u
cwotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxl
bWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUqIHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KHJvb3QpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUqIHJv
b3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPihyb290KTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lck5vZGUq
IHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudD4ocm9vdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlKiByb290KQotewotICAgIHJl
dHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihy
b290KTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlkY2QwYy4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgRWxlbWVudEl0ZXJhdG9yX2gKLSNkZWZpbmUgRWxlbWVudEl0ZXJhdG9yX2gKLQotI2lu
Y2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSNpbmNs
dWRlICJFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50
SXRlcmF0b3IgewotcHVibGljOgotICAgIEVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlKiByb290KTsKLSAgICBFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9v
dCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotCi0gICAgRWxlbWVudFR5cGUmIG9wZXJhdG9yKigp
OwotICAgIEVsZW1lbnRUeXBlKiBvcGVyYXRvci0+KCk7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRWxlbWVudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEVsZW1lbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgRWxlbWVudEl0ZXJh
dG9yJiB0cmF2ZXJzZU5leHQoKTsKLSAgICBFbGVtZW50SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlv
dXMoKTsKLSAgICBFbGVtZW50SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKLSAgICBF
bGVtZW50SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgRWxlbWVudEl0
ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFp
bmVyTm9kZSogbV9yb290OwotICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7Ci0KLSNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7
Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihj
b25zdCBDb250YWluZXJOb2RlKiByb290KTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25z
dCBDb250YWluZXJOb2RlKiByb290LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0KLSAg
ICBjb25zdCBFbGVtZW50VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVu
dFR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
bGVtZW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBFbGVtZW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgRWxlbWVudENv
bnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0
cmF2ZXJzZVByZXZpb3VzKCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4
dFNpYmxpbmcoKTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c1Np
YmxpbmcoKTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VBbmNlc3RvcigpOwot
Ci1wcml2YXRlOgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLSAgICBjb25zdCBF
bGVtZW50VHlwZSogbV9jdXJyZW50OwotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIEVsZW1l
bnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwotI2VuZGlmCi19OwotCi0vLyBFbGVt
ZW50SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlKiByb290KQotICAgIDogbV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQobnVsbHB0
cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlKiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IG1fcm9vdChyb290KQotICAg
ICwgbV9jdXJyZW50KGN1cnJlbnQpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICwgbV9hc3Nl
cnRpb25zKGN1cnJlbnQpCi0jZW5kaWYKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVu
dCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAg
bV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChtX2N1cnJlbnQsIG1fcm9v
dCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVu
IHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAg
ICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJy
ZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMobV9jdXJyZW50LCBtX3Jvb3Qp
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0
aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAg
ICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAg
IHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwot
ICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3Vy
cmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5nKG1fY3VycmVudCk7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBp
dGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1f
YXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0
dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwot
ICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3Vy
cmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzU2libGluZyhtX2N1cnJlbnQp
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0
aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAg
ICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAg
IHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlV2l0aENv
bnN0PgotaW5saW5lIEVsZW1lbnRUeXBlV2l0aENvbnN0KiBmaW5kRWxlbWVudEFuY2VzdG9yT2ZU
eXBlKGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCi17Ci0gICAgQ29udGFpbmVyTm9kZSogYW5jZXN0
b3IgPSBjdXJyZW50LnBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0
b3ItPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAvLyBOb24tcm9vdCBjb250YWluZXJzIGFy
ZSBhbHdheXMgRWxlbWVudHMuCi0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQo
YW5jZXN0b3IpOwotICAgICAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPEVsZW1lbnRUeXBlV2l0aENv
bnN0PihlbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlw
ZVdpdGhDb25zdCo+KGVsZW1lbnQpOwotICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJl
bnROb2RlKCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYg
RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpCi17Ci0gICAg
QVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudCAhPSBtX3Jvb3QpOwotICAg
IEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgbV9jdXJy
ZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7
Ci0KLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4g
dGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAg
ICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBFbGVtZW50VHlwZSYgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Iq
KCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5k
b21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVudDsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0+KCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50
KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBy
ZXR1cm4gbV9jdXJyZW50OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgYm9vbCBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0
IEVsZW1lbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fcm9vdCA9PSBv
dGhlci5tX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVk
KCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRJdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBFbGVtZW50Q29u
c3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q29uc3RJdGVyYXRvcihjb25z
dCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJl
bnQobnVsbHB0cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQp
Ci0gICAgOiBtX3Jvb3Qocm9vdCkKLSAgICAsIG1fY3VycmVudChjdXJyZW50KQotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQotI2VuZGlmCi17Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJh
dmVyc2VOZXh0KCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNz
ZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpuZXh0KG1fY3VycmVudCwgbV9yb290KTsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMg
dGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BF
dmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJh
dmVyc2VQcmV2aW91cygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFt
X2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gVHJhdmVy
c2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMobV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3Ig
cmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlv
bnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhp
czsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJl
bnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZyhtX2N1cnJlbnQpOwotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRl
cmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fz
c2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVy
biAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpCi17Ci0gICAgQVNTRVJUKG1fY3Vy
cmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0g
ICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nKG1f
Y3VycmVudCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlv
biB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQp
Ci0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2Vu
ZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlQW5jZXN0b3IoKQotewotICAgIEFTU0VS
VChtX2N1cnJlbnQpOwotICAgIEFTU0VSVChtX2N1cnJlbnQgIT0gbV9yb290KTsKLSAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLQotICAgIG1fY3VycmVudCA9
IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCptX2N1cnJlbnQp
OwotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVu
IHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAg
ICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgY29uc3QgRWxlbWVudFR5cGUmIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3Vy
cmVudDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0
IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9y
LT4oKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3Nl
cnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29sIEVsZW1lbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29uc3RJdGVy
YXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fcm9vdCA9PSBvdGhlci5tX3Jvb3Qp
OwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJl
dHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25z
dAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQotfQotCi0jaW5jbHVkZSAi
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRv
ci5oIgotI2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA1NGJhMy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uc19oCi0jZGVmaW5lIEVsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnNfaAotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVt
ZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudEl0ZXJhdG9yQXNz
ZXJ0aW9ucyB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucygpOwotICAg
IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMoY29uc3QgRWxlbWVudCogZmlyc3QpOwotICAgIGJv
b2wgZG9tVHJlZUhhc011dGF0ZWQoKSBjb25zdDsKLSAgICB2b2lkIGRyb3BFdmVudERpc3BhdGNo
QXNzZXJ0aW9uKCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7
Ci0gICAgdWludDY0X3QgbV9pbml0aWFsRE9NVHJlZVZlcnNpb247Ci0gICAgT3duUHRyPE5vRXZl
bnREaXNwYXRjaEFzc2VydGlvbj4gbV9ub0V2ZW50RGlzcGF0Y2hBc3NlcnRpb247Ci19OwotCi1p
bmxpbmUgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9u
cygpCi0gICAgOiBtX2RvY3VtZW50KG51bGxwdHIpCi0gICAgLCBtX2luaXRpYWxET01UcmVlVmVy
c2lvbigwKQotewotfQotCi1pbmxpbmUgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6RWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucyhjb25zdCBFbGVtZW50KiBmaXJzdCkKLSAgICA6IG1fZG9jdW1l
bnQoZmlyc3QgPyAmZmlyc3QtPmRvY3VtZW50KCkgOiBudWxscHRyKQotICAgICwgbV9pbml0aWFs
RE9NVHJlZVZlcnNpb24obV9kb2N1bWVudCA/IG1fZG9jdW1lbnQtPmRvbVRyZWVWZXJzaW9uKCkg
OiAwKQotICAgICwgbV9ub0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24obV9kb2N1bWVudCA/IGFkb3B0
UHRyKG5ldyBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24pIDogbnVsbHB0cikKLXsKLX0KLQotaW5s
aW5lIGJvb2wgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6ZG9tVHJlZUhhc011dGF0ZWQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luaXRpYWxET01UcmVlVmVyc2lvbiAmJiBtX2RvY3VtZW50
ICYmIG1fZG9jdW1lbnQtPmRvbVRyZWVWZXJzaW9uKCkgIT0gbV9pbml0aWFsRE9NVHJlZVZlcnNp
b247Ci19Ci0KLWlubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCkKLXsKLSAgICBtX25vRXZlbnREaXNwYXRjaEFzc2VydGlvbiA9
IG51bGxwdHI7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApp
bmRleCBmMTIwYWExLi41OWQxMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAg
LTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMjQxLDcgKzI0MCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6
OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCogZXZlbnQpCiAgICAgICAgIAogdm9pZCBFdmVudFRh
cmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCwgRXZlbnRUYXJnZXREYXRhKiBk
LCBFdmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSkKIHsKLSAgICBSZWY8RXZlbnRUYXJnZXQ+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxFdmVudFRhcmdldD4gcHJvdGVjdCA9IHRoaXM7CiAK
ICAgICAvLyBGaXJlIGFsbCBsaXN0ZW5lcnMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBldmVudC4gRG9u
J3QgZmlyZSBsaXN0ZW5lcnMgcmVtb3ZlZCBkdXJpbmcgZXZlbnQgZGlzcGF0Y2guCiAgICAgLy8g
QWxzbywgZG9uJ3QgZmlyZSBldmVudCBsaXN0ZW5lcnMgYWRkZWQgZHVyaW5nIGV2ZW50IGRpc3Bh
dGNoLiBDb252ZW5pZW50bHksIGFsbCBuZXcgZXZlbnQgbGlzdGVuZXJzIHdpbGwgYmUgYWRkZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCAwNjdhYmMzLi40N2I1MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC00NCwxMSArNDQsMTEgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVNldHRhYmxlVG9rZW5M
aXN0LmgiCisjaW5jbHVkZSAiRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRU
eXBlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnRDb250ZXh0LmgiCkBAIC0zMzYsNyArMzM2LDEwIEBAIHZvaWQgTm9kZTo6dHJh
Y2tGb3JEZWJ1Z2dpbmcoKQogTm9kZTo6fk5vZGUoKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBp
ZiAoaWdub3JlU2V0LnJlbW92ZSh0aGlzKSkKKyAgICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3Ig
aXQgPSBpZ25vcmVTZXQuZmluZCh0aGlzKTsKKyAgICBpZiAoaXQgIT0gaWdub3JlU2V0LmVuZCgp
KQorICAgICAgICBpZ25vcmVTZXQucmVtb3ZlKGl0KTsKKyAgICBlbHNlCiAgICAgICAgIG5vZGVD
b3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAKQEAgLTIxNzcsNyArMjE4MCw3IEBAIGJvb2wg
Tm9kZTo6ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiAg
ICAgaWYgKCFkb2N1bWVudCgpLmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6QkVGT1JFTE9BRF9M
SVNURU5FUikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmPE5vZGU+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0b3IodGhpcyk7CiAgICAgUmVmUHRyPEJl
Zm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUo
c291cmNlVVJMKTsKICAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudC5nZXQoKSk7CiAg
ICAgcmV0dXJuICFiZWZvcmVMb2FkRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCmluZGV4IDdhZjFkNzIuLjJlY2Q4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcApAQCAtNjkwLDcgKzY5MCw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0
aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICAgICAg
b3RoZXJCb3ggPSBvdGhlckJveC0+bmV4dExlYWZDaGlsZCgpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoIW90aGVyQm94KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChvdGhlckJveCA9PSBsYXN0VGV4dEJveCB8fCAoJm90aGVyQm94LT5y
ZW5kZXJlcigpID09IHRleHRSZW5kZXJlciAmJiBzdGF0aWNfY2FzdDxJbmxpbmVUZXh0Qm94Kj4o
b3RoZXJCb3gpLT5zdGFydCgpID4gdGV4dE9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIGlm
IChvdGhlckJveCA9PSBsYXN0VGV4dEJveCB8fCAob3RoZXJCb3gtPnJlbmRlcmVyKCkgPT0gdGV4
dFJlbmRlcmVyICYmIHN0YXRpY19jYXN0PElubGluZVRleHRCb3gqPihvdGhlckJveCktPnN0YXJ0
KCkgPiB0ZXh0T2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlc09uTmV4
dExpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTY5OSw3ICs2OTksNyBAQCBQ
b3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1
bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIG90aGVyQm94ID0gb3RoZXJCb3gtPnByZXZM
ZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdGhlckJveCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJCb3gg
PT0gbGFzdFRleHRCb3ggfHwgKCZvdGhlckJveC0+cmVuZGVyZXIoKSA9PSB0ZXh0UmVuZGVyZXIg
JiYgc3RhdGljX2Nhc3Q8SW5saW5lVGV4dEJveCo+KG90aGVyQm94KS0+c3RhcnQoKSA+IHRleHRP
ZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJCb3ggPT0gbGFzdFRleHRCb3gg
fHwgKG90aGVyQm94LT5yZW5kZXJlcigpID09IHRleHRSZW5kZXJlciAmJiBzdGF0aWNfY2FzdDxJ
bmxpbmVUZXh0Qm94Kj4ob3RoZXJCb3gpLT5zdGFydCgpID4gdGV4dE9mZnNldCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZXNPbk5leHRMaW5lID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgfQogCkBAIC04MTQsNyArODE0LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJl
YW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAg
ICAgICAgIG90aGVyQm94ID0gb3RoZXJCb3gtPm5leHRMZWFmQ2hpbGQoKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFvdGhlckJveCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJCb3ggPT0gbGFzdFRleHRCb3ggfHwgKCZvdGhl
ckJveC0+cmVuZGVyZXIoKSA9PSB0ZXh0UmVuZGVyZXIgJiYgc3RhdGljX2Nhc3Q8SW5saW5lVGV4
dEJveCo+KG90aGVyQm94KS0+c3RhcnQoKSA+PSB0ZXh0T2Zmc2V0KSkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG90aGVyQm94ID09IGxhc3RUZXh0Qm94IHx8IChvdGhlckJveC0+cmVuZGVyZXIo
KSA9PSB0ZXh0UmVuZGVyZXIgJiYgc3RhdGljX2Nhc3Q8SW5saW5lVGV4dEJveCo+KG90aGVyQm94
KS0+c3RhcnQoKSA+PSB0ZXh0T2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlc09uTmV4dExpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTgyMyw3ICs4
MjMsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgb3RoZXJCb3ggPSBvdGhl
ckJveC0+cHJldkxlYWZDaGlsZCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIW90aGVyQm94
KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChvdGhlckJveCA9PSBsYXN0VGV4dEJveCB8fCAoJm90aGVyQm94LT5yZW5kZXJlcigpID09IHRl
eHRSZW5kZXJlciAmJiBzdGF0aWNfY2FzdDxJbmxpbmVUZXh0Qm94Kj4ob3RoZXJCb3gpLT5zdGFy
dCgpID49IHRleHRPZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJCb3ggPT0g
bGFzdFRleHRCb3ggfHwgKG90aGVyQm94LT5yZW5kZXJlcigpID09IHRleHRSZW5kZXJlciAmJiBz
dGF0aWNfY2FzdDxJbmxpbmVUZXh0Qm94Kj4ob3RoZXJCb3gpLT5zdGFydCgpID49IHRleHRPZmZz
ZXQpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWVzT25OZXh0TGluZSA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCmluZGV4IDJmY2FjM2YuLjc1ZmRjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogCiAvLyBG
SVhNRTogVGhpcyBpcyBhIGxheWVyaW5nIHZpb2xhdGlvbi4KICNpbmNsdWRlICJKU0RPTVdpbmRv
dy5oIgpAQCAtMTI0LDcgKzEyMyw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHJv
Y2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCkKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpkaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCkKIHsKLSAgICBSZWY8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ+IHByb3RlY3QodGhpcyk7CiAKICAgICAvLyBNYWtlIGEgZnJvemVuIGNvcHkuCiAgICAg
VmVjdG9yPE1lc3NhZ2VQb3J0Kj4gcG9ydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDM0YzgxZDAuLmE1MjEwZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogI2lmIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9USU1FUikKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0xNDEsNyArMTQw
LDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VTY3JpcHRlZEFu
aW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUKIAogICAgIC8vIEludm9raW5nIGNhbGxiYWNr
cyBtYXkgZGV0YWNoIGVsZW1lbnRzIGZyb20gb3VyIGRvY3VtZW50LCB3aGljaCBjbGVhcnMgdGhl
IGRvY3VtZW50J3MKICAgICAvLyByZWZlcmVuY2UgdG8gdXMsIHNvIHRha2UgYSBkZWZlbnNpdmUg
cmVmZXJlbmNlLgotICAgIFJlZjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZlB0cjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI+IHByb3RlY3Rv
cih0aGlzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGJhY2tzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrKiBjYWxsYmFjayA9
IGNhbGxiYWNrc1tpXS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA1YjZj
MDAzLi4wYTllMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xNDgsMTIgKzE0
OCwxMiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldFJlc2V0U3R5bGVJbmhlcml0YW5jZShib29sIHZh
bHVlKQogICAgIH0KIH0KIAotdm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKK3ZvaWQgU2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdl
LCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIGlmIChpc09ycGhhbigpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAg
ICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVD
aGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAgIGludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggYjRiMzUzZS4uOTM2
MDAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSog
YmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkgT1ZF
UlJJREU7CiAKICAgICAvLyBTaGFkb3dSb290cyBzaG91bGQgbmV2ZXIgYmUgY2xvbmVkLgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCkgT1ZFUlJJREUgeyByZXR1
cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZm9ybVNvdXJjZVF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2Zvcm1Tb3VyY2VRdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0ZjJjYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2Zvcm1Tb3VyY2VRdC5jcHAKQEAgLTAsMCArMSwzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9yZWsgPGZhdzIxN0BnbWFpbC5j
b20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1Tb3VyY2UuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitUcmFuc2Zvcm1Tb3VyY2U6OlRyYW5zZm9ybVNvdXJjZShj
b25zdCBQbGF0Zm9ybVRyYW5zZm9ybVNvdXJjZSYgc291cmNlKQorICAgIDogbV9zb3VyY2Uoc291
cmNlKQoreworfQorCitUcmFuc2Zvcm1Tb3VyY2U6On5UcmFuc2Zvcm1Tb3VyY2UoKQoreworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDI3MDk0ZWMuLjIwY2Y3NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSAiQ29udGFp
bmVyTm9kZS5oIgogI2luY2x1ZGUgIkRPTVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkRlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCmluZGV4
IGYwMThkN2EuLmVjYjM4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRO
YW1lZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3Bw
CkBAIC05OCwxOSArOTgsMTEgQEAgaW50IFdlYktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0eVJlZ2lv
bkluZGV4KCkgY29uc3QKICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0g
bV9wYXJlbnRGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CiAgICAgaWYgKHJlZ2lvbkxp
c3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpbnQgY291bnROb25Qc2V1
ZG9SZWdpb25zID0gLTE7CiAgICAgUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IHJlZ2lvbkxpc3QuYmVnaW4oKTsKICAgICBmb3IgKGludCBpbmRleCA9IDA7IGl0ZXIgIT0g
cmVnaW9uTGlzdC5lbmQoKTsgKytpbmRleCwgKytpdGVyKSB7CiAgICAgICAgIGNvbnN0IFJlbmRl
clJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8t
ZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlzdC4KLSAgICAgICAgLy8gVGhleSB3
aWxsIGJlIGluY2x1ZGVkIHdoZW4gd2Ugd2lsbCBwcm9wZXJseSBzdXBwb3J0IHRoZSBSZWdpb24g
aW50ZXJmYWNlCi0gICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdpb25z
LyN0aGUtcmVnaW9uLWludGVyZmFjZQotICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5pc1BzZXVk
b0VsZW1lbnQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjb3VudE5vblBzZXVk
b1JlZ2lvbnMrKzsKICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cmVnaW9uT3ZlcnNldFN0YXRl
KCkgPT0gUmVnaW9uRW1wdHkpCi0gICAgICAgICAgICByZXR1cm4gY291bnROb25Qc2V1ZG9SZWdp
b25zOworICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgIH0KICAgICByZXR1cm4gLTE7CiB9
CkBAIC0xMzUsOSArMTI3LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gV2ViS2l0TmFtZWRGbG93
OjpnZXRSZWdpb25zQnlDb250ZW50KE5vZGUqIGNvbnRlbnROb2RlKQogICAgICAgICBmb3IgKFJl
bmRlclJlZ2lvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSByZWdpb25MaXN0LmJlZ2luKCk7
IGl0ZXIgIT0gcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9ICppdGVyOwogICAgICAgICAgICAgLy8gRklYTUU6
IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICAg
ICAgLy8gVGhleSB3aWxsIGJlIGluY2x1ZGVkIHdoZW4gd2Ugd2lsbCBwcm9wZXJseSBzdXBwb3J0
IHRoZSBSZWdpb24gaW50ZXJmYWNlCi0gICAgICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9j
c3N3Zy9jc3MtcmVnaW9ucy8jdGhlLXJlZ2lvbi1pbnRlcmZhY2UKLSAgICAgICAgICAgIGlmIChy
ZW5kZXJSZWdpb24tPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICAgICAgaWYgKCFyZW5kZXJS
ZWdpb24tPm5vZGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlm
IChtX3BhcmVudEZsb3dUaHJlYWQtPm9iamVjdEluRmxvd1JlZ2lvbihjb250ZW50Tm9kZS0+cmVu
ZGVyZXIoKSwgcmVuZGVyUmVnaW9uKSkKICAgICAgICAgICAgICAgICByZWdpb25Ob2Rlcy5hcHBl
bmQocmVuZGVyUmVnaW9uLT5ub2RlKCkpOwpAQCAtMTYzLDkgKzE1Myw3IEBAIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9ucygpCiAgICAgZm9yIChSZW5kZXJS
ZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVy
ICE9IHJlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBjb25zdCBSZW5kZXJSZWdp
b24qIHJlbmRlclJlZ2lvbiA9ICppdGVyOwogICAgICAgICAvLyBGSVhNRTogUHNldWRvLWVsZW1l
bnRzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QuCi0gICAgICAgIC8vIFRoZXkgd2lsbCBi
ZSBpbmNsdWRlZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3VwcG9ydCB0aGUgUmVnaW9uIGludGVy
ZmFjZQotICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtcmVnaW9ucy8jdGhl
LXJlZ2lvbi1pbnRlcmZhY2UKLSAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+aXNQc2V1ZG9FbGVt
ZW50KCkpCisgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5ub2RlKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgcmVnaW9uTm9kZXMuYXBwZW5kKHJlbmRlclJlZ2lvbi0+bm9kZSgp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IGY5NjZmZmIuLjQwNzgyNDEg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xNTUsMTQgKzE1NSwxMiBAQCBkaWUgIllv
dSBtdXN0IHNwZWNpZnkgYSBuYW1lc3BhY2VVUkkgKGUuZy4gaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcpIiB1bmxlc3MgJAogJHBhcmFtZXRlcnN7bmFtZXNwYWNlUHJlZml4fSA9ICRwYXJhbWV0
ZXJze25hbWVzcGFjZX0gdW5sZXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZVByZWZpeH07CiAkcGFy
YW1ldGVyc3tmYWxsYmFja0pTSW50ZXJmYWNlTmFtZX0gPSAkcGFyYW1ldGVyc3tmYWxsYmFja0lu
dGVyZmFjZU5hbWV9IHVubGVzcyAkcGFyYW1ldGVyc3tmYWxsYmFja0pTSW50ZXJmYWNlTmFtZX07
CiAKLW15ICR0eXBlQ2hlY2tzQmFzZVBhdGggPSAiJG91dHB1dERpci8kcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudFR5cGVDaGVja3MiOwogbXkgJG5hbWVzQmFzZVBhdGggPSAiJG91dHB1dERp
ci8kcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXMiOwogbXkgJGZhY3RvcnlCYXNlUGF0aCA9ICIk
b3V0cHV0RGlyLyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeSI7CiBteSAkd3Jh
cHBlckZhY3RvcnlGaWxlTmFtZSA9ICIkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBw
ZXJGYWN0b3J5IjsKIAogcHJpbnROYW1lc0hlYWRlckZpbGUoIiRuYW1lc0Jhc2VQYXRoLmgiKTsK
IHByaW50TmFtZXNDcHBGaWxlKCIkbmFtZXNCYXNlUGF0aC5jcHAiKTsKLXByaW50VHlwZUNoZWNr
c0hlYWRlckZpbGUoIiR0eXBlQ2hlY2tzQmFzZVBhdGguaCIpOwogCiBpZiAoJHByaW50RmFjdG9y
eSkgewogICAgIHByaW50RmFjdG9yeUNwcEZpbGUoIiRmYWN0b3J5QmFzZVBhdGguY3BwIik7CkBA
IC0xODksOCArMTg3LDcgQEAgc3ViIGRlZmF1bHRUYWdQcm9wZXJ0eUhhc2gKICAgICAgICAgJ3dy
YXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlJyA9PiAwLAogICAgICAgICAnY29uZGl0aW9uYWwn
ID0+IDAsCiAgICAgICAgICdjb250ZXh0Q29uZGl0aW9uYWwnID0+IDAsCi0gICAgICAgICdydW50
aW1lQ29uZGl0aW9uYWwnID0+IDAsCi0gICAgICAgICdnZW5lcmF0ZVR5cGVDaGVja3MnID0+IDAK
KyAgICAgICAgJ3J1bnRpbWVDb25kaXRpb25hbCcgPT4gMAogICAgICk7CiB9CiAKQEAgLTU4OSw3
ICs1ODYsNyBAQCBzdWIgcHJpbnRMaWNlbnNlSGVhZGVyCiAgKgogICogVGhpcyBmaWxlIHdhcyBn
ZW5lcmF0ZWQgYnkgdGhlIGRvbS9tYWtlX25hbWVzLnBsIHNjcmlwdC4KICAqCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02MTYsNDkgKzYxMyw2IEBAIHN1YiBwcmludExpY2Vuc2VIZWFk
ZXIKICI7CiB9CiAKLXN1YiBwcmludFR5cGVDaGVja3MKLXsKLSAgICBteSAoJEYsICRuYW1lc1Jl
ZikgPSBAXzsKLSAgICBteSAlbmFtZXMgPSAlJG5hbWVzUmVmOwotCi0gICAgZm9yIG15ICRuYW1l
IChzb3J0IGtleXMgJW5hbWVzKSB7Ci0gICAgICAgIGlmICgkcGFyc2VkVGFnc3skbmFtZX17Z2Vu
ZXJhdGVUeXBlQ2hlY2tzfSAhPSAxKSB7Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0K
LSAgICAgICAgbXkgJGNsYXNzID0gJHBhcnNlZFRhZ3N7JG5hbWV9e2ludGVyZmFjZU5hbWV9Owot
ICAgICAgICBteSAkaGVscGVyID0gImlzJGNsYXNzIjsKLQotICAgICAgICBwcmludCBGICJjbGFz
cyAkY2xhc3M7XG4iOwotICAgICAgICBwcmludCBGICJpbmxpbmUgYm9vbCAkaGVscGVyKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgiLiRwYXJhbWV0
ZXJze25hbWVzcGFjZX0uIk5hbWVzOjoiLiRuYW1lLiJUYWcpOyB9XG4iOwotICAgICAgICBwcmlu
dCBGICJpbmxpbmUgYm9vbCAkaGVscGVyKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIHsgQVNTRVJU
KGVsZW1lbnQpOyByZXR1cm4gJGhlbHBlcigqZWxlbWVudCk7IH1cbiI7Ci0gICAgICAgIHByaW50
IEYgImlubGluZSBib29sICRoZWxwZXIoY29uc3QgTm9kZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7
IHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgJGhlbHBlcih0b0VsZW1lbnQobm9kZSkp
OyB9XG4iOwotICAgICAgICBwcmludCBGICJ0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1l
bnRPZlR5cGU8JGNsYXNzPihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IHJldHVybiAkaGVscGVy
KGVsZW1lbnQpOyB9XG4iOwotCi0gICAgICAgIHByaW50IEYgIlxuIjsKLSAgICB9Ci19Ci0KLXN1
YiBwcmludFR5cGVDaGVja3NIZWFkZXJGaWxlCi17Ci0gICAgbXkgKCRoZWFkZXJQYXRoKSA9IHNo
aWZ0OwotICAgIG15ICRGOwotICAgIG9wZW4gRiwgIj4kaGVhZGVyUGF0aCI7Ci0gICAgcHJpbnRM
aWNlbnNlSGVhZGVyKCRGKTsKLQotICAgIHByaW50IEYgIiNpZm5kZWYgIi4kcGFyYW1ldGVyc3tu
YW1lc3BhY2V9LiJFbGVtZW50VHlwZUNoZWNrc19oXG4iOwotICAgIHByaW50IEYgIiNkZWZpbmUg
Ii4kcGFyYW1ldGVyc3tuYW1lc3BhY2V9LiJFbGVtZW50VHlwZUNoZWNrc19oXG5cbiI7Ci0gICAg
cHJpbnQgRiAiI2luY2x1ZGUgXCIiLiRwYXJhbWV0ZXJze25hbWVzcGFjZX0uIk5hbWVzLmhcIlxu
XG4iOwotICAgIHByaW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIjsKLQotICAgIHByaW50
VHlwZUNoZWNrcygkRiwgXCVhbGxUYWdzKTsKLQotICAgIHByaW50IEYgIn1cblxuIjsKLSAgICBw
cmludCBGICIjZW5kaWZcbiI7Ci0KLSAgICBjbG9zZSBGOwotfQotCiBzdWIgcHJpbnROYW1lc0hl
YWRlckZpbGUKIHsKICAgICBteSAoJGhlYWRlclBhdGgpID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwCmluZGV4IDYyOTgxODQuLjk5ZWEyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwCkBAIC0z
NCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFwcGVuZE5vZGVDb21tYW5kOjpB
cHBlbmROb2RlQ29tbWFuZChQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCwgUGFzc1Jl
ZlB0cjxOb2RlPiBub2RlKQotICAgIDogU2ltcGxlRWRpdENvbW1hbmQocGFyZW50LT5kb2N1bWVu
dCgpKQorICAgIDogU2ltcGxlRWRpdENvbW1hbmQoJnBhcmVudC0+ZG9jdW1lbnQoKSkKICAgICAs
IG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fbm9kZShub2RlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCmluZGV4IGM1MWM2
YjguLjcwMDk2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5Qmxv
Y2tFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUFwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZDo6QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbmxpbmVTdHlsZSkK
K0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbmxpbmVTdHlsZSkKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50
KQogICAgICwgbV90YWdOYW1lKHRhZ05hbWUpCiAgICAgLCBtX2lubGluZVN0eWxlKGlubGluZVN0
eWxlKQogewogfQogCi1BcHBseUJsb2NrRWxlbWVudENvbW1hbmQ6OkFwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUp
CitBcHBseUJsb2NrRWxlbWVudENvbW1hbmQ6OkFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZChEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiAgICAgOiBDb21w
b3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAsIG1fdGFnTmFtZSh0YWdOYW1lKQogewpA
QCAtODcsNyArODcsNyBAQCB2b2lkIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6ZG9BcHBseSgp
CiAKICAgICBmb3JtYXRTZWxlY3Rpb24oc3RhcnRPZlNlbGVjdGlvbiwgZW5kT2ZTZWxlY3Rpb24p
OwogCi0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKIAogICAgIEFTU0VSVChzdGFydFNjb3BlID09IGVuZFNjb3BlKTsKICAgICBBU1NFUlQoc3Rh
cnRJbmRleCA+PSAwKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEFwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZDo6Zm9ybWF0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlNl
bAogICAgIGlmIChpc0F0VW5zcGxpdHRhYmxlRWxlbWVudChzdGFydCkpIHsKICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGJsb2NrcXVvdGUgPSBjcmVhdGVCbG9ja0VsZW1lbnQoKTsKICAgICAgICAg
aW5zZXJ0Tm9kZUF0KGJsb2NrcXVvdGUsIHN0YXJ0KTsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50
KCkpOwogICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBibG9ja3F1b3RlKTsKICAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2Rl
KHBsYWNlaG9sZGVyLmdldCgpKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJl
Y3Rpb25hbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3OCw3ICsyNzgsNyBAQCBWaXNpYmxl
UG9zaXRpb24gQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kOjplbmRPZk5leHRQYXJhZ3JhaFNwbGl0
dGluZ1RleHROb2Rlc0lmTgogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEFwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZDo6Y3JlYXRlQmxvY2tFbGVtZW50KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KCZkb2N1bWVudCgpLCBtX3RhZ05hbWUpOwor
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQo
KSwgbV90YWdOYW1lKTsKICAgICBpZiAobV9pbmxpbmVTdHlsZS5sZW5ndGgoKSkKICAgICAgICAg
ZWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgbV9pbmxpbmVTdHlsZSk7CiAgICAgcmV0
dXJuIGVsZW1lbnQucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kLmgKaW5kZXggYzliY2I3Yy4uNGI2ZTVmYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaApAQCAt
MzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGx5QmxvY2tFbGVt
ZW50Q29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbmxpbmVTdHlsZSk7Ci0gICAgQXBwbHlC
bG9ja0VsZW1lbnRDb21tYW5kKERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSk7CisgICAgQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERvY3VtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbmxpbmVTdHlsZSk7CisgICAg
QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0U2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgc3RhcnRPZlNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRP
ZlNlbGVjdGlvbik7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVCbG9ja0VsZW1lbnQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
aW5kZXggOGRmN2YzYy4uNWI0MmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVQb29sLmgiCisjaW5jbHVkZSAiQ2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRWRpdGluZ1N0eWxlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCi0j
aW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJIVE1MRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFuZ2UuaCIKQEAgLTEy
OCw3ICsxMjgsNyBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdHlsZVNwYW5FbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4gc3R5bGVFbGVtZW50LnJlbGVhc2Uo
KTsKIH0KIAotQXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgRWRpdGluZ1N0eWxlKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0
aW9uLCBFUHJvcGVydHlMZXZlbCBwcm9wZXJ0eUxldmVsKQorQXBwbHlTdHlsZUNvbW1hbmQ6OkFw
cGx5U3R5bGVDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRWRpdGluZ1N0eWxlKiBz
dHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBFUHJvcGVydHlMZXZlbCBwcm9wZXJ0eUxl
dmVsKQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBtX3N0eWxl
KHN0eWxlLT5jb3B5KCkpCiAgICAgLCBtX2VkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbikKQEAg
LTE0Miw3ICsxNDIsNyBAQCBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5bGUqIHN0eQogewogfQogCi1BcHBseVN0
eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBF
ZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9u
JiBlbmQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbiwgRVByb3BlcnR5TGV2ZWwgcHJvcGVydHlM
ZXZlbCkKK0FwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgUG9zaXRpb24mIGVuZCwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBFUHJvcGVydHlM
ZXZlbCBwcm9wZXJ0eUxldmVsKQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQp
CiAgICAgLCBtX3N0eWxlKHN0eWxlLT5jb3B5KCkpCiAgICAgLCBtX2VkaXRpbmdBY3Rpb24oZWRp
dGluZ0FjdGlvbikKQEAgLTE1Nyw3ICsxNTcsNyBAQCBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlT
dHlsZUNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5bGUqIHN0eQog
fQogCiBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVt
ZW50PiBlbGVtZW50LCBib29sIHJlbW92ZU9ubHksIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikK
LSAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGVsZW1lbnQtPmRvY3VtZW50KCkpCisgICAgOiBD
b21wb3NpdGVFZGl0Q29tbWFuZCgmZWxlbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fc3R5bGUo
RWRpdGluZ1N0eWxlOjpjcmVhdGUoKSkKICAgICAsIG1fZWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0
aW9uKQogICAgICwgbV9wcm9wZXJ0eUxldmVsKFByb3BlcnR5RGVmYXVsdCkKQEAgLTE3MCw3ICsx
NzAsNyBAQCBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoUGFzc1JlZlB0cjxF
bGVtZW50PiBlbGVtZW50LCBib29sIHJlbW92ZU9ubAogewogfQogCi1BcHBseVN0eWxlQ29tbWFu
ZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5
bGUqIHN0eWxlLCBJc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIGlzSW5saW5lRWxlbWVu
dFRvUmVtb3ZlRnVuY3Rpb24sIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKK0FwcGx5U3R5bGVD
b21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEVkaXRp
bmdTdHlsZSogc3R5bGUsIElzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gaXNJbmxpbmVF
bGVtZW50VG9SZW1vdmVGdW5jdGlvbiwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogICAgIDog
Q29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBtX3N0eWxlKHN0eWxlLT5jb3B5
KCkpCiAgICAgLCBtX2VkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbikKQEAgLTI0NSw3ICsyNDUs
NyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxl
ICpzdHlsZSkKICAgICAvLyB1cGRhdGUgZG9jdW1lbnQgbGF5b3V0IG9uY2UgYmVmb3JlIHJlbW92
aW5nIHN0eWxlcwogICAgIC8vIHNvIHRoYXQgd2UgYXZvaWQgdGhlIGV4cGVuc2Ugb2YgdXBkYXRp
bmcgYmVmb3JlIGVhY2ggYW5kIGV2ZXJ5IGNhbGwKICAgICAvLyB0byBjaGVjayBhIGNvbXB1dGVk
IHN0eWxlCi0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKIAogICAgIC8vIGdldCBwb3NpdGlvbnMgd2Ugd2FudCB0byB1c2UgZm9yIGFwcGx5aW5n
IHN0eWxlCiAgICAgUG9zaXRpb24gc3RhcnQgPSBzdGFydFBvc2l0aW9uKCk7CkBAIC0yNjYsOCAr
MjY2LDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdT
dHlsZSAqc3R5bGUpCiAgICAgLy8gYWRkQmxvY2tTdHlsZUlmTmVlZGVkIG1heSBtb3ZlUGFyYWdy
YXBocywgd2hpY2ggY2FuIHJlbW92ZSB0aGVzZSBlbmRwb2ludHMuCiAgICAgLy8gQ2FsY3VsYXRl
IHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdHJlZSB0aGF0IHRo
ZXkncmUgaW4uCiAgICAgTm9kZSogc2NvcGUgPSBoaWdoZXN0QW5jZXN0b3IodmlzaWJsZVN0YXJ0
LmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBz
dGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9k
ZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgm
ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVx
dWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgUmVmUHRyPFJhbmdl
PiBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5O
b2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOworICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIGludCBzdGFydElu
ZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsK
ICAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdl
dCgpLCB0cnVlKTsKIApAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6
OmFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSkKICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBu
b2RlLT5wYXJlbnROb2RlKCkgIT0gbGFzdFN0eWxlZE5vZGUpIHsKICAgICAgICAgICAgIC8vIExh
c3Qgc3R5bGVkIG5vZGUgd2FzIG5vdCBwYXJlbnQgbm9kZSBvZiB0aGlzIHRleHQgbm9kZSwgYnV0
IHdlIHdpc2ggdG8gc3R5bGUgdGhpcwogICAgICAgICAgICAgLy8gdGV4dCBub2RlLiBUbyBtYWtl
IHRoaXMgcG9zc2libGUsIGFkZCBhIHN0eWxlIHNwYW4gdG8gc3Vycm91bmQgdGhpcyB0ZXh0IG5v
ZGUuCi0gICAgICAgICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHNwYW4gPSBjcmVhdGVTdHlsZVNw
YW5FbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4g
c3BhbiA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBz
dXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KG5vZGUsIG5vZGUsIHNwYW4uZ2V0KCkpOwogICAg
ICAgICAgICAgZWxlbWVudCA9IHNwYW4ucmVsZWFzZSgpOwogICAgICAgICB9ICBlbHNlIHsKQEAg
LTU1Nyw3ICs1NTcsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxl
KEVkaXRpbmdTdHlsZSogc3R5bGUpCiAgICAgLy8gdXBkYXRlIGRvY3VtZW50IGxheW91dCBvbmNl
IGJlZm9yZSByZW1vdmluZyBzdHlsZXMKICAgICAvLyBzbyB0aGF0IHdlIGF2b2lkIHRoZSBleHBl
bnNlIG9mIHVwZGF0aW5nIGJlZm9yZSBlYWNoIGFuZCBldmVyeSBjYWxsCiAgICAgLy8gdG8gY2hl
Y2sgYSBjb21wdXRlZCBzdHlsZQotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICAvLyBhZGp1c3QgdG8gdGhlIHBvc2l0aW9ucyB3ZSB3
YW50IHRvIHVzZSBmb3IgYXBwbHlpbmcgc3R5bGUKICAgICBQb3NpdGlvbiBzdGFydCA9IHN0YXJ0
UG9zaXRpb24oKTsKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjph
cHBseUlubGluZVN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUpCiAgICAgLy8gdXBkYXRlIGRvY3Vt
ZW50IGxheW91dCBvbmNlIGJlZm9yZSBydW5uaW5nIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbgog
ICAgIC8vIHNvIHRoYXQgd2UgYXZvaWQgdGhlIGV4cGVuc2Ugb2YgdXBkYXRpbmcgYmVmb3JlIGVh
Y2ggYW5kIGV2ZXJ5IGNhbGwKICAgICAvLyB0byBjaGVjayBhIGNvbXB1dGVkIHN0eWxlCi0gICAg
ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBk
b2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlVG9BcHBseSA9IHN0eWxlOwogICAgIGlmIChoYXNU
ZXh0RGlyZWN0aW9uKSB7CkBAIC03NTUsNyArNzU1LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIFBhc3NS
ZWYKICAgICBpZiAobV9yZW1vdmVPbmx5KQogICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVu
dCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgVmVjdG9y
PElubGluZVJ1blRvQXBwbHlTdHlsZT4gcnVuczsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IHN0
YXJ0Tm9kZTsKQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBs
eUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFzc1JlZgogICAg
ICAgICBydW5zW2ldLnBvc2l0aW9uRm9yU3R5bGVDb21wdXRhdGlvbiA9IHBvc2l0aW9uVG9Db21w
dXRlSW5saW5lU3R5bGVDaGFuZ2UocnVuc1tpXS5zdGFydCwgcnVuc1tpXS5kdW1teUVsZW1lbnQp
OwogICAgIH0KIAotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJ1bnMuc2l6ZSgpOyBpKysp
CiAgICAgICAgIHJ1bnNbaV0uY2hhbmdlID0gU3R5bGVDaGFuZ2Uoc3R5bGUsIHJ1bnNbaV0ucG9z
aXRpb25Gb3JTdHlsZUNvbXB1dGF0aW9uKTsKQEAgLTE0MTUsNyArMTQxNSw3IEBAIFBvc2l0aW9u
IEFwcGx5U3R5bGVDb21tYW5kOjpwb3NpdGlvblRvQ29tcHV0ZUlubGluZVN0eWxlQ2hhbmdlKFBh
c3NSZWZQdHI8Tm9kZT4KIHsKICAgICAvLyBJdCdzIG9rYXkgdG8gb2J0YWluIHRoZSBzdHlsZSBh
dCB0aGUgc3RhcnROb2RlIGJlY2F1c2Ugd2UndmUgcmVtb3ZlZCBhbGwgcmVsZXZhbnQgc3R5bGVz
IGZyb20gdGhlIGN1cnJlbnQgcnVuLgogICAgIGlmICghc3RhcnROb2RlLT5pc0VsZW1lbnROb2Rl
KCkpIHsKLSAgICAgICAgZHVtbXlFbGVtZW50ID0gY3JlYXRlU3R5bGVTcGFuRWxlbWVudCgmZG9j
dW1lbnQoKSk7CisgICAgICAgIGR1bW15RWxlbWVudCA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQo
ZG9jdW1lbnQoKSk7CiAgICAgICAgIGluc2VydE5vZGVBdChkdW1teUVsZW1lbnQsIHBvc2l0aW9u
QmVmb3JlTm9kZShzdGFydE5vZGUuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShkdW1teUVsZW1lbnQuZ2V0KCkpOwogICAgIH0KQEAgLTE0NTUsNyAr
MTQ1NSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGVDaGFuZ2Uo
UGFzc1JlZlB0cjxOb2RlPiBwYXNzZWRTdGFydCwgUGFzCiAgICAgICAgICAgICBpZiAoc3R5bGVD
aGFuZ2UuYXBwbHlGb250U2l6ZSgpKQogICAgICAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUo
Zm9udENvbnRhaW5lciwgc2l6ZUF0dHIsIHN0eWxlQ2hhbmdlLmZvbnRTaXplKCkpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGZvbnRFbGVtZW50ID0gY3Jl
YXRlRm9udEVsZW1lbnQoJmRvY3VtZW50KCkpOworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IGZvbnRFbGVtZW50ID0gY3JlYXRlRm9udEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAgICAg
ICBpZiAoc3R5bGVDaGFuZ2UuYXBwbHlGb250Q29sb3IoKSkKICAgICAgICAgICAgICAgICBmb250
RWxlbWVudC0+c2V0QXR0cmlidXRlKGNvbG9yQXR0ciwgc3R5bGVDaGFuZ2UuZm9udENvbG9yKCkp
OwogICAgICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5Rm9udEZhY2UoKSkKQEAgLTE0Nzks
MjggKzE0NzksMjggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZUNo
YW5nZShQYXNzUmVmUHRyPE5vZGU+IHBhc3NlZFN0YXJ0LCBQYXMKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoc3R5bGVDb250YWluZXIsIHN0eWxl
QXR0ciwgc3R5bGVDaGFuZ2UuY3NzU3R5bGUoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50ID0gY3JlYXRlU3R5bGVTcGFuRWxlbWVu
dCgmZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50
ID0gY3JlYXRlU3R5bGVTcGFuRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIHN0eWxl
RWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgc3R5bGVDaGFuZ2UuY3NzU3R5bGUoKSk7
CiAgICAgICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5k
Tm9kZSwgc3R5bGVFbGVtZW50LnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAoc3R5bGVDaGFuZ2UuYXBwbHlCb2xkKCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0
aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1lbnQo
KSwgYlRhZykpOworICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9k
ZSwgZW5kTm9kZSwgY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgYlRhZykpOwogCiAgICAg
aWYgKHN0eWxlQ2hhbmdlLmFwcGx5SXRhbGljKCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdl
V2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1l
bnQoKSwgaVRhZykpOworICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0
Tm9kZSwgZW5kTm9kZSwgY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgaVRhZykpOwogCiAg
ICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5VW5kZXJsaW5lKCkpCi0gICAgICAgIHN1cnJvdW5kTm9k
ZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgm
ZG9jdW1lbnQoKSwgdVRhZykpOworICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50
KHN0YXJ0Tm9kZSwgZW5kTm9kZSwgY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgdVRhZykp
OwogCiAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5TGluZVRocm91Z2goKSkKLSAgICAgICAgc3Vy
cm91bmROb2RlUmFuZ2VXaXRoRWxlbWVudChzdGFydE5vZGUsIGVuZE5vZGUsIGNyZWF0ZUhUTUxF
bGVtZW50KCZkb2N1bWVudCgpLCBzdHJpa2VUYWcpKTsKKyAgICAgICAgc3Vycm91bmROb2RlUmFu
Z2VXaXRoRWxlbWVudChzdGFydE5vZGUsIGVuZE5vZGUsIGNyZWF0ZUhUTUxFbGVtZW50KGRvY3Vt
ZW50KCksIHN0cmlrZVRhZykpOwogCiAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5U3Vic2NyaXB0
KCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmRO
b2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1lbnQoKSwgc3ViVGFnKSk7CisgICAgICAgIHN1
cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1M
RWxlbWVudChkb2N1bWVudCgpLCBzdWJUYWcpKTsKICAgICBlbHNlIGlmIChzdHlsZUNoYW5nZS5h
cHBseVN1cGVyc2NyaXB0KCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQo
c3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1lbnQoKSwgc3VwVGFn
KSk7CisgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmRO
b2RlLCBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCBzdXBUYWcpKTsKIAogICAgIGlmICht
X3N0eWxlZElubGluZUVsZW1lbnQgJiYgYWRkU3R5bGVkRWxlbWVudCA9PSBBZGRTdHlsZWRFbGVt
ZW50KQogICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5k
Tm9kZSwgbV9zdHlsZWRJbmxpbmVFbGVtZW50LT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKaW5kZXggNzBj
YTM2ZS4uZjc1ZDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuaApAQCAtNDgsMTEgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBlbnVtIEVBZGRTdHlsZWRFbGVt
ZW50IHsgQWRkU3R5bGVkRWxlbWVudCwgRG9Ob3RBZGRTdHlsZWRFbGVtZW50IH07CiAgICAgdHlw
ZWRlZiBib29sICgqSXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbikoY29uc3QgRWxlbWVu
dCopOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXBwbHlTdHlsZUNvbW1hbmQ+IGNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVkaXRpbmdTdHlsZSogc3R5bGUsIEVkaXRBY3Rpb24g
YWN0aW9uID0gRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMsIEVQcm9wZXJ0eUxldmVsIGxldmVs
ID0gUHJvcGVydHlEZWZhdWx0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGx5U3R5bGVDb21t
YW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5bGUqIHN0eWxl
LCBFZGl0QWN0aW9uIGFjdGlvbiA9IEVkaXRBY3Rpb25DaGFuZ2VBdHRyaWJ1dGVzLCBFUHJvcGVy
dHlMZXZlbCBsZXZlbCA9IFByb3BlcnR5RGVmYXVsdCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQXBwbHlTdHlsZUNvbW1hbmQoZG9jdW1lbnQsIHN0eWxlLCBhY3Rpb24sIGxl
dmVsKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGx5U3R5bGVDb21tYW5kPiBj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25z
dCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsIEVkaXRBY3Rpb24gYWN0aW9u
ID0gRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMsIEVQcm9wZXJ0eUxldmVsIGxldmVsID0gUHJv
cGVydHlEZWZhdWx0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGx5U3R5bGVDb21tYW5kPiBj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25z
dCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsIEVkaXRBY3Rpb24gYWN0aW9u
ID0gRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMsIEVQcm9wZXJ0eUxldmVsIGxldmVsID0gUHJv
cGVydHlEZWZhdWx0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBseVN0
eWxlQ29tbWFuZChkb2N1bWVudCwgc3R5bGUsIHN0YXJ0LCBlbmQsIGFjdGlvbiwgbGV2ZWwpKTsK
ICAgICB9CkBAIC02MCwxNiArNjAsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBBcHBseVN0eWxlQ29tbWFuZChlbGVtZW50LCByZW1vdmVPbmx5LCBhY3Rp
b24pKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXBwbHlTdHlsZUNvbW1hbmQ+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEVkaXRpbmdTdHlsZSogc3R5bGUsIElzSW5s
aW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gaXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5jdGlv
biwgRWRpdEFjdGlvbiBhY3Rpb24gPSBFZGl0QWN0aW9uQ2hhbmdlQXR0cmlidXRlcykKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcHBseVN0eWxlQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgRWRpdGluZ1N0eWxlKiBzdHlsZSwgSXNJbmxpbmVFbGVtZW50VG9SZW1vdmVG
dW5jdGlvbiBpc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uLCBFZGl0QWN0aW9uIGFjdGlv
biA9IEVkaXRBY3Rpb25DaGFuZ2VBdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBcHBseVN0eWxlQ29tbWFuZChkb2N1bWVudCwgc3R5bGUsIGlzSW5saW5lRWxl
bWVudFRvUmVtb3ZlRnVuY3Rpb24sIGFjdGlvbikpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBB
cHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCYsIGNvbnN0IEVkaXRpbmdTdHlsZSosIEVkaXRBY3Rp
b24sIEVQcm9wZXJ0eUxldmVsKTsKLSAgICBBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCYsIGNv
bnN0IEVkaXRpbmdTdHlsZSosIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCwgRWRpdEFjdGlvbiwgRVByb3BlcnR5TGV2ZWwpOworICAgIEFwcGx5U3R5bGVDb21tYW5k
KERvY3VtZW50KiwgY29uc3QgRWRpdGluZ1N0eWxlKiwgRWRpdEFjdGlvbiwgRVByb3BlcnR5TGV2
ZWwpOworICAgIEFwcGx5U3R5bGVDb21tYW5kKERvY3VtZW50KiwgY29uc3QgRWRpdGluZ1N0eWxl
KiwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBFZGl0QWN0aW9u
LCBFUHJvcGVydHlMZXZlbCk7CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVt
ZW50PiwgYm9vbCByZW1vdmVPbmx5LCBFZGl0QWN0aW9uKTsKLSAgICBBcHBseVN0eWxlQ29tbWFu
ZChEb2N1bWVudCYsIGNvbnN0IEVkaXRpbmdTdHlsZSosIGJvb2wgKCppc0lubGluZUVsZW1lbnRU
b1JlbW92ZSkoY29uc3QgRWxlbWVudCopLCBFZGl0QWN0aW9uKTsKKyAgICBBcHBseVN0eWxlQ29t
bWFuZChEb2N1bWVudCosIGNvbnN0IEVkaXRpbmdTdHlsZSosIGJvb2wgKCppc0lubGluZUVsZW1l
bnRUb1JlbW92ZSkoY29uc3QgRWxlbWVudCopLCBFZGl0QWN0aW9uKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBkb0FwcGx5KCk7CiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3Rl
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1h
bmQuY3BwCmluZGV4IGQxNzhiZGQuLmU0ZWU0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUJyZWFrQmxv
Y2txdW90ZUNvbW1hbmQ6OkJyZWFrQmxvY2txdW90ZUNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50
KQorQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6QnJlYWtCbG9ja3F1b3RlQ29tbWFuZChEb2N1bWVu
dCAqZG9jdW1lbnQpCiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKIHsKIH0K
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KCkK
ICAgICBpZiAoIXRvcEJsb2NrcXVvdGUgfHwgIXRvcEJsb2NrcXVvdGUtPnBhcmVudE5vZGUoKSB8
fCAhdG9wQmxvY2txdW90ZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGJyZWFrTm9kZSA9IGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9j
dW1lbnQoKSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGJyZWFrTm9kZSA9IGNyZWF0ZUJyZWFrRWxl
bWVudChkb2N1bWVudCgpKTsKIAogICAgIGJvb2wgaXNMYXN0VmlzUG9zSW5Ob2RlID0gaXNMYXN0
VmlzaWJsZVBvc2l0aW9uSW5Ob2RlKHZpc2libGVQb3MsIHRvcEJsb2NrcXVvdGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCmluZGV4IGY2
Y2UxYjguLjZlYmFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtC
bG9ja3F1b3RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBCcmVha0Jsb2NrcXVvdGVDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21t
YW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCcmVha0Jsb2NrcXVvdGVDb21t
YW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJy
ZWFrQmxvY2txdW90ZUNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJyZWFrQmxvY2txdW90ZUNvbW1hbmQoZG9jdW1l
bnQpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQnJlYWtCbG9ja3F1b3RlQ29t
bWFuZChEb2N1bWVudCYpOworICAgIGV4cGxpY2l0IEJyZWFrQmxvY2txdW90ZUNvbW1hbmQoRG9j
dW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCA0ODY5MjBkLi42
YjdjMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgYXBwbHlDb21tYW5kKFBhc3NSZWZQdHI8
Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1hbmQpCiAgICAgY29tbWFuZC0+YXBwbHkoKTsKIH0K
IAotQ29tcG9zaXRlRWRpdENvbW1hbmQ6OkNvbXBvc2l0ZUVkaXRDb21tYW5kKERvY3VtZW50JiBk
b2N1bWVudCkKK0NvbXBvc2l0ZUVkaXRDb21tYW5kOjpDb21wb3NpdGVFZGl0Q29tbWFuZChEb2N1
bWVudCAqZG9jdW1lbnQpCiAgICAgOiBFZGl0Q29tbWFuZChkb2N1bWVudCkKIHsKIH0KQEAgLTIw
MywxMiArMjAzLDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5KCkKICAgICAv
LyBDaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxh
c3QgZWRpdGluZyBvcGVyYXRpb24gdGhhdCByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8cmRhcjov
L3Byb2JsZW0vNTY1ODYwMz4uCiAgICAgLy8gTG93IGxldmVsIG9wZXJhdGlvbnMsIGxpa2UgUmVt
b3ZlTm9kZUNvbW1hbmQsIGRvbid0IHJlcXVpcmUgYSBsYXlvdXQgYmVjYXVzZSB0aGUgaGlnaCBs
ZXZlbCBvcGVyYXRpb25zIHRoYXQgdXNlIHRoZW0gcGVyZm9ybSBvbmUKICAgICAvLyBpZiBvbmUg
aXMgbmVjZXNzYXJ5IChsaWtlIGZvciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucyku
Ci0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsK
KyAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgp
LT5mcmFtZSgpOworICAgIEFTU0VSVChmcmFtZSk7CiAgICAgewogICAgICAgICBFdmVudFF1ZXVl
U2NvcGUgc2NvcGU7CiAjaWYgRU5BQkxFKERFTEVUSU9OX1VJKQotICAgICAgICBEZWxldGVCdXR0
b25Db250cm9sbGVyRGlzYWJsZVNjb3BlIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2Nv
cGUoJmZyYW1lKCkpOworICAgICAgICBEZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3Bl
IGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUoZnJhbWUpOwogI2VuZGlmCiAgICAg
ICAgIGRvQXBwbHkoKTsKICAgICB9CkBAIC0yMTYsNyArMjE5LDcgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6YXBwbHkoKQogICAgIC8vIE9ubHkgbmVlZCB0byBjYWxsIGFwcGxpZWRFZGl0
aW5nIGZvciB0b3AtbGV2ZWwgY29tbWFuZHMsCiAgICAgLy8gYW5kIFR5cGluZ0NvbW1hbmRzIGRv
IGl0IG9uIHRoZWlyIG93biAoc2VlIFR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVkVG9PcGVuQ29t
bWFuZCkuCiAgICAgaWYgKCFpc1R5cGluZ0NvbW1hbmQoKSkKLSAgICAgICAgZnJhbWUoKS5lZGl0
b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOwogICAgIHNldFNob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNh
dG9yKGZhbHNlKTsKIH0KIApAQCAtMjI2LDcgKzIyOSw3IEBAIEVkaXRDb21tYW5kQ29tcG9zaXRp
b24qIENvbXBvc2l0ZUVkaXRDb21tYW5kOjplbnN1cmVDb21wb3NpdGlvbigpCiAgICAgd2hpbGUg
KGNvbW1hbmQgJiYgY29tbWFuZC0+cGFyZW50KCkpCiAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5k
LT5wYXJlbnQoKTsKICAgICBpZiAoIWNvbW1hbmQtPm1fY29tcG9zaXRpb24pCi0gICAgICAgIGNv
bW1hbmQtPm1fY29tcG9zaXRpb24gPSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpjcmVhdGUoJmRv
Y3VtZW50KCksIHN0YXJ0aW5nU2VsZWN0aW9uKCksIGVuZGluZ1NlbGVjdGlvbigpLCBlZGl0aW5n
QWN0aW9uKCkpOworICAgICAgICBjb21tYW5kLT5tX2NvbXBvc2l0aW9uID0gRWRpdENvbW1hbmRD
b21wb3NpdGlvbjo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0aW5nU2VsZWN0aW9uKCksIGVuZGlu
Z1NlbGVjdGlvbigpLCBlZGl0aW5nQWN0aW9uKCkpOwogICAgIHJldHVybiBjb21tYW5kLT5tX2Nv
bXBvc2l0aW9uLmdldCgpOwogfQogCkBAIC01MzEsMTEgKzUzNCwxMSBAQCBzdGF0aWMgdm9pZCBj
b3B5TWFya2Vycyhjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiYgbWFya2VyUG9pbnRlcnMs
IFZlY3RvcjxEbwogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQ
cmVzZXJ2aW5nTWFya2VycyhQYXNzUmVmUHRyPFRleHQ+IHBycE5vZGUsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KQogewogICAg
IFJlZlB0cjxUZXh0PiBub2RlKHBycE5vZGUpOwotICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxl
ciYgbWFya2VyQ29udHJvbGxlciA9IGRvY3VtZW50KCkubWFya2VycygpOworICAgIERvY3VtZW50
TWFya2VyQ29udHJvbGxlciYgbWFya2VyQ29udHJvbGxlciA9IGRvY3VtZW50KCktPm1hcmtlcnMo
KTsKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnM7Ci0gICAgY29weU1hcmtlcnMo
bWFya2VyQ29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRlKCZkb2N1bWVudCgp
LCBub2RlLCBvZmZzZXQsIG5vZGUsIG9mZnNldCArIGNvdW50KS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OkFsbE1hcmtlcnMoKSksIG1hcmtlcnMpOworICAgIGNvcHlNYXJrZXJzKG1hcmtlckNvbnRy
b2xsZXIubWFya2Vyc0luUmFuZ2UoUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBub2RlLCBvZmZz
ZXQsIG5vZGUsIG9mZnNldCArIGNvdW50KS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtl
cnMoKSksIG1hcmtlcnMpOwogICAgIHJlcGxhY2VUZXh0SW5Ob2RlKG5vZGUsIG9mZnNldCwgY291
bnQsIHJlcGxhY2VtZW50VGV4dCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoJmRvY3VtZW50KCksIG5vZGUsIG9mZnNldCwgbm9kZSwgb2Zmc2V0ICsgcmVwbGFj
ZW1lbnRUZXh0Lmxlbmd0aCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBub2RlLCBvZmZzZXQsIG5vZGUsIG9mZnNldCArIHJlcGxhY2Vt
ZW50VGV4dC5sZW5ndGgoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXJrZXJzLnNp
emUoKTsgKytpKQogICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5n
ZXQoKSwgbWFya2Vyc1tpXS50eXBlKCksIG1hcmtlcnNbaV0uZGVzY3JpcHRpb24oKSk7CiB9CkBA
IC03MzIsNyArNzM1LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5zaWdu
aWZpY2FudFRleHQoUGFzc1JlZlB0cjxUZXh0PiB0ZXh0Tm9kZSwgdW4KICAgICBpZiAoIXRleHRO
b2RlIHx8IHN0YXJ0ID49IGVuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXQoKTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKIAogICAgIFJl
bmRlclRleHQqIHRleHRSZW5kZXJlciA9IHRvUmVuZGVyVGV4dCh0ZXh0Tm9kZS0+cmVuZGVyZXIo
KSk7CiAgICAgaWYgKCF0ZXh0UmVuZGVyZXIpCkBAIC04NDMsMTIgKzg0NiwxMiBAQCBQYXNzUmVm
UHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBlbmRCbG9ja1BsYWNlaG9sZGVyKFBh
c3NSZWZQdHI8RWxlbWVudAogICAgIGlmICghY29udGFpbmVyKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CiAgICAgCiAgICAgLy8gU2hvdWxkIGFzc2VydCBpc0Jsb2NrRmxvdyB8fCBpc0lubGluZUZsb3cg
d2hlbiBkZWxldGlvbiBpbXByb3Zlcy4gU2VlIDQyNDQ5NjQuCiAgICAgQVNTRVJUKGNvbnRhaW5l
ci0+cmVuZGVyZXIoKSk7CiAKLSAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVhdGVC
bG9ja1BsYWNlaG9sZGVyRWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPE5vZGU+IHBs
YWNlaG9sZGVyID0gY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQoKSk7CiAg
ICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlciwgY29udGFpbmVyKTsKICAgICByZXR1cm4gcGxhY2Vo
b2xkZXIucmVsZWFzZSgpOwogfQpAQCAtODYxLDcgKzg2NCw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4g
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydEJsb2NrUGxhY2Vob2xkZXIoY29uc3QgUG9zaXRp
b24mIHBvCiAgICAgLy8gU2hvdWxkIGFzc2VydCBpc0Jsb2NrRmxvdyB8fCBpc0lubGluZUZsb3cg
d2hlbiBkZWxldGlvbiBpbXByb3Zlcy4gIFNlZSA0MjQ0OTY0LgogICAgIEFTU0VSVChwb3MuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSk7CiAKLSAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xk
ZXIgPSBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgUmVm
UHRyPE5vZGU+IHBsYWNlaG9sZGVyID0gY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9j
dW1lbnQoKSk7CiAgICAgaW5zZXJ0Tm9kZUF0KHBsYWNlaG9sZGVyLCBwb3MpOwogICAgIHJldHVy
biBwbGFjZWhvbGRlci5yZWxlYXNlKCk7CiB9CkBAIC04NzEsNyArODc0LDcgQEAgUGFzc1JlZlB0
cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YWRkQmxvY2tQbGFjZWhvbGRlcklmTmVlZGVk
KEVsZW1lbnQqIGNvbnQKICAgICBpZiAoIWNvbnRhaW5lcikKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwor
ICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvbnRhaW5lci0+cmVuZGVyZXIoKTsKICAg
ICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNCbG9ja0Zsb3coKSkKQEAgLTkwMiw4ICs5
MDUsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVQbGFjZWhvbGRlckF0KGNv
bnN0IFBvc2l0aW9uJiBwKQogCiBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5k
OjppbnNlcnROZXdEZWZhdWx0UGFyYWdyYXBoRWxlbWVudEF0KGNvbnN0IFBvc2l0aW9uJiBwb3Np
dGlvbikKIHsKLSAgICBSZWZQdHI8RWxlbWVudD4gcGFyYWdyYXBoRWxlbWVudCA9IGNyZWF0ZURl
ZmF1bHRQYXJhZ3JhcGhFbGVtZW50KCZkb2N1bWVudCgpKTsKLSAgICBwYXJhZ3JhcGhFbGVtZW50
LT5hcHBlbmRDaGlsZChjcmVhdGVCcmVha0VsZW1lbnQoJmRvY3VtZW50KCkpLCBJR05PUkVfRVhD
RVBUSU9OKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gcGFyYWdyYXBoRWxlbWVudCA9IGNyZWF0ZURl
ZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOworICAgIHBhcmFncmFwaEVsZW1lbnQt
PmFwcGVuZENoaWxkKGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwgSUdOT1JFX0VYQ0VQ
VElPTik7CiAgICAgaW5zZXJ0Tm9kZUF0KHBhcmFncmFwaEVsZW1lbnQsIHBvc2l0aW9uKTsKICAg
ICByZXR1cm4gcGFyYWdyYXBoRWxlbWVudC5yZWxlYXNlKCk7CiB9CkBAIC05MTUsNyArOTE4LDcg
QEAgUGFzc1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaENv
bnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNzYXIKICAgICBpZiAocG9zLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gMDsKICAgICAKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwogICAgIAogICAgIC8vIEl0J3Mgc3RyYW5nZSB0aGF0IHRoaXMgZnVu
Y3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHZlcmlmeWluZyB0aGF0IHBvcyBoYXMgbm90IGJlZW4g
aW52YWxpZGF0ZWQKICAgICAvLyBieSBhbiBlYXJsaWVyIGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4g
IFRoZSBjYWxsZXIsIGFwcGx5QmxvY2tTdHlsZSwgc2hvdWxkIGRvIHRoaXMuCkBAIC0xMTMzLDcg
KzExMzYsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoV2l0aENs
b25lcyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0TwogICAgIGlmIChiZWZvcmVQYXJhZ3Jh
cGguaXNOb3ROdWxsKCkgJiYgIWlzVGFibGVFbGVtZW50KGJlZm9yZVBhcmFncmFwaC5kZWVwRXF1
aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkpCiAgICAgICAgICYmICgoIWlzRW5kT2ZQYXJhZ3Jh
cGgoYmVmb3JlUGFyYWdyYXBoKSAmJiAhaXNTdGFydE9mUGFyYWdyYXBoKGJlZm9yZVBhcmFncmFw
aCkpIHx8IGJlZm9yZVBhcmFncmFwaCA9PSBhZnRlclBhcmFncmFwaCkpIHsKICAgICAgICAgLy8g
RklYTUU6IFRyaW0gdGV4dCBiZXR3ZWVuIGJlZm9yZVBhcmFncmFwaCBhbmQgYWZ0ZXJQYXJhZ3Jh
cGggaWYgdGhleSBhcmVuJ3QgZXF1YWwuCi0gICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVh
a0VsZW1lbnQoJmRvY3VtZW50KCkpLCBiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7
CisgICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIGJl
Zm9yZVBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICB9CiB9CiAgICAgCkBAIC0xMTY4
LDEzICsxMTcxLDEzIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhz
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3Jh
cGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCZkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkp
OwogICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBl
bmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKLSAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgmZG9jdW1lbnQo
KSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZh
bGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICAgICAgICAgICAgICBlbmRJ
bmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTkxLDE0ICsxMTk0LDE0IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
c3RhcnRPZlBhcmFncmFwCiAgICAgLy8gc3RhcnQgYW5kIGVuZCBjYW4ndCBiZSB1c2VkIGRpcmVj
dGx5IHRvIGNyZWF0ZSBhIFJhbmdlOyB0aGV5IGFyZSAiZWRpdGluZyBwb3NpdGlvbnMiCiAgICAg
UG9zaXRpb24gc3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOwogICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KCZkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0
UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlh
bnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydFJhbmdlQ29t
cGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJl
Y2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkp
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZl
IHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92ZS4gSXQKICAgICAvLyBzaG91
bGRuJ3QgbWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdyYXBocyB3aWxsIHVzdWFsbHkg
YmUgcXVpdGUgc21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50Owog
ICAgIC8vIFRoaXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBpbml0aWFsaXphdGlvbiwgYnV0
IHRoYXQgY29uZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNlZSBidWcgMzc5MTIKICAgICBp
ZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFncmFwaFRvTW92ZSkKLSAgICAg
ICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoJmRvY3VtZW50KCksIGNyZWF0
ZU1hcmt1cChyYW5nZS5nZXQoKSwgMCwgRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCB0cnVl
KSwgIiIpOworICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1
bWVudCgpLCBjcmVhdGVNYXJrdXAocmFuZ2UuZ2V0KCksIDAsIERvTm90QW5ub3RhdGVGb3JJbnRl
cmNoYW5nZSwgdHJ1ZSksICIiKTsKIAogICAgIC8vIEEgbm9uLWVtcHR5IHBhcmFncmFwaCdzIHN0
eWxlIGlzIG1vdmVkIHdoZW4gd2UgY29weSBhbmQgbW92ZSBpdC4gIFdlIGRvbid0IG1vdmUgCiAg
ICAgLy8gYW55dGhpbmcgaWYgd2UncmUgZ2l2ZW4gYW4gZW1wdHkgcGFyYWdyYXBoLCBidXQgYW4g
ZW1wdHkgcGFyYWdyYXBoIGNhbiBoYXZlIHN0eWxlCkBAIC0xMjE0LDcgKzEyMTcsNyBAQCB2b2lk
IENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIEZJWE1FICg1MDk4OTMxKTogV2Ugc2hvdWxkIGFk
ZCBhIG5ldyBpbnNlcnQgYWN0aW9uICJXZWJWaWV3SW5zZXJ0QWN0aW9uTW92ZWQiIGFuZCBjYWxs
IHNob3VsZEluc2VydEZyYWdtZW50IGhlcmUuCiAgICAgCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSkpOwotICAgIGZyYW1lKCku
ZWRpdG9yKCkuY2xlYXJNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigp
KTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAKICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVx
dWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSk7CkBAIC0xMjMyLDEyICsxMjM1
LDEyIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgYWZ0ZXJQYXJhZ3JhcGggPSBWaXNp
YmxlUG9zaXRpb24oYWZ0ZXJQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgaWYgKGJl
Zm9yZVBhcmFncmFwaC5pc05vdE51bGwoKSAmJiAoIWlzRW5kT2ZQYXJhZ3JhcGgoYmVmb3JlUGFy
YWdyYXBoKSB8fCBiZWZvcmVQYXJhZ3JhcGggPT0gYWZ0ZXJQYXJhZ3JhcGgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUcmltIHRleHQgYmV0d2VlbiBiZWZvcmVQYXJhZ3JhcGggYW5kIGFmdGVyUGFy
YWdyYXBoIGlmIHRoZXkgYXJlbid0IGVxdWFsLgotICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRl
QnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKSwgYmVmb3JlUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50
KCkpOworICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkp
LCBiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgICAgIC8vIE5lZWQgYW4g
dXBkYXRlTGF5b3V0IGhlcmUgaW4gY2FzZSBpbnNlcnRpbmcgdGhlIGJyIGhhcyBzcGxpdCBhIHRl
eHQgbm9kZS4KLSAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFRvRGVzdGlu
YXRpb25SYW5nZShSYW5nZTo6Y3JlYXRlKCZkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2Rl
KGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpLCBkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKSk7CisgICAgUmVmUHRyPFJhbmdlPiBzdGFy
dFRvRGVzdGluYXRpb25SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRp
b25Jbk5vZGUoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpLCBkZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKSk7CiAgICAgZGVzdGluYXRp
b25JbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRUb0Rlc3RpbmF0aW9uUmFu
Z2UuZ2V0KCksIHRydWUpOwogCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oZGVzdGluYXRpb24sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOwpAQCAtMTI0Nyw3ICsxMjUw
LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0
ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZyYWdtZW50LCBv
cHRpb25zKSk7CiAKLSAgICBmcmFtZSgpLmVkaXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdTZWxlY3Rpb24oKSk7CiAK
ICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIGluIGFuIGVtcHR5IHBhcmFncmFwaCwgcmVzdG9y
ZSBzdHlsZXMgZnJvbSB0aGUgb2xkIGVtcHR5IHBhcmFncmFwaCB0byB0aGUgbmV3IGVtcHR5IHBh
cmFncmFwaC4KICAgICBib29sIHNlbGVjdGlvbklzRW1wdHlQYXJhZ3JhcGggPSBlbmRpbmdTZWxl
Y3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNTdGFydE9mUGFyYWdyYXBoKGVuZGluZ1NlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpKSAmJiBpc0VuZE9mUGFyYWdyYXBoKGVuZGluZ1NlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpKTsKQEAgLTEyNjAsOCArMTI2Myw4IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFn
cmFwCiAgICAgICAgIC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFwc2VkIGR1cmluZyB0aGUg
bW92ZSBvcGVyYXRpb24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8gaW4gYSBjYWxsIHRvIHJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBwYXN0IHRoZSBlbmQKICAg
ICAgICAgLy8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxsKS4KLSAgICAg
ICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgZGVzdGluYXRpb25JbmRleCAr
IHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVs
ZW1lbnQoKSwgZGVzdGluYXRpb25JbmRleCArIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAg
UmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCksIGRlc3RpbmF0aW9uSW5kZXggKyBz
dGFydEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpOwogICAgICAgICBp
ZiAoc3RhcnQgJiYgZW5kKQogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFydFBvc2l0aW9uKCksIERP
V05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOwogICAgIH0KQEAgLTEyOTUsMTQgKzEy
OTgsMTQgQEAgYm9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5TGlzdEl0
ZW0oKQogICAgICAgICAgICAgICAgIC8vIGUuZy4gPHVsPjxsaT4gPHVsPjxsaT48YnI+PC9saT48
L3VsPiBoZWxsbzwvbGk+PC91bD4gc2hvdWxkIGJlY29tZSA8dWw+PGxpPiA8ZGl2Pjxicj48L2Rp
dj4gaGVsbG88L2xpPjwvdWw+IGF0IHRoZSBlbmQKICAgICAgICAgICAgICAgICBzcGxpdEVsZW1l
bnQodG9FbGVtZW50KGJsb2NrRW5jbG9zaW5nTGlzdCksIGxpc3ROb2RlKTsKICAgICAgICAgICAg
ICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKGxpc3ROb2RlLT5wYXJlbnROb2RlKCkp
OwotICAgICAgICAgICAgICAgIG5ld0Jsb2NrID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KCZkb2N1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICBuZXdCbG9jayA9IGNyZWF0ZUxpc3RJdGVtRWxlbWVu
dChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIElmIGxpc3ROb2Rl
IGRvZXMgTk9UIGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZSBvdXRlciBsaXN0IGl0ZW0sIHRoZW4g
YmVoYXZlIGFzIGlmIGluIGEgcmVndWxhciBwYXJhZ3JhcGguCiAgICAgICAgIH0gZWxzZSBpZiAo
YmxvY2tFbmNsb3NpbmdMaXN0LT5oYXNUYWdOYW1lKG9sVGFnKSB8fCBibG9ja0VuY2xvc2luZ0xp
c3QtPmhhc1RhZ05hbWUodWxUYWcpKQotICAgICAgICAgICAgbmV3QmxvY2sgPSBjcmVhdGVMaXN0
SXRlbUVsZW1lbnQoJmRvY3VtZW50KCkpOworICAgICAgICAgICAgbmV3QmxvY2sgPSBjcmVhdGVM
aXN0SXRlbUVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgfQogICAgIGlmICghbmV3QmxvY2spCi0g
ICAgICAgIG5ld0Jsb2NrID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoJmRvY3VtZW50
KCkpOworICAgICAgICBuZXdCbG9jayA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRv
Y3VtZW50KCkpOwogCiAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzTGlzdE5vZGUgPSBlbXB0eUxp
c3RJdGVtLT5pc0VsZW1lbnROb2RlKCkgPyBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxp
bmcoZW1wdHlMaXN0SXRlbS5nZXQoKSk6IGVtcHR5TGlzdEl0ZW0tPnByZXZpb3VzU2libGluZygp
OwogICAgIFJlZlB0cjxOb2RlPiBuZXh0TGlzdE5vZGUgPSBlbXB0eUxpc3RJdGVtLT5pc0VsZW1l
bnROb2RlKCkgPyBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhlbXB0eUxpc3RJdGVtLmdl
dCgpKTogZW1wdHlMaXN0SXRlbS0+bmV4dFNpYmxpbmcoKTsKQEAgLTEzNTMsNyArMTM1Niw3IEBA
IGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3Rl
ZFBhcmFncmFwaCgpCiAgICAgaWYgKGVuY2xvc2luZ05vZGVPZlR5cGUocHJldmlvdXMuZGVlcEVx
dWl2YWxlbnQoKSwgJmlzTWFpbEJsb2NrcXVvdGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCi0gICAgUmVmUHRyPE5vZGU+IGJyID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgp
KTsKKyAgICBSZWZQdHI8Tm9kZT4gYnIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7
CiAgICAgLy8gV2Ugd2FudCB0byByZXBsYWNlIHRoaXMgcXVvdGVkIHBhcmFncmFwaCB3aXRoIGFu
IHVucXVvdGVkIG9uZSwgc28gaW5zZXJ0IGEgYnIKICAgICAvLyB0byBob2xkIHRoZSBjYXJldCBi
ZWZvcmUgdGhlIGhpZ2hlc3QgYmxvY2txdW90ZS4KICAgICBpbnNlcnROb2RlQmVmb3JlKGJyLCBo
aWdoZXN0QmxvY2txdW90ZSk7CkBAIC0xMzYxLDcgKzEzNjQsNyBAQCBib29sIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjpicmVha091dE9mRW1wdHlNYWlsQmxvY2txdW90ZWRQYXJhZ3JhcGgoKQogICAg
IC8vIElmIHRoZSBiciB3ZSBpbnNlcnRlZCBjb2xsYXBzZWQsIGZvciBleGFtcGxlIGZvbzxicj48
YmxvY2txdW90ZT4uLi48L2Jsb2NrcXVvdGU+LCBpbnNlcnQKICAgICAvLyBhIHNlY29uZCBvbmUu
CiAgICAgaWYgKCFpc1N0YXJ0T2ZQYXJhZ3JhcGgoYXRCUikpCi0gICAgICAgIGluc2VydE5vZGVC
ZWZvcmUoY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKSwgYnIpOworICAgICAgICBpbnNl
cnROb2RlQmVmb3JlKGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwgYnIpOwogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGF0QlIsIGVuZGluZ1NlbGVjdGlvbigp
LmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIAogICAgIC8vIElmIHRoaXMgaXMgYW4gZW1wdHkgcGFy
YWdyYXBoIHRoZXJlIG11c3QgYmUgYSBsaW5lIGJyZWFrIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggNmEzZGY5MS4uNGM4YzBiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BDYXJldEJs
aW5raW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IENvbXBvc2l0ZUVkaXRDb21tYW5kKERvY3VtZW50Jik7CisgICAgZXhwbGljaXQgQ29tcG9z
aXRlRWRpdENvbW1hbmQoRG9jdW1lbnQqKTsKIAogICAgIC8vCiAgICAgLy8gc3VnYXJ5LXN3ZWV0
IGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBoZWxwIGNyZWF0ZSBhbmQgYXBwbHkgZWRpdCBjb21t
YW5kcyBpbiBjb21wb3NpdGUgY29tbWFuZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVh
dGVMaW5rQ29tbWFuZC5jcHAKaW5kZXggNjU0ZmQ3Ny4uMTIyMjEwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DcmVhdGVMaW5rQ29tbWFuZDo6Q3JlYXRlTGlua0NvbW1h
bmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCkKK0NyZWF0ZUxpbmtDb21t
YW5kOjpDcmVhdGVMaW5rQ29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dXJsKSAKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogewogICAgIG1fdXJs
ID0gdXJsOwpAQCAtNDMsMTQgKzQzLDE0IEBAIHZvaWQgQ3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKLSAgICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQg
PSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKCZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8SFRN
TEFuY2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpOwogICAgIGFuY2hvckVsZW1lbnQtPnNldEhyZWYobV91cmwpOwogICAgIAog
ICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkpCiAgICAgICAgIGFwcGx5U3R5bGVk
RWxlbWVudChhbmNob3JFbGVtZW50LmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgaW5zZXJ0
Tm9kZUF0KGFuY2hvckVsZW1lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwot
ICAgICAgICBSZWZQdHI8VGV4dD4gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoJmRvY3VtZW50KCks
IG1fdXJsKTsKKyAgICAgICAgUmVmUHRyPFRleHQ+IHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKGRv
Y3VtZW50KCksIG1fdXJsKTsKICAgICAgICAgYXBwZW5kTm9kZSh0ZXh0Tm9kZS5nZXQoKSwgYW5j
aG9yRWxlbWVudC5nZXQoKSk7CiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGFuY2hvckVsZW1lbnQuZ2V0KCkpLCBw
b3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGFuY2hvckVsZW1lbnQuZ2V0KCkpLCBET1dOU1RSRUFN
LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmgKaW5kZXggYmE3OWMwOS4uMDQ5ZmE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWF0ZUxpbmtDb21tYW5kIDog
cHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDcmVhdGVMaW5rQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBsaW5rVVJMKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENyZWF0ZUxpbmtDb21tYW5k
PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGxpbmtVUkwpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZUxpbmtDb21tYW5kKGRvY3VtZW50
LCBsaW5rVVJMKSk7CiAgICAgfQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0NyZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgot
ICAgIENyZWF0ZUxpbmtDb21tYW5kKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBsaW5rVVJMKTsK
KyAgICBDcmVhdGVMaW5rQ29tbWFuZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgbGlua1VSTCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBl
ZGl0aW5nQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRWRpdEFjdGlvbkNyZWF0ZUxpbms7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGRjNmE0NTEuLjY2OThlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMzYzLDEzICszNjMsMTMgQEAgdm9pZCBEZWxl
dGVCdXR0b25Db250cm9sbGVyOjpkaXNhYmxlKCkKIAogY2xhc3MgUmVtb3ZlVGFyZ2V0Q29tbWFu
ZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVtb3ZlVGFyZ2V0Q29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
UGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3ZlVGFy
Z2V0Q29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPiB0
YXJnZXQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW92ZVRhcmdldENv
bW1hbmQoZG9jdW1lbnQsIHRhcmdldCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdmVU
YXJnZXRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQp
CisgICAgUmVtb3ZlVGFyZ2V0Q29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NSZWZQdHI8
Tm9kZT4gdGFyZ2V0KQogICAgICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQog
ICAgICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKICAgICB7IH0KQEAgLTM5NCw4ICszOTQsNyBAQCB2
b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmRlbGV0ZVRhcmdldCgpCiAgICAgLy8gd2l0aGlu
IHRoZSB0YXJnZXQsIHdlIHVuY29uZGl0aW9uYWxseSB1cGRhdGUgdGhlIHNlbGVjdGlvbiB0byBi
ZQogICAgIC8vIGEgY2FyZXQgd2hlcmUgdGhlIHRhcmdldCBoYWQgYmVlbi4KICAgICBQb3NpdGlv
biBwb3MgPSBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShtX3RhcmdldC5nZXQoKSk7Ci0gICAg
QVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGFwcGx5Q29tbWFuZChSZW1vdmVUYXJn
ZXRDb21tYW5kOjpjcmVhdGUoKm1fZnJhbWUtPmRvY3VtZW50KCksIG1fdGFyZ2V0KSk7CisgICAg
YXBwbHlDb21tYW5kKFJlbW92ZVRhcmdldENvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVu
dCgpLCBtX3RhcmdldCkpOwogICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihW
aXNpYmxlUG9zaXRpb24ocG9zKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IDI3ZjQyYTMuLjY2
MDRiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHRO
b2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4
dE5vZGVDb21tYW5kLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kKFBh
c3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCkKLSAg
ICA6IFNpbXBsZUVkaXRDb21tYW5kKG5vZGUtPmRvY3VtZW50KCkpCisgICAgOiBTaW1wbGVFZGl0
Q29tbWFuZCgmbm9kZS0+ZG9jdW1lbnQoKSkKICAgICAsIG1fbm9kZShub2RlKQogICAgICwgbV9v
ZmZzZXQob2Zmc2V0KQogICAgICwgbV9jb3VudChjb3VudCkKQEAgLTU3LDcgKzU3LDcgQEAgdm9p
ZCBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIC8vIE5lZWQgdG8gbm90aWZ5IHRoaXMgYmVmb3JlIGFjdHVhbGx5IGRlbGV0aW5n
IHRoZSB0ZXh0Ci0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlz
dGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1
bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPm5vZGVUZXh0
Q2hhbmdlTm90aWZpY2F0aW9uKG1fbm9kZS5nZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0RGVs
ZXRlZCwgbV9vZmZzZXQsIG1fdGV4dCk7CiAKICAgICBtX25vZGUtPmRlbGV0ZURhdGEobV9vZmZz
ZXQsIG1fY291bnQsIGVjKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBEZWxldGVGcm9tVGV4dE5v
ZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogCiAgICAgbV9ub2RlLT5pbnNlcnREYXRhKG1fb2Zmc2V0
LCBtX3RleHQsIElHTk9SRV9FWENFUFRJT04pOwogCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICBpZiAoQVhPYmpl
Y3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAg
ICAgICAgY2FjaGUtPm5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKG1fbm9kZS5nZXQoKSwgQVhP
YmplY3RDYWNoZTo6QVhUZXh0SW5zZXJ0ZWQsIG1fb2Zmc2V0LCBtX3RleHQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRl
eCAxZTZlNzcwLi4zZDcyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIGJvb2wgaXNU
YWJsZVJvd0VtcHR5KE5vZGUqIHJvdykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRGVsZXRlU2Vs
ZWN0aW9uQ29tbWFuZDo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQs
IGJvb2wgc21hcnREZWxldGUsIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9vbCByZXBs
YWNlLCBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywgYm9vbCBzYW5pdGl6ZU1hcmt1cCkK
K0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQg
KmRvY3VtZW50LCBib29sIHNtYXJ0RGVsZXRlLCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUs
IGJvb2wgcmVwbGFjZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMsIGJvb2wgc2FuaXRp
emVNYXJrdXApCiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAsIG1f
aGFzU2VsZWN0aW9uVG9EZWxldGUoZmFsc2UpCiAgICAgLCBtX3NtYXJ0RGVsZXRlKHNtYXJ0RGVs
ZXRlKQpAQCAtODgsNyArODgsNyBAQCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpEZWxldGVTZWxl
Y3Rpb25Db21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBzbWFydERlbAogfQogCiBEZWxl
dGVTZWxlY3Rpb25Db21tYW5kOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbiwgYm9vbCBzbWFydERlbGV0ZSwgYm9vbCBtZXJnZUJsb2Nrc0Fm
dGVyRGVsZXRlLCBib29sIHJlcGxhY2UsIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzLCBi
b29sIHNhbml0aXplTWFya3VwKQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoc2VsZWN0aW9u
LnN0YXJ0KCkuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpKQorICAgIDogQ29tcG9zaXRlRWRpdENv
bW1hbmQoJnNlbGVjdGlvbi5zdGFydCgpLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSkKICAgICAs
IG1faGFzU2VsZWN0aW9uVG9EZWxldGUodHJ1ZSkKICAgICAsIG1fc21hcnREZWxldGUoc21hcnRE
ZWxldGUpCiAgICAgLCBtX21lcmdlQmxvY2tzQWZ0ZXJEZWxldGUobWVyZ2VCbG9ja3NBZnRlckRl
bGV0ZSkKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJl
bW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBTaG91bGRBc3N1bWVDb250ZQogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHN1cmUgZW1wdHkgY2VsbCBoYXMgc29tZSBo
ZWlnaHQsIGlmIGEgcGxhY2Vob2xkZXIgY2FuIGJlIGluc2VydGVkLgotICAgICAgICBkb2N1bWVu
dCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICBkb2N1
bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAg
UmVuZGVyT2JqZWN0ICpyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHIgJiYgci0+
aXNUYWJsZUNlbGwoKSAmJiB0b1JlbmRlclRhYmxlQ2VsbChyKS0+Y29udGVudEhlaWdodCgpIDw9
IDApIHsKICAgICAgICAgICAgIFBvc2l0aW9uIGZpcnN0RWRpdGFibGVQb3NpdGlvbiA9IGZpcnN0
RWRpdGFibGVQb3NpdGlvbkluTm9kZShub2RlLmdldCgpKTsKQEAgLTU2Niw3ICs1NjYsNyBAQCB2
b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogCiB2b2lk
IERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmZpeHVwV2hpdGVzcGFjZSgpCiB7Ci0gICAgZG9jdW1l
bnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBkb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAvLyBGSVhN
RTogaXNSZW5kZXJlZENoYXJhY3RlciBzaG91bGQgYmUgcmVtb3ZlZCwgYW5kIHdlIHNob3VsZCB1
c2UgVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlciBhbmQgVmlzaWJsZVBvc2l0aW9uOjpj
aGFyYWN0ZXJCZWZvcmUKICAgICBpZiAobV9sZWFkaW5nV2hpdGVzcGFjZS5pc05vdE51bGwoKSAm
JiAhbV9sZWFkaW5nV2hpdGVzcGFjZS5pc1JlbmRlcmVkQ2hhcmFjdGVyKCkgJiYgbV9sZWFkaW5n
V2hpdGVzcGFjZS5kZXByZWNhdGVkTm9kZSgpLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgVGV4
dCogdGV4dE5vZGUgPSB0b1RleHQobV9sZWFkaW5nV2hpdGVzcGFjZS5kZXByZWNhdGVkTm9kZSgp
KTsKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdl
UGFyYWdyYXBocygpCiAgICAgCiAgICAgLy8gV2UgbmVlZCB0byBtZXJnZSBpbnRvIG1fdXBzdHJl
YW1TdGFydCdzIGJsb2NrLCBidXQgaXQncyBiZWVuIGVtcHRpZWQgb3V0IGFuZCBjb2xsYXBzZWQg
YnkgZGVsZXRpb24uCiAgICAgaWYgKCFtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCku
ZGVwcmVjYXRlZE5vZGUoKSB8fCAhbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKGVuY2xvc2luZ0Jsb2NrKG1fdXBzdHJlYW1T
dGFydC5jb250YWluZXJOb2RlKCkpKSB8fCBtX3N0YXJ0c0F0RW1wdHlMaW5lKSB7Ci0gICAgICAg
IGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoJmRvY3VtZW50KCkpLmdldCgpLCBtX3Vw
c3RyZWFtU3RhcnQpOworICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KGRv
Y3VtZW50KCkpLmdldCgpLCBtX3Vwc3RyZWFtU3RhcnQpOwogICAgICAgICBtZXJnZURlc3RpbmF0
aW9uID0gVmlzaWJsZVBvc2l0aW9uKG1fdXBzdHJlYW1TdGFydCk7CiAgICAgfQogICAgIApAQCAt
NjUzLDkgKzY1Myw5IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3Jh
cGhzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5k
ZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZSgmZG9jdW1l
bnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOwotICAgIGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hv
dWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdl
dCgpKSkKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFj
ZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpZiAoIWRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJz
IGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0
IGxldCBibG9jawpAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6Y2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSgpCiAgICAgLy8gSW4gdGhpcyBjYXNl
IGlmIHdlIHN0YXJ0IHR5cGluZywgdGhlIG5ldyBjaGFyYWN0ZXJzIHNob3VsZCBoYXZlIHRoZSBz
YW1lIHN0eWxlIGFzIHRoZSBqdXN0IGRlbGV0ZWQgb25lcywKICAgICAvLyBidXQsIGlmIHdlIGNo
YW5nZSB0aGUgc2VsZWN0aW9uLCBjb21lIGJhY2sgYW5kIHN0YXJ0IHR5cGluZyB0aGF0IHN0eWxl
IHNob3VsZCBiZSBsb3N0LiAgQWxzbyBzZWUgCiAgICAgLy8gcHJlc2VydmVUeXBpbmdTdHlsZSgp
IGJlbG93LgotICAgIGZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0VHlwaW5nU3R5bGUobV90eXBpbmdT
dHlsZSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2V0VHlwaW5nU3R5
bGUobV90eXBpbmdTdHlsZSk7CiB9CiAKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6Y2xl
YXJUcmFuc2llbnRTdGF0ZSgpCkBAIC03NTYsOCArNzU2LDggQEAgU3RyaW5nIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQ6Om9yaWdpbmFsU3RyaW5nRm9yQXV0b2NvcnJlY3Rpb25BdEJlZ2lubmluZ09m
U2VsZWMKICAgICBpZiAobmV4dFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZGaXJzdENoYXJhY3RlciA9IFJhbmdl
OjpjcmVhdGUoJmRvY3VtZW50KCksIHN0YXJ0T2ZTZWxlY3Rpb24uZGVlcEVxdWl2YWxlbnQoKSwg
bmV4dFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIFZlY3RvcjxEb2N1bWVudE1hcmtl
cio+IG1hcmtlcnMgPSBkb2N1bWVudCgpLm1hcmtlcnMoKS5tYXJrZXJzSW5SYW5nZShyYW5nZU9m
Rmlyc3RDaGFyYWN0ZXIuZ2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsKKyAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZGaXJzdENoYXJhY3RlciA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgc3RhcnRPZlNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBuZXh0UG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9
IGRvY3VtZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzSW5SYW5nZShyYW5nZU9mRmlyc3RDaGFyYWN0
ZXIuZ2V0KCksIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgRG9jdW1l
bnRNYXJrZXIqIG1hcmtlciA9IG1hcmtlcnNbaV07CiAgICAgICAgIGludCBzdGFydE9mZnNldCA9
IG1hcmtlci0+c3RhcnRPZmZzZXQoKTsKQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIERlbGV0ZVNl
bGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmICghbV9yZXBsYWNlKSB7CiAgICAgICAg
IEVsZW1lbnQqIHRleHRDb250cm9sID0gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fc2VsZWN0
aW9uVG9EZWxldGUuc3RhcnQoKSk7CiAgICAgICAgIGlmICh0ZXh0Q29udHJvbCAmJiB0ZXh0Q29u
dHJvbC0+Zm9jdXNlZCgpKQotICAgICAgICAgICAgZnJhbWUoKS5lZGl0b3IoKS50ZXh0V2lsbEJl
RGVsZXRlZEluVGV4dEZpZWxkKHRleHRDb250cm9sKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLnRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQodGV4dENvbnRy
b2wpOwogICAgIH0KIAogICAgIC8vIHNhdmUgdGhpcyB0byBsYXRlciBtYWtlIHRoZSBzZWxlY3Rp
b24gd2l0aApAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
ZG9BcHBseSgpCiAgICAgCiAgICAgcmVtb3ZlUHJldmlvdXNseVNlbGVjdGVkRW1wdHlUYWJsZVJv
d3MoKTsKICAgICAKLSAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBtX25lZWRQbGFjZWhv
bGRlciA/IGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQoKSkuZ2V0KCkgOiAwOworICAgIFJl
ZlB0cjxOb2RlPiBwbGFjZWhvbGRlciA9IG1fbmVlZFBsYWNlaG9sZGVyID8gY3JlYXRlQnJlYWtF
bGVtZW50KGRvY3VtZW50KCkpLmdldCgpIDogMDsKICAgICAKICAgICBpZiAocGxhY2Vob2xkZXIp
IHsKICAgICAgICAgaWYgKG1fc2FuaXRpemVNYXJrdXApCkBAIC04NTksOCArODU5LDEwIEBAIHZv
aWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAKICAgICBjYWxjdWxhdGVUeXBp
bmdTdHlsZUFmdGVyRGVsZXRlKCk7CiAKLSAgICBpZiAoIW9yaWdpbmFsU3RyaW5nLmlzRW1wdHko
KSkKLSAgICAgICAgZnJhbWUoKS5lZGl0b3IoKS5kZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0
aW9uKG1fZW5kaW5nUG9zaXRpb24sIG9yaWdpbmFsU3RyaW5nKTsKKyAgICBpZiAoIW9yaWdpbmFs
U3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVkQXV0b2NvcnJl
Y3Rpb25BdFBvc2l0aW9uKG1fZW5kaW5nUG9zaXRpb24sIG9yaWdpbmFsU3RyaW5nKTsKKyAgICB9
CiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtX2VuZGluZ1Bvc2l0
aW9uLCBhZmZpbml0eSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAg
Y2xlYXJUcmFuc2llbnRTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCAzNDJiNGI3Li4zM2ZhYzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaApAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBFZGl0aW5nU3R5bGU7CiAKIGNsYXNzIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQg
OiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgeyAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEZWxldGVTZWxlY3Rpb25Db21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBib29sIHNtYXJ0RGVsZXRlID0gZmFsc2UsIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSA9
IHRydWUsIGJvb2wgcmVwbGFjZSA9IGZhbHNlLCBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50
cyA9IGZhbHNlLCBib29sIHNhbml0aXplTWFya3VwID0gdHJ1ZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEZWxldGVTZWxlY3Rpb25Db21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIHNtYXJ0RGVsZXRlID0gZmFsc2UsIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSA9IHRy
dWUsIGJvb2wgcmVwbGFjZSA9IGZhbHNlLCBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cyA9
IGZhbHNlLCBib29sIHNhbml0aXplTWFya3VwID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZChkb2N1bWVudCwgc21hcnREZWxl
dGUsIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUsIHJlcGxhY2UsIGV4cGFuZEZvclNwZWNpYWxFbGVt
ZW50cywgc2FuaXRpemVNYXJrdXApKTsKICAgICB9CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYs
IGJvb2wgc21hcnREZWxldGUsIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9vbCByZXBs
YWNlLCBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywgYm9vbCBzYW50aXplTWFya3VwKTsK
KyAgICBEZWxldGVTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50KiwgYm9vbCBzbWFydERlbGV0ZSwg
Ym9vbCBtZXJnZUJsb2Nrc0FmdGVyRGVsZXRlLCBib29sIHJlcGxhY2UsIGJvb2wgZXhwYW5kRm9y
U3BlY2lhbEVsZW1lbnRzLCBib29sIHNhbnRpemVNYXJrdXApOwogICAgIERlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgc21hcnREZWxldGUsIGJvb2wg
bWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9vbCByZXBsYWNlLCBib29sIGV4cGFuZEZvclNwZWNp
YWxFbGVtZW50cywgYm9vbCBzYW5pdGl6ZU1hcmt1cCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9B
cHBseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggMDQ0MjZlZC4uYmY3OWI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
aWN0YXRpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlv
bkNvbW1hbmQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPERpY3Rh
dGlvbkFsdGVybmF0aXZlPiBtX2FsdGVybmF0aXZlczsKIH07CiAKLURpY3RhdGlvbkNvbW1hbmQ6
OkRpY3RhdGlvbkNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGFsdGVybmF0aXZlcykKK0RpY3Rh
dGlvbkNvbW1hbmQ6OkRpY3RhdGlvbkNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGFsdGVybmF0
aXZlcykKICAgICA6IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChkb2N1bWVudCkKICAgICAsIG1f
dGV4dFRvSW5zZXJ0KHRleHQpCiAgICAgLCBtX2FsdGVybmF0aXZlcyhhbHRlcm5hdGl2ZXMpCkBA
IC05OCwxMSArOTgsMTEgQEAgdm9pZCBEaWN0YXRpb25Db21tYW5kOjppbnNlcnRUZXh0KERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdAogCiAgICAgUmVmUHRyPERp
Y3RhdGlvbkNvbW1hbmQ+IGNtZDsKICAgICBpZiAobmV3VGV4dCA9PSB0ZXh0KQotICAgICAgICBj
bWQgPSBEaWN0YXRpb25Db21tYW5kOjpjcmVhdGUoKmRvY3VtZW50LCBuZXdUZXh0LCBhbHRlcm5h
dGl2ZXMpOworICAgICAgICBjbWQgPSBEaWN0YXRpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQs
IG5ld1RleHQsIGFsdGVybmF0aXZlcyk7CiAgICAgZWxzZQogICAgICAgICAvLyBJZiB0aGUgdGV4
dCB3YXMgbW9kaWZpZWQgYmVmb3JlIGluc2VydGlvbiwgdGhlIGxvY2F0aW9uIG9mIGRpY3RhdGlv
biBhbHRlcm5hdGl2ZXMKICAgICAgICAgLy8gd2lsbCBub3QgYmUgdmFsaWQgYW55bW9yZS4gV2Ug
d2lsbCBqdXN0IGRyb3AgdGhlIGFsdGVybmF0aXZlcy4KLSAgICAgICAgY21kID0gRGljdGF0aW9u
Q29tbWFuZDo6Y3JlYXRlKCpkb2N1bWVudCwgbmV3VGV4dCwgVmVjdG9yPERpY3RhdGlvbkFsdGVy
bmF0aXZlPigpKTsKKyAgICAgICAgY21kID0gRGljdGF0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3Vt
ZW50LCBuZXdUZXh0LCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+KCkpOwogICAgIGFwcGx5
VGV4dEluc2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksIGNtZCwgc2VsZWN0aW9uRm9ySW5zZXJ0
aW9uLCBjdXJyZW50U2VsZWN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3Rh
dGlvbkNvbW1hbmQuaAppbmRleCAxZGVlMTliLi5mMjJhYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaApAQCAtMzksMTIgKzM5LDEyIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBpbnNlcnRUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgYWx0ZXJuYXRpdmVzLCBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJik7CiAgICAgdmlydHVhbCBib29sIGlzRGljdGF0aW9uQ29tbWFuZCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIHByaXZhdGU6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGljdGF0
aW9uQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBhbHRlcm5hdGl2ZXMpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RGljdGF0aW9uQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBhbHRlcm5hdGl2ZXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERp
Y3RhdGlvbkNvbW1hbmQoZG9jdW1lbnQsIHRleHQsIGFsdGVybmF0aXZlcykpOwogICAgIH0KIAot
ICAgIERpY3RhdGlvbkNvbW1hbmQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGFsdGVybmF0aXZlcyk7CisgICAgRGljdGF0
aW9uQ29tbWFuZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPERp
Y3RhdGlvbkFsdGVybmF0aXZlPiYgYWx0ZXJuYXRpdmVzKTsKICAgICAKICAgICB2aXJ0dWFsIHZv
aWQgZG9BcHBseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCmluZGV4
IDRhNGRiM2UuLjQwMWQ5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAxMyBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNyBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMjAgKzM5LDIyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVu
dCkKLSAgICA6IG1fZG9jdW1lbnQoJmRvY3VtZW50KQorRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5k
KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBt
X3BhcmVudCgwKQogewotICAgIEFTU0VSVChkb2N1bWVudC5mcmFtZSgpKTsKKyAgICBBU1NFUlQo
bV9kb2N1bWVudCk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwogICAgIHNldFN0
YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmF2b2lkSW50ZXJz
ZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIobV9kb2N1bWVudC0+ZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkpKTsKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24obV9zdGFydGlu
Z1NlbGVjdGlvbik7CiB9CiAKLUVkaXRDb21tYW5kOjpFZGl0Q29tbWFuZChEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2VsZWN0aW9uLCBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pCi0gICAgOiBtX2RvY3VtZW50KCZkb2N1
bWVudCkKK0VkaXRDb21tYW5kOjpFZGl0Q29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBlbmRpbmdTZWxlY3Rpb24pCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwg
bV9wYXJlbnQoMCkKIHsKLSAgICBBU1NFUlQoZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgQVNTRVJU
KG1fZG9jdW1lbnQpOworICAgIEFTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpKTsKICAgICBzZXRT
dGFydGluZ1NlbGVjdGlvbihzdGFydGluZ1NlbGVjdGlvbik7CiAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKGVuZGluZ1NlbGVjdGlvbik7CiB9CkBAIC02MSwxMiArNjMsNiBAQCBFZGl0Q29tbWFuZDo6
fkVkaXRDb21tYW5kKCkKIHsKIH0KIAotRnJhbWUmIEVkaXRDb21tYW5kOjpmcmFtZSgpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKGRvY3VtZW50KCkuZnJhbWUoKSk7Ci0gICAgcmV0dXJuICpkb2N1bWVu
dCgpLmZyYW1lKCk7Ci19Ci0KIEVkaXRBY3Rpb24gRWRpdENvbW1hbmQ6OmVkaXRpbmdBY3Rpb24o
KSBjb25zdAogewogICAgIHJldHVybiBFZGl0QWN0aW9uVW5zcGVjaWZpZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRDb21tYW5kLmgKaW5kZXggN2YyMzJkZC4uY2M1YmE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdENvbW1hbmQuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RWxlbWVudDsKLWNsYXNzIEZyYW1lOwogCiBjbGFzcyBFZGl0Q29tbWFuZCA6IHB1YmxpYyBSZWZD
b3VudGVkPEVkaXRDb21tYW5kPiB7CiBwdWJsaWM6CkBAIC01OSwxMSArNTgsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhw
bGljaXQgRWRpdENvbW1hbmQoRG9jdW1lbnQmKTsKLSAgICBFZGl0Q29tbWFuZChEb2N1bWVudCYs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAg
ZXhwbGljaXQgRWRpdENvbW1hbmQoRG9jdW1lbnQqKTsKKyAgICBFZGl0Q29tbWFuZChEb2N1bWVu
dCosIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAK
LSAgICBGcmFtZSYgZnJhbWUoKSBjb25zdDsKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25z
dCB7IHJldHVybiAqbV9kb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZCog
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICB2b2lkIHNldFN0YXJ0aW5n
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIHNldEVuZGluZ1Nl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CkBAIC05MCw3ICs4OCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgU2ltcGxlRWRpdENvbW1hbmQo
RG9jdW1lbnQmIGRvY3VtZW50KSA6IEVkaXRDb21tYW5kKGRvY3VtZW50KSB7IH0KKyAgICBleHBs
aWNpdCBTaW1wbGVFZGl0Q29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQpIDogRWRpdENvbW1hbmQo
ZG9jdW1lbnQpIHsgfQogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgYWRkTm9kZUFuZERlc2Nl
bmRhbnRzKE5vZGUqLCBIYXNoU2V0PE5vZGUqPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCmluZGV4IGZmOWNmNmQuLjI1NDM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTk1Miw5ICs5NTIsMTEgQEAgdm9pZCBFZGl0aW5nU3R5
bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVz
ZXJ2ZVdyaXQKICAgICB9CiB9CiAKLXZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVR5cGluZ1N0eWxl
KERvY3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVR5cGluZ1N0eWxl
KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdT
dHlsZSA9IGRvY3VtZW50LmZyYW1lKCktPnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCk7CisgICAg
QVNTRVJUKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxl
ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCk7CiAgICAgaWYg
KCF0eXBpbmdTdHlsZSB8fCB0eXBpbmdTdHlsZSA9PSB0aGlzKQogICAgICAgICByZXR1cm47CiAK
QEAgLTEyNDMsNyArMTI0NSw3IEBAIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5
bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChjb25zdCBWaXNpYmxlU2VsZWN0CiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZShlbGVtZW50LCBFZGl0aW5nU3R5bGU6OkFsbFByb3BlcnRpZXMpOwotICAgIHN0eWxl
LT5tZXJnZVR5cGluZ1N0eWxlKGVsZW1lbnQtPmRvY3VtZW50KCkpOworICAgIHN0eWxlLT5tZXJn
ZVR5cGluZ1N0eWxlKCZlbGVtZW50LT5kb2N1bWVudCgpKTsKIAogICAgIC8vIElmIGJhY2tncm91
bmQgY29sb3IgaXMgdHJhbnNwYXJlbnQsIHRyYXZlcnNlIHBhcmVudCBub2RlcyB1bnRpbCB3ZSBo
aXQgYSBkaWZmZXJlbnQgdmFsdWUgb3IgZG9jdW1lbnQgcm9vdAogICAgIC8vIEFsc28sIGlmIHRo
ZSBzZWxlY3Rpb24gaXMgYSByYW5nZSwgaWdub3JlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGF0IHRo
ZSBzdGFydCBvZiBzZWxlY3Rpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaApp
bmRleCBiZGYzYjgzLi5kMTdhOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudElz
U3R5bGVkU3Bhbk9ySFRNTEVxdWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQqKTsKIAogICAgIHZv
aWQgcHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYsIFNob3VsZFByZXNlcnZlV3JpdGlu
Z0RpcmVjdGlvbiA9IERvTm90UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKTsKLSAgICB2b2lkIG1l
cmdlVHlwaW5nU3R5bGUoRG9jdW1lbnQmKTsKKyAgICB2b2lkIG1lcmdlVHlwaW5nU3R5bGUoRG9j
dW1lbnQqKTsKICAgICBlbnVtIENTU1Byb3BlcnR5T3ZlcnJpZGVNb2RlIHsgT3ZlcnJpZGVWYWx1
ZXMsIERvTm90T3ZlcnJpZGVWYWx1ZXMgfTsKICAgICB2b2lkIG1lcmdlSW5saW5lU3R5bGVPZkVs
ZW1lbnQoU3R5bGVkRWxlbWVudCosIENTU1Byb3BlcnR5T3ZlcnJpZGVNb2RlLCBQcm9wZXJ0aWVz
VG9JbmNsdWRlID0gQWxsUHJvcGVydGllcyk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdGlu
Z1N0eWxlPiB3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXphdGlvbihOb2RlKiBjb250ZXh0LCBib29s
IHNob3VsZEFubm90YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAyZWEwZDhm
Li40NzBiZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zOTMsOCArMzkzLDgg
QEAgdm9pZCBFZGl0b3I6OmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29sIHNtYXJ0
RGVsZXRlKQogewogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICBhcHBseUNvbW1hbmQoRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6Y3Jl
YXRlKGRvY3VtZW50KCksIHNtYXJ0RGVsZXRlKSk7CisgICAgCisgICAgYXBwbHlDb21tYW5kKERl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCksIHNtYXJ0RGVs
ZXRlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYg
cGFzdGluZ1RleHQsIGJvb2wgc21hcnRSZXBsYWNlKQpAQCAtNDY3LDggKzQ2Nyw3IEBAIHZvaWQg
RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQsCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OlNtYXJ0UmVwbGFjZTsKICAgICBpZiAobWF0Y2hTdHlsZSkKICAgICAgICAgb3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsKLSAgICBBU1NFUlQobV9m
cmFtZS5kb2N1bWVudCgpKTsKLSAgICBhcHBseUNvbW1hbmQoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBmcmFnbWVudCwgb3B0aW9ucywgRWRpdEFj
dGlvblBhc3RlKSk7CisgICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLCBmcmFnbWVudCwgb3B0aW9ucywgRWRpdEFjdGlvblBh
c3RlKSk7CiAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCk7CiAKICAg
ICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpIHx8ICFpc0NvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQpAQCAtNjE2LDcgKzYxNSw3IEBAIFBhc3NSZWZQ
dHI8Tm9kZT4gRWRpdG9yOjppbnNlcnRPcmRlcmVkTGlzdCgpCiAgICAgaWYgKCFjYW5FZGl0Umlj
aGx5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKLSAgICBSZWZQdHI8Tm9kZT4gbmV3
TGlzdCA9IEluc2VydExpc3RDb21tYW5kOjppbnNlcnRMaXN0KGRvY3VtZW50KCksIEluc2VydExp
c3RDb21tYW5kOjpPcmRlcmVkTGlzdCk7CisgICAgUmVmUHRyPE5vZGU+IG5ld0xpc3QgPSBJbnNl
cnRMaXN0Q29tbWFuZDo6aW5zZXJ0TGlzdChtX2ZyYW1lLmRvY3VtZW50KCksIEluc2VydExpc3RD
b21tYW5kOjpPcmRlcmVkTGlzdCk7CiAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3Bl
cmF0aW9uKCk7CiAgICAgcmV0dXJuIG5ld0xpc3Q7CiB9CkBAIC02MjYsNyArNjI1LDcgQEAgUGFz
c1JlZlB0cjxOb2RlPiBFZGl0b3I6Omluc2VydFVub3JkZXJlZExpc3QoKQogICAgIGlmICghY2Fu
RWRpdFJpY2hseSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCi0gICAgUmVmUHRyPE5v
ZGU+IG5ld0xpc3QgPSBJbnNlcnRMaXN0Q29tbWFuZDo6aW5zZXJ0TGlzdChkb2N1bWVudCgpLCBJ
bnNlcnRMaXN0Q29tbWFuZDo6VW5vcmRlcmVkTGlzdCk7CisgICAgUmVmUHRyPE5vZGU+IG5ld0xp
c3QgPSBJbnNlcnRMaXN0Q29tbWFuZDo6aW5zZXJ0TGlzdChtX2ZyYW1lLmRvY3VtZW50KCksIElu
c2VydExpc3RDb21tYW5kOjpVbm9yZGVyZWRMaXN0KTsKICAgICByZXZlYWxTZWxlY3Rpb25BZnRl
ckVkaXRpbmdPcGVyYXRpb24oKTsKICAgICByZXR1cm4gbmV3TGlzdDsKIH0KQEAgLTY4Miw3ICs2
ODEsNyBAQCB2b2lkIEVkaXRvcjo6ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKQogCiB2b2lk
IEVkaXRvcjo6cmVtb3ZlRm9ybWF0dGluZ0FuZFN0eWxlKCkKIHsKLSAgICBhcHBseUNvbW1hbmQo
UmVtb3ZlRm9ybWF0Q29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKKyAgICBhcHBseUNvbW1h
bmQoUmVtb3ZlRm9ybWF0Q29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKSkpOwogfQog
CiB2b2lkIEVkaXRvcjo6Y2xlYXJMYXN0RWRpdENvbW1hbmQoKSAKQEAgLTc0Niw3ICs3NDUsNyBA
QCB2b2lkIEVkaXRvcjo6YXBwbHlTdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgRWRpdEFj
dGlvbiBlZGl0aW5nQWN0aW9uKQogICAgICAgICBicmVhazsKICAgICBjYXNlIFZpc2libGVTZWxl
Y3Rpb246OlJhbmdlU2VsZWN0aW9uOgogICAgICAgICBpZiAoc3R5bGUpCi0gICAgICAgICAgICBh
cHBseUNvbW1hbmQoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBFZGl0aW5n
U3R5bGU6OmNyZWF0ZShzdHlsZSkuZ2V0KCksIGVkaXRpbmdBY3Rpb24pKTsKKyAgICAgICAgICAg
IGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQo
KSwgRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUpLmdldCgpLCBlZGl0aW5nQWN0aW9uKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTc2NSw3ICs3NjQsNyBAQCB2b2lkIEVkaXRvcjo6
YXBwbHlQYXJhZ3JhcGhTdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgRWRpdEFjdGlvbiBl
ZGl0aW5nQWN0aQogICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb246CiAg
ICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKICAgICAgICAgaWYgKHN0
eWxlKQotICAgICAgICAgICAgYXBwbHlDb21tYW5kKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUpLmdldCgpLCBlZGl0aW5nQWN0
aW9uLCBBcHBseVN0eWxlQ29tbWFuZDo6Rm9yY2VCbG9ja1Byb3BlcnRpZXMpKTsKKyAgICAgICAg
ICAgIGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1l
bnQoKSwgRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUpLmdldCgpLCBlZGl0aW5nQWN0aW9uLCBB
cHBseVN0eWxlQ29tbWFuZDo6Rm9yY2VCbG9ja1Byb3BlcnRpZXMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQpAQCAtODEzLDEyICs4MTIsMTIgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9u
U3RhcnRDU1NQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIAogdm9pZCBF
ZGl0b3I6OmluZGVudCgpCiB7Ci0gICAgYXBwbHlDb21tYW5kKEluZGVudE91dGRlbnRDb21tYW5k
OjpjcmVhdGUoZG9jdW1lbnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudCkpOworICAg
IGFwcGx5Q29tbWFuZChJbmRlbnRPdXRkZW50Q29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1l
bnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudCkpOwogfQogCiB2b2lkIEVkaXRvcjo6
b3V0ZGVudCgpCiB7Ci0gICAgYXBwbHlDb21tYW5kKEluZGVudE91dGRlbnRDb21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6Ok91dGRlbnQpKTsKKyAgICBhcHBs
eUNvbW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCks
IEluZGVudE91dGRlbnRDb21tYW5kOjpPdXRkZW50KSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoRWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50cyhQYXNzUmVmUHRyPEVsZW1lbnQ+IHBycFN0
YXJ0Um9vdCwgUGFzc1JlZlB0cjxFbGVtZW50PiBwcnBFbmRSb290KQpAQCAtODMzLDcgKzgzMiw3
IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoRWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50cyhQYXNz
UmVmUHRyPEVsZW1lbnQ+IHBycFN0YXJ0Um9vCiAKIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGlu
ZyhQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5kPiBjbWQpCiB7Ci0gICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXQoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OwogCiAgICAgRWRpdENvbW1hbmRDb21wb3NpdGlvbiogY29tcG9zaXRpb24gPSBjbWQtPmNvbXBv
c2l0aW9uKCk7CiAgICAgQVNTRVJUKGNvbXBvc2l0aW9uKTsKQEAgLTg2NSw3ICs4NjQsNyBAQCB2
b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFu
ZD4gY21kKQogCiB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEVkaXRD
b21tYW5kQ29tcG9zaXRpb24+IGNtZCkKIHsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OworICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKICAgICBWaXNpYmxl
U2VsZWN0aW9uIG5ld1NlbGVjdGlvbihjbWQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkpOwogICAgIGNo
YW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpD
bG9zZVR5cGluZyB8IEZyYW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKQEAgLTg4MSw3
ICs4ODAsNyBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEVkaXRD
b21tYW5kQ29tcG9zaXRpb24+IGNtZCkKIAogdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmco
UGFzc1JlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjbWQpCiB7Ci0gICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXQoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY21kLT5lbmRpbmdTZWxlY3Rp
b24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJh
bWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5
bGUpOwpAQCAtMTA3NCwxMyArMTA3Myw5IEBAIHZvaWQgRWRpdG9yOjpjb3B5KCkKICAgICAgICAg
ICAgIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJvYXJkOjpDYW5TbWFydFJlcGxhY2Ug
OiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKEhU
TUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudEZyb21JbWFnZURvY3Vt
ZW50KGRvY3VtZW50KSkgewotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpLCAqaW1hZ2VFbGVtZW50LCBkb2N1bWVudC0+dXJsKCksIGRvY3VtZW50LT50
aXRsZSgpKTsKLSNlbHNlCisgICAgICAgIGlmIChIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1l
bnQgPSBpbWFnZUVsZW1lbnRGcm9tSW1hZ2VEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgICAg
ICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVJbWFnZShpbWFnZUVs
ZW1lbnQsIGRvY3VtZW50LT51cmwoKSwgZG9jdW1lbnQtPnRpdGxlKCkpOwotI2VuZGlmCi0gICAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGVsc2UgewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRG
T1JNKElPUykKICAgICAgICAgICAgIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCpQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7CiAjZWxzZQpAQCAtMTE1NCw3ICsxMTQ5LDcg
QEAgdm9pZCBFZGl0b3I6OnNpbXBsaWZ5TWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogZW5k
Tm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgYXBwbHlDb21tYW5k
KFNpbXBsaWZ5TWFya3VwQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0Tm9kZSwgKGVu
ZE5vZGUpID8gTm9kZVRyYXZlcnNhbDo6bmV4dChlbmROb2RlKSA6IDApKTsKKyAgICBhcHBseUNv
bW1hbmQoU2ltcGxpZnlNYXJrdXBDb21tYW5kOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLCBz
dGFydE5vZGUsIChlbmROb2RlKSA/IE5vZGVUcmF2ZXJzYWw6Om5leHQoZW5kTm9kZSkgOiAwKSk7
CiB9CiAKIHZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKQEAgLTExNjQsMjggKzExNTksMTYgQEAgdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogCiB2b2lkIEVkaXRvcjo6Y29weVVS
TChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3Rl
Ym9hcmQpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIHdyaXRl
VVJMVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHVybCwgdGl0bGUpOwotI2Vsc2UKICAgICBwYXN0
ZWJvYXJkLndyaXRlVVJMKHVybCwgdGl0bGUsICZtX2ZyYW1lKTsKLSNlbmRpZgogfQogCiB2b2lk
IEVkaXRvcjo6Y29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBF
bGVtZW50KiBlbGVtZW50ID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkRWxlbWVudCgpOwotICAgIGlm
ICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgS1VSTCB1cmwgPSByZXN1bHQuYWJz
b2x1dGVMaW5rVVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IHJl
c3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKLSNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShJT1MpCi0gICAgd3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCksICplbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3RyaW5nKCkp
OwotI2Vsc2UKLSAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVJ
bWFnZShlbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3RyaW5nKCkpOwotI2VuZGlmCisg
ICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlSW1hZ2UocmVzdWx0
LmlubmVyTm9uU2hhcmVkTm9kZSgpLCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3RyaW5nKCkpOwog
fQogCiBib29sIEVkaXRvcjo6aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25z
dApAQCAtMjMxNiw3ICsyMjk5LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBh
c3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QsIGNvbnN0IFZlY3QKICAgICAgICAg
ICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXN0b3Jl
U2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoY2FuRWRp
dFJpY2hseSgpKQotICAgICAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmQoQ3JlYXRlTGlua0Nv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCByZXBsYWNlbWVudCkpOworICAgICAgICAgICAgICAg
ICAgICBhcHBseUNvbW1hbmQoQ3JlYXRlTGlua0NvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3Vt
ZW50KCksIHJlcGxhY2VtZW50KSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkVkaXQoKSAm
JiBzaG91bGRJbnNlcnRUZXh0KHJlcGxhY2VtZW50LCByYW5nZVRvUmVwbGFjZS5nZXQoKSwgRWRp
dG9ySW5zZXJ0QWN0aW9uVHlwZWQpKSB7CiAgICAgICAgICAgICAgICAgY29ycmVjdFNwZWxsY2hl
Y2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKHBhcmFncmFwaCwgcmFuZ2VUb1Jl
cGxhY2UsIHJlcGxhY2VtZW50LCByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKIApAQCAt
MjczOSw3ICsyNzIyLDcgQEAgdm9pZCBFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShT
dHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW4KICAgICAvLyBIYW5kbGUg
YmxvY2sgc3R5bGVzLCBzdWJzdHJhY3RpbmcgdGhlc2UgZnJvbSB0aGUgdHlwaW5nIHN0eWxlLgog
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGJsb2NrU3R5bGUgPSB0eXBpbmdTdHlsZS0+ZXh0cmFj
dEFuZFJlbW92ZUJsb2NrUHJvcGVydGllcygpOwogICAgIGlmICghYmxvY2tTdHlsZS0+aXNFbXB0
eSgpKQotICAgICAgICBhcHBseUNvbW1hbmQoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1
bWVudCgpLCBibG9ja1N0eWxlLmdldCgpLCBlZGl0aW5nQWN0aW9uKSk7CisgICAgICAgIGFwcGx5
Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKSwgYmxv
Y2tTdHlsZS5nZXQoKSwgZWRpdGluZ0FjdGlvbikpOwogCiAgICAgLy8gU2V0IHRoZSByZW1haW5p
bmcgc3R5bGUgYXMgdGhlIHR5cGluZyBzdHlsZS4KICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
dFR5cGluZ1N0eWxlKHR5cGluZ1N0eWxlKTsKQEAgLTMxNTksMTAgKzMxNDIsNCBAQCB2b2lkIEVk
aXRvcjo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKQogICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQpOwogfQog
Ci1Eb2N1bWVudCYgRWRpdG9yOjpkb2N1bWVudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fZnJh
bWUuZG9jdW1lbnQoKSk7Ci0gICAgcmV0dXJuICptX2ZyYW1lLmRvY3VtZW50KCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGZkMTRjNmMu
LmYzMzVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzk1LDggKzM5NSw2IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogICAgIFN0
cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkV2l0aEltYWdlQWx0VGV4dCgpOwogICAg
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICB2b2lkIHdyaXRlVVJMVG9QYXN0ZWJvYXJk
KFBhc3RlYm9hcmQmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9p
ZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1l
bnQsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICNlbmRpZgogCiAgICAgdm9p
ZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4sIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNo
U3R5bGUpOwpAQCAtNDE3LDggKzQxNSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgRWRpdG9yKEZyYW1lJik7CiAKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKLQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9u
SW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gYWRqdXN0ZWRTZWxl
Y3Rpb25SYW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5k
ZXggNTdmZmNjZC4uMGY2ZWM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCkBAIC0xOTMsOCArMTkzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5UGFyYWdy
YXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwKIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZUluc2VydEZyYWdtZW50KEZyYW1lJiBmcmFtZSwgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCkKIHsKLSAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQo
KSk7Ci0gICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIGZyYWdtZW50LCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVu
dE5lc3RpbmcsIEVkaXRBY3Rpb25VbnNwZWNpZmllZCkpOworICAgIGFwcGx5Q29tbWFuZChSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIGZyYWdtZW50LCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcsIEVkaXRBY3Rpb25VbnNwZWNp
ZmllZCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yOTEsOCArMjkwLDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZUNyZWF0ZUxpbmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFMKICAgICAvLyBGSVhNRTogSWYgdXNlckludGVyZmFjZSBpcyB0cnVl
LCB3ZSBzaG91bGQgZGlzcGxheSBhIGRpYWxvZyBib3ggdG8gbGV0IHRoZSB1c2VyIGVudGVyIGEg
VVJMLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgYXBwbHlDb21tYW5kKENyZWF0ZUxpbmtD
b21tYW5kOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHZhbHVlKSk7CisgICAgYXBwbHlDb21t
YW5kKENyZWF0ZUxpbmtDb21tYW5kOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgdmFsdWUpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDQ5LDggKzQ0Nyw3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVGb3JtYXRCbG9jayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFF1YWxpZmllZE5hbWUgcXVhbGlm
aWVkVGFnTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpOwogCi0gICAg
QVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwotICAgIFJlZlB0cjxGb3JtYXRCbG9ja0NvbW1hbmQ+
IGNvbW1hbmQgPSBGb3JtYXRCbG9ja0NvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwg
cXVhbGlmaWVkVGFnTmFtZSk7CisgICAgUmVmUHRyPEZvcm1hdEJsb2NrQ29tbWFuZD4gY29tbWFu
ZCA9IEZvcm1hdEJsb2NrQ29tbWFuZDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIHF1YWxpZmll
ZFRhZ05hbWUpOwogICAgIGFwcGx5Q29tbWFuZChjb21tYW5kKTsKICAgICByZXR1cm4gY29tbWFu
ZC0+ZGlkQXBwbHkoKTsKIH0KQEAgLTQ4MSw4ICs0NzgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRl
SWdub3JlU3BlbGxpbmcoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5kZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIEFTU0VSVChmcmFtZS5k
b2N1bWVudCgpKTsKLSAgICBhcHBseUNvbW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0
ZSgqZnJhbWUuZG9jdW1lbnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudCkpOworICAg
IGFwcGx5Q29tbWFuZChJbmRlbnRPdXRkZW50Q29tbWFuZDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50
KCksIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNTQzLDggKzUzOSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnROZXdsaW5lSW5R
dW90ZWRDb250ZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tCiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVJbnNlcnRPcmRlcmVkTGlzdChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBBU1NFUlQoZnJhbWUuZG9jdW1l
bnQoKSk7Ci0gICAgYXBwbHlDb21tYW5kKEluc2VydExpc3RDb21tYW5kOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIEluc2VydExpc3RDb21tYW5kOjpPcmRlcmVkTGlzdCkpOworICAgIGFwcGx5
Q29tbWFuZChJbnNlcnRMaXN0Q29tbWFuZDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIEluc2Vy
dExpc3RDb21tYW5kOjpPcmRlcmVkTGlzdCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01
NjcsOCArNTYyLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydFRleHQoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMKIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZUluc2VydFVub3JkZXJlZExpc3QoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkp
OwotICAgIGFwcGx5Q29tbWFuZChJbnNlcnRMaXN0Q29tbWFuZDo6Y3JlYXRlKCpmcmFtZS5kb2N1
bWVudCgpLCBJbnNlcnRMaXN0Q29tbWFuZDo6VW5vcmRlcmVkTGlzdCkpOworICAgIGFwcGx5Q29t
bWFuZChJbnNlcnRMaXN0Q29tbWFuZDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIEluc2VydExp
c3RDb21tYW5kOjpVbm9yZGVyZWRMaXN0KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkw
NCw4ICs4OTgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosCiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVPdXRkZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAgICBhcHBseUNv
bW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgSW5k
ZW50T3V0ZGVudENvbW1hbmQ6Ok91dGRlbnQpKTsKKyAgICBhcHBseUNvbW1hbmQoSW5kZW50T3V0
ZGVudENvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBJbmRlbnRPdXRkZW50Q29tbWFu
ZDo6T3V0ZGVudCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTM1LDggKzExMjgsNyBA
QCBzdGF0aWMgYm9vbCBleGVjdXRlVW5kbyhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJgogCiBzdGF0aWMgYm9vbCBleGVjdXRlVW5saW5rKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAgICBhcHBseUNvbW1hbmQoVW5saW5r
Q29tbWFuZDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKSk7CisgICAgYXBwbHlDb21tYW5kKFVu
bGlua0NvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcApp
bmRleCBmYjBhODU5Li5lYzY0ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3Jt
YXRCbG9ja0NvbW1hbmQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0VsZW1lbnRGb3JGb3JtYXRCbG9jayhOb2RlKiBub2RlKQogICAgIHJldHVybiBub2RlLT5pc0Vs
ZW1lbnROb2RlKCkgJiYgaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2sodG9FbGVtZW50KG5vZGUpLT50
YWdRTmFtZSgpKTsKIH0KIAotRm9ybWF0QmxvY2tDb21tYW5kOjpGb3JtYXRCbG9ja0NvbW1hbmQo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQorRm9ybWF0
QmxvY2tDb21tYW5kOjpGb3JtYXRCbG9ja0NvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKSAKICAgICA6IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFu
ZChkb2N1bWVudCwgdGFnTmFtZSkKICAgICAsIG1fZGlkQXBwbHkoZmFsc2UpCiB7CkBAIC02NSw3
ICs2NSw3IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZShjb25zdCBQb3Np
dGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVmUHRyPE5vZGU+IG91dGVy
QmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9TcGxpdFRvKSA/IHN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoc3RhcnQuZGVwcmVjYXRlZE5vZGUo
KSwgbm9kZVRvU3BsaXRUbyk7CiAgICAgUmVmUHRyPE5vZGU+IG5vZGVBZnRlckluc2VydGlvblBv
c2l0aW9uID0gb3V0ZXJCbG9jazsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCZkb2N1bWVudCgpLCBzdGFydCwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVj
dGlvbik7CiAgICAgRWxlbWVudCogcmVmTm9kZSA9IGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQo
ZW5kKTsKICAgICBFbGVtZW50KiByb290ID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQp
OwogICAgIC8vIFJvb3QgaXMgbnVsbCBmb3IgZWxlbWVudHMgd2l0aCBjb250ZW50ZWRpdGFibGU9
ZmFsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29t
bWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuaAppbmRl
eCAyNjI1MzZiLi4yYzE0MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zv
cm1hdEJsb2NrQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0Qmxv
Y2tDb21tYW5kLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCiBj
bGFzcyBGb3JtYXRCbG9ja0NvbW1hbmQgOiBwdWJsaWMgQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5k
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtYXRCbG9ja0NvbW1hbmQ+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybWF0QmxvY2tDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtYXRCbG9ja0NvbW1hbmQoZG9jdW1lbnQsIHRhZ05hbWUp
KTsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGRpZEFwcGx5KCkg
Y29uc3QgeyByZXR1cm4gbV9kaWRBcHBseTsgfQogCiBwcml2YXRlOgotICAgIEZvcm1hdEJsb2Nr
Q29tbWFuZChEb2N1bWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpOworICAgIEZv
cm1hdEJsb2NrQ29tbWFuZChEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUp
OwogCiAgICAgdm9pZCBmb3JtYXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFy
dE9mU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mU2VsZWN0aW9uKTsKICAg
ICB2b2lkIGZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCwgY29uc3QgUG9zaXRpb24mIGVuZE9mU2VsZWN0aW9uLCBSZWZQdHI8RWxlbWVudD4mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKaW5k
ZXggMmZkYmIzYi4uMTVkNGJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRl
bnRPdXRkZW50Q29tbWFuZC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgaXNMaXN0
T3JJbmRlbnRCbG9ja3F1b3RlKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUgJiYg
KG5vZGUtPmhhc1RhZ05hbWUodWxUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUob2xUYWcpIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykpOwogfQogCi1JbmRlbnRPdXRkZW50Q29tbWFu
ZDo6SW5kZW50T3V0ZGVudENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBFSW5kZW50VHlwZSB0
eXBlT2ZBY3Rpb24sIGludCBtYXJnaW5JblBpeGVscykKK0luZGVudE91dGRlbnRDb21tYW5kOjpJ
bmRlbnRPdXRkZW50Q29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQsIEVJbmRlbnRUeXBlIHR5cGVP
ZkFjdGlvbiwgaW50IG1hcmdpbkluUGl4ZWxzKQogICAgIDogQXBwbHlCbG9ja0VsZW1lbnRDb21t
YW5kKGRvY3VtZW50LCBibG9ja3F1b3RlVGFnLCAibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6
IG5vbmU7IHBhZGRpbmc6IDBweDsiKQogICAgICwgbV90eXBlT2ZBY3Rpb24odHlwZU9mQWN0aW9u
KQogICAgICwgbV9tYXJnaW5JblBpeGVscyhtYXJnaW5JblBpeGVscykKQEAgLTc1LDcgKzc1LDcg
QEAgYm9vbCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6dHJ5SW5kZW50aW5nQXNMaXN0SXRlbShjb25z
dCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFAKICAgICBFbGVtZW50KiBwcmV2aW91c0xpc3QgPSBF
bGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoc2VsZWN0ZWRMaXN0SXRlbSk7CiAgICAg
RWxlbWVudCogbmV4dExpc3QgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhzZWxlY3Rl
ZExpc3RJdGVtKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiBuZXdMaXN0ID0gZG9jdW1lbnQoKS5j
cmVhdGVFbGVtZW50KGxpc3ROb2RlLT50YWdRTmFtZSgpLCBmYWxzZSk7CisgICAgUmVmUHRyPEVs
ZW1lbnQ+IG5ld0xpc3QgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KGxpc3ROb2RlLT50YWdR
TmFtZSgpLCBmYWxzZSk7CiAgICAgaW5zZXJ0Tm9kZUJlZm9yZShuZXdMaXN0LCBzZWxlY3RlZExp
c3RJdGVtKTsKIAogICAgIG1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKHN0YXJ0LCBlbmQsIG5ld0xp
c3QuZ2V0KCksIHNlbGVjdGVkTGlzdEl0ZW0pOwpAQCAtMTYyLDEzICsxNjIsMTMgQEAgdm9pZCBJ
bmRlbnRPdXRkZW50Q29tbWFuZDo6b3V0ZGVudFBhcmFncmFwaCgpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgdmlzaWJsZVN0YXJ0T2ZQYXJhZ3JhcGggPSBWaXNp
YmxlUG9zaXRpb24odmlzaWJsZVN0YXJ0T2ZQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAg
ICAgICAgIHZpc2libGVFbmRPZlBhcmFncmFwaCA9IFZpc2libGVQb3NpdGlvbih2aXNpYmxlRW5k
T2ZQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgICAgIGlmICh2aXNpYmxlU3RhcnRP
ZlBhcmFncmFwaC5pc05vdE51bGwoKSAmJiAhaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFy
dE9mUGFyYWdyYXBoKSkKLSAgICAgICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1l
bnQoJmRvY3VtZW50KCkpLCB2aXNpYmxlU3RhcnRPZlBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgp
KTsKKyAgICAgICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQo
KSksIHZpc2libGVTdGFydE9mUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkpOwogICAgICAgICBp
ZiAodmlzaWJsZUVuZE9mUGFyYWdyYXBoLmlzTm90TnVsbCgpICYmICFpc0VuZE9mUGFyYWdyYXBo
KHZpc2libGVFbmRPZlBhcmFncmFwaCkpCi0gICAgICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRl
QnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKSwgdmlzaWJsZUVuZE9mUGFyYWdyYXBoLmRlZXBFcXVp
dmFsZW50KCkpOworICAgICAgICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJyZWFrRWxlbWVudChk
b2N1bWVudCgpKSwgdmlzaWJsZUVuZE9mUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkpOwogCiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBJbmRlbnRPdXRk
ZW50Q29tbWFuZDo6b3V0ZGVudFBhcmFncmFwaCgpCiAgICAgICAgIE5vZGUqIGhpZ2hlc3RJbmxp
bmVOb2RlID0gaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUodmlzaWJsZVN0YXJ0T2ZQYXJhZ3Jh
cGguZGVlcEVxdWl2YWxlbnQoKSwgaXNJbmxpbmUsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
LCBlbmNsb3NpbmdCbG9ja0Zsb3cpOwogICAgICAgICBzcGxpdEVsZW1lbnQodG9FbGVtZW50KGVu
Y2xvc2luZ05vZGUpLCAoaGlnaGVzdElubGluZU5vZGUpID8gaGlnaGVzdElubGluZU5vZGUgOiB2
aXNpYmxlU3RhcnRPZlBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkp
OwogICAgIH0KLSAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1l
bnQoJmRvY3VtZW50KCkpOworICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJy
ZWFrRWxlbWVudChkb2N1bWVudCgpKTsKICAgICBpbnNlcnROb2RlQmVmb3JlKHBsYWNlaG9sZGVy
LCBzcGxpdEJsb2NrcXVvdGVOb2RlKTsKICAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0T2ZQYXJhZ3Jh
cGgodmlzaWJsZVN0YXJ0T2ZQYXJhZ3JhcGgpLCBlbmRPZlBhcmFncmFwaCh2aXNpYmxlRW5kT2ZQ
YXJhZ3JhcGgpLCBwb3NpdGlvbkJlZm9yZU5vZGUocGxhY2Vob2xkZXIuZ2V0KCkpLCB0cnVlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1h
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaAppbmRl
eCA0ZWJhZmU5Li5mMDcwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
ZGVudE91dGRlbnRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRP
dXRkZW50Q29tbWFuZC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEluZGVudE91dGRlbnRDb21tYW5kIDogcHVibGljIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFu
ZCB7CiBwdWJsaWM6CiAgICAgZW51bSBFSW5kZW50VHlwZSB7IEluZGVudCwgT3V0ZGVudCB9Owot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGVudE91dGRlbnRDb21tYW5kPiBjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBFSW5kZW50VHlwZSB0eXBlLCBpbnQgbWFyZ2luSW5QaXhlbHMgPSAwKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGVudE91dGRlbnRDb21tYW5kPiBjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50LCBFSW5kZW50VHlwZSB0eXBlLCBpbnQgbWFyZ2luSW5QaXhlbHMgPSAwKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRlbnRPdXRkZW50Q29tbWFuZChk
b2N1bWVudCwgdHlwZSwgbWFyZ2luSW5QaXhlbHMpKTsKICAgICB9CkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzVHlwaW5nU3R5bGUoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5kZW50T3V0ZGVudENvbW1hbmQoRG9j
dW1lbnQmLCBFSW5kZW50VHlwZSwgaW50IG1hcmdpbkluUGl4ZWxzKTsKKyAgICBJbmRlbnRPdXRk
ZW50Q29tbWFuZChEb2N1bWVudCosIEVJbmRlbnRUeXBlLCBpbnQgbWFyZ2luSW5QaXhlbHMpOwog
CiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3R5cGVPZkFjdGlvbiA9PSBJbmRlbnQgPyBFZGl0QWN0aW9uSW5kZW50IDogRWRpdEFjdGlvbk91
dGRlbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRv
VGV4dE5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1Rl
eHROb2RlQ29tbWFuZC5jcHAKaW5kZXggYzU0NDU5NS4uNDQzYmFhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC0z
Niw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc2VydEludG9UZXh0Tm9kZUNv
bW1hbmQ6Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQoUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1
bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCkKLSAgICA6IFNpbXBsZUVkaXRDb21t
YW5kKG5vZGUtPmRvY3VtZW50KCkpCisgICAgOiBTaW1wbGVFZGl0Q29tbWFuZCgmbm9kZS0+ZG9j
dW1lbnQoKSkKICAgICAsIG1fbm9kZShub2RlKQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAg
ICwgbV90ZXh0KHRleHQpCkBAIC00OCwxMCArNDgsOSBAQCBJbnNlcnRJbnRvVGV4dE5vZGVDb21t
YW5kOjpJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5z
aQogCiB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHkoKQogewotICAgIC8v
IEZJWE1FOiBFZGl0Q29tbWFuZCBzaG91bGQgYWx3YXlzIGhhdmUgYSBGcmFtZSwgc28gZ29pbmcg
dGhyb3VnaCBEb2N1bWVudCBmb3IgU2V0dGluZ3Mgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeS4KLSAg
ICBib29sIHBhc3N3b3JkRWNob0VuYWJsZWQgPSBkb2N1bWVudCgpLnNldHRpbmdzKCkgJiYgZG9j
dW1lbnQoKS5zZXR0aW5ncygpLT5wYXNzd29yZEVjaG9FbmFibGVkKCk7CisgICAgYm9vbCBwYXNz
d29yZEVjaG9FbmFibGVkID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5z
ZXR0aW5ncygpLT5wYXNzd29yZEVjaG9FbmFibGVkKCk7CiAgICAgaWYgKHBhc3N3b3JkRWNob0Vu
YWJsZWQpCi0gICAgICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CisgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwogCiAgICAgaWYgKCFtX25vZGUtPnJlbmRlcmVySXNFZGl0YWJsZSgpKQog
ICAgICAgICByZXR1cm47CkBAIC02NCw3ICs2Myw3IEBAIHZvaWQgSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZDo6ZG9BcHBseSgpCiAKICAgICBtX25vZGUtPmluc2VydERhdGEobV9vZmZzZXQsIG1f
dGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7CiAKLSAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUg
PSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgIGlmIChBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IGRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAg
ICBjYWNoZS0+bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obV9ub2RlLmdldCgpLCBBWE9iamVj
dENhY2hlOjpBWFRleHRJbnNlcnRlZCwgbV9vZmZzZXQsIG1fdGV4dCk7CiB9CiAKQEAgLTc0LDcg
KzczLDcgQEAgdm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIC8vIE5lZWQgdG8gbm90aWZ5IHRoaXMgYmVmb3Jl
IGFjdHVhbGx5IGRlbGV0aW5nIHRoZSB0ZXh0Ci0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hl
ID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAg
ICAgY2FjaGUtPm5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKG1fbm9kZS5nZXQoKSwgQVhPYmpl
Y3RDYWNoZTo6QVhUZXh0RGVsZXRlZCwgbV9vZmZzZXQsIG1fdGV4dCk7CiAKICAgICBtX25vZGUt
PmRlbGV0ZURhdGEobV9vZmZzZXQsIG1fdGV4dC5sZW5ndGgoKSwgSUdOT1JFX0VYQ0VQVElPTik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cAppbmRleCBhNzcwNDA5Li4xY2NjYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1JbnNlcnRMaW5lQnJl
YWtDb21tYW5kOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKK0lu
c2VydExpbmVCcmVha0NvbW1hbmQ6Okluc2VydExpbmVCcmVha0NvbW1hbmQoRG9jdW1lbnQqIGRv
Y3VtZW50KSAKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogewogfQpAQCAt
MTA5LDkgKzEwOSw5IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAK
ICAgICBSZWZQdHI8Tm9kZT4gbm9kZVRvSW5zZXJ0OwogICAgIGlmIChzaG91bGRVc2VCcmVha0Vs
ZW1lbnQocG9zKSkKLSAgICAgICAgbm9kZVRvSW5zZXJ0ID0gY3JlYXRlQnJlYWtFbGVtZW50KCZk
b2N1bWVudCgpKTsKKyAgICAgICAgbm9kZVRvSW5zZXJ0ID0gY3JlYXRlQnJlYWtFbGVtZW50KGRv
Y3VtZW50KCkpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZVRvSW5zZXJ0ID0gZG9jdW1lbnQoKS5j
cmVhdGVUZXh0Tm9kZSgiXG4iKTsKKyAgICAgICAgbm9kZVRvSW5zZXJ0ID0gZG9jdW1lbnQoKS0+
Y3JlYXRlVGV4dE5vZGUoIlxuIik7CiAgICAgCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWVyZ2Ug
dGV4dCBub2RlcyB3aGVuIGluc2VydGluZyBqdXN0IGFmdGVyIG9yIGJlZm9yZSB0ZXh0LgogICAg
IApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgICAgIFBvc2l0aW9uIGVuZGluZ1Bvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluTm9k
ZSh0ZXh0Tm9kZSk7CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUgd2hpdGVzcGFjZSB0aGF0
IG9jY3VycyBhZnRlciB0aGUgc3BsaXQKLSAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgICAgIGlmICghZW5kaW5nUG9zaXRp
b24uaXNSZW5kZXJlZENoYXJhY3RlcigpKSB7CiAgICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlv
bkJlZm9yZVRleHROb2RlKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKHRleHROb2RlKSk7CiAg
ICAgICAgICAgICAvLyBDbGVhciBvdXQgYWxsIHdoaXRlc3BhY2UgYW5kIGluc2VydCBvbmUgbm9u
LWJyZWFraW5nIHNwYWNlCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtD
b21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS0+aW5Eb2N1bWVudCgp
KQogICAgICAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0Tm9kZSwgMCwgbm9uQnJl
YWtpbmdTcGFjZVN0cmluZygpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IFJlZlB0cjxUZXh0PiBuYnNwTm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUobm9uQnJl
YWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8VGV4dD4gbmJzcE5v
ZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShub25CcmVha2luZ1NwYWNlU3RyaW5nKCkp
OwogICAgICAgICAgICAgICAgIGluc2VydE5vZGVBdChuYnNwTm9kZS5nZXQoKSwgcG9zaXRpb25C
ZWZvcmVUZXh0Tm9kZSk7CiAgICAgICAgICAgICAgICAgZW5kaW5nUG9zaXRpb24gPSBmaXJzdFBv
c2l0aW9uSW5Ob2RlKG5ic3BOb2RlLmdldCgpKTsKICAgICAgICAgICAgIH0KQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogCiAgICAgLy8g
SGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGEgdHlwaW5nIHN0eWxlLgogCi0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5nU3R5bGUgPSBmcmFtZSgpLnNlbGVjdGlvbigpLnR5cGlu
Z1N0eWxlKCk7CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5nU3R5bGUgPSBkb2N1bWVu
dCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS50eXBpbmdTdHlsZSgpOwogCiAgICAgaWYgKHR5cGlu
Z1N0eWxlICYmICF0eXBpbmdTdHlsZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEFwcGx5IHRo
ZSB0eXBpbmcgc3R5bGUgdG8gdGhlIGluc2VydGVkIGxpbmUgYnJlYWssIHNvIHRoYXQgaWYgdGhl
IHNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5l
QnJlYWtDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuaAppbmRleCBkNDg4NDdhLi5mODNmZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuaApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZCA6IHB1YmxpYyBD
b21wb3NpdGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNlcnRMaW5lQnJlYWtDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNlcnRMaW5lQnJl
YWtDb21tYW5kKGRvY3VtZW50KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IElu
c2VydExpbmVCcmVha0NvbW1hbmQoRG9jdW1lbnQmKTsKKyAgICBleHBsaWNpdCBJbnNlcnRMaW5l
QnJlYWtDb21tYW5kKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IGIw
MTVhZjUuLjgxYjNmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
TGlzdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENv
bW1hbmQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBOb2RlKiBlbmNsb3NpbmdMaXN0Q2hp
bGQoTm9kZSogbm9kZSwgTm9kZSogbGlzdE5vZGUpCiAgICAgcmV0dXJuIGxpc3RDaGlsZDsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6Omluc2VydExpc3Qo
RG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIHR5cGUpCitQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBJ
bnNlcnRMaXN0Q29tbWFuZDo6aW5zZXJ0TGlzdChEb2N1bWVudCogZG9jdW1lbnQsIFR5cGUgdHlw
ZSkKIHsKICAgICBSZWZQdHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGluc2VydENvbW1hbmQgPSBjcmVh
dGUoZG9jdW1lbnQsIHR5cGUpOwogICAgIGluc2VydENvbW1hbmQtPmFwcGx5KCk7CkBAIC01NSw3
ICs1NSw3IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjppbnNl
cnRMaXN0KERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSB0CiAKIEhUTUxFbGVtZW50KiBJbnNlcnRM
aXN0Q29tbWFuZDo6Zml4T3JwaGFuZWRMaXN0Q2hpbGQoTm9kZSogbm9kZSkKIHsKLSAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGxpc3RFbGVtZW50ID0gY3JlYXRlVW5vcmRlcmVkTGlzdEVsZW1lbnQo
JmRvY3VtZW50KCkpOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdEVsZW1lbnQgPSBjcmVh
dGVVbm9yZGVyZWRMaXN0RWxlbWVudChkb2N1bWVudCgpKTsKICAgICBpbnNlcnROb2RlQmVmb3Jl
KGxpc3RFbGVtZW50LCBub2RlKTsKICAgICByZW1vdmVOb2RlKG5vZGUpOwogICAgIGFwcGVuZE5v
ZGUobm9kZSwgbGlzdEVsZW1lbnQpOwpAQCAtMTAyLDkgKzEwMiw4IEBAIGJvb2wgSW5zZXJ0TGlz
dENvbW1hbmQ6OnNlbGVjdGlvbkhhc0xpc3RPZlR5cGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUluc2VydExpc3RDb21tYW5kOjpJbnNl
cnRMaXN0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFR5cGUgdHlwZSkKLSAgICA6IENvbXBv
c2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQotICAgICwgbV90eXBlKHR5cGUpCitJbnNlcnRMaXN0
Q29tbWFuZDo6SW5zZXJ0TGlzdENvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBUeXBlIHR5cGUp
IAorICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpLCBtX3R5cGUodHlwZSkKIHsK
IH0KIApAQCAtMjE5LDcgKzIxOCw3IEBAIHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHlG
b3JTaW5nbGVQYXJhZ3JhcGgoYm9vbCBmb3JjZUNyZWF0ZUxpc3QsIGNvbnN0IFF1CiAgICAgICAg
ICAgICBib29sIHJhbmdlU3RhcnRJc0luTGlzdCA9IHZpc2libGVQb3NpdGlvbkJlZm9yZU5vZGUo
bGlzdE5vZGUuZ2V0KCkpID09IGN1cnJlbnRTZWxlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKTsKICAg
ICAgICAgICAgIGJvb2wgcmFuZ2VFbmRJc0luTGlzdCA9IHZpc2libGVQb3NpdGlvbkFmdGVyTm9k
ZShsaXN0Tm9kZS5nZXQoKSkgPT0gY3VycmVudFNlbGVjdGlvbi0+ZW5kUG9zaXRpb24oKTsKIAot
ICAgICAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBuZXdMaXN0ID0gY3JlYXRlSFRNTEVsZW1l
bnQoJmRvY3VtZW50KCksIGxpc3RUYWcpOworICAgICAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50
PiBuZXdMaXN0ID0gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgbGlzdFRhZyk7CiAgICAg
ICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5ld0xpc3QsIGxpc3ROb2RlKTsKIAogICAgICAgICAg
ICAgTm9kZSogZmlyc3RDaGlsZEluTGlzdCA9IGVuY2xvc2luZ0xpc3RDaGlsZChWaXNpYmxlUG9z
aXRpb24oZmlyc3RQb3NpdGlvbkluTm9kZShsaXN0Tm9kZS5nZXQoKSkpLmRlZXBFcXVpdmFsZW50
KCkuZGVwcmVjYXRlZE5vZGUoKSwgbGlzdE5vZGUuZ2V0KCkpOwpAQCAtMjc2LDEyICsyNzUsMTIg
QEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6dW5saXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgb3JpZ2luYWxTdGFydCwKICAgICB9CiAgICAgLy8gV2hlbiByZW1vdmluZyBh
IGxpc3QsIHdlIG11c3QgYWx3YXlzIGNyZWF0ZSBhIHBsYWNlaG9sZGVyIHRvIGFjdCBhcyBhIHBv
aW50IG9mIGluc2VydGlvbgogICAgIC8vIGZvciB0aGUgbGlzdCBjb250ZW50IGJlaW5nIHJlbW92
ZWQuCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50
KCZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gcGxhY2Vob2xkZXIgPSBjcmVhdGVC
cmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG5vZGVUb0luc2Vy
dCA9IHBsYWNlaG9sZGVyOwogICAgIC8vIElmIHRoZSBjb250ZW50IG9mIHRoZSBsaXN0IGl0ZW0g
d2lsbCBiZSBtb3ZlZCBpbnRvIGFub3RoZXIgbGlzdCwgcHV0IGl0IGluIGEgbGlzdCBpdGVtCiAg
ICAgLy8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgYW4gb3JwaGFuZWQgbGlzdCBjaGlsZC4KICAg
ICBpZiAoZW5jbG9zaW5nTGlzdChsaXN0Tm9kZSkpIHsKLSAgICAgICAgbm9kZVRvSW5zZXJ0ID0g
Y3JlYXRlTGlzdEl0ZW1FbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICAgICAgbm9kZVRvSW5zZXJ0
ID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICBhcHBlbmROb2Rl
KHBsYWNlaG9sZGVyLCBub2RlVG9JbnNlcnQpOwogICAgIH0KIApAQCAtMzM4LDggKzMzNyw4IEBA
IFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjpsaXN0aWZ5UGFyYWdy
YXBoKGNvbnN0IFZpc2libGVQb3NpdGlvCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gQ2hl
Y2sgZm9yIGFkam9pbmluZyBsaXN0cy4KLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RJdGVt
RWxlbWVudCA9IGNyZWF0ZUxpc3RJdGVtRWxlbWVudCgmZG9jdW1lbnQoKSk7Ci0gICAgUmVmUHRy
PEhUTUxFbGVtZW50PiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQo
KSk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0SXRlbUVsZW1lbnQgPSBjcmVhdGVMaXN0
SXRlbUVsZW1lbnQoZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBwbGFjZWhv
bGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKICAgICBhcHBlbmROb2RlKHBs
YWNlaG9sZGVyLCBsaXN0SXRlbUVsZW1lbnQpOwogCiAgICAgLy8gUGxhY2UgbGlzdCBpdGVtIGlu
dG8gYWRqb2luaW5nIGxpc3RzLgpAQCAtMzUyLDcgKzM1MSw3IEBAIFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjpsaXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQ
b3NpdGlvCiAgICAgICAgIGluc2VydE5vZGVBdChsaXN0SXRlbUVsZW1lbnQsIHBvc2l0aW9uQmVm
b3JlTm9kZShuZXh0TGlzdCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDcmVhdGUgdGhlIGxp
c3QuCi0gICAgICAgIGxpc3RFbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnQoJmRvY3VtZW50KCks
IGxpc3RUYWcpOworICAgICAgICBsaXN0RWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KGRvY3Vt
ZW50KCksIGxpc3RUYWcpOwogICAgICAgICBhcHBlbmROb2RlKGxpc3RJdGVtRWxlbWVudCwgbGlz
dEVsZW1lbnQpOwogCiAgICAgICAgIGlmIChzdGFydCA9PSBlbmQgJiYgaXNCbG9jayhzdGFydC5k
ZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpc3RDb21tYW5kLmgKaW5kZXggYTBkNTBkMy4uYjgxYWU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuaApAQCAtMzYsMTcgKzM2LDE3IEBA
IGNsYXNzIEluc2VydExpc3RDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsK
IHB1YmxpYzoKICAgICBlbnVtIFR5cGUgeyBPcmRlcmVkTGlzdCwgVW5vcmRlcmVkTGlzdCB9Owog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFR5cGUgbGlzdFR5cGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zZXJ0
TGlzdENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFR5cGUgbGlzdFR5cGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc2VydExpc3RDb21tYW5kKGRvY3Vt
ZW50LCBsaXN0VHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxFbGVt
ZW50PiBpbnNlcnRMaXN0KERvY3VtZW50JiwgVHlwZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTEVsZW1lbnQ+IGluc2VydExpc3QoRG9jdW1lbnQqLCBUeXBlKTsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgcHJlc2VydmVzVHlwaW5nU3R5bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
IHByaXZhdGU6Ci0gICAgSW5zZXJ0TGlzdENvbW1hbmQoRG9jdW1lbnQmLCBUeXBlKTsKKyAgICBJ
bnNlcnRMaXN0Q29tbWFuZChEb2N1bWVudCosIFR5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIGRv
QXBwbHkoKTsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIEVkaXRBY3Rpb25JbnNlcnRMaXN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCmluZGV4IDk0Zjk4ZWYuLjkyZTczNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1h
bmQuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zZXJ0Tm9k
ZUJlZm9yZUNvbW1hbmQ6Okluc2VydE5vZGVCZWZvcmVDb21tYW5kKFBhc3NSZWZQdHI8Tm9kZT4g
aW5zZXJ0Q2hpbGQsIFBhc3NSZWZQdHI8Tm9kZT4gcmVmQ2hpbGQsCiAgICAgU2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFi
bGUpCi0gICAgOiBTaW1wbGVFZGl0Q29tbWFuZChyZWZDaGlsZC0+ZG9jdW1lbnQoKSkKKyAgICA6
IFNpbXBsZUVkaXRDb21tYW5kKCZyZWZDaGlsZC0+ZG9jdW1lbnQoKSkKICAgICAsIG1faW5zZXJ0
Q2hpbGQoaW5zZXJ0Q2hpbGQpCiAgICAgLCBtX3JlZkNoaWxkKHJlZkNoaWxkKQogICAgICwgbV9z
aG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZShzaG91bGRBc3N1bWVDb250ZW50SXNB
bHdheXNFZGl0YWJsZSkKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBJbnNlcnROb2RlQmVmb3JlQ29t
bWFuZDo6ZG9BcHBseSgpCiAKICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShtX2luc2VydENoaWxk
LmdldCgpLCBtX3JlZkNoaWxkLmdldCgpLCBJR05PUkVfRVhDRVBUSU9OLCBBdHRhY2hMYXppbHkp
OwogCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FY
T2JqZWN0Q2FjaGUoKSkKKyAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgp
LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPm5vZGVUZXh0Q2hhbmdl
Tm90aWZpY2F0aW9uKG1faW5zZXJ0Q2hpbGQuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dElu
c2VydGVkLCAwLCBtX2luc2VydENoaWxkLT5ub2RlVmFsdWUoKSk7CiB9CiAKQEAgLTY3LDcgKzY3
LDcgQEAgdm9pZCBJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gTmVlZCB0byBub3RpZnkgdGhpcyBiZWZvcmUgYWN0dWFsbHkgZGVs
ZXRpbmcgdGhlIHRleHQKLSAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgp
LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAgICBjYWNoZS0+bm9k
ZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obV9pbnNlcnRDaGlsZC5nZXQoKSwgQVhPYmplY3RDYWNo
ZTo6QVhUZXh0RGVsZXRlZCwgMCwgbV9pbnNlcnRDaGlsZC0+bm9kZVZhbHVlKCkpOwogCiAgICAg
bV9pbnNlcnRDaGlsZC0+cmVtb3ZlKElHTk9SRV9FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5j
cHAKaW5kZXggMzFhNDVjNy4uNzU3NjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCkBAIC02MCw3
ICs2MCw3IEBAIHN0YXRpYyBFbGVtZW50KiBoaWdoZXN0VmlzdWFsbHlFcXVpdmFsZW50RGl2QmVs
b3dSb290KEVsZW1lbnQqIHN0YXJ0QmxvY2spCiAgICAgcmV0dXJuIGN1ckJsb2NrOwogfQogCi1J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBtdXN0VXNlRGVmYXVsdFBhcmFncmFwaEVs
ZW1lbnQsIGJvb2wgcGFzdGVCbG9ja3F1dG9lSW50b1VucXVvdGVkQXJlYSkKK0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQ6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQoRG9j
dW1lbnQgKmRvY3VtZW50LCBib29sIG11c3RVc2VEZWZhdWx0UGFyYWdyYXBoRWxlbWVudCwgYm9v
bCBwYXN0ZUJsb2NrcXV0b2VJbnRvVW5xdW90ZWRBcmVhKSAKICAgICA6IENvbXBvc2l0ZUVkaXRD
b21tYW5kKGRvY3VtZW50KQogICAgICwgbV9tdXN0VXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQo
bXVzdFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KQogICAgICwgbV9wYXN0ZUJsb2NrcXV0b2VJ
bnRvVW5xdW90ZWRBcmVhKHBhc3RlQmxvY2txdXRvZUludG9VbnF1b3RlZEFyZWEpCkBAIC04Myw3
ICs4Myw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6Y2FsY3VsYXRl
U3R5bGVCZWZvcmVJbnNlcnRpb24oY29uc3QgUG9zaXRpCiAKICAgICBBU1NFUlQocG9zLmlzTm90
TnVsbCgpKTsKICAgICBtX3N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zLCBFZGl0aW5n
U3R5bGU6OkVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwotICAgIG1fc3R5bGUtPm1lcmdlVHlw
aW5nU3R5bGUocG9zLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSk7CisgICAgbV9zdHlsZS0+bWVy
Z2VUeXBpbmdTdHlsZSgmcG9zLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSk7CiB9CiAKIHZvaWQg
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6YXBwbHlTdHlsZUFmdGVySW5zZXJ0aW9u
KE5vZGUqIG9yaWdpbmFsRW5jbG9zaW5nQmxvY2spCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB2b2lk
IEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIENyZWF0
ZSBibG9jayB0byBiZSBpbnNlcnRlZC4KICAgICBSZWZQdHI8RWxlbWVudD4gYmxvY2tUb0luc2Vy
dDsKICAgICBpZiAoc3RhcnRCbG9jay0+aXNSb290RWRpdGFibGVFbGVtZW50KCkpIHsKLSAgICAg
ICAgYmxvY2tUb0luc2VydCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KCZkb2N1bWVu
dCgpKTsKKyAgICAgICAgYmxvY2tUb0luc2VydCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVt
ZW50KGRvY3VtZW50KCkpOwogICAgICAgICBuZXN0TmV3QmxvY2sgPSB0cnVlOwogICAgIH0gZWxz
ZSBpZiAoc2hvdWxkVXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoc3RhcnRCbG9jay5nZXQoKSkp
IAotICAgICAgICBibG9ja1RvSW5zZXJ0ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQo
JmRvY3VtZW50KCkpOworICAgICAgICBibG9ja1RvSW5zZXJ0ID0gY3JlYXRlRGVmYXVsdFBhcmFn
cmFwaEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICBibG9ja1RvSW5zZXJ0
ID0gc3RhcnRCbG9jay0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CiAKQEAgLTIxOCw3
ICsyMTgsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHko
KQogICAgICAgICAgICAgaWYgKGlzRmlyc3RJbkJsb2NrICYmICFsaW5lQnJlYWtFeGlzdHNBdFZp
c2libGVQb3NpdGlvbih2aXNpYmxlUG9zKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBibG9j
ayBpcyBlbXB0eS4gIENyZWF0ZSBhbiBlbXB0eSBibG9jayB0bwogICAgICAgICAgICAgICAgIC8v
IHJlcHJlc2VudCB0aGUgcGFyYWdyYXBoIHRoYXQgd2UncmUgbGVhdmluZy4KLSAgICAgICAgICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gZXh0cmFCbG9jayA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhF
bGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZXh0
cmFCbG9jayA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOwogICAg
ICAgICAgICAgICAgIGFwcGVuZE5vZGUoZXh0cmFCbG9jaywgc3RhcnRCbG9jayk7CiAgICAgICAg
ICAgICAgICAgYXBwZW5kQmxvY2tQbGFjZWhvbGRlcihleHRyYUJsb2NrKTsKICAgICAgICAgICAg
IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1h
bmQ6OmRvQXBwbHkoKQogICAgIC8vIGl0IGlmIHZpc2libGVQb3MgaXMgYXQgdGhlIHN0YXJ0IG9m
IGEgcGFyYWdyYXBoIHNvIHRoYXQgdGhlIAogICAgIC8vIGNvbnRlbnQgd2lsbCBtb3ZlIGRvd24g
YSBsaW5lLgogICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVBvcykpIHsKLSAgICAg
ICAgUmVmUHRyPEVsZW1lbnQ+IGJyID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKTsK
KyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGJyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50
KCkpOwogICAgICAgICBpbnNlcnROb2RlQXQoYnIuZ2V0KCksIGluc2VydGlvblBvc2l0aW9uKTsK
ICAgICAgICAgaW5zZXJ0aW9uUG9zaXRpb24gPSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGJy
LmdldCgpKTsKICAgICAgICAgLy8gSWYgdGhlIGluc2VydGlvbiBwb2ludCBpcyBhIGJyZWFrIGVs
ZW1lbnQsIHRoZXJlIGlzIG5vdGhpbmcgZWxzZQpAQCAtMzYzLDEzICszNjMsMTMgQEAgdm9pZCBJ
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAgICBlbHNlCiAgICAg
ICAgIGluc2VydE5vZGVBZnRlcihibG9ja1RvSW5zZXJ0LmdldCgpLCBzdGFydEJsb2NrKTsKIAot
ICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Cisg
ICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAK
ICAgICAvLyBJZiB0aGUgcGFyYWdyYXBoIHNlcGFyYXRvciB3YXMgaW5zZXJ0ZWQgYXQgdGhlIGVu
ZCBvZiBhIHBhcmFncmFwaCwgYW4gZW1wdHkgbGluZSBtdXN0IGJlCiAgICAgLy8gY3JlYXRlZC4g
IEFsbCBvZiB0aGUgbm9kZXMsIHN0YXJ0aW5nIGF0IHZpc2libGVQb3MsIGFyZSBhYm91dCB0byBi
ZSBhZGRlZCB0byB0aGUgbmV3IHBhcmFncmFwaCAKICAgICAvLyBlbGVtZW50LiAgSWYgdGhlIGZp
cnN0IG5vZGUgdG8gYmUgaW5zZXJ0ZWQgd29uJ3QgYmUgb25lIHRoYXQgd2lsbCBob2xkIGFuIGVt
cHR5IGxpbmUgb3BlbiwgYWRkIGEgYnIuCiAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJs
ZVBvcykgJiYgIWxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3MpKQot
ICAgICAgICBhcHBlbmROb2RlKGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQoKSkuZ2V0KCks
IGJsb2NrVG9JbnNlcnQuZ2V0KCkpOworICAgICAgICBhcHBlbmROb2RlKGNyZWF0ZUJyZWFrRWxl
bWVudChkb2N1bWVudCgpKS5nZXQoKSwgYmxvY2tUb0luc2VydC5nZXQoKSk7CiAKICAgICAvLyBN
b3ZlIHRoZSBzdGFydCBub2RlIGFuZCB0aGUgc2libGluZ3Mgb2YgdGhlIHN0YXJ0IG5vZGUuCiAg
ICAgaWYgKFZpc2libGVQb3NpdGlvbihpbnNlcnRpb25Qb3NpdGlvbikgIT0gVmlzaWJsZVBvc2l0
aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShibG9ja1RvSW5zZXJ0LmdldCgpKSkpIHsKQEAgLTM5NSw3
ICszOTUsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHko
KQogCiAgICAgLy8gSGFuZGxlIHdoaXRlc3BhY2UgdGhhdCBvY2N1cnMgYWZ0ZXIgdGhlIHNwbGl0
CiAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJTcGxpdC5pc05vdE51bGwoKSkgewotICAgICAgICBkb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAg
ICAgaWYgKCFwb3NpdGlvbkFmdGVyU3BsaXQuaXNSZW5kZXJlZENoYXJhY3RlcigpKSB7CiAgICAg
ICAgICAgICAvLyBDbGVhciBvdXQgYWxsIHdoaXRlc3BhY2UgYW5kIGluc2VydCBvbmUgbm9uLWJy
ZWFraW5nIHNwYWNlCiAgICAgICAgICAgICBBU1NFUlQoIXBvc2l0aW9uQWZ0ZXJTcGxpdC5jb250
YWluZXJOb2RlKCktPnJlbmRlcmVyKCkgfHwgcG9zaXRpb25BZnRlclNwbGl0LmNvbnRhaW5lck5v
ZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21t
YW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQuaAppbmRleCA4MGU3Nzk1Li4xMWUxNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaApAQCAtMzQs
MTMgKzM0LDEzIEBAIGNsYXNzIEVkaXRpbmdTdHlsZTsKIAogY2xhc3MgSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZD4g
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCB1c2VEZWZhdWx0UGFyYWdyYXBoRWxlbWVu
dCA9IGZhbHNlLCBib29sIHBhc3RlQmxvY2txdXRvZUludG9VbnF1b3RlZEFyZWEgPSBmYWxzZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kPiBj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50
ID0gZmFsc2UsIGJvb2wgcGFzdGVCbG9ja3F1dG9lSW50b1VucXVvdGVkQXJlYSA9IGZhbHNlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kKGRvY3VtZW50LCB1c2VEZWZhdWx0UGFyYWdyYXBoRWxlbWVudCwgcGFzdGVCbG9j
a3F1dG9lSW50b1VucXVvdGVkQXJlYSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBJbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kKERvY3VtZW50JiwgYm9vbCB1c2VEZWZhdWx0UGFyYWdy
YXBoRWxlbWVudCwgYm9vbCBwYXN0ZUJsb2NrcXV0b2VJbnRvVW5xdW90ZWRBcmVhKTsKKyAgICBJ
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kKERvY3VtZW50KiwgYm9vbCB1c2VEZWZhdWx0
UGFyYWdyYXBoRWxlbWVudCwgYm9vbCBwYXN0ZUJsb2NrcXV0b2VJbnRvVW5xdW90ZWRBcmVhKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKaW5kZXggNzYxNWNmMC4uOTNhNDEwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNlcnRUZXh0Q29tbWFuZDo6SW5zZXJ0VGV4
dENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2Vs
ZWN0SW5zZXJ0ZWRUZXh0LCBSZWJhbGFuY2VUeXBlIHJlYmFsYW5jZVR5cGUpCitJbnNlcnRUZXh0
Q29tbWFuZDo6SW5zZXJ0VGV4dENvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0LCBSZWJhbGFuY2VUeXBlIHJlYmFsYW5j
ZVR5cGUpIAogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBtX3Rl
eHQodGV4dCkKICAgICAsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KHNlbGVjdEluc2VydGVkVGV4dCkK
QEAgLTQ1LDcgKzQ1LDcgQEAgSW5zZXJ0VGV4dENvbW1hbmQ6Okluc2VydFRleHRDb21tYW5kKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib28KIHsKIH0KIAotSW5zZXJ0
VGV4dENvbW1hbmQ6Okluc2VydFRleHRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBQYXNzUmVmUHRyPFRleHRJbnNlcnRpb25NYXJrZXJTdXBwbGllcj4gbWFy
a2VyU3VwcGxpZXIpCitJbnNlcnRUZXh0Q29tbWFuZDo6SW5zZXJ0VGV4dENvbW1hbmQoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIFBhc3NSZWZQdHI8VGV4dEluc2VydGlv
bk1hcmtlclN1cHBsaWVyPiBtYXJrZXJTdXBwbGllcikKICAgICA6IENvbXBvc2l0ZUVkaXRDb21t
YW5kKGRvY3VtZW50KQogICAgICwgbV90ZXh0KHRleHQpCiAgICAgLCBtX3NlbGVjdEluc2VydGVk
VGV4dChmYWxzZSkKQEAgLTU4LDcgKzU4LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6
OnBvc2l0aW9uSW5zaWRlVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHApCiB7CiAgICAgUG9zaXRp
b24gcG9zID0gcDsKICAgICBpZiAoaXNUYWJTcGFuVGV4dE5vZGUocG9zLmFuY2hvck5vZGUoKSkp
IHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IHRleHROb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0
aW5nVGV4dE5vZGUoIiIpOworICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBkb2N1bWVu
dCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoIiIpOwogICAgICAgICBpbnNlcnROb2RlQXRUYWJT
cGFuUG9zaXRpb24odGV4dE5vZGUuZ2V0KCksIHBvcyk7CiAgICAgICAgIHJldHVybiBmaXJzdFBv
c2l0aW9uSW5Ob2RlKHRleHROb2RlLmdldCgpKTsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIFBv
c2l0aW9uIEluc2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKGNvbnN0IFBv
c2l0aW9uJiBwKQogICAgIC8vIFByZXBhcmUgZm9yIHRleHQgaW5wdXQgYnkgbG9va2luZyBhdCB0
aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgogICAgIC8vIEl0IG1heSBiZSBuZWNlc3NhcnkgdG8gaW5z
ZXJ0IGEgdGV4dCBub2RlIHRvIHJlY2VpdmUgY2hhcmFjdGVycy4KICAgICBpZiAoIXBvcy5jb250
YWluZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5v
ZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiIik7CisgICAgICAgIFJlZlB0
cjxOb2RlPiB0ZXh0Tm9kZSA9IGRvY3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiIik7
CiAgICAgICAgIGluc2VydE5vZGVBdCh0ZXh0Tm9kZS5nZXQoKSwgcG9zKTsKICAgICAgICAgcmV0
dXJuIGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dE5vZGUuZ2V0KCkpOwogICAgIH0KQEAgLTE0Niw3
ICsxNDYsNyBAQCB2b2lkIEluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgLy8g
YW55dGhpbmcgb3RoZXIgdGhhbiBOb1NlbGVjdGlvbi4gVGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlv
biByZXF1aXJlcyBhIHJlYWwgZW5kaW5nU2VsZWN0aW9uLCBzbyBiYWlsIG91dC4KICAgICAgICAg
aWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
IH0gZWxzZSBpZiAoZnJhbWUoKS5lZGl0b3IoKS5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsK
KyAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzT3ZlcndyaXRl
TW9kZUVuYWJsZWQoKSkgewogICAgICAgICBpZiAocGVyZm9ybU92ZXJ3cml0ZShtX3RleHQsIG1f
c2VsZWN0SW5zZXJ0ZWRUZXh0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjIs
NyArMjIyLDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgc2V0RW5k
aW5nU2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24p
OwogCiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGEgdHlwaW5nIHN0eWxl
LgotICAgIGlmIChSZWZQdHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IGZyYW1lKCkuc2Vs
ZWN0aW9uKCkudHlwaW5nU3R5bGUoKSkgeworICAgIGlmIChSZWZQdHI8RWRpdGluZ1N0eWxlPiB0
eXBpbmdTdHlsZSA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLnR5cGluZ1N0eWxl
KCkpIHsKICAgICAgICAgdHlwaW5nU3R5bGUtPnByZXBhcmVUb0FwcGx5QXQoZW5kUG9zaXRpb24s
IEVkaXRpbmdTdHlsZTo6UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgaWYgKCF0
eXBpbmdTdHlsZS0+aXNFbXB0eSgpKQogICAgICAgICAgICAgYXBwbHlTdHlsZSh0eXBpbmdTdHls
ZS5nZXQoKSk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6
Omluc2VydFRhYihjb25zdCBQb3NpdGlvbiYgcG9zKQogICAgIH0KICAgICAKICAgICAvLyBjcmVh
dGUgbmV3IHRhYiBzcGFuCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHNwYW5Ob2RlID0gY3JlYXRlVGFi
U3BhbkVsZW1lbnQoJmRvY3VtZW50KCkpOworICAgIFJlZlB0cjxFbGVtZW50PiBzcGFuTm9kZSA9
IGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50KCkpOwogICAgIAogICAgIC8vIHBsYWNlIGl0
CiAgICAgaWYgKCFub2RlLT5pc1RleHROb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0VGV4dENvbW1hbmQuaAppbmRleCA3MWQ5ZjY0Li5lM2NmMGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCkBAIC00OCwyMSArNDgsMjEgQEAgcHVi
bGljOgogICAgICAgICBSZWJhbGFuY2VBbGxXaGl0ZXNwYWNlcwogICAgIH07CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNlcnRUZXh0Q29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCA9IGZhbHNlLAor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc2VydFRleHRDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0ID0g
ZmFsc2UsCiAgICAgICAgIFJlYmFsYW5jZVR5cGUgcmViYWxhbmNlVHlwZSA9IFJlYmFsYW5jZUxl
YWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2VzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbnNlcnRUZXh0Q29tbWFuZChkb2N1bWVudCwgdGV4dCwgc2VsZWN0SW5zZXJ0ZWRU
ZXh0LCByZWJhbGFuY2VUeXBlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
ZXJ0VGV4dENvbW1hbmQ+IGNyZWF0ZVdpdGhNYXJrZXJTdXBwbGllcihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUGFzc1JlZlB0cjxUZXh0SW5zZXJ0aW9uTWFya2VyU3Vw
cGxpZXI+IG1hcmtlclN1cHBsaWVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc2VydFRleHRD
b21tYW5kPiBjcmVhdGVXaXRoTWFya2VyU3VwcGxpZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIHRleHQsIFBhc3NSZWZQdHI8VGV4dEluc2VydGlvbk1hcmtlclN1cHBsaWVyPiBt
YXJrZXJTdXBwbGllcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zZXJ0
VGV4dENvbW1hbmQoZG9jdW1lbnQsIHRleHQsIG1hcmtlclN1cHBsaWVyKSk7CiAgICAgfQogCiBw
cml2YXRlOgogCi0gICAgSW5zZXJ0VGV4dENvbW1hbmQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0LCBSZWJhbGFuY2VUeXBlKTsKLSAgICBJbnNl
cnRUZXh0Q29tbWFuZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGV4dCwgUGFzc1JlZlB0cjxU
ZXh0SW5zZXJ0aW9uTWFya2VyU3VwcGxpZXI+KTsKKyAgICBJbnNlcnRUZXh0Q29tbWFuZChEb2N1
bWVudCosIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQsIFJlYmFs
YW5jZVR5cGUpOworICAgIEluc2VydFRleHRDb21tYW5kKERvY3VtZW50KiwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBQYXNzUmVmUHRyPFRleHRJbnNlcnRpb25NYXJrZXJTdXBwbGllcj4pOwogCiAgICAg
dm9pZCBkZWxldGVDaGFyYWN0ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9NYXJrdXBBY2N1bXVsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBB
Y2N1bXVsYXRvci5oCmluZGV4IDE0MjU1OWEuLmI4NzI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIAotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0
cmluZywgQXRvbWljU3RyaW5nSW1wbCo+IE5hbWVzcGFjZXM7Cit0eXBlZGVmIEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiBOYW1lc3BhY2VzOwogCiBlbnVtIEVu
dGl0eU1hc2sgewogICAgIEVudGl0eUFtcCA9IDB4MDAwMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAKaW5kZXgg
MThhMTU1NS4uZGUzNWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6Ok1lcmdl
SWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4gZmlyc3QsIFBhc3NS
ZWZQdHI8RWxlbWVudD4gc2Vjb25kKQotICAgIDogU2ltcGxlRWRpdENvbW1hbmQoZmlyc3QtPmRv
Y3VtZW50KCkpCisgICAgOiBTaW1wbGVFZGl0Q29tbWFuZCgmZmlyc3QtPmRvY3VtZW50KCkpCiAg
ICAgLCBtX2VsZW1lbnQxKGZpcnN0KQogICAgICwgbV9lbGVtZW50MihzZWNvbmQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAK
aW5kZXggYzBjNTdlOC4uYjE5YjFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6Ok1vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50KQorTW9kaWZ5U2Vs
ZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChE
b2N1bWVudCogZG9jdW1lbnQpIAogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQp
CiB7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWxD
b21tYW5kOjphcHBlbmRTaWJsaW5nTm9kZVJhbmdlKE5vZGUqIHN0YXJ0Tm9kZSwgTm8KICAgICB9
CiB9CiAKLUluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6SW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSBsaXN0VHlwZSkKK0lu
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWxDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgVHlwZSBsaXN0VHlwZSkKICAgICA6IE1vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBtX2xpc3RUeXBlKGxp
c3RUeXBlKQogewpAQCAtMTkwLDEwICsxOTAsMTAgQEAgdm9pZCBJbmNyZWFzZVNlbGVjdGlvbkxp
c3RMZXZlbENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnQg
PSBuZXdQYXJlbnQtPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBPcmRlcmVkTGlzdDoKLSAgICAgICAgICAgICAg
ICBuZXdQYXJlbnQgPSBjcmVhdGVPcmRlcmVkTGlzdEVsZW1lbnQoJmRvY3VtZW50KCkpOworICAg
ICAgICAgICAgICAgIG5ld1BhcmVudCA9IGNyZWF0ZU9yZGVyZWRMaXN0RWxlbWVudChkb2N1bWVu
dCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5vcmRlcmVk
TGlzdDoKLSAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBjcmVhdGVVbm9yZGVyZWRMaXN0RWxl
bWVudCgmZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgbmV3UGFyZW50ID0gY3JlYXRlVW5v
cmRlcmVkTGlzdEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShuZXdQYXJlbnQsIHN0YXJ0TGlzdENo
aWxkKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IEluY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRAogewogICAg
IEFTU0VSVChkb2N1bWVudCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBS
ZWZQdHI8SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kPiBjb21tYW5kID0gY3JlYXRl
KCpkb2N1bWVudCwgdHlwZSk7CisgICAgUmVmUHRyPEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
Q29tbWFuZD4gY29tbWFuZCA9IGNyZWF0ZShkb2N1bWVudCwgdHlwZSk7CiAgICAgY29tbWFuZC0+
YXBwbHkoKTsKICAgICByZXR1cm4gY29tbWFuZC0+bV9saXN0RWxlbWVudC5yZWxlYXNlKCk7CiB9
CkBAIC0yMzMsNyArMjMzLDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxp
c3RMZXZlbENvbW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW4KICAgICByZXR1cm4g
aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoZG9jdW1lbnQsIFVub3JkZXJlZExpc3QpOwogfQog
Ci1EZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OkRlY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpCitEZWNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbENvbW1hbmQ6OkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChEb2N1bWVudCog
ZG9jdW1lbnQpIAogICAgIDogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChkb2N1bWVu
dCkKIHsKIH0KQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERlY3JlYXNlU2VsZWN0aW9uTGlzdExl
dmVsQ29tbWFuZDo6ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqIGRvYwogewog
ICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LT5mcmFtZSgpKTsKLSAg
ICBhcHBseUNvbW1hbmQoY3JlYXRlKCpkb2N1bWVudCkpOworICAgIGFwcGx5Q29tbWFuZChjcmVh
dGUoZG9jdW1lbnQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW9k
aWZ5U2VsZWN0aW9uTGlzdExldmVsLmgKaW5kZXggMDYxZjNlNS4uZDQ4NmVhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oCkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEl0IGlzIG5vdCB1c2VkIG9uIGl0
cyBvd24uCiBjbGFzcyBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kIDogcHVibGljIENv
bXBvc2l0ZUVkaXRDb21tYW5kIHsKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBNb2RpZnlTZWxl
Y3Rpb25MaXN0TGV2ZWxDb21tYW5kKERvY3VtZW50Jik7CisgICAgZXhwbGljaXQgTW9kaWZ5U2Vs
ZWN0aW9uTGlzdExldmVsQ29tbWFuZChEb2N1bWVudCopOwogICAgIAogICAgIHZvaWQgYXBwZW5k
U2libGluZ05vZGVSYW5nZShOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUsIEVsZW1lbnQq
IG5ld1BhcmVudCk7CiAgICAgdm9pZCBpbnNlcnRTaWJsaW5nTm9kZVJhbmdlQmVmb3JlKE5vZGUq
IHN0YXJ0Tm9kZSwgTm9kZSogZW5kTm9kZSwgTm9kZSogcmVmTm9kZSk7CkBAIC01NywxMiArNTcs
MTIgQEAgcHJpdmF0ZToKICAgICBlbnVtIFR5cGUgeyBJbmhlcml0ZWRMaXN0VHlwZSwgT3JkZXJl
ZExpc3QsIFVub3JkZXJlZExpc3QgfTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlPiBpbmNy
ZWFzZVNlbGVjdGlvbkxpc3RMZXZlbChEb2N1bWVudCosIFR5cGUpOwogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kPiBjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBUeXBlIHR5cGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBUeXBl
IHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsQ29tbWFuZChkb2N1bWVudCwgdHlwZSkpOwogICAgIH0KICAgICAKLSAgICBJ
bmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoRG9jdW1lbnQmLCBUeXBlKTsKKyAgICBJ
bmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoRG9jdW1lbnQqLCBUeXBlKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAKQEAgLTc3LDEyICs3NywxMiBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqKTsKIAog
cHJpdmF0ZToKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbENvbW1hbmQoZG9jdW1lbnQpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBE
ZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoRG9jdW1lbnQmKTsKKyAgICBleHBsaWNp
dCBEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoRG9jdW1lbnQqKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkb0FwcGx5KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01v
dmVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3NTgwYjdkLi5hNDNhYTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzIsMTEg
KzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTW92ZVNlbGVjdGlvbkNvbW1hbmQ6Ok1v
dmVTZWxlY3Rpb25Db21tYW5kKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQs
IGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBzbWFydEluc2VydCwgYm9vbCBzbWFydERl
bGV0ZSkgCi0gICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChwb3NpdGlvbi5hbmNob3JOb2RlKCkt
PmRvY3VtZW50KCkpCi0gICAgLCBtX2ZyYWdtZW50KGZyYWdtZW50KQotICAgICwgbV9wb3NpdGlv
bihwb3NpdGlvbikKLSAgICAsIG1fc21hcnRJbnNlcnQoc21hcnRJbnNlcnQpCi0gICAgLCBtX3Nt
YXJ0RGVsZXRlKHNtYXJ0RGVsZXRlKQorICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoJnBvc2l0
aW9uLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSksIG1fZnJhZ21lbnQoZnJhZ21lbnQpLCBtX3Bv
c2l0aW9uKHBvc2l0aW9uKSwgbV9zbWFydEluc2VydChzbWFydEluc2VydCksIG1fc21hcnREZWxl
dGUoc21hcnREZWxldGUpCiB7CiAgICAgQVNTRVJUKG1fZnJhZ21lbnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwCmluZGV4
IGVhNWU1ZjYuLjQzMDMxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQ6OlJlbW92ZUNTU1Byb3BlcnR5
Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWZQdHI8U3R5bGVkRWxlbWVudD4gZWxl
bWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKK1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6
UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxT
dHlsZWRFbGVtZW50PiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQogICAgIDogU2lt
cGxlRWRpdENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAs
IG1fcHJvcGVydHkocHJvcGVydHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVDU1NQcm9wZXJ0eUNvbW1hbmQuaAppbmRleCAyMDY4MmYzLi5kMjY3ZTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgKQEAgLTM1
LDEzICszNSwxMyBAQCBjbGFzcyBTdHlsZWRFbGVtZW50OwogCiBjbGFzcyBSZW1vdmVDU1NQcm9w
ZXJ0eUNvbW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENvbW1hbmQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZD4gY3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgUGFzc1JlZlB0cjxTdHlsZWRFbGVtZW50PiBlbGVtZW50LCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbW92ZUNTU1Byb3BlcnR5Q29t
bWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxTdHlsZWRFbGVtZW50
PiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQoZG9jdW1lbnQsIGVsZW1lbnQs
IHByb3BlcnR5KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFJlbW92ZUNTU1Byb3BlcnR5Q29t
bWFuZChEb2N1bWVudCYsIFBhc3NSZWZQdHI8U3R5bGVkRWxlbWVudD4sIENTU1Byb3BlcnR5SUQp
OworICAgIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZChEb2N1bWVudCosIFBhc3NSZWZQdHI8U3R5
bGVkRWxlbWVudD4sIENTU1Byb3BlcnR5SUQgcHJvcGVydHkpOwogICAgIH5SZW1vdmVDU1NQcm9w
ZXJ0eUNvbW1hbmQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgT1ZFUlJJREU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAppbmRleCA1
ZTUwZjhhLi42MTM0ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZUZvcm1hdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9y
bWF0Q29tbWFuZC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW1vdmVGb3JtYXRDb21tYW5kOjpSZW1vdmVG
b3JtYXRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKK1JlbW92ZUZvcm1hdENvbW1hbmQ6OlJl
bW92ZUZvcm1hdENvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogQ29tcG9zaXRlRWRp
dENvbW1hbmQoZG9jdW1lbnQpCiB7CiB9CkBAIC03OSwxMiArNzksMTQgQEAgc3RhdGljIGJvb2wg
aXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQog
CiB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQogewotICAgIGlmICghZnJhbWUo
KS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkpCisg
ICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKworICAgIGlmICghZnJhbWUt
PnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uT3JwaGFuZWRDYXJldE9yUmFuZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHRoZSBkZWZhdWx0IHN0eWxlIGZvciB0aGlzIGVk
aXRhYmxlIHJvb3QsIGl0J3MgdGhlIHN0eWxlIHRoYXQgd2UnbGwgZ2l2ZSB0aGUKICAgICAvLyBj
b250ZW50IHRoYXQgd2UncmUgb3BlcmF0aW5nIG9uLgotICAgIE5vZGUqIHJvb3QgPSBmcmFtZSgp
LnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBOb2RlKiByb290ID0gZnJh
bWUtPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsKIAogICAg
IC8vIFdlIHdhbnQgdG8gcmVtb3ZlIGV2ZXJ5dGhpbmcgYnV0IHRyYW5zcGFyZW50IGJhY2tncm91
bmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1h
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5oCmluZGV4
IDE5MTgxNDUuLmNkNDQ2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlRm9ybWF0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9y
bWF0Q29tbWFuZC5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZW1vdmVGb3JtYXRDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW1vdmVGb3JtYXRDb21tYW5kPiBjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbW92ZUZvcm1h
dENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbW92ZUZvcm1hdENvbW1hbmQoZG9jdW1lbnQpKTsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUmVtb3ZlRm9ybWF0Q29tbWFuZChEb2N1bWVudCYpOwor
ICAgIGV4cGxpY2l0IFJlbW92ZUZvcm1hdENvbW1hbmQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkb0FwcGx5KCk7CiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24o
KSBjb25zdCB7IHJldHVybiBFZGl0QWN0aW9uVW5zcGVjaWZpZWQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggMGUxZDMwNS4uMGM0NDIyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVtb3ZlTm9kZUNvbW1hbmQ6OlJl
bW92ZU5vZGVDb21tYW5kKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNzdW1lQ29udGVu
dElzQWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCi0g
ICAgOiBTaW1wbGVFZGl0Q29tbWFuZChub2RlLT5kb2N1bWVudCgpKQorICAgIDogU2ltcGxlRWRp
dENvbW1hbmQoJm5vZGUtPmRvY3VtZW50KCkpCiAgICAgLCBtX25vZGUobm9kZSkKICAgICAsIG1f
c2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUoc2hvdWxkQXNzdW1lQ29udGVudElz
QWx3YXlzRWRpdGFibGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IGNhNGZi
N2IuLjQ2ZTIzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC0zMiw3ICszMiw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5D
b21tYW5kOjpSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZChQYXNzUmVmUHRyPE5v
ZGU+IG5vZGUsIFNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlIHNob3VsZEFzc3Vt
ZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQobm9k
ZS0+ZG9jdW1lbnQoKSkKKyAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKCZub2RlLT5kb2N1bWVu
dCgpKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX3Nob3VsZEFzc3VtZUNvbnRlbnRJc0Fs
d2F5c0VkaXRhYmxlKHNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggMjVjMjk0OC4u
NzQ5MGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIHBvc2l0
aW9uLmdldElubGluZUJveEFuZE9mZnNldChtX2lubGluZUJveCwgbV9vZmZzZXQpOwogICAgIGlm
IChtX2lubGluZUJveCkKLSAgICAgICAgbV9yZW5kZXJlciA9ICZtX2lubGluZUJveC0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgbV9yZW5kZXJlciA9IG1faW5saW5lQm94LT5yZW5kZXJlcigpOwogICAg
IGVsc2UKICAgICAgICAgbV9yZW5kZXJlciA9IHJlbmRlcmVyRnJvbVBvc2l0aW9uKHBvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCkpOwogfQpAQCAtOTIsNyArOTIsNyBAQCBSZW5kZXJlZFBvc2l0aW9u
OjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgRUFmZmluaXR5IGFm
ZmluaXR5KQogICAgICAgICByZXR1cm47CiAgICAgcG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zm
c2V0KGFmZmluaXR5LCBtX2lubGluZUJveCwgbV9vZmZzZXQpOwogICAgIGlmIChtX2lubGluZUJv
eCkKLSAgICAgICAgbV9yZW5kZXJlciA9ICZtX2lubGluZUJveC0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgbV9yZW5kZXJlciA9IG1faW5saW5lQm94LT5yZW5kZXJlcigpOwogICAgIGVsc2UKICAgICAg
ICAgbV9yZW5kZXJlciA9IHJlbmRlcmVyRnJvbVBvc2l0aW9uKHBvc2l0aW9uKTsKIH0KQEAgLTEz
OSw3ICsxMzksNyBAQCBSZW5kZXJlZFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRpb246OmxlZnRCb3Vu
ZGFyeU9mQmlkaVJ1bih1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbAogICAgIGRvIHsKICAgICAgICAg
SW5saW5lQm94KiBwcmV2ID0gYm94LT5wcmV2TGVhZkNoaWxkSWdub3JpbmdMaW5lQnJlYWsoKTsK
ICAgICAgICAgaWYgKCFwcmV2IHx8IHByZXYtPmJpZGlMZXZlbCgpIDwgYmlkaUxldmVsT2ZSdW4p
Ci0gICAgICAgICAgICByZXR1cm4gUmVuZGVyZWRQb3NpdGlvbigmYm94LT5yZW5kZXJlcigpLCBi
b3gsIGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBSZW5k
ZXJlZFBvc2l0aW9uKGJveC0+cmVuZGVyZXIoKSwgYm94LCBib3gtPmNhcmV0TGVmdG1vc3RPZmZz
ZXQoKSk7CiAgICAgICAgIGJveCA9IHByZXY7CiAgICAgfSB3aGlsZSAoYm94KTsKIApAQCAtMTU2
LDcgKzE1Niw3IEBAIFJlbmRlcmVkUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cmlnaHRCb3Vu
ZGFyeU9mQmlkaVJ1bih1bnNpZ25lZCBjaGFyIGJpZGlMZXZlCiAgICAgZG8gewogICAgICAgICBJ
bmxpbmVCb3gqIG5leHQgPSBib3gtPm5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwog
ICAgICAgICBpZiAoIW5leHQgfHwgbmV4dC0+YmlkaUxldmVsKCkgPCBiaWRpTGV2ZWxPZlJ1bikK
LSAgICAgICAgICAgIHJldHVybiBSZW5kZXJlZFBvc2l0aW9uKCZib3gtPnJlbmRlcmVyKCksIGJv
eCwgYm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBSZW5k
ZXJlZFBvc2l0aW9uKGJveC0+cmVuZGVyZXIoKSwgYm94LCBib3gtPmNhcmV0UmlnaHRtb3N0T2Zm
c2V0KCkpOwogICAgICAgICBib3ggPSBuZXh0OwogICAgIH0gd2hpbGUgKGJveCk7CiAKQEAgLTIx
MSw3ICsyMTEsNyBAQCBQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJv
dW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKICAgICBpZiAoYXRMZWZ0bW9zdE9mZnNldEluQm94KCkp
CiAgICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9yZW5kZXJlci0+
bm9kZSgpLCBtX29mZnNldCk7CiAKLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5leHRMZWFmQ2hpbGQoKS0+cmVuZGVyZXIoKS5ub2RlKCksIG5leHRMZWFmQ2hpbGQoKS0+
Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKTsKKyAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG5leHRMZWFmQ2hpbGQoKS0+cmVuZGVyZXIoKS0+bm9kZSgpLCBuZXh0TGVhZkNoaWxk
KCktPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSk7CiB9CiAKIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRp
b246OnBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKQEAgLTIyMSw3ICsy
MjEsNyBAQCBQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0UmlnaHRCb3VuZGFy
eU9mQmlEaVJ1bigpIGNvbnN0CiAgICAgaWYgKGF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSkKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX3JlbmRlcmVyLT5ub2Rl
KCksIG1fb2Zmc2V0KTsKIAotICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
cHJldkxlYWZDaGlsZCgpLT5yZW5kZXJlcigpLm5vZGUoKSwgcHJldkxlYWZDaGlsZCgpLT5jYXJl
dFJpZ2h0bW9zdE9mZnNldCgpKTsKKyAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKHByZXZMZWFmQ2hpbGQoKS0+cmVuZGVyZXIoKS0+bm9kZSgpLCBwcmV2TGVhZkNoaWxkKCkt
PmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkpOwogfQogCiBJbnRSZWN0IFJlbmRlcmVkUG9zaXRpb246
OmFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1h
bmQuY3BwCmluZGV4IDM4YmQwNmMuLjMyYzZiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCkBAIC00Miw3ICs0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZChQYXNz
UmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQotICAgIDogU2ltcGxlRWRpdENvbW1hbmQoZWxl
bWVudC0+ZG9jdW1lbnQoKSkKKyAgICA6IFNpbXBsZUVkaXRDb21tYW5kKCZlbGVtZW50LT5kb2N1
bWVudCgpKQogICAgICwgbV9lbGVtZW50VG9SZXBsYWNlKGVsZW1lbnQpCiB7CiAgICAgQVNTRVJU
KG1fZWxlbWVudFRvUmVwbGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDdhNjg2NzYuLjcxOTJiZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIGVudW0gRUZyYWdtZW50VHlwZSB7IEVtcHR5RnJhZ21lbnQsIFNpbmds
ZVRleHROb2RlRnJhZ21lbnQsIFRyZWVGcmFnbWVudCB9OwogY2xhc3MgUmVwbGFjZW1lbnRGcmFn
bWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGFjZW1lbnRGcmFnbWVudCk7CiBw
dWJsaWM6Ci0gICAgUmVwbGFjZW1lbnRGcmFnbWVudChEb2N1bWVudCYsIERvY3VtZW50RnJhZ21l
bnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAgUmVwbGFjZW1lbnRGcmFnbWVudChE
b2N1bWVudCosIERvY3VtZW50RnJhZ21lbnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAK
ICAgICBOb2RlKiBmaXJzdENoaWxkKCkgY29uc3Q7CiAgICAgTm9kZSogbGFzdENoaWxkKCkgY29u
c3Q7CkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBzdGF0aWMgUG9zaXRpb24gcG9zaXRpb25Bdm9pZGlu
Z1ByZWNlZGluZ05vZGVzKFBvc2l0aW9uIHBvcykKICAgICByZXR1cm4gcG9zOwogfQogCi1SZXBs
YWNlbWVudEZyYWdtZW50OjpSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwg
RG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVj
dGlvbikKLSAgICA6IG1fZG9jdW1lbnQoJmRvY3VtZW50KQotICAgICwgbV9mcmFnbWVudChmcmFn
bWVudCkKLSAgICAsIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFydChmYWxzZSkKLSAgICAs
IG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQoZmFsc2UpCitSZXBsYWNlbWVudEZyYWdtZW50
OjpSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRG9jdW1lbnRGcmFnbWVu
dCogZnJhZ21lbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKKyAgICA6IG1f
ZG9jdW1lbnQoZG9jdW1lbnQpLAorICAgICAgbV9mcmFnbWVudChmcmFnbWVudCksCisgICAgICBt
X2hhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQoZmFsc2UpLCAKKyAgICAgIG1faGFzSW50ZXJj
aGFuZ2VOZXdsaW5lQXRFbmQoZmFsc2UpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAg
ICByZXR1cm47CkBAIC0zNjUsNyArMzY1LDcgQEAgaW5saW5lIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6Okluc2VydGVkTm9kZXM6OmRpZFJlcGxhY2VOb2RlKE5vZGUqIG5vZGUsIE4KICAg
ICAgICAgbV9sYXN0Tm9kZUluc2VydGVkID0gbmV3Tm9kZTsKIH0KIAotUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwgQ29tbWFuZE9wdGlvbnMgb3B0aW9u
cywgRWRpdEFjdGlvbiBlZGl0QWN0aW9uKQorUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBmcmFnbWVudCwgQ29tbWFuZE9wdGlvbnMgb3B0aW9ucywgRWRpdEFjdGlvbiBl
ZGl0QWN0aW9uKQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBt
X3NlbGVjdFJlcGxhY2VtZW50KG9wdGlvbnMgJiBTZWxlY3RSZXBsYWNlbWVudCkKICAgICAsIG1f
c21hcnRSZXBsYWNlKG9wdGlvbnMgJiBTbWFydFJlcGxhY2UpCkBAIC01MDgsNyArNTA4LDcgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2Vl
cFN0eWxlU3BhbklubGluZShJbnNlcnQKICAgICAgICAgICAgIC8vIHN0eWxlcyBmcm9tIGJsb2Nr
cXVvdGVOb2RlIGFyZSBhbGxvd2VkIHRvIG92ZXJyaWRlIHRob3NlIGZyb20gdGhlIHNvdXJjZSBk
b2N1bWVudCwgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTMwOTg2PiBhbmQgPHJkYXI6Ly9wcm9ibGVt
LzUwODkzMjc+LgogICAgICAgICAgICAgTm9kZSogYmxvY2txdW90ZU5vZGUgPSBpc01haWxQYXN0
ZUFzUXVvdGF0aW9uTm9kZShjb250ZXh0KSA/IGNvbnRleHQgOiBlbmNsb3NpbmdOb2RlT2ZUeXBl
KGZpcnN0UG9zaXRpb25Jbk5vZGUoY29udGV4dCksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3Nz
RWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgICAgIGlmIChibG9ja3F1b3RlTm9kZSkKLSAgICAg
ICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0
KGVsZW1lbnQsIGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICAgICAgICAg
IG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoZWxlbWVudCwg
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpOwogCiAgICAgICAgICAgICBuZXdJbmxpbmVT
dHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KGVsZW1lbnQsIGNvbnRleHQpOwog
ICAgICAgICB9CkBAIC02NjcsNyArNjY3LDcgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVIYXNW
aXNpYmxlUmVuZGVyVGV4dChUZXh0KiB0ZXh0KQogCiB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpyZW1vdmVVbnJlbmRlcmVkVGV4dE5vZGVzQXRFbmRzKEluc2VydGVkTm9kZXMmIGluc2Vy
dGVkTm9kZXMpCiB7Ci0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKIAogICAgIE5vZGUqIGxhc3RMZWFmSW5zZXJ0ZWQgPSBpbnNlcnRlZE5vZGVz
Lmxhc3RMZWFmSW5zZXJ0ZWQoKTsKICAgICBpZiAobGFzdExlYWZJbnNlcnRlZCAmJiBsYXN0TGVh
Zkluc2VydGVkLT5pc1RleHROb2RlKCkgJiYgIW5vZGVIYXNWaXNpYmxlUmVuZGVyVGV4dCh0b1Rl
eHQobGFzdExlYWZJbnNlcnRlZCkpCkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJbnNlcnRlZE5vZGVzJiBpbnNlcnRlZE5v
ZGVzKQogICAgIC8vIHN0eWxlcyBmcm9tIGJsb2NrcXVvdGVOb2RlIGFyZSBhbGxvd2VkIHRvIG92
ZXJyaWRlIHRob3NlIGZyb20gdGhlIHNvdXJjZSBkb2N1bWVudCwgc2VlIDxyZGFyOi8vcHJvYmxl
bS80OTMwOTg2PiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzUwODkzMjc+LgogICAgIE5vZGUqIGJsb2Nr
cXVvdGVOb2RlID0gaXNNYWlsUGFzdGVBc1F1b3RhdGlvbk5vZGUoY29udGV4dCkgPyBjb250ZXh0
IDogZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbnRleHQpLCBpc01h
aWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgaWYgKGJsb2NrcXVv
dGVOb2RlKQotICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsK
KyAgICAgICAgY29udGV4dCA9IGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwogCiAgICAg
Ly8gVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgdGhhdCBvbmx5IGVkaXRpbmcgc3R5bGVzIHRvIGJl
IHJlbW92ZWQgZnJvbSBzb3VyY2VEb2N1bWVudFN0eWxlLgogICAgIHN0eWxlLT5wcmVwYXJlVG9B
cHBseUF0KGZpcnN0UG9zaXRpb25Jbk5vZGUoY29udGV4dCkpOwpAQCAtODIxLDcgKzgyMSw3IEBA
IHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlRW5kSWZOZWVkZWQoKQogICAgIC8v
IE1lcmdpbmcgZm9yd2FyZCBjb3VsZCByZXN1bHQgaW4gZGVsZXRpbmcgdGhlIGRlc3RpbmF0aW9u
IGFuY2hvciBub2RlLgogICAgIC8vIFRvIGF2b2lkIHRoaXMsIHdlIGFkZCBhIHBsYWNlaG9sZGVy
IG5vZGUgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoLgogICAgIGlmIChlbmRPZlBh
cmFncmFwaChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlKSA9PSBkZXN0aW5hdGlvbikgewotICAgICAg
ICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoJmRvY3VtZW50
KCkpOworICAgICAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1l
bnQoZG9jdW1lbnQoKSk7CiAgICAgICAgIGluc2VydE5vZGVCZWZvcmUocGxhY2Vob2xkZXIsIHN0
YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsK
ICAgICAgICAgZGVzdGluYXRpb24gPSBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25CZWZvcmVOb2Rl
KHBsYWNlaG9sZGVyLmdldCgpKSk7CiAgICAgfQpAQCAtMTAxMiw3ICsxMDEyLDggQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgCiAgICAgLy8gRklYTUU6IENh
biB0aGlzIHdhaXQgdW50aWwgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQ/
ICBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUKICAgICAvLyBhbnkgd29yayBwZXJmb3JtZWQgYWZ0
ZXIgdGhpcyB0aGF0IHF1ZXJpZXMgb3IgdXNlcyB0aGUgdHlwaW5nIHN0eWxlLgotICAgIGZyYW1l
KCkuc2VsZWN0aW9uKCkuY2xlYXJUeXBpbmdTdHlsZSgpOworICAgIGlmIChGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuY2xlYXJU
eXBpbmdTdHlsZSgpOwogCiAgICAgcmVtb3ZlSGVhZENvbnRlbnRzKGZyYWdtZW50KTsKIApAQCAt
MTExNyw3ICsxMTE4LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgp
CiAgICAgLy8gV2UgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBzdGFydEJsb2NrIHRvIHByZXZlbnQgbmVz
dGluZywgYW5kIHRoZSBjb250ZW50IGJlZm9yZSB0aGUgc3RhcnRCbG9jayB3YXNuJ3QgaW4gaXRz
IG93biBibG9jayBhbmQKICAgICAvLyBkaWRuJ3QgaGF2ZSBhIGJyIGFmdGVyIGl0LCBzbyB0aGUg
aW5zZXJ0ZWQgY29udGVudCBlbmRlZCB1cCBpbiB0aGUgc2FtZSBwYXJhZ3JhcGguCiAgICAgaWYg
KHN0YXJ0QmxvY2sgJiYgaW5zZXJ0aW9uUG9zLmRlcHJlY2F0ZWROb2RlKCkgPT0gc3RhcnRCbG9j
ay0+cGFyZW50Tm9kZSgpICYmICh1bnNpZ25lZClpbnNlcnRpb25Qb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSA8IHN0YXJ0QmxvY2stPm5vZGVJbmRleCgpICYmICFpc1N0YXJ0T2ZQYXJhZ3Jh
cGgoc3RhcnRPZkluc2VydGVkQ29udGVudCkpCi0gICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVC
cmVha0VsZW1lbnQoJmRvY3VtZW50KCkpLCBzdGFydE9mSW5zZXJ0ZWRDb250ZW50LmRlZXBFcXVp
dmFsZW50KCkpOworICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3Vt
ZW50KCkpLmdldCgpLCBzdGFydE9mSW5zZXJ0ZWRDb250ZW50LmRlZXBFcXVpdmFsZW50KCkpOwog
CiAgICAgaWYgKGVuZEJSICYmIChwbGFpblRleHRGcmFnbWVudCB8fCBzaG91bGRSZW1vdmVFbmRC
UihlbmRCUiwgb3JpZ2luYWxWaXNQb3NCZWZvcmVFbmRCUikpKSB7CiAgICAgICAgIFJlZlB0cjxO
b2RlPiBwYXJlbnQgPSBlbmRCUi0+cGFyZW50Tm9kZSgpOwpAQCAtMTE1Miw3ICsxMTUzLDcgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIFdlIGlu
c2VydCBhIHBsYWNlaG9sZGVyIGJlZm9yZSB0aGUgbmV3bHkgaW5zZXJ0ZWQgY29udGVudCB0byBh
dm9pZCBiZWluZyBtZXJnZWQgaW50byB0aGUgaW5saW5lLgogICAgICAgICBOb2RlKiBkZXN0aW5h
dGlvbk5vZGUgPSBkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7
CiAgICAgICAgIGlmIChtX3Nob3VsZE1lcmdlRW5kICYmIGRlc3RpbmF0aW9uTm9kZSAhPSBlbmNs
b3NpbmdJbmxpbmUoZGVzdGluYXRpb25Ob2RlKSAmJiBlbmNsb3NpbmdJbmxpbmUoZGVzdGluYXRp
b25Ob2RlKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoY3Jl
YXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKSwgcmVmTm9kZS5nZXQoKSk7CisgICAgICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwgcmVmTm9k
ZS5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBNZXJnaW5nIHRoZSB0aGUgZmlyc3QgcGFy
YWdyYXBoIG9mIGluc2VydGVkIGNvbnRlbnQgd2l0aCB0aGUgY29udGVudCB0aGF0IGNhbWUKICAg
ICAgICAgLy8gYmVmb3JlIHRoZSBzZWxlY3Rpb24gdGhhdCB3YXMgcGFzdGVkIGludG8gd291bGQg
YWxzbyBtb3ZlIGNvbnRlbnQgYWZ0ZXIgCkBAIC0xMTYzLDcgKzExNjQsNyBAQCB2b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgLy8gY29tZXMgYWZ0ZXIgYW5k
IHByZXZlbnQgdGhhdCBmcm9tIGhhcHBlbmluZy4KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVu
ZE9mSW5zZXJ0ZWRDb250ZW50ID0gcG9zaXRpb25BdEVuZE9mSW5zZXJ0ZWRDb250ZW50KCk7CiAg
ICAgICAgIGlmIChzdGFydE9mUGFyYWdyYXBoKGVuZE9mSW5zZXJ0ZWRDb250ZW50KSA9PSBzdGFy
dE9mUGFyYWdyYXBoVG9Nb3ZlKSB7Ci0gICAgICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJl
YWtFbGVtZW50KCZkb2N1bWVudCgpKSwgZW5kT2ZJbnNlcnRlZENvbnRlbnQuZGVlcEVxdWl2YWxl
bnQoKSk7CisgICAgICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3Vt
ZW50KCkpLmdldCgpLCBlbmRPZkluc2VydGVkQ29udGVudC5kZWVwRXF1aXZhbGVudCgpKTsKICAg
ICAgICAgICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVnIDIyNjM0KSB0cmlnZ2VyZWQgYnkgaW5z
ZXJ0aW5nIHRoZSA8YnI+IG1pZ2h0IGhhdmUgcmVtb3ZlZCB0aGUgY29udGVudCB3ZSdyZSBhYm91
dCB0byBtb3ZlCiAgICAgICAgICAgICBpZiAoIXN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVx
dWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMTg3LDcgKzExODgsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
Ojpkb0FwcGx5KCkKICAgICAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kT2ZJbnNl
cnRlZENvbnRlbnQpOwogICAgICAgICAgICAgICAgIE5vZGUqIGVuY2xvc2luZ05vZGUgPSBlbmNs
b3NpbmdCbG9jayhlbmRPZkluc2VydGVkQ29udGVudC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0
ZWROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChpc0xpc3RJdGVtKGVuY2xvc2luZ05vZGUp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdMaXN0SXRlbSA9IGNyZWF0
ZUxpc3RJdGVtRWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxOb2RlPiBuZXdMaXN0SXRlbSA9IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChkb2N1bWVudCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKG5ld0xpc3RJdGVtLCBlbmNsb3Np
bmdOb2RlKTsKICAgICAgICAgICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVQ
b3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKG5ld0xpc3RJdGVtLmdldCgpKSkpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMjM1LDcgKzEyMzYsNyBAQCBib29sIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpzaG91bGRSZW1vdmVFbmRCUihOb2RlKiBlbmRCUiwgY29uc3QgVmlzaWJs
ZVBvc2l0aQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gUmVtb3ZlIHRoZSBi
ciBpZiBpdCBpcyBjb2xsYXBzZWQgYXdheSBhbmQgc28gaXMgdW5uZWNlc3NhcnkuCi0gICAgaWYg
KCFkb2N1bWVudCgpLmluTm9RdWlya3NNb2RlKCkgJiYgaXNFbmRPZkJsb2NrKHZpc2libGVQb3Mp
ICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVBvcykpCisgICAgaWYgKCFkb2N1bWVudCgp
LT5pbk5vUXVpcmtzTW9kZSgpICYmIGlzRW5kT2ZCbG9jayh2aXNpYmxlUG9zKSAmJiAhaXNTdGFy
dE9mUGFyYWdyYXBoKHZpc2libGVQb3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
CiAgICAgLy8gQSBiciB0aGF0IHdhcyBvcmlnaW5hbGx5IGhvbGRpbmcgYSBsaW5lIG9wZW4gc2hv
dWxkIGJlIGRpc3BsYWNlZCBieSBpbnNlcnRlZCBjb250ZW50IG9yIHR1cm5lZCBpbnRvIGEgbGlu
ZSBicmVhay4KQEAgLTEyODEsMTMgKzEyODIsMTMgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICAgICAgICAgIGlmIChtX2VuZE9m
SW5zZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBlbmROb2RlKQogICAgICAgICAgICAg
ICAgIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQubW92ZVRvT2Zmc2V0KG1fZW5kT2ZJbnNlcnRlZENv
bnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyAxKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4
dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAi
KTsKKyAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWRp
dGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSA6ICIgIik7CiAgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIobm9kZSwgZW5kTm9kZSk7CiAg
ICAgICAgICAgICB1cGRhdGVOb2Rlc0luc2VydGVkKG5vZGUuZ2V0KCkpOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKKyAgICBkb2N1bWVudCgpLT51
cGRhdGVMYXlvdXQoKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0RG93bnN0cmVhbSA9IHN0YXJ0T2ZJ
bnNlcnRlZENvbnRlbnQuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CiAgICAgTm9kZSog
c3RhcnROb2RlID0gc3RhcnREb3duc3RyZWFtLmNvbXB1dGVOb2RlQWZ0ZXJQb3NpdGlvbigpOwpA
QCAtMTMwNSw3ICsxMzA2LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3Bh
Y2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICAgICAgICAgIGlmIChtX2VuZE9mSW5zZXJ0ZWRDb250
ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBzdGFydE5vZGUgJiYgbV9lbmRPZkluc2VydGVkQ29udGVu
dC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgICAgICBtX2VuZE9mSW5zZXJ0
ZWRDb250ZW50Lm1vdmVUb09mZnNldChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29u
dGFpbmVyTm9kZSgpICsgMSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8
Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hp
dGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CisgICAgICAgICAgICBS
ZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xs
YXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOwogICAgICAg
ICAgICAgLy8gRG9uJ3QgdXBkYXRlTm9kZXNJbnNlcnRlZC4gRG9pbmcgc28gd291bGQgc2V0IG1f
ZW5kT2ZJbnNlcnRlZENvbnRlbnQgdG8gYmUgdGhlIG5vZGUgY29udGFpbmluZyB0aGUgbGVhZGlu
ZyBzcGFjZSwKICAgICAgICAgICAgIC8vIGJ1dCBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50IGlzIHN1
cHBvc2VkIHRvIG1hcmsgdGhlIGVuZCBvZiBwYXN0ZWQgY29udGVudC4KICAgICAgICAgICAgIGlu
c2VydE5vZGVCZWZvcmUobm9kZSwgc3RhcnROb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCBmNDZkODI5Li5kMzlhOTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5o
CkBAIC00NywxMyArNDcsMTMgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDb21t
YW5kT3B0aW9uczsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50LCBDb21tYW5kT3B0aW9ucyBvcHRpb25zLCBFZGl0QWN0aW9uIGFjdGlvbiA9
IEVkaXRBY3Rpb25QYXN0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBmcmFnbWVudCwgQ29tbWFuZE9wdGlvbnMgb3B0aW9ucywgRWRpdEFjdGlvbiBhY3Rp
b24gPSBFZGl0QWN0aW9uUGFzdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKGRvY3VtZW50LCBmcmFnbWVudCwgb3B0aW9ucywgYWN0
aW9uKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERv
Y3VtZW50JiwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgQ29tbWFuZE9wdGlvbnMsIEVk
aXRBY3Rpb24pOworICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50KiwgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgQ29tbWFuZE9wdGlvbnMsIEVkaXRBY3Rpb24pOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGlu
Z0FjdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRO
b2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVB
dHRyaWJ1dGVDb21tYW5kLmNwcAppbmRleCAxMTNlMjA5Li43NDk4NDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcApAQCAtMzEs
OCArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNldE5vZGVBdHRyaWJ1dGVDb21t
YW5kOjpTZXROb2RlQXR0cmlidXRlQ29tbWFuZChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKLSAgICA6IFNpbXBsZUVkaXRDb21tYW5kKGVsZW1lbnQtPmRvY3VtZW50KCkpCitTZXROb2Rl
QXR0cmlidXRlQ29tbWFuZDo6U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVt
ZW50PiBlbGVtZW50LCAKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQorICAgIDogU2ltcGxlRWRpdENvbW1hbmQoJmVsZW1l
bnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fYXR0cmli
dXRlKGF0dHJpYnV0ZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBmMTUzYThkLi5iZmQwNTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2V0U2VsZWN0aW9uQ29tbWFu
ZDo6U2V0U2VsZWN0aW9uQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24s
IEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCi0gICAgOiBTaW1w
bGVFZGl0Q29tbWFuZChzZWxlY3Rpb24uYmFzZSgpLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSkK
KyAgICA6IFNpbXBsZUVkaXRDb21tYW5kKCZzZWxlY3Rpb24uYmFzZSgpLmFuY2hvck5vZGUoKS0+
ZG9jdW1lbnQoKSkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV9zZWxlY3Rpb25U
b1NldChzZWxlY3Rpb24pCiB7CkBAIC00MCw3ICs0MCw3IEBAIFNldFNlbGVjdGlvbkNvbW1hbmQ6
OlNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBG
cmFtCiAKIHZvaWQgU2V0U2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgRnJhbWVT
ZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lKCkuc2VsZWN0aW9uKCk7CisgICAgRnJhbWVTZWxl
Y3Rpb24mIHNlbGVjdGlvbiA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpOwogCiAg
ICAgaWYgKHNlbGVjdGlvbi5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obV9zZWxlY3Rpb25Ub1NldCkg
JiYgbV9zZWxlY3Rpb25Ub1NldC5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkpIHsKICAgICAg
ICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihtX3NlbGVjdGlvblRvU2V0LCBtX29wdGlvbnMpOwpA
QCAtNTAsNyArNTAsNyBAQCB2b2lkIFNldFNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogCiB2
b2lkIFNldFNlbGVjdGlvbkNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7Ci0gICAgRnJhbWVTZWxlY3Rp
b24mIHNlbGVjdGlvbiA9IGZyYW1lKCkuc2VsZWN0aW9uKCk7CisgICAgRnJhbWVTZWxlY3Rpb24m
IHNlbGVjdGlvbiA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpOwogCiAgICAgaWYg
KHNlbGVjdGlvbi5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSkgJiYg
c3RhcnRpbmdTZWxlY3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkpCiAgICAgICAg
IHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9vcHRpb25zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcApp
bmRleCAwMzkyY2Y0Li42Mzg1ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
aW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwCkBAIC0zNCwxMCArMzQsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNpbXBsaWZ5TWFya3VwQ29tbWFuZDo6U2ltcGxpZnlNYXJrdXBDb21tYW5k
KERvY3VtZW50JiBkb2N1bWVudCwgTm9kZSogZmlyc3ROb2RlLCBOb2RlKiBub2RlQWZ0ZXJMYXN0
KQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpCi0gICAgLCBtX2ZpcnN0Tm9k
ZShmaXJzdE5vZGUpCi0gICAgLCBtX25vZGVBZnRlckxhc3Qobm9kZUFmdGVyTGFzdCkKK1NpbXBs
aWZ5TWFya3VwQ29tbWFuZDo6U2ltcGxpZnlNYXJrdXBDb21tYW5kKERvY3VtZW50KiBkb2N1bWVu
dCwgTm9kZSogZmlyc3ROb2RlLCBOb2RlKiBub2RlQWZ0ZXJMYXN0KSAKKyAgICA6IENvbXBvc2l0
ZUVkaXRDb21tYW5kKGRvY3VtZW50KSwgbV9maXJzdE5vZGUoZmlyc3ROb2RlKSwgbV9ub2RlQWZ0
ZXJMYXN0KG5vZGVBZnRlckxhc3QpCiB7CiB9CiAgICAgCkBAIC00Niw3ICs0NCw3IEBAIHZvaWQg
U2ltcGxpZnlNYXJrdXBDb21tYW5kOjpkb0FwcGx5KCkKICAgICBOb2RlKiByb290Tm9kZSA9IG1f
Zmlyc3ROb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5vZGVz
VG9SZW1vdmU7CiAgICAgCi0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKIAogICAgIC8vIFdhbGsgdGhyb3VnaCB0aGUgaW5zZXJ0ZWQgbm9kZXMs
IHRvIHNlZSBpZiB0aGVyZSBhcmUgZWxlbWVudHMgdGhhdCBjb3VsZCBiZSByZW1vdmVkCiAgICAg
Ly8gd2l0aG91dCBhZmZlY3RpbmcgdGhlIHN0eWxlLiBUaGUgZ29hbCBpcyB0byBwcm9kdWNlIGxl
YW5lciBtYXJrdXAgZXZlbiB3aGVuIHN0YXJ0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TaW1wbGlmeU1hcmt1cENvbW1hbmQuaAppbmRleCA3ZGNjMTUwLi41YTU2MDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmgKQEAgLTMyLDEz
ICszMiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNpbXBsaWZ5TWFya3VwQ29t
bWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2ltcGxpZnlNYXJrdXBDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBOb2RlKiBmaXJzdE5vZGUsIE5vZGUqIG5vZGVBZnRlckxhc3QpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2ltcGxpZnlNYXJrdXBDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
LCBOb2RlKiBmaXJzdE5vZGUsIE5vZGUqIG5vZGVBZnRlckxhc3QpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNpbXBsaWZ5TWFya3VwQ29tbWFuZChkb2N1bWVudCwgZmlyc3RO
b2RlLCBub2RlQWZ0ZXJMYXN0KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNpbXBsaWZ5TWFy
a3VwQ29tbWFuZChEb2N1bWVudCYsIE5vZGUqIGZpcnN0Tm9kZSwgTm9kZSogbm9kZUFmdGVyTGFz
dCk7CisgICAgU2ltcGxpZnlNYXJrdXBDb21tYW5kKERvY3VtZW50KiwgTm9kZSogZmlyc3ROb2Rl
LCBOb2RlKiBub2RlQWZ0ZXJMYXN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAg
ICAgaW50IHBydW5lU3Vic2VxdWVudEFuY2VzdG9yc1RvUmVtb3ZlKFZlY3RvcjxSZWZQdHI8Tm9k
ZT4gPiYgbm9kZXNUb1JlbW92ZSwgc2l6ZV90IHN0YXJ0Tm9kZUluZGV4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDJkOTY2ZDEuLmI1MTlmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIFRoaXMgaW5mb3JtYXRpb24gaXMgbmVlZGVkIGJ5IHNwZWxsIGNoZWNr
aW5nIHNlcnZpY2UgdG8gdXBkYXRlIHVzZXIgc3BlY2lmaWMgZGF0YS4KIGNsYXNzIFNwZWxsaW5n
Q29ycmVjdGlvblJlY29yZFVuZG9Db21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVsbGluZ0NvcnJlY3Rpb25SZWNvcmRV
bmRvQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
cGVsbGluZ0NvcnJlY3Rpb25SZWNvcmRVbmRvQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlbGxpbmdDb3JyZWN0aW9uUmVj
b3JkVW5kb0NvbW1hbmQoZG9jdW1lbnQsIGNvcnJlY3RlZCwgY29ycmVjdGlvbikpOwogICAgIH0K
IHByaXZhdGU6Ci0gICAgU3BlbGxpbmdDb3JyZWN0aW9uUmVjb3JkVW5kb0NvbW1hbmQoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uKQorICAgIFNwZWxsaW5nQ29ycmVjdGlvblJlY29yZFVuZG9Db21tYW5kKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVj
dGlvbikKICAgICAgICAgOiBTaW1wbGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAgICAgLCBt
X2NvcnJlY3RlZChjb3JyZWN0ZWQpCiAgICAgICAgICwgbV9jb3JyZWN0aW9uKGNvcnJlY3Rpb24p
CkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgp
IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIW1faGFzQmVlblVuZG9uZSkgewotICAgICAg
ICAgICAgZnJhbWUoKS5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdT
ZWxlY3Rpb24oKSwgbV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CisgICAgICAgICAgICBkb2N1
bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRp
bmdTZWxlY3Rpb24oKSwgbV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAgICAgICAgICAgICBt
X2hhc0JlZW5VbmRvbmUgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtODIsNyArODIs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlQ29ycmVjdGVk
LCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pCi0gICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChy
YW5nZVRvQmVDb3JyZWN0ZWQtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkpCisgICAgOiBD
b21wb3NpdGVFZGl0Q29tbWFuZCgmcmFuZ2VUb0JlQ29ycmVjdGVkLT5zdGFydENvbnRhaW5lcigp
LT5kb2N1bWVudCgpKQogICAgICwgbV9yYW5nZVRvQmVDb3JyZWN0ZWQocmFuZ2VUb0JlQ29ycmVj
dGVkKQogICAgICwgbV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkKG1fcmFuZ2VUb0JlQ29ycmVjdGVk
LmdldCgpKQogICAgICwgbV9jb3JyZWN0aW9uKGNvcnJlY3Rpb24pCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFtX2Nv
cnJlY3RlZC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFmcmFtZSgpLnNl
bGVjdGlvbigpLnNob3VsZENoYW5nZVNlbGVjdGlvbihtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQp
KQorICAgIGlmICghZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdl
U2VsZWN0aW9uKG1fc2VsZWN0aW9uVG9CZUNvcnJlY3RlZCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQobV9yYW5nZVRvQmVDb3JyZWN0ZWQuZ2V0KCksIG1fY29ycmVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcAppbmRleCA5NmNjMjRh
Li5kZTE1YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVu
dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29t
bWFuZC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3BsaXRF
bGVtZW50Q29tbWFuZDo6U3BsaXRFbGVtZW50Q29tbWFuZChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQsIFBhc3NSZWZQdHI8Tm9kZT4gYXRDaGlsZCkKLSAgICA6IFNpbXBsZUVkaXRDb21tYW5k
KGVsZW1lbnQtPmRvY3VtZW50KCkpCisgICAgOiBTaW1wbGVFZGl0Q29tbWFuZCgmZWxlbWVudC0+
ZG9jdW1lbnQoKSkKICAgICAsIG1fZWxlbWVudDIoZWxlbWVudCkKICAgICAsIG1fYXRDaGlsZChh
dENoaWxkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHRO
b2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21t
YW5kLmNwcAppbmRleCAwZWFlODAwLi44MTU3MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTcGxpdFRleHROb2RlQ29tbWFuZDo6U3BsaXRUZXh0Tm9kZUNvbW1h
bmQoUGFzc1JlZlB0cjxUZXh0PiB0ZXh0LCBpbnQgb2Zmc2V0KQotICAgIDogU2ltcGxlRWRpdENv
bW1hbmQodGV4dC0+ZG9jdW1lbnQoKSkKKyAgICA6IFNpbXBsZUVkaXRDb21tYW5kKCZ0ZXh0LT5k
b2N1bWVudCgpKQogICAgICwgbV90ZXh0Mih0ZXh0KQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQog
ewpAQCAtNTgsOSArNTgsOSBAQCB2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KCkK
ICAgICBpZiAocHJlZml4VGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
dGV4dDEgPSBUZXh0OjpjcmVhdGUoJmRvY3VtZW50KCksIHByZWZpeFRleHQpOworICAgIG1fdGV4
dDEgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgcHJlZml4VGV4dCk7CiAgICAgQVNTRVJUKG1f
dGV4dDEpOwotICAgIGRvY3VtZW50KCkubWFya2VycygpLmNvcHlNYXJrZXJzKG1fdGV4dDIuZ2V0
KCksIDAsIG1fb2Zmc2V0LCBtX3RleHQxLmdldCgpLCAwKTsKKyAgICBkb2N1bWVudCgpLT5tYXJr
ZXJzKCkuY29weU1hcmtlcnMobV90ZXh0Mi5nZXQoKSwgMCwgbV9vZmZzZXQsIG1fdGV4dDEuZ2V0
KCksIDApOwogCiAgICAgaW5zZXJ0VGV4dDFBbmRUcmltVGV4dDIoKTsKIH0KQEAgLTcwLDEzICs3
MCwxMyBAQCB2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogICAgIGlmICgh
bV90ZXh0MSB8fCAhbV90ZXh0MS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFTU0VSVCgmbV90ZXh0MS0+ZG9jdW1lbnQoKSA9PSAmZG9jdW1lbnQoKSk7Cisg
ICAgQVNTRVJUKCZtX3RleHQxLT5kb2N1bWVudCgpID09IGRvY3VtZW50KCkpOwogCiAgICAgU3Ry
aW5nIHByZWZpeFRleHQgPSBtX3RleHQxLT5kYXRhKCk7CiAKICAgICBtX3RleHQyLT5pbnNlcnRE
YXRhKDAsIHByZWZpeFRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCi0gICAgZG9jdW1lbnQo
KS5tYXJrZXJzKCkuY29weU1hcmtlcnMobV90ZXh0MS5nZXQoKSwgMCwgcHJlZml4VGV4dC5sZW5n
dGgoKSwgbV90ZXh0Mi5nZXQoKSwgMCk7CisgICAgZG9jdW1lbnQoKS0+bWFya2VycygpLmNvcHlN
YXJrZXJzKG1fdGV4dDEuZ2V0KCksIDAsIHByZWZpeFRleHQubGVuZ3RoKCksIG1fdGV4dDIuZ2V0
KCksIDApOwogICAgIG1fdGV4dDEtPnJlbW92ZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29udGFpbmlu
Z0VsZW1lbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9k
ZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAKaW5kZXggMTA1YmJjNS4uYzNmNmUwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29udGFpbmluZ0Vs
ZW1lbnRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5v
ZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwCkBAIC0zNCw5ICszNCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQ6OlNw
bGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQoUGFzc1JlZlB0cjxUZXh0PiB0ZXh0
LCBpbnQgb2Zmc2V0KQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQodGV4dC0+ZG9jdW1lbnQo
KSkKLSAgICAsIG1fdGV4dCh0ZXh0KQotICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgIDogQ29t
cG9zaXRlRWRpdENvbW1hbmQoJnRleHQtPmRvY3VtZW50KCkpLCBtX3RleHQodGV4dCksIG1fb2Zm
c2V0KG9mZnNldCkKIHsKICAgICBBU1NFUlQobV90ZXh0KTsKICAgICBBU1NFUlQobV90ZXh0LT5s
ZW5ndGgoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SW5z
ZXJ0aW9uQmFzZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SW5zZXJ0
aW9uQmFzZUNvbW1hbmQuY3BwCmluZGV4IGZkNzIxOWQuLjgyMzRmMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UZXh0SW5zZXJ0aW9uQmFzZUNv
bW1hbmQ6OlRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpCitUZXh0
SW5zZXJ0aW9uQmFzZUNvbW1hbmQ6OlRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEluc2VydGlvbkJhc2VDb21tYW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oCmlu
ZGV4IGU1NDliNWMuLjJhMzNkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+VGV4dEluc2VydGlvbkJhc2VDb21tYW5kKCkgeyB9OwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgZXhwbGljaXQgVGV4dEluc2VydGlvbkJhc2VDb21tYW5kKERvY3VtZW50Jik7CisgICAgZXhw
bGljaXQgVGV4dEluc2VydGlvbkJhc2VDb21tYW5kKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZv
aWQgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChGcmFtZSosIFBhc3NSZWZQdHI8VGV4dEluc2Vy
dGlvbkJhc2VDb21tYW5kPiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uRm9ySW5z
ZXJ0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDJiMGQzNzMuLjBkYzY0
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTU4OCw3ICs1
ODgsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAg
ICAgbmV4dFRleHRCb3ggPSBtX3NvcnRlZFRleHRCb3hlc1ttX3NvcnRlZFRleHRCb3hlc1Bvc2l0
aW9uICsgMV07CiAgICAgICAgIH0gZWxzZSAKICAgICAgICAgICAgIG5leHRUZXh0Qm94ID0gbV90
ZXh0Qm94LT5uZXh0VGV4dEJveCgpOwotICAgICAgICBBU1NFUlQoIW5leHRUZXh0Qm94IHx8ICZu
ZXh0VGV4dEJveC0+cmVuZGVyZXIoKSA9PSByZW5kZXJlcik7CisgICAgICAgIEFTU0VSVCghbmV4
dFRleHRCb3ggfHwgbmV4dFRleHRCb3gtPnJlbmRlcmVyKCkgPT0gcmVuZGVyZXIpOwogCiAgICAg
ICAgIGlmIChydW5TdGFydCA8IHJ1bkVuZCkgewogICAgICAgICAgICAgLy8gSGFuZGxlIGVpdGhl
ciBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3RlciAod2hpY2ggYmVjb21lcyBhIHNwYWNlKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDAxYjJmOGQuLmI5NTk4
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgbV90ZXh0OwogfTsKIAotVHlwaW5n
Q29tbWFuZDo6VHlwaW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5k
IGNvbW1hbmRUeXBlLCBjb25zdCBTdHJpbmcgJnRleHRUb0luc2VydCwgT3B0aW9ucyBvcHRpb25z
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFRleHRDb21wb3NpdGlvblR5cGUgY29tcG9z
aXRpb25UeXBlKQorVHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZChEb2N1bWVudCAqZG9jdW1l
bnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBjb25zdCBTdHJpbmcgJnRleHRUb0luc2Vy
dCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFRleHRDb21w
b3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQogICAgIDogVGV4dEluc2VydGlvbkJhc2VDb21t
YW5kKGRvY3VtZW50KQogICAgICwgbV9jb21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1f
dGV4dFRvSW5zZXJ0KHRleHRUb0luc2VydCkKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFR5cGlu
Z0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFR5cGluZ0NvbW1hbmQ6OmNyZWF0
ZSgqZG9jdW1lbnQsIERlbGV0ZVNlbGVjdGlvbiwgIiIsIG9wdGlvbnMpLT5hcHBseSgpOworICAg
IFR5cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgRGVsZXRlU2VsZWN0aW9uLCAiIiwgb3B0
aW9ucyktPmFwcGx5KCk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3Nl
ZChEb2N1bWVudCAqZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
S2V5UHJlc3NlZChEb2N1bWVudCAqZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dEdyCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBUeXBpbmdDb21tYW5kOjpjcmVhdGUoKmRvY3VtZW50LCBE
ZWxldGVLZXksICIiLCBvcHRpb25zLCBncmFudWxhcml0eSktPmFwcGx5KCk7CisgICAgVHlwaW5n
Q29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBEZWxldGVLZXksICIiLCBvcHRpb25zLCBncmFudWxh
cml0eSktPmFwcGx5KCk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtl
eVByZXNzZWQoRG9jdW1lbnQgKmRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMsIFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50ICpkb2N1bWVudCwgT3B0aW9ucyBvcHRp
b25zLAogICAgICAgICB9CiAgICAgfQogCi0gICAgVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKCpkb2N1
bWVudCwgRm9yd2FyZERlbGV0ZUtleSwgIiIsIG9wdGlvbnMsIGdyYW51bGFyaXR5KS0+YXBwbHko
KTsKKyAgICBUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIEZvcndhcmREZWxldGVLZXks
ICIiLCBvcHRpb25zLCBncmFudWxhcml0eSktPmFwcGx5KCk7CiB9CiAKIHZvaWQgVHlwaW5nQ29t
bWFuZDo6dXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNlbGVjdGlvbihUeXBp
bmdDb21tYW5kKiB0eXBpbmdDb21tYW5kLCBGcmFtZSogZnJhbWUpCkBAIC0xOTQsNyArMTk0LDcg
QEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUoKmRvY3Vt
ZW50LCBJbnNlcnRUZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOworICAg
IFJlZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7CiAgICAg
YXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLCBzZWxlY3Rpb25Gb3JJ
bnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoRG9jdW1lbnQgKmRvY3VtZW50LCBPcHRp
b25zIG9wdGlvbnMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhcHBseUNvbW1hbmQo
VHlwaW5nQ29tbWFuZDo6Y3JlYXRlKCpkb2N1bWVudCwgSW5zZXJ0TGluZUJyZWFrLCAiIiwgb3B0
aW9ucykpOworICAgIGFwcGx5Q29tbWFuZChUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQs
IEluc2VydExpbmVCcmVhaywgIiIsIG9wdGlvbnMpKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5k
OjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoRG9jdW1lbnQgKmRvY3Vt
ZW50KQpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KERvY3VtZW50ICpkb2N1bWVudCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGFwcGx5Q29tbWFuZChUeXBpbmdDb21tYW5kOjpjcmVhdGUo
KmRvY3VtZW50LCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQpKTsKKyAg
ICBhcHBseUNvbW1hbmQoVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQpKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5k
OjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoRG9jdW1lbnQgKmRvY3VtZW50LCBPcHRpb25zIG9w
dGlvbnMpCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IoRG9jdW1lbnQgKmRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFwcGx5Q29tbWFuZChUeXBpbmdDb21tYW5kOjpjcmVh
dGUoKmRvY3VtZW50LCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IsICIiLCBvcHRpb25zKSk7Cisg
ICAgYXBwbHlDb21tYW5kKFR5cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yLCAiIiwgb3B0aW9ucykpOwogfQogCiBQYXNzUmVmUHRyPFR5cGluZ0Nv
bW1hbmQ+IFR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcoRnJhbWUqIGZyYW1lKQpAQCAtMjkzLDE3ICsyOTMsMTkgQEAgRWRpdEFjdGlvbiBUeXBpbmdD
b21tYW5kOjplZGl0aW5nQWN0aW9uKCkgY29uc3QKIAogdm9pZCBUeXBpbmdDb21tYW5kOjptYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiB7Ci0g
ICAgRnJhbWUmIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWZyYW1lLmVkaXRvcigpLmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkKLSAgICAgICAgJiYgIWZyYW1lLmVkaXRvcigpLmlzQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgJiYgIWZyYW1lLmVkaXRvcigpLmlz
QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQotICAgICAgICAmJiAhZnJhbWUuZWRpdG9y
KCkuaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0gICAgICAgICYmICFmcmFt
ZS5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAgICBpZiAo
IWZyYW1lLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpCisgICAg
ICAgICYmICFmcmFtZS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbkVuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlzQXV0b21h
dGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogI2Vsc2UK
LSAgICBpZiAoIWZyYW1lLmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgLy8gVGFrZSBhIGxvb2sgYXQg
dGhlIHNlbGVjdGlvbiB0aGF0IHJlc3VsdHMgYWZ0ZXIgdHlwaW5nIGFuZCBkZXRlcm1pbmUgd2hl
dGhlciB3ZSBuZWVkIHRvIHNwZWxsY2hlY2suIApAQCAtMzIwLDI3ICszMjIsMjkgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQg
Y29tbWFuZFR5cGUpCiAgICAgICAgICAgICBTdHJpbmcgc3RyaXBwZWRQcmV2aW91c1dvcmQ7CiAg
ICAgICAgICAgICBpZiAocmFuZ2UgJiYgKGNvbW1hbmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Oklu
c2VydFRleHQgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5nQ29tbWFuZDo6SW5zZXJ0TGluZUJyZWFr
IHx8IGNvbW1hbmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFBhcmFncmFwaFNlcGFyYXRv
ciB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JJblF1b3RlZENvbnRlbnQpKQogICAgICAgICAgICAgICAgIHN0cmlwcGVkUHJldmlvdXNXb3Jk
ID0gcGxhaW5UZXh0KHJhbmdlLmdldCgpKS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAg
IGZyYW1lLmVkaXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5k
aW5nU2VsZWN0aW9uKCksICFzdHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOworICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChw
MSwgZW5kaW5nU2VsZWN0aW9uKCksICFzdHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOwog
ICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFRl
eHQpCi0gICAgICAgICAgICBmcmFtZS5lZGl0b3IoKS5zdGFydEFsdGVybmF0aXZlVGV4dFVJVGlt
ZXIoKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zdGFydEFsdGVybmF0aXZlVGV4dFVJ
VGltZXIoKTsKICAgICB9CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09w
ZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCiB7Ci0g
ICAgRnJhbWUmIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKIAogICAg
IHVwZGF0ZVByZXNlcnZlc1R5cGluZ1N0eWxlKGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpOwog
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGZyYW1lLmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRo
aXMpOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICAvLyBT
aW5jZSB0aGUgc3BlbGxjaGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMg
YW5kIG90aGVyIHJlcGxhY2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5n
IGNoYW5nZXMuCiAgICAgaWYgKCFtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKQogICAgICAg
ICBtYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7
CiAjZWxzZQogICAgIC8vIFRoZSBvbGQgc3BlbGxjaGVja2luZyBjb2RlIHJlcXVpcmVzIHRoYXQg
Y2hlY2tpbmcgYmUgZG9uZSBmaXJzdCwgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB0aGF0IGluIDY4
NjQwNzIsIHdoZXJlIDxkb2Vzbid0PiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KICAgICBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbGllZEVkaXRpbmcodGhpcyk7CisgICAgZnJhbWUtPmVkaXRvcigp
LmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTQxOSw5ICs0MjMsMTEgQEAg
Ym9vbCBUeXBpbmdDb21tYW5kOjptYWtlRWRpdGFibGVSb290RW1wdHkoKQogCiB2b2lkIFR5cGlu
Z0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBi
b29sIGtpbGxSaW5nKQogewotICAgIEZyYW1lJiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBmcmFtZS5lZGl0b3IoKS51cGRhdGVNYXJrZXJzRm9yV29yZHNB
ZmZlY3RlZEJ5RWRpdGluZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtl
cnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uVG9EZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRl
clVuZG87CkBAIC01MDQsMTEgKzUxMCwxMSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtl
eVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogICAg
IGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc0NhcmV0KCkgfHwgIWZyYW1lLnNlbGVjdGlvbigp
LnNob3VsZERlbGV0ZVNlbGVjdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZSkpCisgICAgaWYgKHNlbGVj
dGlvblRvRGVsZXRlLmlzQ2FyZXQoKSB8fCAhZnJhbWUtPnNlbGVjdGlvbigpLnNob3VsZERlbGV0
ZVNlbGVjdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2Vs
ZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOworICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkuYWRkVG9LaWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxzZSk7CiAgICAgLy8gTWFrZSB1bmRvIHNlbGVjdCBldmVy
eXRoaW5nIHRoYXQgaGFzIGJlZW4gZGVsZXRlZCwgdW5sZXNzIGFuIHVuZG8gd2lsbCB1bmRvIG1v
cmUgdGhhbiBqdXN0IHRoaXMgZGVsZXRpb24uCiAgICAgLy8gRklYTUU6IFRoaXMgYmVoYXZlcyBs
aWtlIFRleHRFZGl0IGV4Y2VwdCBmb3IgdGhlIGNhc2Ugd2hlcmUgeW91IG9wZW4gd2l0aCB0ZXh0
IGluc2VydGlvbiBhbmQgdGhlbiBkZWxldGUKICAgICAvLyBtb3JlIHRleHQgdGhhbiB5b3UgaW5z
ZXJ0LiAgSW4gdGhhdCBjYXNlIGFsbCBvZiB0aGUgdGV4dCB0aGF0IHdhcyBhcm91bmQgb3JpZ2lu
YWxseSBzaG91bGQgYmUgc2VsZWN0ZWQuCkBAIC01MjEsOSArNTI3LDExIEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJv
b2wga2lsbFJpbmcpCiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNz
ZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogewotICAgIEZy
YW1lJiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CiAKLSAgICBmcmFt
ZS5lZGl0b3IoKS51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhmYWxzZSk7
CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0
aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9EZWxldGU7CiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC01OTUsMTEgKzYwMywx
MSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQogICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5p
c05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0
ZS5pc0NhcmV0KCkgfHwgIWZyYW1lLnNlbGVjdGlvbigpLnNob3VsZERlbGV0ZVNlbGVjdGlvbihz
ZWxlY3Rpb25Ub0RlbGV0ZSkpCisgICAgaWYgKHNlbGVjdGlvblRvRGVsZXRlLmlzQ2FyZXQoKSB8
fCAhZnJhbWUtPnNlbGVjdGlvbigpLnNob3VsZERlbGV0ZVNlbGVjdGlvbihzZWxlY3Rpb25Ub0Rl
bGV0ZSkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgaWYgKGtpbGxSaW5nKQotICAg
ICAgICBmcmFtZS5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFk
ZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
ZmFsc2UpOwogICAgIC8vIG1ha2UgdW5kbyBzZWxlY3Qgd2hhdCB3YXMgZGVsZXRlZAogICAgIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKHNlbGVjdGlvbkFmdGVyVW5kbyk7CiAgICAgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZSwgbV9zbWFydERlbGV0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCmluZGV4IGY4YWQxMDAuLjk1
MGVlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCkBAIC03OCwxNyAr
NzgsMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3Np
dGlvblR5cGUgdHlwZSkgeyBtX2NvbXBvc2l0aW9uVHlwZSA9IHR5cGU7IH0KIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBFVHlwaW5nQ29tbWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQgPSAiIiwg
T3B0aW9ucyBvcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VHlwaW5nQ29tbWFuZD4gY3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3Ry
aW5nJiB0ZXh0ID0gIiIsIE9wdGlvbnMgb3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUeXBpbmdDb21tYW5kKGRvY3VtZW50LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25z
LCBncmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uTm9uZSkpOwogICAgIH0KIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEVU
eXBpbmdDb21tYW5kIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9ucyBvcHRpb25z
LCBUZXh0Q29tcG9zaXRpb25UeXBlIGNvbXBvc2l0aW9uVHlwZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBFVHlwaW5nQ29t
bWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dENv
bXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFR5cGluZ0NvbW1hbmQoZG9jdW1lbnQsIGNvbW1hbmQsIHRleHQsIG9wdGlvbnMs
IENoYXJhY3RlckdyYW51bGFyaXR5LCBjb21wb3NpdGlvblR5cGUpKTsKICAgICB9CiAKLSAgICBU
eXBpbmdDb21tYW5kKERvY3VtZW50JiwgRVR5cGluZ0NvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgT3B0aW9ucywgVGV4dEdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlKTsKKyAgICBU
eXBpbmdDb21tYW5kKERvY3VtZW50KiwgRVR5cGluZ0NvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgT3B0aW9ucywgVGV4dEdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlKTsKIAogICAg
IGJvb2wgc21hcnREZWxldGUoKSBjb25zdCB7IHJldHVybiBtX3NtYXJ0RGVsZXRlOyB9CiAgICAg
dm9pZCBzZXRTbWFydERlbGV0ZShib29sIHNtYXJ0RGVsZXRlKSB7IG1fc21hcnREZWxldGUgPSBz
bWFydERlbGV0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmxpbmtD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5saW5rQ29tbWFuZC5jcHAKaW5k
ZXggZWE2NGY0NC4uMDUxODgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9V
bmxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VubGlua0NvbW1h
bmQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVW5saW5r
Q29tbWFuZDo6VW5saW5rQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpCitVbmxpbmtDb21tYW5k
OjpVbmxpbmtDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IENvbXBvc2l0ZUVkaXRD
b21tYW5kKGRvY3VtZW50KQogewogfQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFVubGlua0NvbW1h
bmQ6OmRvQXBwbHkoKQogICAgIGlmICghZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZFJh
bmdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlbW92ZVN0eWxlZEVsZW1lbnQoSFRNTEFu
Y2hvckVsZW1lbnQ6OmNyZWF0ZSgmZG9jdW1lbnQoKSkpOworICAgIHJlbW92ZVN0eWxlZEVsZW1l
bnQoSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmgKaW5kZXggNDdjNjJjMS4uODY0N2VlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmgKQEAgLTMyLDEzICszMiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFVubGlua0NvbW1hbmQgOiBwdWJsaWMgQ29tcG9z
aXRlRWRpdENvbW1hbmQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVubGlua0Nv
bW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
VW5saW5rQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVW5saW5rQ29tbWFuZChkb2N1bWVudCkpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBVbmxpbmtDb21tYW5kKERvY3VtZW50Jik7CisgICAgZXhw
bGljaXQgVW5saW5rQ29tbWFuZChEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIGRvQXBw
bHkoKTsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIEVkaXRBY3Rpb25Vbmxpbms7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmNwcAppbmRleCAzM2MwODFhLi45MDgxMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAg
ICAgIGlmICghYm94KQogICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRS
ID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5l
eHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKIAotICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGJveC0+cmVuZGVyZXIoKTsKIAogICAgICAgICB3aGlsZSAodHJ1
ZSkgewogICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNSZXBsYWNlZCgpIHx8IHJlbmRlcmVy
LT5pc0JSKCkpICYmIG9mZnNldCA9PSBib3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkpCkBAIC0x
MzAsNyArMTMwLDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0
aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgYm94ID0gYm94LT5wcmV2TGVh
ZkNoaWxkKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0
ZShtX2RlZXBQb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5k
ZXJlcigpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gYm94LT5yZW5kZXJlcigpOwogICAg
ICAgICAgICAgICAgIG9mZnNldCA9IGJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKTsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBQ
b3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkg
Y29uc3QKIAogICAgICAgICAgICAgICAgIC8vIFJlcG9zaXRpb24gYXQgdGhlIG90aGVyIGxvZ2lj
YWwgcG9zaXRpb24gY29ycmVzcG9uZGluZyB0byBvdXIgZWRnZSdzIHZpc3VhbCBwb3NpdGlvbiBh
bmQgZ28gZm9yIGFub3RoZXIgcm91bmQuCiAgICAgICAgICAgICAgICAgYm94ID0gcHJldkJveDsK
LSAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CisgICAgICAgICAg
ICAgICAgcmVuZGVyZXIgPSBib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0
ID0gcHJldkJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE3Niw3ICsxNzYsNyBAQCBQb3NpdGlvbiBWaXNpYmxl
UG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAg
ICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsU3RhcnQgPSAwOwogICAgICAgICAgICAgICAg
ICAgICBpZiAocHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPnJvb3QoKS0+Z2V0TG9naWNh
bFN0YXJ0Qm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSA6IGJveC0+cm9vdCgpLT5nZXRMb2dpY2Fs
RW5kQm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
Ym94ID0gbG9naWNhbFN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAm
Ym94LT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBib3gt
PnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGly
ZWN0aW9uID09IExUUiA/IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZz
ZXQoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTE5NSwxOSArMTk1LDE5IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3Vh
bGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICAgICAgICAgIGJveCA9IHByZXZCb3g7Ci0gICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmYm94LT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gYm94LT5y
ZW5kZXJlcigpOwogICAgICAgICAgICAgICAgIG9mZnNldCA9IGJveC0+Y2FyZXRSaWdodG1vc3RP
ZmZzZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5
RGlyZWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgd2hpbGUgKHByZXZCb3ggJiYg
IXByZXZCb3gtPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAgICAgICAgd2hpbGUgKHByZXZCb3gg
JiYgIXByZXZCb3gtPnJlbmRlcmVyKCktPm5vZGUoKSkKICAgICAgICAgICAgICAgICBwcmV2Qm94
ID0gcHJldkJveC0+cHJldkxlYWZDaGlsZCgpOwogCiAgICAgICAgICAgICBpZiAocHJldkJveCkg
ewogICAgICAgICAgICAgICAgIGJveCA9IHByZXZCb3g7Ci0gICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmYm94LT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gYm94LT5y
ZW5kZXJlcigpOwogICAgICAgICAgICAgICAgIG9mZnNldCA9IGJveC0+Y2FyZXRSaWdodG1vc3RP
ZmZzZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoYm94LT5iaWRpTGV2ZWwoKSA+IGxldmVsKSB7
CiAgICAgICAgICAgICAgICAgICAgIGRvIHsKQEAgLTIzNyw3ICsyMzcsNyBAQCBQb3NpdGlvbiBW
aXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9
IGJveC0+YmlkaUxldmVsKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlciA9IGJv
eC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9u
ID09IExUUiA/IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg1LDcgKzI4NSw3IEBAIFBv
c2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkg
Y29uc3QKICAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVj
dGlvbiA9PSBMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwog
Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOworICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gYm94LT5yZW5kZXJlcigpOwogCiAgICAgICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBpZiAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkKCkg
fHwgcmVuZGVyZXItPmlzQlIoKSkgJiYgb2Zmc2V0ID09IGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNl
dCgpKQpAQCAtMjk1LDcgKzI5NSw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgICAgICBib3ggPSBi
b3gtPm5leHRMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gbmV4dFZpc3VhbGx5
RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICByZW5kZXJlciA9
ICZib3gtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBib3gtPnJlbmRl
cmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5jYXJldExlZnRtb3N0T2Zmc2V0
KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0zMjYsNyAr
MzI2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUoKSBjb25zdAogCiAgICAgICAgICAgICAgICAgLy8gUmVwb3NpdGlvbiBhdCB0aGUg
b3RoZXIgbG9naWNhbCBwb3NpdGlvbiBjb3JyZXNwb25kaW5nIHRvIG91ciBlZGdlJ3MgdmlzdWFs
IHBvc2l0aW9uIGFuZCBnbyBmb3IgYW5vdGhlciByb3VuZC4KICAgICAgICAgICAgICAgICBib3gg
PSBuZXh0Qm94OwotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsK
KyAgICAgICAgICAgICAgICByZW5kZXJlciA9IGJveC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBuZXh0Qm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgUG9zaXRp
b24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25z
dAogICAgICAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxFbmQgPSAwOwogICAgICAg
ICAgICAgICAgICAgICBpZiAocHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPnJvb3QoKS0+
Z2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpIDogYm94LT5yb290KCktPmdldExv
Z2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBib3ggPSBsb2dpY2FsRW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIg
PSAmYm94LT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBi
b3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5
RGlyZWN0aW9uID09IExUUiA/IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5P
ZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTM2MiwxOSArMzYyLDE5IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKIAogICAgICAgICAgICAgICAgIC8vIEZv
ciBleGFtcGxlLCBhYmMgMTIzIF4gQ0JBIG9yIDEyMyBeIENCQSBhYmMKICAgICAgICAgICAgICAg
ICBib3ggPSBuZXh0Qm94OwotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlciA9IGJveC0+cmVuZGVyZXIoKTsKICAgICAg
ICAgICAgICAgICBvZmZzZXQgPSBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsKICAgICAgICAg
ICAgICAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgd2hpbGUgKG5leHRCb3ggJiYgIW5leHRCb3gtPnJlbmRlcmVy
KCkubm9kZSgpKQorICAgICAgICAgICAgd2hpbGUgKG5leHRCb3ggJiYgIW5leHRCb3gtPnJlbmRl
cmVyKCktPm5vZGUoKSkKICAgICAgICAgICAgICAgICBuZXh0Qm94ID0gbmV4dEJveC0+bmV4dExl
YWZDaGlsZCgpOwogCiAgICAgICAgICAgICBpZiAobmV4dEJveCkgewogICAgICAgICAgICAgICAg
IGJveCA9IG5leHRCb3g7Ci0gICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJl
cigpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gYm94LT5yZW5kZXJlcigpOwogICAgICAg
ICAgICAgICAgIG9mZnNldCA9IGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKGJveC0+YmlkaUxldmVsKCkgPiBsZXZlbCkgewpAQCAtNDA1LDcgKzQwNSw3
IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAg
ICByZW5kZXJlciA9IGJveC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBw
cmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2Fy
ZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjEy
LDcgKzYxMiw3IEBAIExheW91dFJlY3QgVmlzaWJsZVBvc2l0aW9uOjpsb2NhbENhcmV0UmVjdChS
ZW5kZXJPYmplY3QqJiByZW5kZXJlcikgY29uc3QKICAgICBnZXRJbmxpbmVCb3hBbmRPZmZzZXQo
aW5saW5lQm94LCBjYXJldE9mZnNldCk7CiAKICAgICBpZiAoaW5saW5lQm94KQotICAgICAgICBy
ZW5kZXJlciA9ICZpbmxpbmVCb3gtPnJlbmRlcmVyKCk7CisgICAgICAgIHJlbmRlcmVyID0gaW5s
aW5lQm94LT5yZW5kZXJlcigpOwogCiAgICAgcmV0dXJuIHJlbmRlcmVyLT5sb2NhbENhcmV0UmVj
dChpbmxpbmVCb3gsIGNhcmV0T2Zmc2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcAppbmRleCBmMGJjNTZjLi41MjM0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIGNvbnN0IElubGlu
ZVRleHRCb3gqIGxvZ2ljYWxseVByZXZpb3VzQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlz
aWJsZVAKICAgICAgICAgcmV0dXJuIHByZXZpb3VzQm94OwogCiAgICAgd2hpbGUgKDEpIHsKLSAg
ICAgICAgTm9kZSogc3RhcnROb2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCkubm9uUHNldWRvTm9k
ZSgpOworICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIoKSA/IHN0
YXJ0Qm94LT5yZW5kZXJlcigpLT5ub25Qc2V1ZG9Ob2RlKCkgOiAwOwogICAgICAgICBpZiAoIXN0
YXJ0Tm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGlj
IGNvbnN0IElubGluZVRleHRCb3gqIGxvZ2ljYWxseU5leHRCb3goY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXQKICAgICAgICAgcmV0dXJuIG5leHRCb3g7CiAKICAgICB3aGlsZSAo
MSkgewotICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIoKS5ub25Q
c2V1ZG9Ob2RlKCk7CisgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJl
cigpID8gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vblBzZXVkb05vZGUoKSA6IDA7CiAgICAgICAg
IGlmICghc3RhcnROb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTI5MywxMCArMjkzLDEw
IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZz
ZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zCiAgICAgc3RyaW5nLmNsZWFyKCk7CiAgICAgaWYg
KHByZXZpb3VzQm94KSB7CiAgICAgICAgIHByZXZpb3VzQm94TGVuZ3RoID0gcHJldmlvdXNCb3gt
PmxlbigpOwotICAgICAgICBzdHJpbmcuYXBwZW5kKHByZXZpb3VzQm94LT50ZXh0UmVuZGVyZXIo
KS50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHByZXZpb3VzQm94LT5zdGFydCgpLCBwcmV2aW91c0Jv
eExlbmd0aCk7CisgICAgICAgIHN0cmluZy5hcHBlbmQocHJldmlvdXNCb3gtPnRleHRSZW5kZXJl
cigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHByZXZpb3VzQm94LT5zdGFydCgpLCBwcmV2aW91
c0JveExlbmd0aCk7IAogICAgICAgICBsZW4gKz0gcHJldmlvdXNCb3hMZW5ndGg7CiAgICAgfQot
ICAgIHN0cmluZy5hcHBlbmQodGV4dEJveC0+dGV4dFJlbmRlcmVyKCkudGV4dCgpLT5jaGFyYWN0
ZXJzKCkgKyB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CisgICAgc3RyaW5nLmFw
cGVuZCh0ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyB0ZXh0
Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CiAgICAgbGVuICs9IHRleHRCb3gtPmxlbigp
OwogCiAgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7CkBA
IC0zMTIsMTAgKzMxMiwxMCBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0
ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvcwogCiAgICAgaW50IGxl
biA9IDA7CiAgICAgc3RyaW5nLmNsZWFyKCk7Ci0gICAgc3RyaW5nLmFwcGVuZCh0ZXh0Qm94LT50
ZXh0UmVuZGVyZXIoKS50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRl
eHRCb3gtPmxlbigpKTsKKyAgICBzdHJpbmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5kZXJlcigp
LT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigp
KTsKICAgICBsZW4gKz0gdGV4dEJveC0+bGVuKCk7CiAgICAgaWYgKG5leHRCb3gpIHsKLSAgICAg
ICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS50ZXh0KCktPmNoYXJhY3Rl
cnMoKSArIG5leHRCb3gtPnN0YXJ0KCksIG5leHRCb3gtPmxlbigpKTsKKyAgICAgICAgc3RyaW5n
LmFwcGVuZChuZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBu
ZXh0Qm94LT5zdGFydCgpLCBuZXh0Qm94LT5sZW4oKSk7IAogICAgICAgICBsZW4gKz0gbmV4dEJv
eC0+bGVuKCk7CiAgICAgfQogCkBAIC0zODIsNyArMzgyLDcgQEAgc3RhdGljIFZpc2libGVQb3Np
dGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9z
aXRpb24KICAgICAgICAgZWxzZSBpZiAob2Zmc2V0SW5Cb3ggPT0gYm94LT5jYXJldE1heE9mZnNl
dCgpKQogICAgICAgICAgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91
bmRhcnkodmlzaWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRCbG9jaywg
c3RyaW5nLCBsZWFmQm94ZXMpOwogICAgICAgICBlbHNlIGlmIChtb3ZpbmdJbnRvTmV3Qm94KSB7
Ci0gICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dEJveC0+dGV4dFJlbmRl
cmVyKCkudGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5s
ZW4oKSk7CisgICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dEJveC0+dGV4
dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgdGV4dEJveC0+c3RhcnQoKSwgdGV4
dEJveC0+bGVuKCkpOwogICAgICAgICAgICAgcHJldmlvdXNseVZpc2l0ZWRCb3ggPSBib3g7CiAg
ICAgICAgIH0KIApAQCAtNzM4LDcgKzczOCwxMSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0
YXJ0UG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaQog
ICAgICAgICAgICAgaWYgKCFzdGFydEJveCkKICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5yZW5kZXJl
cigpLm5vblBzZXVkb05vZGUoKTsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5k
ZXJlciA9IHN0YXJ0Qm94LT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFzdGFydFJlbmRl
cmVyKQorICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKworICAgICAg
ICAgICAgc3RhcnROb2RlID0gc3RhcnRSZW5kZXJlci0+bm9uUHNldWRvTm9kZSgpOwogICAgICAg
ICAgICAgaWYgKHN0YXJ0Tm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtODA2LDcg
KzgxMCwxMSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAogICAgICAgICAgICAgaWYgKCFlbmRC
b3gpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCi0gICAgICAg
ICAgICBlbmROb2RlID0gZW5kQm94LT5yZW5kZXJlcigpLm5vblBzZXVkb05vZGUoKTsKKyAgICAg
ICAgICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmRCb3gtPnJlbmRlcmVyKCk7Cisg
ICAgICAgICAgICBpZiAoIWVuZFJlbmRlcmVyKQorICAgICAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKKworICAgICAgICAgICAgZW5kTm9kZSA9IGVuZFJlbmRlcmVyLT5ub25Q
c2V1ZG9Ob2RlKCk7CiAgICAgICAgICAgICBpZiAoZW5kTm9kZSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIApAQCAtOTAxLDEyICs5MDksMTIgQEAgYm9vbCBpc0VuZE9mTGlu
ZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJnApCiBzdGF0aWMgaW5saW5lIEludFBvaW50IGFic29s
dXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50SW5CbG9jayhSb290SW5saW5lQm94KiBy
b290LCBpbnQgbGluZURpcmVjdGlvblBvaW50KQogewogICAgIEFTU0VSVChyb290KTsKLSAgICBS
ZW5kZXJCbG9jayYgY29udGFpbmluZ0Jsb2NrID0gcm9vdC0+YmxvY2soKTsKLSAgICBGbG9hdFBv
aW50IGFic29sdXRlQmxvY2tQb2ludCA9IGNvbnRhaW5pbmdCbG9jay5sb2NhbFRvQWJzb2x1dGUo
RmxvYXRQb2ludCgpKTsKLSAgICBpZiAoY29udGFpbmluZ0Jsb2NrLmhhc092ZXJmbG93Q2xpcCgp
KQotICAgICAgICBhYnNvbHV0ZUJsb2NrUG9pbnQgLT0gY29udGFpbmluZ0Jsb2NrLnNjcm9sbGVk
Q29udGVudE9mZnNldCgpOworICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSByb290
LT5ibG9jaygpOworICAgIEZsb2F0UG9pbnQgYWJzb2x1dGVCbG9ja1BvaW50ID0gY29udGFpbmlu
Z0Jsb2NrLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpKTsKKyAgICBpZiAoY29udGFpbmlu
Z0Jsb2NrLT5oYXNPdmVyZmxvd0NsaXAoKSkKKyAgICAgICAgYWJzb2x1dGVCbG9ja1BvaW50IC09
IGNvbnRhaW5pbmdCbG9jay0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAKLSAgICBpZiAoY29u
dGFpbmluZ0Jsb2NrLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgaWYgKHJvb3QtPmJs
b2NrKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBJbnRQb2lu
dChsaW5lRGlyZWN0aW9uUG9pbnQgLSBhYnNvbHV0ZUJsb2NrUG9pbnQueCgpLCByb290LT5ibG9j
a0RpcmVjdGlvblBvaW50SW5MaW5lKCkpOwogCiAgICAgcmV0dXJuIEludFBvaW50KHJvb3QtPmJs
b2NrRGlyZWN0aW9uUG9pbnRJbkxpbmUoKSwgbGluZURpcmVjdGlvblBvaW50IC0gYWJzb2x1dGVC
bG9ja1BvaW50LnkoKSk7CkBAIC05NTEsMTEgKzk1OSwxMSBAQCBWaXNpYmxlUG9zaXRpb24gcHJl
dmlvdXNMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ2aXNpYmxlUG9zaXRpb24s
IGludAogICAgIGlmIChyb290KSB7CiAgICAgICAgIC8vIEZJWE1FOiBDYW4gYmUgd3JvbmcgZm9y
IG11bHRpLWNvbHVtbiBsYXlvdXQgYW5kIHdpdGggdHJhbnNmb3Jtcy4KICAgICAgICAgSW50UG9p
bnQgcG9pbnRJbkxpbmUgPSBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQb2ludElu
QmxvY2socm9vdCwgbGluZURpcmVjdGlvblBvaW50KTsKLSAgICAgICAgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciA9IHJvb3QtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb2ludChwb2ludEluTGluZSwgaXNF
ZGl0YWJsZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgTm9kZSogbm9kZSA9IHJl
bmRlcmVyLm5vZGUoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHJvb3QtPmNs
b3Nlc3RMZWFmQ2hpbGRGb3JQb2ludChwb2ludEluTGluZSwgaXNFZGl0YWJsZVBvc2l0aW9uKHAp
KS0+cmVuZGVyZXIoKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CiAg
ICAgICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKICAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsKLSAgICAgICAgcmV0
dXJuIHJlbmRlcmVyLnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkxpbmUpOworICAgICAgICByZXR1
cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkxpbmUpOwogICAgIH0KICAgICAK
ICAgICAvLyBDb3VsZCBub3QgZmluZCBhIHByZXZpb3VzIGxpbmUuIFRoaXMgbWVhbnMgd2UgbXVz
dCBhbHJlYWR5IGJlIG9uIHRoZSBmaXJzdCBsaW5lLgpAQCAtMTAwOSwxMSArMTAxNywxMSBAQCBW
aXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZp
c2libGVQb3NpdGlvbiwgaW50IGxpbgogICAgIGlmIChyb290KSB7CiAgICAgICAgIC8vIEZJWE1F
OiBDYW4gYmUgd3JvbmcgZm9yIG11bHRpLWNvbHVtbiBsYXlvdXQgYW5kIHdpdGggdHJhbnNmb3Jt
cy4KICAgICAgICAgSW50UG9pbnQgcG9pbnRJbkxpbmUgPSBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Q
b2ludFRvTG9jYWxQb2ludEluQmxvY2socm9vdCwgbGluZURpcmVjdGlvblBvaW50KTsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlciA9IHJvb3QtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb2lu
dChwb2ludEluTGluZSwgaXNFZGl0YWJsZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKLSAgICAg
ICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLm5vZGUoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IHJvb3QtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb2ludChwb2ludEluTGluZSwgaXNF
ZGl0YWJsZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IHJl
bmRlcmVyLT5ub2RlKCk7CiAgICAgICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVu
dChub2RlKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShu
b2RlKTsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkxp
bmUpOworICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkxp
bmUpOwogICAgIH0KIAogICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgbmV4dCBsaW5lLiBUaGlzIG1l
YW5zIHdlIG11c3QgYWxyZWFkeSBiZSBvbiB0aGUgbGFzdCBsaW5lLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3Bw
CmluZGV4IDM4MGRkZDMuLjFjY2E2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21t
YW5kOjpXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiBl
bGVtZW50KQotICAgIDogU2ltcGxlRWRpdENvbW1hbmQoZWxlbWVudC0+ZG9jdW1lbnQoKSkKKyAg
ICA6IFNpbXBsZUVkaXRDb21tYW5kKCZlbGVtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9lbGVt
ZW50KGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpleGVjdXRlQXBwbHkoKQogCiB2
b2lkIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgbV9k
dW1teVNwYW4gPSBjcmVhdGVTdHlsZVNwYW5FbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICBtX2R1
bW15U3BhbiA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgCiAgICAg
ZXhlY3V0ZUFwcGx5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
aW5kZXggYjgzNDI1OC4uMDMwNjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsOCArNDUsNiBAQAogI2ltcG9ydCAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVuZGVy
QmxvY2suaCIKLSNpbXBvcnQgIlJlbmRlckltYWdlLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUJ1ZmZl
ci5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTb3Vu
ZC5oIgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0eVNldC5oIgpAQCAtNzksMTEgKzc3LDExIEBAIHZv
aWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJv
b2wgYWxsb3dQbGFpblRleHQpCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFu
Z2UoKTsKICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKLSAgICBjbGllbnQoKS0+c2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChOU0dlbmVyYWxQYm9hcmQpOworICAgIG1fZnJhbWUuZWRpdG9y
KCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJvYXJkKTsKICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVu
dEZyYWdtZW50KCZtX2ZyYW1lLCByYW5nZSwgYWxsb3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4
dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCBy
YW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAgcGFzdGVBc0ZyYWdtZW50
KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFs
c2UpOwotICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKKyAg
ICBtX2ZyYW1lLmVkaXRvcigpLmNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmlu
ZygpKTsKIH0KIAogYm9vbCBFZGl0b3I6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVk
Q29udGVudCgpCkBAIC0zNDgsNTIgKzM0Niw0IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogICAgIHBhc3RlYm9hcmQud3Jp
dGVBZnRlclNldHRpbmdUeXBlcyhjb250ZW50KTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0SW1hZ2Uo
RWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2Uq
JiBjYWNoZWRJbWFnZSkKLXsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW1hZ2VFbGVt
ZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2Uo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ2FjaGVkSW1hZ2UqIHRlbnRhdGl2ZUNhY2hlZElt
YWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmNhY2hlZEltYWdlKCk7Ci0gICAgaWYgKCF0
ZW50YXRpdmVDYWNoZWRJbWFnZSB8fCB0ZW50YXRpdmVDYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJl
ZCgpKSB7Ci0gICAgICAgIHRlbnRhdGl2ZUNhY2hlZEltYWdlID0gMDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGltYWdlID0gdGVudGF0aXZlQ2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGNhY2hlZEltYWdlID0gdGVudGF0aXZlQ2FjaGVkSW1hZ2U7Ci19Ci0KLXZvaWQgRWRpdG9yOjp3
cml0ZVVSTFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCi17Ci0gICAgUGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJk
VVJMOwotICAgIHBhc3RlYm9hcmRVUkwudXJsID0gdXJsOwotICAgIHBhc3RlYm9hcmRVUkwudGl0
bGUgPSB0aXRsZTsKLSAgICBwYXN0ZWJvYXJkVVJMLnVzZXJWaXNpYmxlRm9ybSA9IGNsaWVudCgp
LT51c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkVVJMLnVybCk7Ci0KLSAgICBwYXN0ZWJvYXJk
LndyaXRlKHBhc3RlYm9hcmRVUkwpOwotfQotCi12b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFz
dGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKLXsKLSAgICBQYXN0ZWJvYXJkSW1h
Z2UgcGFzdGVib2FyZEltYWdlOwotCi0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlOwotICAg
IGdldEltYWdlKGltYWdlRWxlbWVudCwgcGFzdGVib2FyZEltYWdlLmltYWdlLCBjYWNoZWRJbWFn
ZSk7Ci0gICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAg
ICBBU1NFUlQoY2FjaGVkSW1hZ2UpOwotCi0gICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSB1
cmw7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwotICAgIHBhc3RlYm9h
cmRJbWFnZS51cmwudXNlclZpc2libGVGb3JtID0gY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5n
KHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOwotICAg
IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2FjaGVkSW1hZ2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKTsKLQotICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZEltYWdlKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmlu
ZGV4IGFjNmUwYTkuLjYyZjVlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTM2
LDEwICszNiwxMCBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJD
aGlsZExpc3RNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29udGV4dEZlYXR1cmVzLmgiCisj
aW5jbHVkZSAiRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgotI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtOTI2LDExICs5MjYsMTEgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbWVudEZyb21Ob2RlcyhEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IFYKIAogU3RyaW5nIGRv
Y3VtZW50VHlwZVN0cmluZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRy
PERvY3VtZW50VHlwZT4gZG9jdW1lbnRUeXBlID0gZG9jdW1lbnQuZG9jdHlwZSgpOworICAgIERv
Y3VtZW50VHlwZSogZG9jdW1lbnRUeXBlID0gZG9jdW1lbnQuZG9jdHlwZSgpOwogICAgIGlmICgh
ZG9jdW1lbnRUeXBlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gY3Jl
YXRlTWFya3VwKGRvY3VtZW50VHlwZS5nZXQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cChk
b2N1bWVudFR5cGUpOwogfQogCiBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25zdCBOb2RlKiBu
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCmluZGV4IGQ0YWQ2OWIu
LmNmNDY5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTE0
OSwxMiArMTQ5LDI0IEBAIGlubGluZSBMaW5rSGFzaCBIVE1MQW5jaG9yRWxlbWVudDo6dmlzaXRl
ZExpbmtIYXNoKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRWaXNpdGVkTGlua0hhc2g7IAog
fQogCitpbmxpbmUgYm9vbCBpc0hUTUxBbmNob3JFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphVGFnKTsKK30KKworaW5s
aW5lIGJvb2wgaXNIVE1MQW5jaG9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YVRhZyk7Cit9CisKIGlu
bGluZSBIVE1MQW5jaG9yRWxlbWVudCogdG9IVE1MQW5jaG9yRWxlbWVudChOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzSFRNTEFu
Y2hvckVsZW1lbnQobm9kZSkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxl
bWVudCo+KG5vZGUpOwogfQogCit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGU8SFRNTEFuY2hvckVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIHsgcmV0dXJuIGlz
SFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCk7IH0KKwogLy8gRnVuY3Rpb25zIHNoYXJlZCB3aXRo
IHRoZSBvdGhlciBhbmNob3IgZWxlbWVudHMgKGkuZS4sIFNWRykuCiAKIGJvb2wgaXNFbnRlcktl
eUtleWRvd25FdmVudChFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVt
ZW50LmNwcAppbmRleCBiY2MyNzQxLi5lMDhhZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcHBsZXRFbGVtZW50LmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJFbGVtZW50SXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKaW5kZXggZDZjMmMzZC4uOGZmYzAyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oCkBAIC03MCw2ICs3MCwxOCBAQCBwcml2
YXRlOgogICAgIFNoYXBlIG1fc2hhcGU7CiB9OwogCitpbmxpbmUgYm9vbCBpc0hUTUxBcmVhRWxl
bWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6YXJlYVRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTEFyZWFFbGVtZW50KGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjphcmVhVGFnKTsKK30KKwordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVt
ZW50T2ZUeXBlPEhUTUxBcmVhRWxlbWVudD4oY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyByZXR1
cm4gaXNIVE1MQXJlYUVsZW1lbnQoZWxlbWVudCk7IH0KKwogaW5saW5lIEhUTUxBcmVhRWxlbWVu
dCogdG9IVE1MQXJlYUVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxBcmVhRWxlbWVudChub2RlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCmluZGV4IDgxNTNiMzUuLjA3Y2E0OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCkBAIC00Myw2ICs0MywxNiBAQCBw
cml2YXRlOgogICAgIEhUTUxBdWRpb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50KiwgYm9vbCk7CiB9OwogCitpbmxpbmUgYm9vbCBpc0hUTUxBdWRpb0VsZW1lbnQoTm9kZSog
bm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmF1ZGlvVGFn
KTsKK30KKworaW5saW5lIGJvb2wgaXNIVE1MQXVkaW9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphdWRpb1RhZyk7
Cit9CisKIGlubGluZSBIVE1MQXVkaW9FbGVtZW50KiB0b0hUTUxBdWRpb0VsZW1lbnQoTm9kZSog
bm9kZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBp
c0hUTUxBdWRpb0VsZW1lbnQobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQmFzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50
LmgKaW5kZXggODhlZjdjNy4uMWEzNWY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQmFzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxl
bWVudC5oCkBAIC00NCw2ICs0NCwxOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiB9OwogCitpbmxpbmUgYm9vbCBpc0hU
TUxCYXNlRWxlbWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6YmFzZVRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTEJhc2VF
bGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpiYXNlVGFnKTsKK30KKwordGVtcGxhdGUgPD4gaW5saW5lIGJv
b2wgaXNFbGVtZW50T2ZUeXBlPEhUTUxCYXNlRWxlbWVudD4oY29uc3QgRWxlbWVudCogZWxlbWVu
dCkgeyByZXR1cm4gaXNIVE1MQmFzZUVsZW1lbnQoZWxlbWVudCk7IH0KKwogfSAvLyBuYW1lc3Bh
Y2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXgg
MmZjYjAwYS4uNjU4MTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTg4LDYgKzE4OCwxMSBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPEltYWdl
PiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkgZm9yIHBsYXRmb3Jt
cyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRvIHJlbmRlciAoYW5kIGZvciBD
U1NDYW52YXNWYWx1ZSkuCiB9OwogCitpbmxpbmUgYm9vbCBpc0hUTUxDYW52YXNFbGVtZW50KGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpjYW52YXNUYWcpOworfQorCiBpbmxpbmUgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIHRvSFRN
TENhbnZhc0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxDYW52YXNFbGVtZW50KG5vZGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZWRmZWM2Zi4uOGQ2ZWZlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJD
U1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJET01TZXR0YWJsZVRva2VuTGlzdC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCkBAIC04MDUsMTAgKzgwNCwxMCBAQCBzdGF0aWMgdm9pZCBzZXRIYXNEaXJB
dXRvRmxhZ1JlY3Vyc2l2ZWx5KE5vZGUqIGZpcnN0Tm9kZSwgYm9vbCBmbGFnLCBOb2RlKiBsYXN0
TgogICAgIH0KIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2Us
IGludCBjaGlsZENvdW50RGVsdGEpCiB7Ci0gICAgU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZSk7Ci0gICAgYWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UudHlwZSk7Cisg
ICAgU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3Jl
Q2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBhZGp1c3REaXJlY3Rp
b25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoYmVmb3JlQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOwogfQogCiBib29sIEhUTUxFbGVtZW50OjpoYXNEaXJlY3Rpb25BdXRvKCkgY29u
c3QKQEAgLTg5MCwxMyArODg5LDEzIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlv
bmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50CiAgICAgTm9k
ZSogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZTsKICAgICBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24gPSBkaXJlY3Rpb25hbGl0eSgmc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSk7
CiAgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShjaGlsZCwgZmFsc2UpOwotICAgIGlm
ICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+c3R5bGUoKSB8fCByZW5kZXJlcigpLT5zdHls
ZSgpLT5kaXJlY3Rpb24oKSA9PSB0ZXh0RGlyZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAg
YXV0byBsaW5lYWdlID0gZWxlbWVudExpbmVhZ2UodGhpcyk7Ci0gICAgZm9yIChhdXRvIGVsZW1l
bnRUb0FkanVzdCA9IGxpbmVhZ2UuYmVnaW4oKSwgZW5kID0gbGluZWFnZS5lbmQoKTsgZWxlbWVu
dFRvQWRqdXN0ICE9IGVuZDsgKytlbGVtZW50VG9BZGp1c3QpIHsKLSAgICAgICAgaWYgKGVsZW1l
bnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoJiplbGVtZW50VG9BZGp1c3QpKSB7Ci0gICAgICAgICAg
ICBlbGVtZW50VG9BZGp1c3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpICYmIHJlbmRl
cmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpICE9IHRleHREaXJlY3Rpb24pIHsKKyAgICAgICAg
RWxlbWVudCogZWxlbWVudFRvQWRqdXN0ID0gdGhpczsKKyAgICAgICAgZm9yICg7IGVsZW1lbnRU
b0FkanVzdDsgZWxlbWVudFRvQWRqdXN0ID0gZWxlbWVudFRvQWRqdXN0LT5wYXJlbnRFbGVtZW50
KCkpIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGVsZW1l
bnRUb0FkanVzdCkpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50VG9BZGp1c3QtPnNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC05MTAsMTIgKzkwOSwxMSBAQCB2b2lkIEhUTUxFbGVtZW50
OjpjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpCiAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJ
Zk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQqIGJlZm9yZUNoYW5nZSwgQ2hpbGRD
aGFuZ2VUeXBlIGNoYW5nZVR5cGUpCit2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25h
bGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoTm9kZSogYmVmb3JlQ2hhbmdlLCBpbnQg
Y2hpbGRDb3VudERlbHRhKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGxvb2tzIHN1
c3BpY2lvdXMuCi0gICAgaWYgKGRvY3VtZW50KCkucmVuZGVyZXIoKSAmJiAoY2hhbmdlVHlwZSA9
PSBFbGVtZW50UmVtb3ZlZCB8fCBjaGFuZ2VUeXBlID09IFRleHRSZW1vdmVkKSkgewotICAgICAg
ICBOb2RlKiBub2RlID0gYmVmb3JlQ2hhbmdlID8gYmVmb3JlQ2hhbmdlLT5uZXh0U2libGluZygp
IDogMDsKLSAgICAgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7
CisgICAgaWYgKGRvY3VtZW50KCkucmVuZGVyZXIoKSAmJiBjaGlsZENvdW50RGVsdGEgPCAwKSB7
CisgICAgICAgIE5vZGUqIG5vZGUgPSBiZWZvcmVDaGFuZ2UgPyBOb2RlVHJhdmVyc2FsOjpuZXh0
U2tpcHBpbmdDaGlsZHJlbihiZWZvcmVDaGFuZ2UpIDogMDsKKyAgICAgICAgZm9yIChpbnQgY291
bnRlciA9IDA7IG5vZGUgJiYgY291bnRlciA8IGNoaWxkQ291bnREZWx0YTsgY291bnRlcisrLCBu
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4obm9kZSkpIHsKICAgICAg
ICAgICAgIGlmIChlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KG5vZGUpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCkBAIC05MjYsMTkgKzkyNCwxNSBAQCB2b2lkIEhUTUxFbGVtZW50
OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVu
dCogYmVmbwogICAgIGlmICghc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIE5vZGUqIG9sZE1hcmtlZE5vZGUgPSAwOwotICAgIGlmIChi
ZWZvcmVDaGFuZ2UpCi0gICAgICAgIG9sZE1hcmtlZE5vZGUgPSBjaGFuZ2VUeXBlID09IEVsZW1l
bnRJbnNlcnRlZCA/IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGJlZm9yZUNoYW5nZSkg
OiBiZWZvcmVDaGFuZ2UtPm5leHRTaWJsaW5nKCk7Ci0KKyAgICBOb2RlKiBvbGRNYXJrZWROb2Rl
ID0gYmVmb3JlQ2hhbmdlID8gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oYmVm
b3JlQ2hhbmdlKSA6IDA7CiAgICAgd2hpbGUgKG9sZE1hcmtlZE5vZGUgJiYgZWxlbWVudEFmZmVj
dHNEaXJlY3Rpb25hbGl0eShvbGRNYXJrZWROb2RlKSkKLSAgICAgICAgb2xkTWFya2VkTm9kZSA9
IG9sZE1hcmtlZE5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgICAgIG9sZE1hcmtlZE5vZGUgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihvbGRNYXJrZWROb2RlLCB0aGlzKTsK
ICAgICBpZiAob2xkTWFya2VkTm9kZSkKICAgICAgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNp
dmVseShvbGRNYXJrZWROb2RlLCBmYWxzZSk7CiAKLSAgICBhdXRvIGxpbmVhZ2UgPSBsaW5lYWdl
T2ZUeXBlPEhUTUxFbGVtZW50Pih0aGlzKTsKLSAgICBmb3IgKGF1dG8gZWxlbWVudFRvQWRqdXN0
ID0gbGluZWFnZS5iZWdpbigpLCBlbmQgPSBsaW5lYWdlLmVuZCgpOyBlbGVtZW50VG9BZGp1c3Qg
IT0gZW5kOyArK2VsZW1lbnRUb0FkanVzdCkgewotICAgICAgICBpZiAoZWxlbWVudEFmZmVjdHNE
aXJlY3Rpb25hbGl0eSgmKmVsZW1lbnRUb0FkanVzdCkpIHsKLSAgICAgICAgICAgIGVsZW1lbnRU
b0FkanVzdC0+Y2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsKKyAgICBmb3IgKEVs
ZW1lbnQqIGVsZW1lbnRUb0FkanVzdCA9IHRoaXM7IGVsZW1lbnRUb0FkanVzdDsgZWxlbWVudFRv
QWRqdXN0ID0gZWxlbWVudFRvQWRqdXN0LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgaWYg
KGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoZWxlbWVudFRvQWRqdXN0KSkgeworICAgICAg
ICAgICAgdG9IVE1MRWxlbWVudChlbGVtZW50VG9BZGp1c3QpLT5jYWxjdWxhdGVBbmRBZGp1c3RE
aXJlY3Rpb25hbGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDRmZjAwMDEuLmYxNTY0N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI2luY2x1ZGUgIlN0eWxl
ZEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50VHlwZUNoZWNrcy5oIgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CkBAIC0xMTAsNyArMTA4
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYs
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAgICAgdW5zaWduZWQgcGFyc2VC
b3JkZXJXaWR0aEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0g
ZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50
IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAgIHZvaWQgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCBPVkVSUklERTsKQEAgLTEyNyw3ICsxMjUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkaXJBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZv
aWQgYWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2Vk
KEVsZW1lbnQqIGNoaWxkKTsKLSAgICB2b2lkIGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRB
ZnRlckNoaWxkcmVuQ2hhbmdlZChFbGVtZW50KiBiZWZvcmVDaGFuZ2UsIENoaWxkQ2hhbmdlVHlw
ZSk7CisgICAgdm9pZCBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNo
YW5nZWQoTm9kZSogYmVmb3JlQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKTsKICAgICBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHRO
b2RlPSAwKSBjb25zdDsKIAogICAgIFRyYW5zbGF0ZUF0dHJpYnV0ZU1vZGUgdHJhbnNsYXRlQXR0
cmlidXRlTW9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHAKaW5kZXggZTAwNjg3OC4uNTAzNjFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTUs
NyArMTU0LDcgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1Z2luQ3Jl
YXRpb25PcHRpb24gcGx1Z2luQ3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFy
YW1WYWx1ZXM7CiAgICAgcGFyYW1ldGVyc0ZvclBsdWdpbihwYXJhbU5hbWVzLCBwYXJhbVZhbHVl
cyk7CiAKLSAgICBSZWY8SFRNTEVtYmVkRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7IC8vIExvYWRp
bmcgdGhlIHBsdWdpbiBtaWdodCByZW1vdmUgdXMgZnJvbSB0aGUgZG9jdW1lbnQuCisgICAgUmVm
UHRyPEhUTUxFbWJlZEVsZW1lbnQ+IHByb3RlY3QodGhpcyk7IC8vIExvYWRpbmcgdGhlIHBsdWdp
biBtaWdodCByZW1vdmUgdXMgZnJvbSB0aGUgZG9jdW1lbnQuCiAgICAgYm9vbCBiZWZvcmVMb2Fk
QWxsb3dlZExvYWQgPSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV91cmwpOwogICAg
IGlmICghYmVmb3JlTG9hZEFsbG93ZWRMb2FkKSB7CiAgICAgICAgIGlmIChkb2N1bWVudCgpLmlz
UGx1Z2luRG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAKaW5kZXggNmY4MDNmMS4uOTA0Zjg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0yNSw3ICsyNSw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRWxl
bWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiQ2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkRl
c2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTYzLDkg
KzY0LDkgQEAgdm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5n
ZWQoKQogICAgIGludmFsaWRhdGVEaXNhYmxlZFN0YXRlVW5kZXIodGhpcyk7CiB9CiAKLXZvaWQg
SFRNTEZpZWxkU2V0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBj
aGFuZ2UpCit2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNo
YW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50
IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY2hhbmdlKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOwogCiAgICAgYXV0byBsZWdlbmRDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEhU
TUxMZWdlbmRFbGVtZW50Pih0aGlzKTsKICAgICBmb3IgKGF1dG8gbGVnZW5kID0gbGVnZW5kQ2hp
bGRyZW4uYmVnaW4oKSwgZW5kID0gbGVnZW5kQ2hpbGRyZW4uZW5kKCk7IGxlZ2VuZCAhPSBlbmQ7
ICsrbGVnZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAppbmRl
eCA0YTM0Y2NjLi44YTFlZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgYXJlQXV0aG9yU2hhZG93c0FsbG93
ZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgc3RhdGljIHZvaWQg
aW52YWxpZGF0ZURpc2FibGVkU3RhdGVVbmRlcihFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBlZGUzMTFiLi5kYjIwNjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
QEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiVmFsaWRhdGlvbk1lc3NhZ2UuaCIKICNpbmNsdWRlICJWYWxpZGl0eVN0YXRlLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDE0LDEwICs0MTMsMTAgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pgog
ICAgIGlmICghd2lsbFZhbGlkYXRlKCkgfHwgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAvLyBBbiBldmVudCBoYW5kbGVyIGNhbiBkZXJlZiB0
aGlzIG9iamVjdC4KLSAgICBSZWY8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gcHJvdGVjdCgqdGhp
cyk7Ci0gICAgUmVmPERvY3VtZW50PiBvcmlnaW5hbERvY3VtZW50KGRvY3VtZW50KCkpOworICAg
IFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVm
UHRyPERvY3VtZW50PiBvcmlnaW5hbERvY3VtZW50KCZkb2N1bWVudCgpKTsKICAgICBib29sIG5l
ZWRzRGVmYXVsdEFjdGlvbiA9IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuaW52YWxpZEV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwotICAgIGlmIChuZWVkc0RlZmF1bHRBY3Rp
b24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzICYmIGluRG9jdW1lbnQoKSAmJiAmb3JpZ2lu
YWxEb2N1bWVudC5nZXQoKSA9PSAmZG9jdW1lbnQoKSkKKyAgICBpZiAobmVlZHNEZWZhdWx0QWN0
aW9uICYmIHVuaGFuZGxlZEludmFsaWRDb250cm9scyAmJiBpbkRvY3VtZW50KCkgJiYgb3JpZ2lu
YWxEb2N1bWVudCA9PSAmZG9jdW1lbnQoKSkKICAgICAgICAgdW5oYW5kbGVkSW52YWxpZENvbnRy
b2xzLT5hcHBlbmQodGhpcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGQ0ZTM1N2MuLjVjNjlhM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRl
ICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
IDxsaW1pdHM+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CkBAIC0yMjgsNyArMjI3LDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJh
Y3RpdmVseShFdmVudCogZXZlbnQpCiAgICAgLy8gaGFzICFyZW5kZXJlcigpLT5uZWVkc0xheW91
dCgpIGFzc2VydGlvbi4KICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwogCi0gICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdG9yKHRoaXMpOwogICAgIC8vIEZv
Y3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUgY29udHJvbCBhbmQgc2hvdyBhIHZhbGlkYXRpb24g
bWVzc2FnZS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogdW5o
YW5kbGVkQXNzb2NpYXRlZEVsZW1lbnQgPSB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHNbaV0uZ2V0
KCk7CkBAIC01OTYsNyArNTk1LDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmNoZWNrVmFsaWRp
dHkoKQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6Y2hlY2tJbnZhbGlkQ29udHJvbHNBbmRDb2xs
ZWN0VW5oYW5kbGVkKFZlY3RvcjxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50PiA+JiB1bmhh
bmRsZWRJbnZhbGlkQ29udHJvbHMpCiB7Ci0gICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdG9yKHRoaXMpOwog
ICAgIC8vIENvcHkgbV9hc3NvY2lhdGVkRWxlbWVudHMgYmVjYXVzZSBldmVudCBoYW5kbGVycyBj
YWxsZWQgZnJvbQogICAgIC8vIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHko
KSBtaWdodCBjaGFuZ2UgbV9hc3NvY2lhdGVkRWxlbWVudHMuCiAgICAgVmVjdG9yPFJlZlB0cjxG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ+ID4gZWxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaAppbmRleCA2MWE1YTRiLi45YTc0MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgKQEAgLTE2Niw2ICsxNjYsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
d2FzRGVtb3RlZDsKIH07CiAKK2lubGluZSBib29sIGlzSFRNTEZvcm1FbGVtZW50KE5vZGUqIG5v
ZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb3JtVGFnKTsK
K30KKworaW5saW5lIGJvb2wgaXNIVE1MRm9ybUVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpOworfQor
CiBpbmxpbmUgSFRNTEZvcm1FbGVtZW50KiB0b0hUTUxGb3JtRWxlbWVudChOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzSFRNTEZv
cm1FbGVtZW50KG5vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJF
bGVtZW50LmNwcAppbmRleCA4NzA1Y2YzLi4yZjk1MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogI2lmIEVOQUJMRShTVkcpCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtODIsNyArODEsNyBAQCB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6ZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpCiAgICAgLy8gcmVhY2ggdXAgaW50
byB0aGlzIGRvY3VtZW50IGFuZCB0aGVuIGF0dGVtcHQgdG8gbG9vayBiYWNrIGRvd24uIFdlIHNo
b3VsZAogICAgIC8vIHNlZSBpZiB0aGlzIGJlaGF2aW9yIGlzIHJlYWxseSBuZWVkZWQgYXMgR2Vj
a28gZG9lcyBub3QgYWxsb3cgdGhpcy4KICAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZy
YW1lKCkpIHsKLSAgICAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KCpmcmFtZSk7CisgICAgICAgIFJl
ZlB0cjxGcmFtZT4gcHJvdGVjdChmcmFtZSk7CiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5mcmFt
ZURldGFjaGVkKCk7CiAgICAgICAgIGZyYW1lLT5kaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXgg
OGZkMmQ2MS4uMDQyYmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTE2NCwxMSArMTYzLDEzIEBAIFJlbmRl
ck9iamVjdCAqSFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEg
KmFyZW5hLCBSZW5kZXJTdHlsCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZyYW1lU2V0
KHRoaXMpOwogfQogCi1IVE1MRnJhbWVTZXRFbGVtZW50KiBIVE1MRnJhbWVTZXRFbGVtZW50Ojpm
aW5kQ29udGFpbmluZyhFbGVtZW50KiBkZXNjZW5kYW50KQorSFRNTEZyYW1lU2V0RWxlbWVudCog
SFRNTEZyYW1lU2V0RWxlbWVudDo6ZmluZENvbnRhaW5pbmcoTm9kZSogbm9kZSkKIHsKLSAgICBh
dXRvIGFuY2VzdG9yRnJhbWVTZXRzID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxGcmFtZVNldEVsZW1l
bnQ+KGRlc2NlbmRhbnQpOwotICAgIGF1dG8gZW5jbG9zaW5nRnJhbWVTZXQgPSBhbmNlc3RvckZy
YW1lU2V0cy5iZWdpbigpOwotICAgIHJldHVybiBlbmNsb3NpbmdGcmFtZVNldCAhPSBhbmNlc3Rv
ckZyYW1lU2V0cy5lbmQoKSA/ICYqZW5jbG9zaW5nRnJhbWVTZXQgOiBudWxscHRyOworICAgIGZv
ciAoRWxlbWVudCogcGFyZW50ID0gbm9kZS0+cGFyZW50RWxlbWVudCgpOyBwYXJlbnQ7IHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChpc0hUTUxGcmFtZVNl
dEVsZW1lbnQocGFyZW50KSkKKyAgICAgICAgICAgIHJldHVybiB0b0hUTUxGcmFtZVNldEVsZW1l
bnQocGFyZW50KTsKKyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgSFRNTEZyYW1lU2V0
RWxlbWVudDo6d2lsbEF0dGFjaFJlbmRlcmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5oCmluZGV4IGFjMmE5OWQuLjg0M2ZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBMZW5ndGgqIHJvd0xlbmd0aHMoKSBjb25zdCB7IHJldHVybiBtX3Jvd0xlbmd0aHMu
Z2V0KCk7IH0KICAgICBjb25zdCBMZW5ndGgqIGNvbExlbmd0aHMoKSBjb25zdCB7IHJldHVybiBt
X2NvbExlbmd0aHMuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBIVE1MRnJhbWVTZXRFbGVtZW50KiBm
aW5kQ29udGFpbmluZyhFbGVtZW50KiBkZXNjZW5kYW50KTsKKyAgICBzdGF0aWMgSFRNTEZyYW1l
U2V0RWxlbWVudCogZmluZENvbnRhaW5pbmcoTm9kZSogZGVzY2VuZGFudCk7CiAKICAgICAvLyBE
ZWNsYXJlZCB2aXJ0dWFsIGluIEVsZW1lbnQKICAgICBERUZJTkVfV0lORE9XX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihibHVyKTsKQEAgLTEwMCw2ICsxMDAsMTYgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fbm9yZXNpemU7CiB9OwogCitpbmxpbmUgYm9vbCBpc0hUTUxGcmFtZVNldEVsZW1lbnQo
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmZyYW1lc2V0VGFnKTsKK30KKworaW5saW5lIGJvb2wgaXNIVE1MRnJhbWVTZXRFbGVtZW50
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpmcmFtZXNldFRhZyk7Cit9CisKIGlubGluZSBIVE1MRnJhbWVTZXRFbGVt
ZW50KiB0b0hUTUxGcmFtZVNldEVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxGcmFtZVNldEVsZW1lbnQobm9k
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCAyNDhlNmMyLi45
ZjcxM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMTE1LDYg
KzExNSwxNiBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX2Jlc3RGaXRJbWFnZVVSTDsK
IH07CiAKK2lubGluZSBib29sIGlzSFRNTEltYWdlRWxlbWVudChOb2RlKiBub2RlKQoreworICAg
IHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKTsKK30KKworaW5saW5l
IGJvb2wgaXNIVE1MSW1hZ2VFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJu
IGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcpOworfQorCiBpbmxpbmUgSFRN
TEltYWdlRWxlbWVudCogdG9IVE1MSW1hZ2VFbGVtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgaXNIVE1MSW1hZ2VFbGVtZW50
KG5vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDNi
MDg3M2IuLjEwOGFhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cApAQCAtNjgsNyArNjgsNiBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICNpbmNs
dWRlICJDb2xvcklucHV0VHlwZS5oIgpAQCAtMTAzNSw3ICsxMDM0LDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yIGV2ZW4KICAgICBpZiAoIW1faW5wdXRUeXBlLT5jYW5TZXRWYWx1ZSh2YWx1ZSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gcHJvdGVjdG9yKHRoaXMpOwogICAgIEV2
ZW50UXVldWVTY29wZSBzY29wZTsKICAgICBTdHJpbmcgc2FuaXRpemVkVmFsdWUgPSBzYW5pdGl6
ZVZhbHVlKHZhbHVlKTsKICAgICBib29sIHZhbHVlQ2hhbmdlZCA9IHNhbml0aXplZFZhbHVlICE9
IHRoaXMtPnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4
IDFkNzg3YjcuLjUwNzJiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CkBAIC00NDMsMTYgKzQ0MywyMCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1pbmxpbmUgSFRN
TElucHV0RWxlbWVudCogdG9IVE1MSW5wdXRFbGVtZW50KE5vZGUqIG5vZGUpCitpbmxpbmUgYm9v
bCBpc0hUTUxJbnB1dEVsZW1lbnQoTm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7CisgICAgcmV0dXJu
IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZyk7Cit9CisKK2lubGluZSBib29s
IGlzSFRNTElucHV0RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpOwogfQogCi1pbmxpbmUgY29uc3Qg
SFRNTElucHV0RWxlbWVudCogdG9IVE1MSW5wdXRFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCitp
bmxpbmUgSFRNTElucHV0RWxlbWVudCogdG9IVE1MSW5wdXRFbGVtZW50KE5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgaXNIVE1MSW5w
dXRFbGVtZW50KG5vZGUpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTElucHV0
RWxlbWVudCo+KG5vZGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50
Kj4obm9kZSk7CiB9CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJl
bEVsZW1lbnQuY3BwCmluZGV4IDMyMjI2ZTAuLjg4MzkyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGFiZWxFbGVtZW50LmNwcApAQCAtMjUsOCArMjUsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkRlc2NlbmRh
bnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExh
YmVsRWxlbWVudC5oCmluZGV4IDkwYTM2OTEuLmFiMzE1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExhYmVsRWxlbWVudC5oCkBAIC01NSw2ICs1NSwxOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rp
b24pIE9WRVJSSURFOwogfTsKIAoraW5saW5lIGJvb2wgaXNIVE1MTGFiZWxFbGVtZW50KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjps
YWJlbFRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTExhYmVsRWxlbWVudChjb25zdCBFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6bGFiZWxUYWcpOworfQorCit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGU8SFRNTExhYmVsRWxlbWVudD4oY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gaXNI
VE1MTGFiZWxFbGVtZW50KGVsZW1lbnQpOyB9CisKIGlubGluZSBIVE1MTGFiZWxFbGVtZW50KiB0
b0hUTUxMYWJlbEVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxMYWJlbEVsZW1lbnQobm9kZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAppbmRleCA5YTU1ODhkLi4wM2IxNGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcApAQCAtMjUsNyAr
MjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50
LmgiCiAKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50VHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTQ5LDE2
ICs0OSwyMSBAQCBQYXNzUmVmUHRyPEhUTUxMZWdlbmRFbGVtZW50PiBIVE1MTGVnZW5kRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZwogSFRNTEZvcm1Db250cm9sRWxlbWVu
dCogSFRNTExlZ2VuZEVsZW1lbnQ6OmFzc29jaWF0ZWRDb250cm9sKCkKIHsKICAgICAvLyBDaGVj
ayBpZiB0aGVyZSdzIGEgZmllbGRzZXQgYmVsb25naW5nIHRvIHRoaXMgbGVnZW5kLgotICAgIGF1
dG8gZmllbGRzZXRBbmNlc3RvcnMgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTEZpZWxkU2V0RWxlbWVu
dD4odGhpcyk7Ci0gICAgYXV0byBlbmNsb3NpbmdGaWVsZHNldCA9IGZpZWxkc2V0QW5jZXN0b3Jz
LmJlZ2luKCk7Ci0gICAgaWYgKGVuY2xvc2luZ0ZpZWxkc2V0ID09IGZpZWxkc2V0QW5jZXN0b3Jz
LmVuZCgpKQorICAgIEVsZW1lbnQqIGZpZWxkc2V0ID0gcGFyZW50RWxlbWVudCgpOworICAgIHdo
aWxlIChmaWVsZHNldCAmJiAhZmllbGRzZXQtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKQorICAg
ICAgICBmaWVsZHNldCA9IGZpZWxkc2V0LT5wYXJlbnRFbGVtZW50KCk7CisgICAgaWYgKCFmaWVs
ZHNldCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBGaW5kIGZpcnN0IGZvcm0gZWxlbWVu
dCBpbnNpZGUgdGhlIGZpZWxkc2V0IHRoYXQgaXMgbm90IGEgbGVnZW5kIGVsZW1lbnQuCiAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBjb25zaWRlciB0YWJpbmRleD8KLSAgICBhdXRvIGZpZWxkc2V0
Rm9ybUNvbnRyb2xEZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+KCYqZW5jbG9zaW5nRmllbGRzZXQpOwotICAgIGF1dG8gZmlyc3RGb3JtQ29udHJv
bCA9IGZpZWxkc2V0Rm9ybUNvbnRyb2xEZXNjZW5kYW50cy5iZWdpbigpOwotICAgIHJldHVybiBm
aXJzdEZvcm1Db250cm9sICE9IGZpZWxkc2V0Rm9ybUNvbnRyb2xEZXNjZW5kYW50cy5lbmQoKSA/
ICYqZmlyc3RGb3JtQ29udHJvbCA6IG51bGxwdHI7CisgICAgRWxlbWVudCogZWxlbWVudCA9IGZp
ZWxkc2V0OworICAgIHdoaWxlICgoZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxl
bWVudCwgZmllbGRzZXQpKSkgeworICAgICAgICBpZiAoZWxlbWVudC0+aXNGb3JtQ29udHJvbEVs
ZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Kj4oZWxlbWVudCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgSFRN
TExlZ2VuZEVsZW1lbnQ6OmZvY3VzKGJvb2wsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaAppbmRleCBkY2MwZDM4Li41ODMxNzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oCkBAIC00NSw2ICs0NSwx
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgp
IGNvbnN0IE9WRVJSSURFOwogfTsKIAoraW5saW5lIGJvb2wgaXNIVE1MTGVnZW5kRWxlbWVudChj
b25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6bGVnZW5kVGFnKTsKK30KKworaW5saW5lIGJvb2wgaXNIVE1MTGVnZW5kRWxlbWVudChjb25z
dCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6bGVnZW5kVGFnKTsKK30KKwordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVt
ZW50T2ZUeXBlPEhUTUxMZWdlbmRFbGVtZW50Pihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IHJl
dHVybiBpc0hUTUxMZWdlbmRFbGVtZW50KGVsZW1lbnQpOyB9CisKIH0gLy9uYW1lc3BhY2UKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggMDZiMzhj
OC4uY2QzNzVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAt
NTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRz
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjk5LDcgKzI5OCw3IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYg
YmFzZVVSTCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBDb21wbGV0aW5nIHRoZSBz
aGVldCBsb2FkIG1heSBjYXVzZSBzY3JpcHRzIHRvIGV4ZWN1dGUuCi0gICAgUmVmPEhUTUxMaW5r
RWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPE5vZGU+IHByb3RlY3Rvcih0aGlz
KTsKIAogICAgIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dCgmZG9jdW1lbnQoKSwgYmFz
ZVVSTCwgY2hhcnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKaW5k
ZXggYzc1MTRmZC4uYzVmODIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5j
cHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJIVE1MQXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuaApp
bmRleCA4ZjYyNzQxLi4yMmI4YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5o
CkBAIC01NCw2ICs1NCwxNiBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9
OwogCitpbmxpbmUgYm9vbCBpc0hUTUxNYXBFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgcmV0
dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjptYXBUYWcpOworfQorCitpbmxpbmUgYm9v
bCBpc0hUTUxNYXBFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1l
bnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjptYXBUYWcpOworfQorCiBpbmxpbmUgSFRNTE1hcEVs
ZW1lbnQqIHRvSFRNTE1hcEVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxNYXBFbGVtZW50KG5vZGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDU3ZTlhMDIuLjA0YzA1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBw
bGljYXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVk
ZSAiQ2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKQEAgLTM4LDkgKzM5LDkgQEAKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiRGVzY2VuZGFudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CkBAIC04Myw3ICs4NCw2IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMjY3LDcgKzI2Nyw2IEBAIEhUTUxNZWRp
YUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX3JlYWR5U3RhdGUoSEFWRV9OT1RISU5HKQogICAgICwg
bV9yZWFkeVN0YXRlTWF4aW11bShIQVZFX05PVEhJTkcpCiAgICAgLCBtX3ZvbHVtZSgxLjBmKQot
ICAgICwgbV92b2x1bWVJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbGFzdFNlZWtUaW1lKDAp
CiAgICAgLCBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1h
eCgpKQogICAgICwgbV9jbG9ja1RpbWVBdExhc3RVcGRhdGVFdmVudCgwKQpAQCAtNzEwLDcgKzcw
OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50TmFtZSkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJl
ZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiB7Ci0gICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+
IHByb3RlY3QoKnRoaXMpOyAvLyBsb2FkTmV4dFNvdXJjZUNoaWxkIG1heSBmaXJlICdiZWZvcmVs
b2FkJywgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCisgICAgUmVmUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7IC8vIGxvYWROZXh0U291cmNlQ2hpbGQg
bWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0
aW9ucy4KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAobV9wZW5kaW5nQWN0aW9uRmxh
Z3MgJiBDb25maWd1cmVUZXh0VHJhY2tzKSkKQEAgLTc3Myw3ICs3NzIsNyBAQCBTdHJpbmcgSFRN
TE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlTeQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQogewotICAgIFJl
ZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9hZEludGVybmFsIG1heSBy
ZXN1bHQgaW4gYSAnYmVmb3JlbG9hZCcgZXZlbnQsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBE
T00gbXV0YXRpb25zLgorICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMp
OyAvLyBsb2FkSW50ZXJuYWwgbWF5IHJlc3VsdCBpbiBhICdiZWZvcmVsb2FkJyBldmVudCwgd2hp
Y2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAgICAgCiAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZCgpIik7CiAgICAgCkBAIC0yNzA5LDcgKzI3MDgsNiBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgdm9sLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICAKICAgICBpZiAobV92b2x1bWUgIT0gdm9sKSB7CiAgICAgICAgIG1fdm9s
dW1lID0gdm9sOwotICAgICAgICBtX3ZvbHVtZUluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgICAg
dXBkYXRlVm9sdW1lKCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnZvbHVt
ZWNoYW5nZUV2ZW50KTsKICAgICB9CkBAIC0zODA1LDcgKzM4MDMsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoTWVkaWFQ
bGF5ZXIqKQogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzVmlkZW8oKSkK
LSAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS5jb21wb3NpdG9yKCkuY2FuQWNjZWxl
cmF0ZVZpZGVvUmVuZGVyaW5nKHRvUmVuZGVyVmlkZW8oKnJlbmRlcmVyKCkpKTsKKyAgICAgICAg
cmV0dXJuIHJlbmRlcmVyKCktPnZpZXcoKS5jb21wb3NpdG9yKCkuY2FuQWNjZWxlcmF0ZVZpZGVv
UmVuZGVyaW5nKHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIoKSkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtMzk4MCw4ICszOTc4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVW
b2x1bWUoKQogICAgICAgICB9CiAKICAgICAgICAgbV9wbGF5ZXItPnNldE11dGVkKHNob3VsZE11
dGUpOwotICAgICAgICBpZiAobV92b2x1bWVJbml0aWFsaXplZCkKLSAgICAgICAgICAgIG1fcGxh
eWVyLT5zZXRWb2x1bWUobV92b2x1bWUgKiB2b2x1bWVNdWx0aXBsaWVyKTsKKyAgICAgICAgbV9w
bGF5ZXItPnNldFZvbHVtZShtX3ZvbHVtZSAqIHZvbHVtZU11bHRpcGxpZXIpOwogICAgIH0KIAog
ICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCkBAIC00MzEyLDcgKzQzMDksNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhUGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSog
cHJveHkpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMoS1VS
TCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCiB7
Ci0gICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBzZWxlY3ROZXh0
U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJh
cnkgRE9NIG11dGF0aW9ucy4KKyAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdCh0
aGlzKTsgLy8gc2VsZWN0TmV4dFNvdXJjZUNoaWxkIG1heSBmaXJlICdiZWZvcmVsb2FkJywgd2hp
Y2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAKICAgICBGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLmZyYW1lKCk7CiAKQEAgLTUwODQsMTEgKzUwODEsNiBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheSgpCiAgICAgcGxheSgpOwogfQogCi1ib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxhdGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVx
dWlyZWQoKSBjb25zdAotewotICAgIHJldHVybiAhbV92b2x1bWVJbml0aWFsaXplZDsKLX0KLQog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gcGF1c2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IDA2MTdlNGUuLjBkMjBkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC01MDcsNyArNTA3LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJTZXRTaXplKGNvbnN0IEludFNpemUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJQYXVzZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
clBsYXkoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJQbGF0Zm9ybVZv
bHVtZUNvbmZpZ3VyYXRpb25SZXF1aXJlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVySXNMb29waW5nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBI
b3N0V2luZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSBPVkVSUklERTsKQEAgLTYzOSw3ICs2
MzgsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCiAgICAg
ZG91YmxlIG1fdm9sdW1lOwotICAgIGJvb2wgbV92b2x1bWVJbml0aWFsaXplZDsKICAgICBkb3Vi
bGUgbV9sYXN0U2Vla1RpbWU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9wcmV2aW91c1Byb2dyZXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAppbmRleCBjZTc0NjA3Li41ZDEz
NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaApAQCAtODIsNiArODIs
MTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TWV0ZXJWYWx1ZUVsZW1lbnQ+IG1fdmFsdWU7CiB9
OwogCitpbmxpbmUgYm9vbCBpc0hUTUxNZXRlckVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBy
ZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om1ldGVyVGFnKTsKK30KKwogaW5saW5l
IEhUTUxNZXRlckVsZW1lbnQqIHRvSFRNTE1ldGVyRWxlbWVudChOb2RlKiBub2RlKQogewogICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzSFRNTE1ldGVyRWxl
bWVudChub2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmlu
ZGV4IDk0ODFkNWMuLmI2ODI1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5j
bHVkZSAiQ2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRm9ybURh
dGFMaXN0LmgiCkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxMSw3ICszMTAsNyBAQCB2b2lkIEhUTUxPYmpl
Y3RFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24gcGx1Z2luQ3JlYXRp
b25PcHRpb24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8SFRNTE9iamVjdEVs
ZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBiZWZvcmVsb2FkIGFuZCBwbHVnaW4gbG9hZGluZyBj
YW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KKyAgICBSZWZQdHI8SFRNTE9iamVjdEVs
ZW1lbnQ+IHByb3RlY3QodGhpcyk7IC8vIGJlZm9yZWxvYWQgYW5kIHBsdWdpbiBsb2FkaW5nIGNh
biBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIGJvb2wgYmVmb3JlTG9hZEFsbG93
ZWRMb2FkID0gZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHVybCk7CiAgICAgaWYgKCFy
ZW5kZXJlcigpKSAvLyBEbyBub3QgbG9hZCB0aGUgcGx1Z2luIGlmIGJlZm9yZWxvYWQgcmVtb3Zl
ZCB0aGlzIGVsZW1lbnQgb3IgaXRzIHJlbmRlcmVyLgogICAgICAgICByZXR1cm47CkBAIC0zNDUs
MTQgKzM0NCwxNCBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92
ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KIAotdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIEhUTUxPYmplY3RF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAg
dXBkYXRlRG9jTmFtZWRJdGVtKCk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhdXNlRmFsbGJh
Y2tDb250ZW50KCkpIHsKICAgICAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CiAgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9Ci0gICAgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNo
YW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIH0KIAogYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aXNV
UkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggMzFkMmZkMC4uZmYwMzRlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGRE
b2N1bWVudCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAw
LCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBj
b25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwCmluZGV4IDFkZTZhMjguLmRhZjA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0R3JvdXBFbGVtZW50LmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKICAgICByZXR1
cm4gb3B0Z3JvdXA7CiB9CiAKLXZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICByZWNhbGNT
ZWxlY3RPcHRpb25zKCk7Ci0gICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Up
OworICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZv
cmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogfQogCiB2b2lkIEhUTUxP
cHRHcm91cEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5oCmluZGV4IDMzMGViNzEuLjlhNGFiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5k
TW91c2VFdmVudHMpOwogCkBAIC02Myw2ICs2MywxNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gbV9zdHlsZTsKIH07CiAKK2lubGluZSBib29sIGlzSFRNTE9wdEdyb3VwRWxl
bWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6b3B0Z3JvdXBUYWcpOworfQorCitpbmxpbmUgYm9vbCBpc0hUTUxPcHRHcm91cEVs
ZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6Om9wdGdyb3VwVGFnKTsKK30KKwogaW5saW5lIEhUTUxPcHRHcm91
cEVsZW1lbnQqIHRvSFRNTE9wdEdyb3VwRWxlbWVudChOb2RlKiBub2RlKQogewogICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzSFRNTE9wdEdyb3VwRWxlbWVu
dChub2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4
IDdiNDZjNzcuLmNkZjQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKQEAgLTEzMSw3ICsxMzAsNyBAQCBTdHJpbmcgSFRNTE9wdGlvbkVsZW1l
bnQ6OnRleHQoKSBjb25zdAogCiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRUZXh0KGNvbnN0
IFN0cmluZyAmdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmPEhUTUxPcHRpb25F
bGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlzKTsKKyAgICBSZWZQdHI8Tm9k
ZT4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cyh0aGlzKTsKIAogICAgIC8vIENoYW5naW5nIHRo
ZSB0ZXh0IGNhdXNlcyBhIHJlY2FsYyBvZiBhIHNlbGVjdCdzIGl0ZW1zLCB3aGljaCB3aWxsIHJl
c2V0IHRoZSBzZWxlY3RlZAogICAgIC8vIGluZGV4IHRvIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBz
ZWxlY3QgaXMgc2luZ2xlIHNlbGVjdGlvbiB3aXRoIGEgbWVudSBsaXN0LiBXZSBhdHRlbXB0IHRv
CkBAIC0yNTQsNyArMjUzLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWRT
dGF0ZShib29sIHNlbGVjdGVkKQogICAgICAgICBzZWxlY3QtPmludmFsaWRhdGVTZWxlY3RlZEl0
ZW1zKCk7CiB9CiAKLXZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
dGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQogICAgIGlmIChIVE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlzdCA9IG93bmVyRGF0
YUxpc3RFbGVtZW50KCkpCkBAIC0yNjMsNyArMjYyLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAjZW5kaWYKICAg
ICBpZiAoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKQog
ICAgICAgICBzZWxlY3QtPm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKLSAgICBIVE1M
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAgSFRNTEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCAyNzYyZGJlLi5kMjI5MGI5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtNzksNyArNzksNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhY2Nl
c3NLZXlBY3Rpb24oYm9vbCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAw
LCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAg
IC8vIDxvcHRpb24+IG5ldmVyIGhhcyBhIHJlbmRlcmVyIHNvIHdlIG1hbnVhbGx5IG1hbmFnZSBh
IGNhY2hlZCBzdHlsZS4KICAgICB2b2lkIHVwZGF0ZU5vblJlbmRlclN0eWxlKCk7CkBAIC05NSw2
ICs5NSwxNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKIH07
CiAKK2lubGluZSBib29sIGlzSFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9wdGlvblRhZyk7Cit9CisK
K2lubGluZSBib29sIGlzSFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkK
K3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9wdGlvblRhZyk7
Cit9CisKIGlubGluZSBIVE1MT3B0aW9uRWxlbWVudCogdG9IVE1MT3B0aW9uRWxlbWVudChOb2Rl
KiBub2RlKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8
IGlzSFRNTE9wdGlvbkVsZW1lbnQobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRw
dXRFbGVtZW50LmNwcAppbmRleCAzYWZkZjQxLi5mOTAwNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtODAsMTEgKzgwLDExIEBAIHZvaWQgSFRNTE91
dHB1dEVsZW1lbnQ6OnNldEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fdG9rZW5zLT5z
ZXRWYWx1ZSh2YWx1ZSk7CiB9CiAKLXZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2Us
IE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjcmVhdGVkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJj
ZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlciB8fCBtX2lzU2V0VGV4dENvbnRlbnRJblByb2dy
ZXNzKSB7CisgICAgaWYgKGNyZWF0ZWRCeVBhcnNlciB8fCBtX2lzU2V0VGV4dENvbnRlbnRJblBy
b2dyZXNzKSB7CiAgICAgICAgIG1faXNTZXRUZXh0Q29udGVudEluUHJvZ3Jlc3MgPSBmYWxzZTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE91dHB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1l
bnQuaAppbmRleCA3MjA5OTEyLi5lODNlYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0TGFiZWxzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSwg
Tm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRD
b3VudERlbHRhID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CiAKICAgICB2b2lkIHNl
dFRleHRDb250ZW50SW50ZXJuYWwoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBhcmFtRWxlbWVudC5oCmluZGV4IGVkMDkxYWI0Li5iNjU5NWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQYXJhbUVsZW1lbnQuaApAQCAtNDAsOSArNDAsMjMgQEAgcHJpdmF0ZToKICAgICBI
VE1MUGFyYW1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAg
dmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJS
SURFOworCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogfTsKIAoraW5saW5lIGJvb2wgaXNIVE1MUGFyYW1FbGVt
ZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpwYXJhbVRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTFBhcmFtRWxlbWVudChj
b25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6cGFyYW1UYWcpOworfQorCit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0Vs
ZW1lbnRPZlR5cGU8SFRNTFBhcmFtRWxlbWVudD4oY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyBy
ZXR1cm4gaXNIVE1MUGFyYW1FbGVtZW50KGVsZW1lbnQpOyB9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBy
b2dyZXNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmgKaW5kZXggMzlmZjIzZC4uNjBjMGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJv
Z3Jlc3NFbGVtZW50LmgKQEAgLTY5LDYgKzY5LDEyIEBAIHByaXZhdGU6CiAgICAgUHJvZ3Jlc3NW
YWx1ZUVsZW1lbnQqIG1fdmFsdWU7CiB9OwogCitpbmxpbmUgYm9vbCBpc0hUTUxQcm9ncmVzc0Vs
ZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgcmV0dXJuIG5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwcm9ncmVzc1RhZyk7Cit9CisKIGlubGluZSBIVE1MUHJv
Z3Jlc3NFbGVtZW50KiB0b0hUTUxQcm9ncmVzc0VsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxQcm9ncmVzc0Vs
ZW1lbnQobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcApp
bmRleCBjY2NmYjE3Li4xODI2MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRF
bGVtZW50LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDkgKzUyLDkgQEAg
Ym9vbCBIVE1MU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3JjQXR0ciB8
fCBIVE1MRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2Up
Cit2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENv
dW50RGVsdGEpCiB7Ci0gICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwor
ICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVD
aGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAgIFNjcmlwdEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCgpOwogfQogCkBAIC04MCw3ICs3OSw3IEBAIE5vZGU6Okluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250
YWluZXJOb2RlCiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5n
ICZ2YWx1ZSkKIHsKLSAgICBSZWY8SFRNTFNjcmlwdEVsZW1lbnQ+IHByb3RlY3RGcm9tTXV0YXRp
b25FdmVudHMoKnRoaXMpOworICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0RnJvbU11dGF0aW9uRXZl
bnRzKHRoaXMpOwogCiAgICAgaW50IG51bUNoaWxkcmVuID0gY2hpbGROb2RlQ291bnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCmluZGV4IGUzM2QxNTguLjdkMTRi
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSog
YWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7CiAK
QEAgLTY3LDYgKzY3LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKTsKIH07CiAKK2lu
bGluZSBib29sIGlzSFRNTFNjcmlwdEVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4g
bm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNjcmlwdFRhZyk7Cit9CisKIGlubGluZSBIVE1M
U2NyaXB0RWxlbWVudCogdG9IVE1MU2NyaXB0RWxlbWVudChOb2RlKiBub2RlKQogewogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpzY3JpcHRUYWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAKaW5kZXggMGE3ZDk5MS4uZjZmMzc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTM2OSwxMyArMzY5LDEzIEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OnVwZGF0ZUxpc3RJdGVtU2VsZWN0ZWRTdGF0ZXMoKQogICAgICAgICByZWNhbGNM
aXN0SXRlbXMoKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9k
ZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgc2V0UmVjYWxjTGlz
dEl0ZW1zKCk7CiAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAgICAgbV9sYXN0T25DaGFu
Z2VTZWxlY3Rpb24uY2xlYXIoKTsKIAotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwg
YWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Om9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5oCmluZGV4IDMxNTNhMDYuLmVhM2I5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcml2YXRlOgogICAg
IGludCBsYXN0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGNvbnN0OwogICAgIGludCBuZXh0U2VsZWN0
YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGludCBzdGFydEluZGV4LCBTa2lwRGlyZWN0aW9uKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAgIHZpcnR1YWwgYm9vbCBhcmVB
dXRob3JTaGFkb3dzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBUeXBlQWhlYWREYXRhU291cmNlIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNvdXJjZUVsZW1lbnQuaAppbmRleCBkYzE4MjFmLi5mYzkyMmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCkBAIC01Nyw2ICs1NywxOSBAQCBwcml2YXRlOgog
ICAgIFRpbWVyPEhUTUxTb3VyY2VFbGVtZW50PiBtX2Vycm9yRXZlbnRUaW1lcjsKIH07CiAKK2lu
bGluZSBib29sIGlzSFRNTFNvdXJjZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBy
ZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNvdXJjZVRhZyk7Cit9CisKK2lubGlu
ZSBib29sIGlzSFRNTFNvdXJjZUVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNvdXJjZVRhZyk7Cit9CisK
K3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxIVE1MU291cmNlRWxlbWVu
dD4oY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MU291cmNlRWxlbWVudChl
bGVtZW50KTsgfQorCisKIH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCA4OWYyNDMzLi40MGVhYTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTIwNiw5ICsyMDYsOSBAQCB2b2lk
IEhUTUxTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5yZW1vdmVkRnJvbURvY3VtZW50KCZkb2N1
bWVudCgpLCB0aGlzKTsKIH0KIAotdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKK3ZvaWQgSFRNTFN0eWxlRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5v
ZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIEhUTUxFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3Vu
dERlbHRhKTsKICAgICBtX3N0eWxlU2hlZXRPd25lci5jaGlsZHJlbkNoYW5nZWQodGhpcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKaW5kZXggOTIwZGVhNS4uZTNl
OTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0
ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKQEAgLTkzLDEyICs5MywyNCBAQCBwcml2YXRl
OgogICAgIFNjb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgbV9zY29wZWRTdHlsZVJlZ2lzdHJh
dGlvblN0YXRlOwogfTsKIAoraW5saW5lIGJvb2wgaXNIVE1MU3R5bGVFbGVtZW50KGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdHls
ZVRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTFN0eWxlRWxlbWVudChjb25zdCBFbGVtZW50
KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
c3R5bGVUYWcpOworfQorCiBpbmxpbmUgSFRNTFN0eWxlRWxlbWVudCogdG9IVE1MU3R5bGVFbGVt
ZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
IW5vZGUgfHwgaXNIVE1MU3R5bGVFbGVtZW50KG5vZGUpKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTFN0eWxlRWxlbWVudCo+KG5vZGUpOwogfQogCit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9v
bCBpc0VsZW1lbnRPZlR5cGU8SFRNTFN0eWxlRWxlbWVudD4oY29uc3QgRWxlbWVudCogZWxlbWVu
dCkgeyByZXR1cm4gaXNIVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpOyB9CisKIH0gLy9uYW1lc3Bh
Y2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRl
eCBmOTAyNjEwLi5lZGJkZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNl
dC5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
OTAsNyArMTg5LDcgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6
aW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgUmVmPEhUTUxUYWJsZUVsZW1lbnQ+IHByb3RlY3RGcm9tTXV0YXRpb25F
dmVudHMoKnRoaXMpOworICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRz
KHRoaXMpOwogCiAgICAgUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IGxhc3RSb3cgPSAwOwog
ICAgIFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiByb3cgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCAwZDc2YWI1Li5lYzIxNDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtMTAwLDYgKzEwMCwxNiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX3NoYXJlZENlbGxTdHlsZTsKIH07CiAKK2lu
bGluZSBib29sIGlzSFRNTFRhYmxlRWxlbWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJl
dHVybiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGFibGVUYWcpOworfQorCitpbmxpbmUg
Ym9vbCBpc0hUTUxUYWJsZUVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRhYmxlVGFnKTsKK30KKwogaW5s
aW5lIEhUTUxUYWJsZUVsZW1lbnQqIHRvSFRNTFRhYmxlRWxlbWVudChOb2RlKiBub2RlKQogewog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzSFRNTFRhYmxl
RWxlbWVudChub2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5o
CmluZGV4IDUzZWY0ZjMuLmJlZDc1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlUm93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93RWxlbWVudC5oCkBAIC01MSw2ICs1MSwxOCBAQCBwcml2YXRlOgogICAgIEhUTUxUYWJsZVJv
d0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiB9OwogCitpbmxpbmUg
Ym9vbCBpc0hUTUxUYWJsZVJvd0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1
cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRyVGFnKTsKK30KKworaW5saW5lIGJvb2wg
aXNIVE1MVGFibGVSb3dFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0
dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0clRhZyk7Cit9CisKK3RlbXBsYXRl
PD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTFRhYmxlUm93RWxlbWVudChlbGVtZW50
KTsgfQorCiBpbmxpbmUgSFRNTFRhYmxlUm93RWxlbWVudCogdG9IVE1MVGFibGVSb3dFbGVtZW50
KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5v
ZGUgfHwgaXNIVE1MVGFibGVSb3dFbGVtZW50KG5vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFn
TmFtZXMuaW4KaW5kZXggNDY2MTUyNDUuLmYyZDRlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
Z05hbWVzLmluCkBAIC0zLDE3ICszLDE3IEBAIG5hbWVzcGFjZVByZWZpeD0ieGh0bWwiCiBuYW1l
c3BhY2VVUkk9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCiBmYWxsYmFja0ludGVyZmFj
ZU5hbWU9IkhUTUxVbmtub3duRWxlbWVudCIKIAotYSBpbnRlcmZhY2VOYW1lPUhUTUxBbmNob3JF
bGVtZW50LCBnZW5lcmF0ZVR5cGVDaGVja3MKK2EgaW50ZXJmYWNlTmFtZT1IVE1MQW5jaG9yRWxl
bWVudAogYWJiciBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBhY3JvbnltIGludGVyZmFjZU5h
bWU9SFRNTEVsZW1lbnQKIGFkZHJlc3MgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogYXBwbGV0
IGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKLWFyZWEgZ2VuZXJhdGVUeXBlQ2hlY2tz
CithcmVhCiBhcnRpY2xlIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGFzaWRlIGludGVyZmFj
ZU5hbWU9SFRNTEVsZW1lbnQKLWF1ZGlvIHdyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlLCBj
b25kaXRpb25hbD1WSURFTywgY29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlciwgZ2VuZXJh
dGVUeXBlQ2hlY2tzCithdWRpbyB3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZSwgY29uZGl0
aW9uYWw9VklERU8sIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKIGIgaW50ZXJmYWNl
TmFtZT1IVE1MRWxlbWVudAotYmFzZSBnZW5lcmF0ZVR5cGVDaGVja3MKK2Jhc2UKIGJhc2Vmb250
IGludGVyZmFjZU5hbWU9SFRNTEJhc2VGb250RWxlbWVudAogYmRpIGludGVyZmFjZU5hbWU9SFRN
TEJESUVsZW1lbnQsIEpTSW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogYmRvIGludGVyZmFjZU5h
bWU9SFRNTEVsZW1lbnQKQEAgLTIzLDcgKzIzLDcgQEAgYmxvY2txdW90ZSBpbnRlcmZhY2VOYW1l
PUhUTUxRdW90ZUVsZW1lbnQKIGJvZHkKIGJyIGludGVyZmFjZU5hbWU9SFRNTEJSRWxlbWVudAog
YnV0dG9uIGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAotY2FudmFzIGdlbmVyYXRlVHlwZUNo
ZWNrcworY2FudmFzCiBjYXB0aW9uIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQKIGNlbnRlciBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBjaXRlIGludGVyZmFjZU5hbWU9
SFRNTEVsZW1lbnQKQEAgLTQ0LDE0ICs0NCwxNCBAQCBkbCBpbnRlcmZhY2VOYW1lPUhUTUxETGlz
dEVsZW1lbnQKIGR0IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGVtIGludGVyZmFjZU5hbWU9
SFRNTEVsZW1lbnQKIGVtYmVkIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKLWZpZWxk
c2V0IGludGVyZmFjZU5hbWU9SFRNTEZpZWxkU2V0RWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0Zv
cm1FbGVtZW50LCBnZW5lcmF0ZVR5cGVDaGVja3MKK2ZpZWxkc2V0IGludGVyZmFjZU5hbWU9SFRN
TEZpZWxkU2V0RWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50CiBmaWdjYXB0aW9u
IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGZpZ3VyZSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVt
ZW50CiBmb250CiBmb290ZXIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotZm9ybSBnZW5lcmF0
ZVR5cGVDaGVja3MKK2Zvcm0KIGZyYW1lCi1mcmFtZXNldCBpbnRlcmZhY2VOYW1lPUhUTUxGcmFt
ZVNldEVsZW1lbnQsIGdlbmVyYXRlVHlwZUNoZWNrcworZnJhbWVzZXQgaW50ZXJmYWNlTmFtZT1I
VE1MRnJhbWVTZXRFbGVtZW50CiBoMSBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxlbWVudAog
aDIgaW50ZXJmYWNlTmFtZT1IVE1MSGVhZGluZ0VsZW1lbnQKIGgzIGludGVyZmFjZU5hbWU9SFRN
TEhlYWRpbmdFbGVtZW50CkBAIC02NiwyNSArNjYsMjUgQEAgaHRtbAogaSBpbnRlcmZhY2VOYW1l
PUhUTUxFbGVtZW50CiBpZnJhbWUgaW50ZXJmYWNlTmFtZT1IVE1MSUZyYW1lRWxlbWVudAogaW1h
Z2UgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotaW1nIGludGVyZmFjZU5hbWU9SFRNTEltYWdl
RWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50LCBnZW5lcmF0ZVR5cGVDaGVja3MK
LWlucHV0IGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0NyZWF0
ZWRCeVBhcnNlciwgZ2VuZXJhdGVUeXBlQ2hlY2tzCitpbWcgaW50ZXJmYWNlTmFtZT1IVE1MSW1h
Z2VFbGVtZW50LCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKK2lucHV0IGNvbnN0cnVjdG9y
TmVlZHNGb3JtRWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcgogaW5zIGlu
dGVyZmFjZU5hbWU9SFRNTE1vZEVsZW1lbnQKIGlzaW5kZXggaW50ZXJmYWNlTmFtZT1IVE1MVW5r
bm93bkVsZW1lbnQKIGtiZCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBrZXlnZW4gY29uc3Ry
dWN0b3JOZWVkc0Zvcm1FbGVtZW50Ci1sYWJlbCBnZW5lcmF0ZVR5cGVDaGVja3MKK2xhYmVsCiBs
YXllciBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50Ci1sZWdlbmQgZ2VuZXJhdGVUeXBlQ2hlY2tz
CitsZWdlbmQKIGxpIGludGVyZmFjZU5hbWU9SFRNTExJRWxlbWVudAogbGluayBjb25zdHJ1Y3Rv
ck5lZWRzQ3JlYXRlZEJ5UGFyc2VyCiBsaXN0aW5nIGludGVyZmFjZU5hbWU9SFRNTFByZUVsZW1l
bnQKIG1haW4gaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotbWFwIGdlbmVyYXRlVHlwZUNoZWNr
cworbWFwCiBtYXJrIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIG1hcnF1ZWUKIG1lbnUKIG1l
dGEKLW1ldGVyIGludGVyZmFjZU5hbWU9SFRNTE1ldGVyRWxlbWVudCwgY29uZGl0aW9uYWw9TUVU
RVJfRUxFTUVOVCwgZ2VuZXJhdGVUeXBlQ2hlY2tzCittZXRlciBpbnRlcmZhY2VOYW1lPUhUTUxN
ZXRlckVsZW1lbnQsIGNvbmRpdGlvbmFsPU1FVEVSX0VMRU1FTlQKIG5hdiBpbnRlcmZhY2VOYW1l
PUhUTUxFbGVtZW50CiBub2JyIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIG5vZW1iZWQgaW50
ZXJmYWNlTmFtZT1IVE1MRWxlbWVudApAQCAtOTIsNDMgKzkyLDQzIEBAIG5vZnJhbWVzIGludGVy
ZmFjZU5hbWU9SFRNTEVsZW1lbnQKIG5vbGF5ZXIgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAog
b2JqZWN0IGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0NyZWF0
ZWRCeVBhcnNlcgogb2wgaW50ZXJmYWNlTmFtZT1IVE1MT0xpc3RFbGVtZW50Ci1vcHRncm91cCBp
bnRlcmZhY2VOYW1lPUhUTUxPcHRHcm91cEVsZW1lbnQsIGdlbmVyYXRlVHlwZUNoZWNrcwotb3B0
aW9uIGdlbmVyYXRlVHlwZUNoZWNrcworb3B0Z3JvdXAgaW50ZXJmYWNlTmFtZT1IVE1MT3B0R3Jv
dXBFbGVtZW50CitvcHRpb24KIG91dHB1dCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKIHAg
aW50ZXJmYWNlTmFtZT1IVE1MUGFyYWdyYXBoRWxlbWVudAotcGFyYW0gZ2VuZXJhdGVUeXBlQ2hl
Y2tzCitwYXJhbQogcGxhaW50ZXh0IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHByZQotcHJv
Z3Jlc3MgaW50ZXJmYWNlTmFtZT1IVE1MUHJvZ3Jlc3NFbGVtZW50LCBjb25kaXRpb25hbD1QUk9H
UkVTU19FTEVNRU5ULCBnZW5lcmF0ZVR5cGVDaGVja3MKK3Byb2dyZXNzIGludGVyZmFjZU5hbWU9
SFRNTFByb2dyZXNzRWxlbWVudCwgY29uZGl0aW9uYWw9UFJPR1JFU1NfRUxFTUVOVAogcSBpbnRl
cmZhY2VOYW1lPUhUTUxRdW90ZUVsZW1lbnQKIHJwIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQK
IHJ0IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHJ1YnkgaW50ZXJmYWNlTmFtZT1IVE1MRWxl
bWVudAogcyBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBzYW1wIGludGVyZmFjZU5hbWU9SFRN
TEVsZW1lbnQKLXNjcmlwdCBjb25zdHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyLCBnZW5lcmF0
ZVR5cGVDaGVja3MKK3NjcmlwdCBjb25zdHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyCiBzZWN0
aW9uIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHNlbGVjdCBjb25zdHJ1Y3Rvck5lZWRzRm9y
bUVsZW1lbnQKIHNtYWxsIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKLXNvdXJjZSB3cmFwcGVy
T25seUlmTWVkaWFJc0F2YWlsYWJsZSwgY29uZGl0aW9uYWw9VklERU8sIGdlbmVyYXRlVHlwZUNo
ZWNrcworc291cmNlIHdyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlLCBjb25kaXRpb25hbD1W
SURFTwogc3Bhbgogc3RyaWtlIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHN0cm9uZyBpbnRl
cmZhY2VOYW1lPUhUTUxFbGVtZW50Ci1zdHlsZSBjb25zdHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFy
c2VyLCBnZW5lcmF0ZVR5cGVDaGVja3MKK3N0eWxlIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQ
YXJzZXIKIHN1YiBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBzdW1tYXJ5IGludGVyZmFjZU5h
bWU9SFRNTFN1bW1hcnlFbGVtZW50LCBKU0ludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQsIGNvbmRp
dGlvbmFsPURFVEFJTFNfRUxFTUVOVAogc3VwIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKLXRh
YmxlIGdlbmVyYXRlVHlwZUNoZWNrcwordGFibGUKIHRib2R5IGludGVyZmFjZU5hbWU9SFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQKIHRkIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlQ2VsbEVsZW1lbnQK
IHRlbXBsYXRlIGNvbmRpdGlvbmFsPVRFTVBMQVRFX0VMRU1FTlQKLXRleHRhcmVhIGludGVyZmFj
ZU5hbWU9SFRNTFRleHRBcmVhRWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50LCBn
ZW5lcmF0ZVR5cGVDaGVja3MKK3RleHRhcmVhIGludGVyZmFjZU5hbWU9SFRNTFRleHRBcmVhRWxl
bWVudCwgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50CiB0Zm9vdCBpbnRlcmZhY2VOYW1lPUhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50CiB0aCBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZUNlbGxFbGVt
ZW50CiB0aGVhZCBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ci10aXRsZSBn
ZW5lcmF0ZVR5cGVDaGVja3MKLXRyIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlUm93RWxlbWVudCwg
Z2VuZXJhdGVUeXBlQ2hlY2tzCi10cmFjayB3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZSwg
Y29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIGdlbmVyYXRlVHlwZUNoZWNrcwordGl0bGUKK3RyIGlu
dGVyZmFjZU5hbWU9SFRNTFRhYmxlUm93RWxlbWVudAordHJhY2sgd3JhcHBlck9ubHlJZk1lZGlh
SXNBdmFpbGFibGUsIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiB0dCBpbnRlcmZhY2VOYW1lPUhU
TUxFbGVtZW50CiB1IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHVsIGludGVyZmFjZU5hbWU9
SFRNTFVMaXN0RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKaW5kZXggYTA0OTMwNC4uNmEzYmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApAQCAtMTI5LDkgKzEyOCw5IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVzdG9yZUZv
cm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiAgICAgc2V0VmFs
dWUoc3RhdGVbMF0pOwogfQogCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5n
ZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7Ci0gICAgSFRNTEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIEhUTUxFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGls
ZENvdW50RGVsdGEpOwogICAgIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpOwogICAgIGlm
IChtX2lzRGlydHkpCiAgICAgICAgIHNldElubmVyVGV4dFZhbHVlKHZhbHVlKCkpOwpAQCAtNDA3
LDcgKzQwNiw3IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBj
b25zdAogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBT
dHJpbmcmIGRlZmF1bHRWYWx1ZSkKIHsKLSAgICBSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4gcHJv
dGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAgUmVmUHRyPE5vZGU+IHByb3RlY3RG
cm9tTXV0YXRpb25FdmVudHModGhpcyk7CiAKICAgICAvLyBUbyBwcmVzZXJ2ZSBjb21tZW50cywg
cmVtb3ZlIG9ubHkgdGhlIHRleHQgbm9kZXMsIHRoZW4gYWRkIGEgc2luZ2xlIHRleHQgbm9kZS4K
ICAgICBWZWN0b3I8UmVmUHRyPFRleHQ+PiB0ZXh0Tm9kZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IDY3NTUxMTguLjk3NjRiMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC05Niw3ICs5Niw3IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBh
ZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsK
QEAgLTEyNyw2ICsxMjcsMTYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV93YXNNb2Rp
ZmllZEJ5VXNlcjsKIH07CiAKK2lubGluZSBib29sIGlzSFRNTFRleHRBcmVhRWxlbWVudChOb2Rl
KiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFy
ZWFUYWcpOworfQorCitpbmxpbmUgYm9vbCBpc0hUTUxUZXh0QXJlYUVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRl
eHRhcmVhVGFnKTsKK30KKwogaW5saW5lIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRvSFRNTFRleHRB
cmVhRWxlbWVudChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFub2RlIHx8IGlzSFRNTFRleHRBcmVhRWxlbWVudChub2RlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCAzYTczM2RhLi4yYzljZmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5j
bHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
Miw5ICs2MSw5IEBAIHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVy
Tm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIGRvY3VtZW50KCkucmVtb3ZlVGl0bGUodGhp
cyk7CiB9CiAKLXZvaWQgSFRNTFRpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNo
YW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZSk7CisgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAg
ICAgbV90aXRsZSA9IHRleHRXaXRoRGlyZWN0aW9uKCk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkg
ewogICAgICAgICBpZiAoIWlzSW5TaGFkb3dUcmVlKCkpCkBAIC05MSw3ICs5MCw3IEBAIFN0cmlu
Z1dpdGhEaXJlY3Rpb24gSFRNTFRpdGxlRWxlbWVudDo6dGV4dFdpdGhEaXJlY3Rpb24oKQogCiB2
b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKLSAg
ICBSZWY8SFRNTFRpdGxlRWxlbWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7
CisgICAgUmVmUHRyPE5vZGU+IHByb3RlY3RGcm9tTXV0YXRpb25FdmVudHModGhpcyk7CiAKICAg
ICBpbnQgbnVtQ2hpbGRyZW4gPSBjaGlsZE5vZGVDb3VudCgpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUaXRsZUVsZW1lbnQuaAppbmRleCBiNjk0ZTM2Li5jZDIzMzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaApAQCAtNDEsMTcgKzQxLDI5IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5n
ZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwog
CiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3RpdGxlOwogfTsKIAoraW5saW5lIGJvb2wgaXNI
VE1MVGl0bGVFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjp0aXRsZVRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTFRp
dGxlRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGl0bGVUYWcpOworfQorCiBpbmxpbmUgSFRNTFRpdGxl
RWxlbWVudCogdG9IVE1MVGl0bGVFbGVtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgaXNIVE1MVGl0bGVFbGVtZW50KG5vZGUp
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRpdGxlRWxlbWVudCo+KG5vZGUpOwogfQog
Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8SFRNTFRpdGxlRWxlbWVu
dD4oY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MVGl0bGVFbGVtZW50KGVs
ZW1lbnQpOyB9CisKIH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRyYWNrRWxlbWVudC5oCmluZGV4IDlkOGViM2IuLmM3OTNiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRyYWNrRWxlbWVudC5oCkBAIC05Nyw2ICs5NywxOSBAQCBwcml2YXRlOgogICAgIFRp
bWVyPEhUTUxUcmFja0VsZW1lbnQ+IG1fbG9hZFRpbWVyOwogfTsKIAoraW5saW5lIGJvb2wgaXNI
VE1MVHJhY2tFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjp0cmFja1RhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTFRy
YWNrRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dHJhY2tUYWcpOworfQorCit0ZW1wbGF0ZSA8PiBpbmxp
bmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8SFRNTFRyYWNrRWxlbWVudD4oY29uc3QgRWxlbWVudCog
ZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MVHJhY2tFbGVtZW50KGVsZW1lbnQpOyB9CisKKwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IGIwZTA4ZDcuLmQzYzlkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDcsNyArNDcsNiBAQAog
I2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNyArMTgxLDcgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnByZXBhcmVUb1N0b3BQYXJzaW5nKCkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIg
Y2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAog
ICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBS
ZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8SFRNTERv
Y3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgLy8gTk9URTogVGhpcyBwdW1wIHNo
b3VsZCBvbmx5IGV2ZXIgZW1pdCBidWZmZXJlZCBjaGFyYWN0ZXIgdG9rZW5zLAogICAgIC8vIHNv
IEZvcmNlU3luY2hyb25vdXMgdnMuIEFsbG93WWllbGQgc2hvdWxkIGJlIG1lYW5pbmdsZXNzLgpA
QCAtMjQ2LDcgKzI0NSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5n
QWZ0ZXJZaWVsZCgpCiB7CiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJz
ZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQg
dG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJz
ZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3Rl
Y3QodGhpcyk7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgaWYgKG1f
aGF2ZUJhY2tncm91bmRQYXJzZXIpIHsKQEAgLTMyMSw3ICszMjAsNyBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFz
c093blB0cjxQYQogCiAgICAgLy8gcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJz
ZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50
LAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAg
ICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8SFRN
TERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRl
SFRNTChkb2N1bWVudCgpLCBsaW5lTnVtYmVyKCkuemVyb0Jhc2VkSW50KCkpOwogCkBAIC02MzAs
NyArNjI5LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRoaXMg
cGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3ZSBu
ZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBSZWY8SFRNTERvY3VtZW50
UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBw
cm90ZWN0KHRoaXMpOwogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAgIGlm
ICghbV90b2tlbml6ZXIpIHsKQEAgLTcyMSw3ICs3MjAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3VyY2UpCiAKICAgICAv
LyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9t
IHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVs
ZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKICAgICBTdHJpbmcg
c291cmNlKGlucHV0U291cmNlKTsKIAogICAgIGlmIChtX3ByZWxvYWRTY2FubmVyKSB7CkBAIC04
OTQsNyArODkzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRl
clNjcmlwdEV4ZWN1dGlvbigpCiAgICAgICAgIEFTU0VSVCghbV9sYXN0Q2h1bmtCZWZvcmVTY3Jp
cHQpOwogICAgICAgICAvLyBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlciBj
YW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAg
ICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAg
ICAgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJl
ZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAgICAgICAgIHB1bXBQZW5k
aW5nU3BlY3VsYXRpb25zKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05MzAsNyArOTI5
LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0
aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQg
d2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1
bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNl
cj4gcHJvdGVjdCh0aGlzKTsKIAogICAgIEFTU0VSVChtX3NjcmlwdFJ1bm5lcik7CiAgICAgQVNT
RVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKQEAgLTk1Nyw3ICs5NTYsNyBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogCiAg
ICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQg
ZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0
IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAgICAgbV9z
Y3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAgICAg
aWYgKCFpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCiAgICAgICAgIHJlc3VtZVBhcnNpbmdBZnRlclNj
cmlwdEV4ZWN1dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuY3BwCmluZGV4IGJiNjNjNjIuLjU3MzdmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKQEAgLTEwNyw5ICsxMDcsOSBAQCBib29sIElu
c2VydGlvblBvaW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
ICAgICByZXR1cm4gIWlzQWN0aXZlKCkgJiYgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
c3R5bGUpOwogfQogCi12b2lkIEluc2VydGlvblBvaW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKK3ZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNo
YW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZSk7CisgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQogICAgICAg
ICByb290LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA2MGY2N2UxLi4wYjgyOTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9k
ZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IGY3ZDcyYzUuLmY2YTE2OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKQEAgLTEzODEsNyArMTM4MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoYm9vbCBmb3JjZVVwZGF0ZSkKICNlbHNlCiAg
ICAgICAgIGlmICghbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpIHx8ICFtZWRpYUVsZW1lbnQtPnJl
bmRlcmVyKCktPmlzVmlkZW8oKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmlkZW9C
b3ggPSB0b1JlbmRlclZpZGVvKCptZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkpLnZpZGVvQm94KCk7
CisgICAgICAgIHZpZGVvQm94ID0gdG9SZW5kZXJWaWRlbyhtZWRpYUVsZW1lbnQtPnJlbmRlcmVy
KCkpLT52aWRlb0JveCgpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IDdiOWNhZDQuLjBmYjg1OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpyZXNldCgpCiAgICAgICAgICAgICBtX3ZvbHVtZVNs
aWRlci0+aGlkZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVy
LT5zaG93KCk7Ci0gICAgICAgICAgICBzZXRTbGlkZXJWb2x1bWUoKTsKKyAgICAgICAgICAgIG1f
dm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6
Y2hhbmdlZE11dGUoKQogdm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkVm9sdW1lKCkKIHsKICAg
ICBpZiAobV92b2x1bWVTbGlkZXIpCi0gICAgICAgIHNldFNsaWRlclZvbHVtZSgpOworICAgICAg
ICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7
CiAgICAgaWYgKG1fcGFuZWxNdXRlQnV0dG9uICYmIG1fcGFuZWxNdXRlQnV0dG9uLT5yZW5kZXJl
cigpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+cmVuZGVyZXIoKS0+cmVwYWludCgpOwog
fQpAQCAtNDI1LDExICs0MjUsNiBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnRleHRUcmFja1ByZWZl
cmVuY2VzQ2hhbmdlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBNZWRpYUNvbnRyb2xzOjpzZXRTbGlk
ZXJWb2x1bWUoKQotewotICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRy
b2xsZXItPm11dGVkKCkgPyAwLjAgOiBtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwotfQot
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9scy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5o
CmluZGV4IDU4MDA3MmYuLjg5OGVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzLmgKQEAgLTExNCw4ICsxMTQsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2ZW50Kik7CiAKLSAgICB2b2lkIHNldFNs
aWRlclZvbHVtZSgpOwotCiAgICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29u
dHJvbGxlcjsKIAogICAgIC8vIENvbnRhaW5lciBmb3IgdGhlIG1lZGlhIGNvbnRyb2wgZWxlbWVu
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcAppbmRleCA5MTdhODQyLi41OWQ2NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQoKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+
aGlkZSgpOwogCiAgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBzZXRTbGlkZXJWb2x1
bWUoKTsKKyAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29udHJvbGxl
ci0+dm9sdW1lKCkpOwogCiAgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pIHsK
ICAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNDbG9zZWRDYXB0aW9ucygpKQpAQCAt
MzU0LDcgKzM1NCw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiAKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcikK
LSAgICAgICAgc2V0RnVsbHNjcmVlblNsaWRlclZvbHVtZSgpOworICAgICAgICBtX2Z1bGxTY3Jl
ZW5Wb2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwog
CiAgICAgaWYgKG1faXNGdWxsc2NyZWVuKSB7CiAgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxl
ci0+aXNMaXZlU3RyZWFtKCkpIHsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIE1lZGlhQ29udHJv
bHNBcHBsZTo6Y2hhbmdlZFZvbHVtZSgpCiAgICAgTWVkaWFDb250cm9sczo6Y2hhbmdlZFZvbHVt
ZSgpOwogCiAgICAgaWYgKG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcikKLSAgICAgICAgc2V0RnVs
bHNjcmVlblNsaWRlclZvbHVtZSgpOworICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIt
PnNldFZvbHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwogfQogCiB2b2lkIE1lZGlh
Q29udHJvbHNBcHBsZTo6ZW50ZXJlZEZ1bGxzY3JlZW4oKQpAQCAtNTQ5LDExICs1NDksNiBAQCB2
b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKQogICAg
IHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0
cnVlKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNldEZ1bGxzY3JlZW5TbGlkZXJW
b2x1bWUoKQotewotICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVk
aWFDb250cm9sbGVyLT5tdXRlZCgpID8gMC4wIDogbV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgp
KTsKLX0KLQogYm9vbCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3VsZENsb3NlZENhcHRpb25zQ29u
dGFpbmVyUHJldmVudFBhZ2VTY3JvbGxpbmcoaW50IHdoZWVsRGVsdGFZKQogewogICAgIGludCBz
Y3JvbGxUb3AgPSBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5zY3JvbGxUb3AoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmgKaW5kZXggZTkx
ZmZjMS4uYzdlMWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0FwcGxlLmgKQEAgLTk5LDcgKzk5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2hv
d0Nsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKICAgICB2b2lkIGhpZGVDbG9zZWRDYXB0aW9uVHJh
Y2tMaXN0KCk7Ci0gICAgdm9pZCBzZXRGdWxsc2NyZWVuU2xpZGVyVm9sdW1lKCk7CiAKICAgICBN
ZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KiBtX3Jld2luZEJ1dHRvbjsKICAgICBNZWRp
YUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudCogbV9yZXR1cm5Ub1JlYWxUaW1l
QnV0dG9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0JsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0JsYWNrQmVycnkuY3BwCmluZGV4IGExNDJiYmYuLmUyYTAzNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAK
QEAgLTkzMSw3ICs5MzEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpyZXNldCgp
CiAgICAgICAgIG1fbXV0ZUJ1dHRvbi0+aGlkZSgpOwogCiAgICAgaWYgKG1fdm9sdW1lU2xpZGVy
KQotICAgICAgICBzZXRTbGlkZXJWb2x1bWUoKTsKKyAgICAgICAgbV92b2x1bWVTbGlkZXItPnNl
dFZvbHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwogCiAgICAgaWYgKG1fdG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b24pIHsKICAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5o
YXNDbG9zZWRDYXB0aW9ucygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Bp
bkJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IGE0ZGU3YzkuLmViNzc3MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5o
IgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtOTgsNyArOTcsNyBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIC8vIFRoZSBm
b2xsb3dpbmcgZnVuY3Rpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQgbWF5IHJ1biBKYXZhU2NyaXB0
CiAgICAgICAgICAgICAvLyBjb2RlIHdoaWNoIGRldGFjaGVzIHRoaXMgc2hhZG93IG5vZGUuIFdl
IG5lZWQgdG8gdGFrZSBhIHJlZmVyZW5jZQogICAgICAgICAgICAgLy8gYW5kIGNoZWNrIHJlbmRl
cmVyKCkgYWZ0ZXIgc3VjaCBmdW5jdGlvbiBjYWxscy4KLSAgICAgICAgICAgIFJlZjxTcGluQnV0
dG9uRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gcHJv
dGVjdG9yKHRoaXMpOwogICAgICAgICAgICAgaWYgKG1fc3BpbkJ1dHRvbk93bmVyKQogICAgICAg
ICAgICAgICAgIG1fc3BpbkJ1dHRvbk93bmVyLT5mb2N1c0FuZFNlbGVjdFNwaW5CdXR0b25Pd25l
cigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDNi
YTcyYjkuLmE1YTc4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIlNwZWVjaElucHV0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRl
ICJUZXh0RXZlbnRJbnB1dFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzA5LDcgKzMwOCw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAg
ICAgICAgIG1fY2FwdHVyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBSZWY8SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOwor
ICAgICAgICBSZWZQdHI8SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ+IGhvbGRSZWZCdXR0
b24odGhpcyk7CiAgICAgICAgIGlucHV0LT5mb2N1cygpOwogICAgICAgICBpbnB1dC0+c2VsZWN0
KCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtMzg2LDcgKzM4NSw3
IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnNldFJlY29nbml0aW9uUmVz
dWx0KGludCwgY29uc3QgU3BlZWNoSW5wdXRSCiAgICAgaWYgKCFpbnB1dCB8fCBpbnB1dC0+aXNE
aXNhYmxlZE9yUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPElucHV0Rmll
bGRTcGVlY2hCdXR0b25FbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8SW5wdXRG
aWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ+IGhvbGRSZWZCdXR0b24odGhpcyk7CiAgICAgaWYgKGRv
Y3VtZW50KCkuZG9tV2luZG93KCkpIHsKICAgICAgICAgLy8gQ2FsbCBzZWxlY3Rpb25DaGFuZ2Vk
LCBjYXVzaW5nIHRoZSBlbGVtZW50IHRvIGNhY2hlIHRoZSBzZWxlY3Rpb24sCiAgICAgICAgIC8v
IHNvIHRoYXQgdGhlIHRleHQgZXZlbnQgaW5zZXJ0cyB0aGUgdGV4dCBpbiB0aGlzIGVsZW1lbnQg
ZXZlbiBpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKaW5kZXggODZkNGU4Mi4uNDBhYjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC02MSw3ICs2MSw2IEBACiAKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CkBAIC03NDgs
NyArNzQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uTGF5b3V0VXBkYXRlZChX
ZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3UKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7Ci0gICAgUmVmPFdlYktpdE5hbWVkRmxvdz4gcHJv
dGVjdCgqbmFtZWRGbG93KTsKKyAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0b3Io
bmFtZWRGbG93KTsKIAogICAgIG1fZnJvbnRlbmQtPnJlZ2lvbkxheW91dFVwZGF0ZWQoYnVpbGRP
YmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlk
KSk7CiB9CkBAIC03NzAsNyArNzY5LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9u
T3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2MKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwotICAgIFJlZjxX
ZWJLaXROYW1lZEZsb3c+IHByb3RlY3QoKm5hbWVkRmxvdyk7CisgICAgUmVmUHRyPFdlYktpdE5h
bWVkRmxvdz4gcHJvdGVjdG9yKG5hbWVkRmxvdyk7CiAgICAgCiAgICAgbV9mcm9udGVuZC0+cmVn
aW9uT3ZlcnNldENoYW5nZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBu
YW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggZTcwZWFkOS4uMzIyZWI5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcApAQCAtMzExLDEwICszMTEsMTMgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmF3VWkK
IHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHJhd1VpZCkKIHsKICAgICB1bnNpZ25lZCB1aWQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmF3VWlkKTsKLSAgICBpZiAodHlwZSA9PSBDUFVQcm9maWxl
VHlwZSkKLSAgICAgICAgbV9wcm9maWxlcy5yZW1vdmUodWlkKTsKLSAgICBlbHNlIGlmICh0eXBl
ID09IEhlYXBQcm9maWxlVHlwZSkKLSAgICAgICAgbV9zbmFwc2hvdHMucmVtb3ZlKHVpZCk7Cisg
ICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKKyAgICAgICAgaWYgKG1fcHJvZmlsZXMu
Y29udGFpbnModWlkKSkKKyAgICAgICAgICAgIG1fcHJvZmlsZXMucmVtb3ZlKHVpZCk7CisgICAg
fSBlbHNlIGlmICh0eXBlID09IEhlYXBQcm9maWxlVHlwZSkgeworICAgICAgICBpZiAobV9zbmFw
c2hvdHMuY29udGFpbnModWlkKSkKKyAgICAgICAgICAgIG1fc25hcHNob3RzLnJlbW92ZSh1aWQp
OworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDJkMGI0ZDQuLjhk
ZjI1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjIs
NyArNjIsNiBAQAogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CkBA
IC0yNTAsNyArMjQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9h
ZGluZygpCiB7CiAgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0RnJhbWUobV9mcmFtZSk7Ci0gICAg
UmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0TG9hZGVyKCp0aGlzKTsKKyAgICBSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3RMb2FkZXIodGhpcyk7CiAKICAgICAvLyBJbiBzb21lIHJhcmUg
Y2FzZXMsIGNhbGxpbmcgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nIGNvdWxkIGNhdXNlIGlzTG9h
ZGluZygpIHRvIHJldHVybiBmYWxzZS4KICAgICAvLyAoVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhl
cmUncyBhIHNpbmdsZSBYTUxIdHRwUmVxdWVzdCBjdXJyZW50bHkgbG9hZGluZyBhbmQgc3RvcExv
YWRpbmcgY2F1c2VzIGl0CkBAIC0zNjIsNyArMzYxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
ZmluaXNoZWRMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIEFTU0VSVCghbV9mcmFtZS0+
cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0Rl
YnVnZ2VyUGF1c2VkKG1fZnJhbWUpKTsKICNlbmRpZgogCi0gICAgUmVmPERvY3VtZW50TG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3QodGhp
cyk7CiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikg
ewogICAgICAgICAvLyBBIGRpZEZpbmlzaExvYWRpbmcgZGVsZWdhdGUgbWlnaHQgdHJ5IHRvIGNh
bmNlbCB0aGUgbG9hZCAoZGVzcGl0ZSBpdApAQCAtNTYyLDcgKzU2MSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGJvb2wKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX21haW5SZXNvdXJjZSA9PSByZXNvdXJjZSk7
Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgYm9vbCB3aWxsTG9hZEZhbGxiYWNrID0g
bV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2Uo
cmVxdWVzdCgpLCByZXNwb25zZSk7CiAKICAgICAvLyBUaGUgbWVtb3J5IGNhY2hlIGRvZXNuJ3Qg
dW5kZXJzdGFuZCB0aGUgYXBwbGljYXRpb24gY2FjaGUgb3IgaXRzIGNhY2hpbmcgcnVsZXMuIFNv
IGlmIGEgbWFpbiByZXNvdXJjZSBpcyBzZXJ2ZWQKQEAgLTczMiw3ICs3MzEsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAg
ICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFn
ZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAg
ICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgogICAg
IFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1lKG1fZnJhbWUpOwotICAgIFJlZjxEb2N1bWVudExv
YWRlcj4gcHJvdGVjdExvYWRlcigqdGhpcyk7CisgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBw
cm90ZWN0TG9hZGVyKHRoaXMpOwogCiAgICAgY29tbWl0SWZSZWFkeSgpOwogICAgIEZyYW1lTG9h
ZGVyKiBmcmFtZUxvYWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigpOwpAQCAtOTE1
LDcgKzkxNCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiB7CiAg
ICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1lKG1fZnJh
bWUpOwotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdExvYWRlcigqdGhpcyk7CisgICAg
UmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0TG9hZGVyKHRoaXMpOwogCiAgICAgLy8gSXQg
bmV2ZXIgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBhIGRvY3VtZW50IGxvYWRlciB0aGF0IGlzIGRldGFj
aGVkIGZyb20gaXRzCiAgICAgLy8gZnJhbWUgaGF2ZSBhbnkgbG9hZHMgYWN0aXZlLCBzbyBnbyBh
aGVhZCBhbmQga2lsbCBhbGwgdGhlIGxvYWRzLgpAQCAtMTMxMSw4ICsxMzEwLDEwIEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmFkZFN1YnJlc291cmNlTG9hZGVyKFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIpCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlbW92ZVN1YnJlc291cmNlTG9hZGVyKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFtX3N1YnJlc291cmNlTG9hZGVycy5yZW1v
dmUobG9hZGVyKSkKKyAgICBSZXNvdXJjZUxvYWRlclNldDo6aXRlcmF0b3IgaXQgPSBtX3N1YnJl
c291cmNlTG9hZGVycy5maW5kKGxvYWRlcik7CisgICAgaWYgKGl0ID09IG1fc3VicmVzb3VyY2VM
b2FkZXJzLmVuZCgpKQogICAgICAgICByZXR1cm47CisgICAgbV9zdWJyZXNvdXJjZUxvYWRlcnMu
cmVtb3ZlKGl0KTsKICAgICBjaGVja0xvYWRDb21wbGV0ZSgpOwogICAgIGlmIChGcmFtZSogZnJh
bWUgPSBtX2ZyYW1lKQogICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hlY2tMb2FkQ29tcGxldGUo
KTsKQEAgLTE0MTgsNyArMTQxOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGlu
Z01haW5SZXNvdXJjZSgpCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4g
cHJvdGVjdCh0aGlzKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gcmVzb3VyY2VFcnJvci5p
c051bGwoKSA/IGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkgOiByZXNv
dXJjZUVycm9yOwogCiAgICAgbV9kYXRhTG9hZFRpbWVyLnN0b3AoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggM2ZlNTZm
My4uYzkyNDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkBAIC0xNDUsNyArMTQ0LDcg
QEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp+RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKCkK
IAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCgpCiB7Ci0gICAgUmVmPERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAogICAgIC8vIENhbmNlbCBjYW4g
cmUtZW50ZXIgYW5kIG1fcmVzb3VyY2UgbWlnaHQgYmUgbnVsbCBoZXJlIGFzIGEgcmVzdWx0Lgog
ICAgIGlmIChtX2NsaWVudCAmJiBtX3Jlc291cmNlKSB7CkBAIC0xODEsNyArMTgwLDcgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlLCBSZXNvdXIKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAgUmVmPERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKICAgICAvLyBBbGxvdyBzYW1lIG9yaWdp
biByZXF1ZXN0cyB0byBjb250aW51ZSBhZnRlciBhbGxvd2luZyBjbGllbnRzIHRvIGF1ZGl0IHRo
ZSByZWRpcmVjdC4KICAgICBpZiAoaXNBbGxvd2VkUmVkaXJlY3QocmVxdWVzdC51cmwoKSkpIHsK
ICAgICAgICAgaWYgKG1fY2xpZW50LT5pc0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggMWFjMTQ3NC4u
NDYzMWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC00
Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW5rRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIzNCw3ICsyMzMsNyBAQCB2b2lkIERv
Y3VtZW50V3JpdGVyOjplbmQoKQogICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwODU0CiAgICAgLy8gVGhlIGZyYW1lJ3MgbGFzdCByZWYgbWF5IGJlIHJlbW92
ZWQgYW5kIGl0IGNhbiBiZSBkZWxldGVkIGJ5IGNoZWNrQ29tcGxldGVkKCksIAogICAgIC8vIHNv
IHdlJ2xsIGFkZCBhIHByb3RlY3RpdmUgcmVmY291bnQKLSAgICBSZWY8RnJhbWU+IHByb3RlY3Qo
Km1fZnJhbWUpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogCiAgICAg
aWYgKCFtX3BhcnNlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggYWUwNTBiZC4uMzZkODhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0xMDgsNyArMTA4LDYgQEAKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC0zMDQsNyArMzAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2Vs
ZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVzdCwgUGFzc1JlZlB0cjwK
IHsKICAgICBBU1NFUlQoIW1fc3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lKTsKIAotICAgIFJlZjxG
cmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKKyAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QoJm1fZnJh
bWUpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0KHBhc3NlZFJlcXVlc3QpOwog
CiAgICAgaWYgKG1fZnJhbWUuc2NyaXB0KCkuZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChmcmFtZVJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2
YVNjcmlwdFVSTCkpCkBAIC00NzcsNyArNDc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcCgp
CiB7CiAgICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NTQK
ICAgICAvLyBUaGUgZnJhbWUncyBsYXN0IHJlZiBtYXkgYmUgcmVtb3ZlZCBhbmQgaXQgd2lsbCBi
ZSBkZWxldGVkIGJ5IGNoZWNrQ29tcGxldGVkKCkuCi0gICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1f
ZnJhbWUpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdG9yKCZtX2ZyYW1lKTsKIAogICAgIGlm
IChEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wYXJzZXIoKSkg
ewogICAgICAgICBwYXJzZXItPnN0b3BQYXJzaW5nKCk7CkBAIC03NTgsNyArNzU3LDcgQEAgYm9v
bCBGcmFtZUxvYWRlcjo6YWxsQW5jZXN0b3JzQXJlQ29tcGxldGUoKSBjb25zdAogCiB2b2lkIEZy
YW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiB7Ci0gICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1f
ZnJhbWUpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdCgmbV9mcmFtZSk7CiAgICAgbV9zaG91
bGRDYWxsQ2hlY2tDb21wbGV0ZWQgPSBmYWxzZTsKIAogICAgIGlmIChtX2ZyYW1lLnZpZXcoKSkK
QEAgLTgwMyw3ICs4MDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiAK
IHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrVGltZXJGaXJlZChUaW1lcjxGcmFtZUxvYWRlcj4qKQog
ewotICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKKyAgICBSZWZQdHI8RnJhbWU+IHBy
b3RlY3QoJm1fZnJhbWUpOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkg
ewogICAgICAgICBpZiAocGFnZS0+ZGVmZXJzTG9hZGluZygpKQpAQCAtMTA5MCw3ICsxMDg5LDcg
QEAgYm9vbCBGcmFtZUxvYWRlcjo6aXNDb21wbGV0ZSgpIGNvbnN0CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNvbXBsZXRlZCgpCiB7Ci0gICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOworICAg
IFJlZlB0cjxGcmFtZT4gcHJvdGVjdCgmbV9mcmFtZSk7CiAKICAgICBmb3IgKEZyYW1lKiBkZXNj
ZW5kYW50ID0gbV9mcmFtZS50cmVlKCkudHJhdmVyc2VOZXh0KCZtX2ZyYW1lKTsgZGVzY2VuZGFu
dDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1fZnJhbWUp
KQogICAgICAgICBkZXNjZW5kYW50LT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc3RhcnRUaW1lcigp
OwpAQCAtMTE1NSw3ICsxMTU0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVz
dChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKICAgICBQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgU2hv
dWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlcikKIHsgICAgCiAgICAgLy8gUHJvdGVj
dCBmcmFtZSBmcm9tIGdldHRpbmcgYmxvd24gYXdheSBpbnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQgaW4gbG9hZFdpdGhEb2N1bWVudExvYWRlci4KLSAgICBSZWY8RnJhbWU+IHByb3RlY3Qo
bV9mcmFtZSk7CisgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0KCZtX2ZyYW1lKTsKIAogICAgIEtV
UkwgdXJsID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKIApAQCAtMTM2Niw3ICsx
MzY1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3RG9jdW1l
bnRMb2FkZXIpCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IHBycEZvcm1TdGF0ZSkKIHsKICAgICAvLyBSZXRhaW4gYmVjYXVzZSBkaXNwYXRjaEJlZm9y
ZUxvYWRFdmVudCBtYXkgcmVsZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaXQuCi0gICAgUmVm
PEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdCgmbV9m
cmFtZSk7CiAKICAgICBBU1NFUlQobV9jbGllbnQuaGFzV2ViVmlldygpKTsKIApAQCAtMTU2Myw3
ICsxNTYyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNp
b25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW0KICAgICAKICAgICAvLyBDYWxsaW5n
IHN0b3BMb2FkaW5nKCkgb24gdGhlIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciBjYW4gYmxv
dyBhd2F5CiAgICAgLy8gdGhlIGZyYW1lIGZyb20gdW5kZXJuZWF0aC4KLSAgICBSZWY8RnJhbWU+
IHByb3RlY3QobV9mcmFtZSk7CisgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0KCZtX2ZyYW1lKTsK
IAogICAgIG1faW5TdG9wQWxsTG9hZGVycyA9IHRydWU7CiAKQEAgLTE3MDEsNyArMTcwMCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAgUmVmUHRy
PENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UgPSBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA/IHBhZ2VD
YWNoZSgpLT5nZXQoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKSA6IDA7CiAgICAgUmVmUHRy
PERvY3VtZW50TG9hZGVyPiBwZGwgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7Ci0gICAg
UmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdCgm
bV9mcmFtZSk7CiAKICAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEFib3V0
IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJMICclcycgdG8gbmV3
IFVSTCAnJXMnIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSA6ICIi
LApAQCAtMjYxNSw3ICsyNjE0LDcgQEAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBGcmFtZUxvYWRl
cjo6b3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QKIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkTWFp
blJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gUmV0
YWluIGJlY2F1c2UgdGhlIHN0b3AgbWF5IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGl0
LgotICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKKyAgICBSZWZQdHI8RnJhbWU+IHBy
b3RlY3QoJm1fZnJhbWUpOwogCiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBh
Y3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIC8vIEZJWE1FOiBEb24ndCB3YW50IHRvIGRvIHRo
aXMgaWYgYW4gZW50aXJlbHkgbmV3IGxvYWQgaXMgZ29pbmcsIHNvIHNob3VsZCBjaGVjawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggMWMxMmNmYS4uZTM2YzU2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgUmVu
ZGVySW1hZ2VSZXNvdXJjZSogSW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UoKQogICAg
IC8vIFdlIGRvbid0IHJldHVybiBzdHlsZSBnZW5lcmF0ZWQgaW1hZ2UgYmVjYXVzZSBpdCBkb2Vz
bid0IGJlbG9uZyB0byB0aGUgSW1hZ2VMb2FkZXIuCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4NDA+CiAgICAgaWYgKHJlbmRlcmVyLT5pc0lt
YWdlKCkgJiYgIXN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVyZXIpLT5pc0dlbmVyYXRl
ZENvbnRlbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvUmVuZGVySW1hZ2UoKnJlbmRlcmVyKS5pbWFn
ZVJlc291cmNlKCk7CisgICAgICAgIHJldHVybiB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1h
Z2VSZXNvdXJjZSgpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAocmVuZGVyZXItPmlzU1ZH
SW1hZ2UoKSkKQEAgLTMzNSw3ICszMzUsNyBAQCBSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFnZUxv
YWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJjZSgpCiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYg
KHJlbmRlcmVyLT5pc1ZpZGVvKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlclZpZGVvKCpyZW5k
ZXJlcikuaW1hZ2VSZXNvdXJjZSgpOworICAgICAgICByZXR1cm4gdG9SZW5kZXJWaWRlbyhyZW5k
ZXJlciktPmltYWdlUmVzb3VyY2UoKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggODA4NzdjMS4u
Y2UyZmNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
MjEsNyArNDIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKFRpbWVy
PE5hdmlnYXRpb25TY2hlZHVsZXI+KikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJl
ZjxGcmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7CisgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0KG1f
ZnJhbWUpOwogCiAgICAgT3duUHRyPFNjaGVkdWxlZE5hdmlnYXRpb24+IHJlZGlyZWN0KG1fcmVk
aXJlY3QucmVsZWFzZSgpKTsKICAgICByZWRpcmVjdC0+ZmlyZShtX2ZyYW1lKTsKQEAgLTQzMiw3
ICs0MzEsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlKFBhc3NPd25QdHI8
U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJlY3QpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUtPnBh
Z2UoKSk7CiAKLSAgICBSZWY8RnJhbWU+IHByb3RlY3QoKm1fZnJhbWUpOworICAgIFJlZlB0cjxG
cmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIAogICAgIC8vIElmIGEgcmVkaXJlY3Qgd2FzIHNjaGVk
dWxlZCBkdXJpbmcgYSBsb2FkLCB0aGVuIHN0b3AgdGhlIGN1cnJlbnQgbG9hZC4KICAgICAvLyBP
dGhlcndpc2Ugd2hlbiB0aGUgY3VycmVudCBsb2FkIHRyYW5zaXRpb25zIGZyb20gYSBwcm92aXNp
b25hbCB0byBhIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAKaW5kZXggN2E3Y2YzNi4uOTUyNWJhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY5LDcgKzY4LDcgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKIHZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cj4gcHJvdGVjdCh0aGlzKTsKIAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UodGhp
cywgcmVzcG9uc2UpOwogCkBAIC0xMDYsNyArMTA1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmUKIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHBy
b3RlY3QodGhpcyk7CiAgICAgCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgpOwogCkBAIC0xMTUsNyArMTE0LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGUKIAog
dm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUg
ZmluaXNoVGltZSkKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVj
dCh0aGlzKTsKIAogICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlbW92ZVBsdWdJblN0cmVhbUxvYWRl
cih0aGlzKTsKICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyh0aGlzKTsKQEAgLTEyNCw3
ICsxMjMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJlZjxOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgbV9kb2N1bWVudExvYWRl
ci0+cmVtb3ZlUGx1Z0luU3RyZWFtTG9hZGVyKHRoaXMpOwogICAgIG1fY2xpZW50LT5kaWRGYWls
KHRoaXMsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhv
bGRlckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3Vt
ZW50LmNwcAppbmRleCA5YThmM2EwLi4wOGNiY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhY2Vob2xkZXJEb2N1bWVudC5oIgogCi0jaW5jbHVkZSAi
RWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiQ2hpbGRJdGVyYXRvci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKaW5kZXggMWQyNDNiNS4uMWVkNmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTI3OCw4ICsyNzgsMTAgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6YWRkTG9hZEluUHJv
Z3Jlc3MoUmVzb3VyY2VMb2FkZXIqIHIKICAgICAKIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpIb3N0SW5mb3JtYXRpb246OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIp
CiB7Ci0gICAgaWYgKG1fcmVxdWVzdHNMb2FkaW5nLnJlbW92ZShyZXNvdXJjZUxvYWRlcikpCisg
ICAgaWYgKG1fcmVxdWVzdHNMb2FkaW5nLmNvbnRhaW5zKHJlc291cmNlTG9hZGVyKSkgeworICAg
ICAgICBtX3JlcXVlc3RzTG9hZGluZy5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIAogICAgIGZvciAoaW50IHByaW9yaXR5ID0gUmVzb3VyY2VMb2Fk
UHJpb3JpdHlIaWdoZXN0OyBwcmlvcml0eSA+PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvd2VzdDsg
LS1wcmlvcml0eSkgeyAgCiAgICAgICAgIFJlcXVlc3RRdWV1ZTo6aXRlcmF0b3IgZW5kID0gbV9y
ZXF1ZXN0c1BlbmRpbmdbcHJpb3JpdHldLmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggNTEwNWFiNS4uNzkxNjM3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC03OCw3ICs3Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQog
ICAgIC8vIGRlYWxsb2NhdGVkIGFuZCByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlz
IG9iamVjdC4KICAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0byBhdm9pZCBhY2Nlc3NpbmcgdGhl
IG9iamVjdCBhZnRlciBpdAogICAgIC8vIGhhcyBiZWVuIGRlYWxsb2NhdGVkIGFuZCBhbHNvIHRv
IGF2b2lkIHJlZW50ZXJpbmcgdGhpcyBtZXRob2QuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rvcih0aGlz
KTsKIAogICAgIG1fZnJhbWUgPSAwOwogICAgIG1fZG9jdW1lbnRMb2FkZXIgPSAwOwpAQCAtMjI1
LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiB7CiAgICAgLy8gUHJvdGVjdCB0
aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3Np
bmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRo
aXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJv
dGVjdG9yKHRoaXMpOwogCiAgICAgQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKIApA
QCAtMjY2LDcgKzI2NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRo
aXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRv
CiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBl
eGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdG9yKHRo
aXMpOwogCiAgICAgbV9yZXNwb25zZSA9IHI7CiAKQEAgLTMwMCw3ICsyOTksNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgsIFBhc3NSZQogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUg
bWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55
dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRo
aXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdG9yKHRoaXMpOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKIAogICAgIGFkZERhdGFPckJ1
ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKQEAgLTM1
NSw3ICszNTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0
aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhp
bmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMg
aXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdG9yKHRoaXMpOwogCiAgICAgY2xl
YW51cEZvckVycm9yKGVycm9yKTsKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CkBAIC0zOTYsNyAr
Mzk1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogICAgIAogICAgIC8vIHdpbGxDYW5jZWwoKSBhbmQgZGlkRmFpbFRvTG9hZCgpIGJv
dGggY2FsbCBvdXQgdG8gY2xpZW50cyB0aGF0IG1pZ2h0IGRvIAogICAgIC8vIHNvbWV0aGluZyBj
YXVzaW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCB0byBnbyBhd2F5LgotICAg
IFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNl
TG9hZGVyPiBwcm90ZWN0b3IodGhpcyk7CiAgICAgCiAgICAgLy8gSWYgd2UgcmUtZW50ZXIgY2Fu
Y2VsKCkgZnJvbSBpbnNpZGUgd2lsbENhbmNlbCgpLCB3ZSB3YW50IHRvIHBpY2sgdXAgZnJvbSB3
aGVyZSB3ZSBsZWZ0IAogICAgIC8vIG9mZiB3aXRob3V0IHJlLXJ1bm5pbmcgd2lsbENhbmNlbCgp
CkBAIC01MTEsNyArNTEwLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoKQogICAgIGlmIChtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9PSBEb05v
dEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdG9yKHRoaXMpOwogICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlm
aWVyKCkpOwogfQogCkBAIC01MjEsNyArNTIwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwK
IAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUg
YWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBw
b3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYy
MTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rvcih0aGlzKTsKIAogICAgIGlmIChtX29wdGlvbnMuYWxs
b3dDcmVkZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSB7CiAgICAgICAgIGlmICht
X29wdGlvbnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBBc2tDbGllbnRGb3JBbGxDcmVkZW50
aWFscyB8fCAobV9vcHRpb25zLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gRG9Ob3RBc2tDbGll
bnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhblJlcXVlc3Qob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpKSkgewpAQCAt
NTQzLDE0ICs1NDIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGUKIHsKICAgICAvLyBQcm90
ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJv
Y2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZp
bmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxS
ZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlTG9hZGVy
PiBwcm90ZWN0b3IodGhpcyk7CiAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlkQ2Fu
Y2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKIH0KIAogI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiBib29sIFJlc291cmNlTG9hZGVyOjpj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgq
dGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0b3IodGhpcyk7CiAgICAg
cmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBwcm90ZWN0aW9uU3Bh
Y2UpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAppbmRleCBlMDc3YmZhLi5mYWZkNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJSZXNv
dXJjZUJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTEyNCw3ICsxMjMsNyBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBj
b25zdCBSZXNvdQogewogICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyBVUkwgYmVjYXVzZSB0aGUg
Y2FsbCB0byBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHdpbGwgbW9kaWZ5IGl0Lgog
ICAgIEtVUkwgcHJldmlvdXNVUkwgPSByZXF1ZXN0KCkudXJsKCk7Ci0gICAgUmVmPFN1YnJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IHByb3RlY3QodGhpcyk7CiAKICAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkpOwogICAg
IGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewpAQCAtMTU5LDcgKzE1OCw3IEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QsIGNvbnN0IFJlc291CiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWxpemVkKTsKLSAg
ICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKICAgICBtX3Jlc291cmNlLT5kaWRTZW5kRGF0
YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKQEAgLTE3MCw3ICsxNjksNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0
aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8v
IGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBv
YmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWY8U3VicmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCh0aGlzKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0
ZSgpKSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkgewpA
QCAtMjQxLDcgKzI0MCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgUGFzCiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gSW5pdGlhbGl6ZWQpOwogICAgIC8vIFJlZmVyZW5jZSB0aGUgb2JqZWN0IGluIHRo
aXMgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8g
YW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9i
amVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgotICAgIFJlZjxTdWJyZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBw
cm90ZWN0KHRoaXMpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZl
cjsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRh
LCBsZW5ndGgsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CkBA
IC0yNzUsNyArMjc0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhkb3VibGUgZmluaXNoVGltZSkKICAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSk7CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlY2VpdmVkICclcycuIiwgbV9yZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
PiBwcm90ZWN0UmVzb3VyY2UobV9yZXNvdXJjZSk7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsK
ICAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uLmNsZWFyKCk7CkBAIC0zMDAsNyArMjk5LDcgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNvdXJjZUxv
YWRpbmcsICJGYWlsZWQgdG8gbG9hZCAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcm90ZWN0UmVzb3VyY2Uo
bV9yZXNvdXJjZSk7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBtX2FjdGl2aXR5QXNz
ZXJ0aW9uLmNsZWFyKCk7CkBAIC0zMjQsNyArMzIzLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBBU1NFUlQoIXJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5jZWxs
ZWQgbG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogICAgIG1fc3RhdGUg
PSBGaW5pc2hpbmc7CiAgICAgbV9hY3Rpdml0eUFzc2VydGlvbi5jbGVhcigpOwogICAgIGlmICht
X3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBi
Nzg1ODJlLi44M2RmNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMzYyLDcgKzM2MiwxMCBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRpbmcoKQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKIHsKLSAgICBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMucmVtb3ZlKGxvYWRl
cik7CisgICAgSGFzaFNldDxEb2N1bWVudExvYWRlcio+OjppdGVyYXRvciBpdCA9IG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycy5maW5kKGxvYWRlcik7CisgICAgaWYgKGl0ICE9IG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycy5lbmQoKSkKKyAgICAgICAgbV9hc3NvY2lhdGVkRG9jdW1lbnRM
b2FkZXJzLnJlbW92ZShpdCk7CisKICAgICBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMu
cmVtb3ZlKGxvYWRlcik7CiAKICAgICBsb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNl
dEFwcGxpY2F0aW9uQ2FjaGUoMCk7IC8vIFdpbGwgc2V0IGNhbmRpZGF0ZSB0byAwLCB0b28uCkBA
IC0zODcsNyArMzkwLDEyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lh
dGVEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6Y2FjaGVEZXN0cm95ZWQoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCiB7
Ci0gICAgaWYgKG1fY2FjaGVzLnJlbW92ZShjYWNoZSkgJiYgbV9jYWNoZXMuaXNFbXB0eSgpKSB7
CisgICAgaWYgKCFtX2NhY2hlcy5jb250YWlucyhjYWNoZSkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX2NhY2hlcy5yZW1vdmUoY2FjaGUpOworCisgICAgaWYgKG1fY2FjaGVzLmlzRW1w
dHkoKSkgewogICAgICAgICBBU1NFUlQobV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmlzRW1w
dHkoKSk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNF
bXB0eSgpKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAKaW5kZXggMjlmZDlmMi4uNTY5YTJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcApA
QCAtMjUsOCArMjUsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN1YnJlc291
cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKQEAgLTM0LDcgKzMy
LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5
UmVmIGRhdGFBcnJheSkKIHsKICAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1l
dGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRo
aW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7
IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWY8U3VicmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCh0aGlzKTsKIAogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KGRhdGFB
cnJheSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAxZmIxMGU2Li5hZjllMWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00MDIsMTEgKzQwMiwxMSBAQCB2b2lkIENocm9tZTo6c2V0
VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAKICAgICAvLyBOZXh0IHByaW9y
aXR5IGlzIGEgdG9vbFRpcCBmcm9tIGEgVVJMIGJlbmVhdGggdGhlIG1vdXNlIChpZiBwcmVmZXJl
bmNlIGlzIHNldCB0byBzaG93IHRob3NlKS4KICAgICBpZiAodG9vbFRpcC5pc0VtcHR5KCkgJiYg
bV9wYWdlLT5zZXR0aW5ncygpLnNob3dzVVJMc0luVG9vbFRpcHMoKSkgewotICAgICAgICBpZiAo
RWxlbWVudCogZWxlbWVudCA9IHJlc3VsdC5pbm5lck5vblNoYXJlZEVsZW1lbnQoKSkgeworICAg
ICAgICBpZiAoTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkgewogICAg
ICAgICAgICAgLy8gR2V0IHRvb2x0aXAgcmVwcmVzZW50aW5nIGZvcm0gYWN0aW9uLCBpZiByZWxl
dmFudAotICAgICAgICAgICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkgewotICAg
ICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50
KGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGlmIChpbnB1dC0+aXNTdWJtaXRCdXR0b24oKSkg
eworICAgICAgICAgICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChub2RlKSkgeworICAgICAgICAg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KG5vZGUp
OworICAgICAgICAgICAgICAgIGlmIChpbnB1dC0+aXNTdWJtaXRCdXR0b24oKSkKICAgICAgICAg
ICAgICAgICAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGlucHV0LT5mb3JtKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xUaXAgPSBmb3JtLT5hY3Rpb24oKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmb3JtLT5yZW5kZXJlcigpKQpAQCAtNDE0LDcgKzQxNCw2
IEBAIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b29sVGlwRGlyZWN0aW9uID0gTFRSOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQzNiw5ICs0MzUsMTAg
QEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQog
CiAgICAgLy8gTGFzdGx5LCBmb3IgPGlucHV0IHR5cGU9ImZpbGUiPiB0aGF0IGFsbG93IG11bHRp
cGxlIGZpbGVzLCB3ZSdsbCBjb25zaWRlciBhIHRvb2x0aXAgZm9yIHRoZSBzZWxlY3RlZCBmaWxl
bmFtZXMKICAgICBpZiAodG9vbFRpcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKEVsZW1lbnQq
IGVsZW1lbnQgPSByZXN1bHQuaW5uZXJOb25TaGFyZWRFbGVtZW50KCkpIHsKLSAgICAgICAgICAg
IGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICB0b29s
VGlwID0gdG9IVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpLT5kZWZhdWx0VG9vbFRpcCgpOworICAg
ICAgICBpZiAoTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkgeworICAg
ICAgICAgICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChub2RlKSkgeworICAgICAgICAgICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KG5vZGUpOworICAg
ICAgICAgICAgICAgIHRvb2xUaXAgPSBpbnB1dC0+ZGVmYXVsdFRvb2xUaXAoKTsKIAogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb2J0YWluIHRleHQgZGlyZWN0aW9uIG9mIHRv
b2x0aXAgZnJvbQogICAgICAgICAgICAgICAgIC8vIENocm9tZUNsaWVudCBvciBwbGF0Zm9ybS4g
QXMgb2YgT2N0b2JlciAyMDExLCBhbGwgY2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYTAyMDkzZi4uMGRlYWZmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzUzLDYgKzM1
Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTcGVs
bGluZ0d1ZXNzOiB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uJiBmcmFtZVNlbGVjdGlvbiA9IGZy
YW1lLT5zZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNl
cnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpIHsKKyAgICAgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb25zIHJlcGxhY2VPcHRpb25zID0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUgfCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVu
dE5lc3Rpbmc7CiAKICAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5z
aG91bGRBbGxvd1NwZWxsaW5nU3VnZ2VzdGlvbnNXaXRob3V0U2VsZWN0aW9uKCkpIHsKQEAgLTM2
NSw5ICszNjYsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICAgICAgICAgIHJlcGxhY2VP
cHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudDsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRv
Y3VtZW50KCk7Ci0gICAgICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgICAgICAgICAgUmVm
UHRyPFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kPiBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmNyZWF0ZSgqZG9jdW1lbnQsIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVu
dCwgaXRlbS0+dGl0bGUoKSwgIiIpLCByZXBsYWNlT3B0aW9ucyk7CisgICAgICAgICAgICBSZWZQ
dHI8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ+IGNvbW1hbmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQs
IGl0ZW0tPnRpdGxlKCksICIiKSwgcmVwbGFjZU9wdGlvbnMpOwogICAgICAgICAgICAgYXBwbHlD
b21tYW5kKGNvbW1hbmQpOwogICAgICAgICAgICAgZnJhbWVTZWxlY3Rpb24ucmV2ZWFsU2VsZWN0
aW9uKFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBhZjJiZDU1Li41ZmZhZmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMDUsNyArMTA1LDYgQEAKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNzUsMzggKzE3
NCw1MiBAQCBzdGF0aWMgRE9NV2luZG93U2V0JiB3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50
TGlzdGVuZXJzKCkKIAogc3RhdGljIHZvaWQgYWRkVW5sb2FkRXZlbnRMaXN0ZW5lcihET01XaW5k
b3cqIGRvbVdpbmRvdykKIHsKLSAgICBpZiAod2luZG93c1dpdGhVbmxvYWRFdmVudExpc3RlbmVy
cygpLmFkZChkb21XaW5kb3cpLmlzTmV3RW50cnkpCisgICAgRE9NV2luZG93U2V0JiBzZXQgPSB3
aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgaWYgKHNldC5hZGQoZG9tV2lu
ZG93KS5pc05ld0VudHJ5KQogICAgICAgICBkb21XaW5kb3ctPmRpc2FibGVTdWRkZW5UZXJtaW5h
dGlvbigpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVVbmxvYWRFdmVudExpc3RlbmVyKERPTVdp
bmRvdyogZG9tV2luZG93KQogewotICAgIGlmICh3aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVu
ZXJzKCkucmVtb3ZlKGRvbVdpbmRvdykpCisgICAgRE9NV2luZG93U2V0JiBzZXQgPSB3aW5kb3dz
V2l0aFVubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgRE9NV2luZG93U2V0OjppdGVyYXRvciBp
dCA9IHNldC5maW5kKGRvbVdpbmRvdyk7CisgICAgaWYgKHNldC5yZW1vdmUoaXQpKQogICAgICAg
ICBkb21XaW5kb3ctPmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHJlbW92ZUFsbFVubG9hZEV2ZW50TGlzdGVuZXJzKERPTVdpbmRvdyogZG9tV2luZG93KQogewot
ICAgIGlmICh3aW5kb3dzV2l0aFVubG9hZEV2ZW50TGlzdGVuZXJzKCkucmVtb3ZlQWxsKGRvbVdp
bmRvdykpCi0gICAgICAgIGRvbVdpbmRvdy0+ZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKTsKKyAg
ICBET01XaW5kb3dTZXQmIHNldCA9IHdpbmRvd3NXaXRoVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsK
KyAgICBET01XaW5kb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gc2V0LmZpbmQoZG9tV2luZG93KTsKKyAg
ICBpZiAoaXQgPT0gc2V0LmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgc2V0LnJlbW92ZUFs
bChpdCk7CisgICAgZG9tV2luZG93LT5lbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpOwogfQogCiBz
dGF0aWMgdm9pZCBhZGRCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyKERPTVdpbmRvdyogZG9tV2lu
ZG93KQogewotICAgIGlmICh3aW5kb3dzV2l0aEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzKCku
YWRkKGRvbVdpbmRvdykuaXNOZXdFbnRyeSkKKyAgICBET01XaW5kb3dTZXQmIHNldCA9IHdpbmRv
d3NXaXRoQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBpZiAoc2V0LmFkZChkb21X
aW5kb3cpLmlzTmV3RW50cnkpCiAgICAgICAgIGRvbVdpbmRvdy0+ZGlzYWJsZVN1ZGRlblRlcm1p
bmF0aW9uKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVu
ZXIoRE9NV2luZG93KiBkb21XaW5kb3cpCiB7Ci0gICAgaWYgKHdpbmRvd3NXaXRoQmVmb3JlVW5s
b2FkRXZlbnRMaXN0ZW5lcnMoKS5yZW1vdmUoZG9tV2luZG93KSkKKyAgICBET01XaW5kb3dTZXQm
IHNldCA9IHdpbmRvd3NXaXRoQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBET01X
aW5kb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gc2V0LmZpbmQoZG9tV2luZG93KTsKKyAgICBpZiAoc2V0
LnJlbW92ZShpdCkpCiAgICAgICAgIGRvbVdpbmRvdy0+ZW5hYmxlU3VkZGVuVGVybWluYXRpb24o
KTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlQWxsQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnMo
RE9NV2luZG93KiBkb21XaW5kb3cpCiB7Ci0gICAgaWYgKHdpbmRvd3NXaXRoQmVmb3JlVW5sb2Fk
RXZlbnRMaXN0ZW5lcnMoKS5yZW1vdmVBbGwoZG9tV2luZG93KSkKLSAgICAgICAgZG9tV2luZG93
LT5lbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpOworICAgIERPTVdpbmRvd1NldCYgc2V0ID0gd2lu
ZG93c1dpdGhCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycygpOworICAgIERPTVdpbmRvd1NldDo6
aXRlcmF0b3IgaXQgPSBzZXQuZmluZChkb21XaW5kb3cpOworICAgIGlmIChpdCA9PSBzZXQuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBzZXQucmVtb3ZlQWxsKGl0KTsKKyAgICBkb21XaW5k
b3ctPmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CiB9CiAKIHN0YXRpYyBib29sIGFsbG93c0Jl
Zm9yZVVubG9hZExpc3RlbmVycyhET01XaW5kb3cqIHdpbmRvdykKQEAgLTE3MDUsNyArMTcxOCw3
IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAKIGJvb2wgRE9NV2luZG93
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQYXNzUmVmUHRyPEV2
ZW50VGFyZ2V0PiBwcnBUYXJnZXQpCiB7Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHByb3RlY3QgPSB0aGlzOwogICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBwcnBFdmVudDsKIAogICAgIGV2ZW50LT5zZXRUYXJnZXQocHJwVGFy
Z2V0ID8gcHJwVGFyZ2V0IDogdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4
dGVuc2lvbi5jcHAKaW5kZXggMzJiZjA0Zi4uYzI1YmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00OCw3ICs0Nyw3IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWVG
b3JQYWdlQ2FjaGUoKQogewogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgbWlnaHQg
cmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAogICAgIC8v
IHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVmPERPTVdpbmRvd0V4dGVu
c2lvbj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJv
dGVjdG9yID0gdGhpczsKICAgICAKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwog
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2lu
ZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCh0aGlzKTsKQEAgLTc0LDggKzczLDggQEAgdm9p
ZCBET01XaW5kb3dFeHRlbnNpb246OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFt
ZSgpCiAKICAgICAvLyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0
aGlzIERPTVdpbmRvd0V4dGVuc2lvbiBiZWluZyBkZXN0cm95ZWQKICAgICAvLyB3aGlsZSB0aGVy
ZSBpcyBzdGlsbCB3b3JrIHRvIGRvLgotICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3Rl
Y3QoKnRoaXMpOwotCisgICAgUmVmUHRyPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdG9yID0g
dGhpczsKKyAgICAKICAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKHRoaXMp
OwogICAgIG1fZGlzY29ubmVjdGVkRnJhbWUgPSAwOwogCkBAIC04OCw3ICs4Nyw3IEBAIHZvaWQg
RE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQogCiAg
ICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01X
aW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3Rp
bGwgd29yayB0byBkby4KLSAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0b3IgPSB0aGlzOwogCiAg
ICAgaWYgKCFtX3dhc0RldGFjaGVkKSB7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CkBAIC0xMDYsNyArMTA1LDcgQEAgdm9pZCBET01XaW5kb3dFeHRlbnNpb246OndpbGxE
ZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKQogCiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhl
IGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVz
dHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3RpbGwgd29yayB0byBkby4KLSAgICBSZWY8
RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWZQdHI8RE9NV2luZG93
RXh0ZW5zaW9uPiBwcm90ZWN0b3IgPSB0aGlzOwogCiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCBkYWJmZmE4Li45OTBmY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICAgICAgICAgICAgICBv
cHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTbWFydFJlcGxhY2U7CiAgICAgICAg
ICAgICAgICAgaWYgKGNob3NlUGxhaW5UZXh0KQogICAgICAgICAgICAgICAgICAgICBvcHRpb25z
IHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlOwotICAgICAgICAgICAgICAg
IGFwcGx5Q29tbWFuZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCptX2RvY3VtZW50
VW5kZXJNb3VzZSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKKyAgICAgICAgICAgICAgICBhcHBseUNv
bW1hbmQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShtX2RvY3VtZW50VW5kZXJNb3Vz
ZS5nZXQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CkBAIC01MzksNyArNTM5LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29u
Y2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAKICAgICAgICAgbV9jbGllbnQtPndp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQs
IGRyYWdEYXRhKTsKICAgICAgICAgaWYgKHNldFNlbGVjdGlvblRvRHJhZ0NhcmV0KGlubmVyRnJh
bWUuZ2V0KCksIGRyYWdDYXJldCwgcmFuZ2UsIHBvaW50KSkKLSAgICAgICAgICAgIGFwcGx5Q29t
bWFuZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCptX2RvY3VtZW50VW5kZXJNb3Vz
ZSwgY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChyYW5nZS5nZXQoKSwgdGV4dCksICBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQgfCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TWF0Y2hTdHlsZSB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZykp
OworICAgICAgICAgICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVh
dGUobV9kb2N1bWVudFVuZGVyTW91c2UuZ2V0KCksIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQocmFu
Z2UuZ2V0KCksIHRleHQpLCAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2Vt
ZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUgfCBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcpKTsKICAgICB9CiAKICAgICBpZiAocm9vdEVkaXRh
YmxlRWxlbWVudCkgewpAQCAtODM3LDExICs4MzcsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpz
dGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlv
bgogICAgICAgICBpZiAoIWNsaXBib2FyZC0+cGFzdGVib2FyZCgpLmhhc0RhdGEoKSkKICAgICAg
ICAgICAgIC8vIFNpbXBsaWZ5IHdoaXRlc3BhY2Ugc28gdGhlIHRpdGxlIHB1dCBvbiB0aGUgY2xp
cGJvYXJkIHJlc2VtYmxlcyB3aGF0IHRoZSB1c2VyIHNlZXMKICAgICAgICAgICAgIC8vIG9uIHRo
ZSB3ZWIgcGFnZS4gVGhpcyBpbmNsdWRlcyByZXBsYWNpbmcgbmV3bGluZXMgd2l0aCBzcGFjZXMu
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgc3JjLT5lZGl0b3IoKS53cml0ZVVSTFRv
UGFzdGVib2FyZChjbGlwYm9hcmQtPnBhc3RlYm9hcmQoKSwgbGlua1VSTCwgaGl0VGVzdFJlc3Vs
dC50ZXh0Q29udGVudCgpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpKTsKLSNlbHNlCiAgICAgICAgICAg
ICBjbGlwYm9hcmQtPnBhc3RlYm9hcmQoKS53cml0ZVVSTChsaW5rVVJMLCBoaXRUZXN0UmVzdWx0
LnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCksIHNyYyk7Ci0jZW5kaWYKIAogICAg
ICAgICBpZiAoc3JjLT5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgc3JjLT5zZWxlY3Rpb24oKS5p
c0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBhIHVzZXIgY2FuIGluaXRpYXRl
IGEgZHJhZyBvbiBhIGxpbmsgd2l0aG91dCBoYXZpbmcgYW55IHRleHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCAzN2JkNGE3Li40ODNjOWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgaW5saW5lIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudExvb3BIYW5kbGVNb3VzZURyYWdnZWQoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXMKIAogI2VuZGlmCiAKLUV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFt
ZSkKK0V2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgLCBtX21vdXNlUHJlc3NlZChmYWxzZSkKICAgICAsIG1fY2FwdHVyZXNE
cmFnZ2luZyhmYWxzZSkKQEAgLTQ3OCwxOCArNDc4LDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1
cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KE5vZGUqIHRh
cmdlCiAgICAgICAgIG1fc2VsZWN0aW9uSW5pdGlhdGlvblN0YXRlID0gUGxhY2VkQ2FyZXQ7CiAg
ICAgfQogCi0gICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXROb25EaXJlY3Rpb25hbFNlbGVjdGlv
bklmTmVlZGVkKHNlbGVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIG1fZnJhbWUtPnNlbGVjdGlv
bigpLnNldE5vbkRpcmVjdGlvbmFsU2VsZWN0aW9uSWZOZWVkZWQoc2VsZWN0aW9uLCBncmFudWxh
cml0eSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVj
dENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
LCBBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgYXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKQogewot
ICAgIE5vZGUqIHRhcmdldE5vZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOworICAgIE5vZGUqIGlu
bmVyTm9kZSA9IHJlc3VsdC50YXJnZXROb2RlKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdT
ZWxlY3Rpb247CiAKLSAgICBpZiAodGFyZ2V0Tm9kZSAmJiB0YXJnZXROb2RlLT5yZW5kZXJlcigp
KSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+
cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKSk7CisgICAgaWYgKGlubmVyTm9k
ZSAmJiBpbm5lck5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
cyhpbm5lck5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9p
bnQoKSkpOwogICAgICAgICBpZiAocG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBuZXdT
ZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBvcyk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rp
b24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwpAQCAtNDk4LDcgKzQ5
OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsCiAgICAgICAgIGlmIChhcHBlbmRUcmFpbGlu
Z1doaXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlICYmIG5ld1NlbGVj
dGlvbi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlKCk7CiAKLSAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0
Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RVc2Vy
U2VsZWN0QWxsKHRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFdvcmRHcmFudWxhcml0eSk7Cisg
ICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQo
aW5uZXJOb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RVc2VyU2VsZWN0QWxsKGlubmVyTm9k
ZSwgbmV3U2VsZWN0aW9uKSwgV29yZEdyYW51bGFyaXR5KTsKICAgICB9CiB9CiAKQEAgLTUwNiw3
ICs1MDYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VF
dmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZQogewogICAgIGlmIChtX21vdXNlRG93
bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIHNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RS
ZXN1bHQocmVzdWx0LmhpdFRlc3RSZXN1bHQoKSwKLSAgICAgICAgICAgIChyZXN1bHQuZXZlbnQo
KS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLmVkaXRvcigpLmlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpKSA/IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA6IERv
bnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOworICAgICAgICAgICAgKHJlc3VsdC5ldmVudCgp
LmNsaWNrQ291bnQoKSA9PSAyICYmIG1fZnJhbWUtPmVkaXRvcigpLmlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpKSA/IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA6IERv
bnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOwogICAgIH0KIH0KIApAQCAtNTE1LDE2ICs1MTUs
MTYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkT3JMaW5rRnJvbU1vdXNl
RXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXQKICAgICBpZiAoIXJlc3VsdC5oaXRUZXN0UmVz
dWx0KCkuaXNMaXZlTGluaygpKQogICAgICAgICByZXR1cm4gc2VsZWN0Q2xvc2VzdFdvcmRGcm9t
TW91c2VFdmVudChyZXN1bHQpOwogCi0gICAgTm9kZSogdGFyZ2V0Tm9kZSA9IHJlc3VsdC50YXJn
ZXROb2RlKCk7CisgICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LnRhcmdldE5vZGUoKTsKIAot
ICAgIGlmICh0YXJnZXROb2RlICYmIHRhcmdldE5vZGUtPnJlbmRlcmVyKCkgJiYgbV9tb3VzZURv
d25NYXlTdGFydFNlbGVjdCkgeworICAgIGlmIChpbm5lck5vZGUgJiYgaW5uZXJOb2RlLT5yZW5k
ZXJlcigpICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QpIHsKICAgICAgICAgVmlzaWJsZVNl
bGVjdGlvbiBuZXdTZWxlY3Rpb247CiAgICAgICAgIEVsZW1lbnQqIFVSTEVsZW1lbnQgPSByZXN1
bHQuaGl0VGVzdFJlc3VsdCgpLlVSTEVsZW1lbnQoKTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2Nh
bFBvaW50KCkpKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5vZGUtPnJlbmRl
cmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOwogICAgICAgICBp
ZiAocG9zLmlzTm90TnVsbCgpICYmIHBvcy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2Rl
KCktPmlzRGVzY2VuZGFudE9mKFVSTEVsZW1lbnQpKQogICAgICAgICAgICAgbmV3U2VsZWN0aW9u
ID0gVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKFVSTEVsZW1l
bnQpOwogCi0gICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2Vs
ZWN0U3RhcnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0VXNlclNlbGVjdEFs
bCh0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICB1
cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KGlubmVyTm9k
ZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0VXNlclNlbGVjdEFsbChpbm5lck5vZGUsIG5ld1Nl
bGVjdGlvbiksIFdvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQogCkBAIC01MzMsNyArNTMzLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudERvdWJsZUNsaWNrKGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24o
KSAhPSBMZWZ0QnV0dG9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFt
ZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpCisgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLmlz
UmFuZ2UoKSkKICAgICAgICAgLy8gQSBkb3VibGUtY2xpY2sgd2hlbiByYW5nZSBpcyBhbHJlYWR5
IHNlbGVjdGVkCiAgICAgICAgIC8vIHNob3VsZCBub3QgY2hhbmdlIHRoZSBzZWxlY3Rpb24uICBT
bywgZG8gbm90IGNhbGwKICAgICAgICAgLy8gc2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVu
dCwgYnV0IGRvIHNldApAQCAtNTUxLDE4ICs1NTEsMTggQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFIKICAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgTm9kZSogdGFyZ2V0Tm9kZSA9IGV2ZW50LnRhcmdl
dE5vZGUoKTsKLSAgICBpZiAoISh0YXJnZXROb2RlICYmIHRhcmdldE5vZGUtPnJlbmRlcmVyKCkg
JiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkpCisgICAgTm9kZSogaW5uZXJOb2RlID0gZXZl
bnQudGFyZ2V0Tm9kZSgpOworICAgIGlmICghKGlubmVyTm9kZSAmJiBpbm5lck5vZGUtPnJlbmRl
cmVyKCkgJiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwotICAgIFZpc2libGVQb3Np
dGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5s
b2NhbFBvaW50KCkpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVy
ZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCkpKTsKICAgICBpZiAocG9z
LmlzTm90TnVsbCgpKSB7CiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24o
cG9zKTsKICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoUGFyYWdy
YXBoR3JhbnVsYXJpdHkpOwogICAgIH0KIAotICAgIHJldHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JN
b3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlv
blRvUmVzcGVjdFVzZXJTZWxlY3RBbGwodGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgUGFyYWdy
YXBoR3JhbnVsYXJpdHkpOworICAgIHJldHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25E
aXNwYXRjaGluZ1NlbGVjdFN0YXJ0KGlubmVyTm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0
VXNlclNlbGVjdEFsbChpbm5lck5vZGUsIG5ld1NlbGVjdGlvbiksIFBhcmFncmFwaEdyYW51bGFy
aXR5KTsKIH0KIAogc3RhdGljIGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBQb3NpdGlvbiYgZW5kKQpAQCAtNTczLDkgKzU3Myw5IEBAIHN0YXRpYyBpbnQgdGV4
dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKIAog
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgTm9k
ZSogdGFyZ2V0Tm9kZSA9IGV2ZW50LnRhcmdldE5vZGUoKTsKLSAgICBpZiAoISh0YXJnZXROb2Rl
ICYmIHRhcmdldE5vZGUtPnJlbmRlcmVyKCkgJiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkp
CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CisgICAgTm9kZSogaW5uZXJOb2RlID0gZXZlbnQudGFyZ2V0Tm9kZSgpOworICAg
IGlmICghKGlubmVyTm9kZSAmJiBpbm5lck5vZGUtPnJlbmRlcmVyKCkgJiYgbV9tb3VzZURvd25N
YXlTdGFydFNlbGVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEV4dGVuZCB0
aGUgc2VsZWN0aW9uIGlmIHRoZSBTaGlmdCBrZXkgaXMgZG93biwgdW5sZXNzIHRoZSBjbGljayBp
cyBpbiBhIGxpbmsuCkBAIC01ODMsMjQgKzU4MywyNCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UgogCiAgICAgLy8gRG9uJ3QgcmVzdGFydCB0aGUgc2VsZWN0aW9uIHdoZW4gdGhlIG1vdXNlIGlz
IHByZXNzZWQgb24gYW4KICAgICAvLyBleGlzdGluZyBzZWxlY3Rpb24gc28gd2UgY2FuIGFsbG93
IGZvciB0ZXh0IGRyYWdnaW5nLgotICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZp
ZXcoKSkgeworICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsKICAg
ICAgICAgTGF5b3V0UG9pbnQgdlBvaW50ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5l
dmVudCgpLnBvc2l0aW9uKCkpOwotICAgICAgICBpZiAoIWV4dGVuZFNlbGVjdGlvbiAmJiBtX2Zy
YW1lLnNlbGVjdGlvbigpLmNvbnRhaW5zKHZQb2ludCkpIHsKKyAgICAgICAgaWYgKCFleHRlbmRT
ZWxlY3Rpb24gJiYgbV9mcmFtZS0+c2VsZWN0aW9uKCkuY29udGFpbnModlBvaW50KSkgewogICAg
ICAgICAgICAgbV9tb3VzZURvd25XYXNTaW5nbGVDbGlja0luU2VsZWN0aW9uID0gdHJ1ZTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9p
bnQoZXZlbnQubG9jYWxQb2ludCgpKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Mo
aW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQo
KSkpOwogICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQotICAgICAgICB2aXNpYmxlUG9zID0g
VmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSh0YXJnZXROb2RlKSwg
RE9XTlNUUkVBTSk7CisgICAgICAgIHZpc2libGVQb3MgPSBWaXNpYmxlUG9zaXRpb24oZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKGlubmVyTm9kZSksIERPV05TVFJFQU0pOwogICAgIFBvc2l0
aW9uIHBvcyA9IHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKTsKIAotICAgIFZpc2libGVTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAg
ICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOwogICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3Rlckdy
YW51bGFyaXR5OwogCiAgICAgaWYgKGV4dGVuZFNlbGVjdGlvbiAmJiBuZXdTZWxlY3Rpb24uaXND
YXJldE9yUmFuZ2UoKSkgewotICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkluVXNl
clNlbGVjdEFsbCA9IGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFVzZXJTZWxlY3RBbGwodGFyZ2V0
Tm9kZSwgVmlzaWJsZVNlbGVjdGlvbihwb3MpKTsKKyAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb25JblVzZXJTZWxlY3RBbGwgPSBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RVc2VyU2Vs
ZWN0QWxsKGlubmVyTm9kZSwgVmlzaWJsZVNlbGVjdGlvbihwb3MpKTsKICAgICAgICAgaWYgKHNl
bGVjdGlvbkluVXNlclNlbGVjdEFsbC5pc1JhbmdlKCkpIHsKICAgICAgICAgICAgIGlmIChjb21w
YXJlUG9zaXRpb25zKHNlbGVjdGlvbkluVXNlclNlbGVjdEFsbC5zdGFydCgpLCBuZXdTZWxlY3Rp
b24uc3RhcnQoKSkgPCAwKQogICAgICAgICAgICAgICAgIHBvcyA9IHNlbGVjdGlvbkluVXNlclNl
bGVjdEFsbC5zdGFydCgpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSCiAgICAgICAgICAgICAgICAgcG9zID0gc2VsZWN0aW9uSW5Vc2VyU2VsZWN0QWxsLmVuZCgp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFtX2ZyYW1lLmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCkgJiYgcG9zLmlzTm90TnVsbCgp
KSB7CisgICAgICAgIGlmICghbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRDb25z
aWRlclNlbGVjdGlvbkFzRGlyZWN0aW9uYWwoKSAmJiBwb3MuaXNOb3ROdWxsKCkpIHsKICAgICAg
ICAgICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vMzY2ODE1Nz4gUkVHUkVTU0lPTiAoTWFpbCk6
IHNoaWZ0LWNsaWNrIGRlc2VsZWN0cyB3aGVuIHNlbGVjdGlvbgogICAgICAgICAgICAgLy8gd2Fz
IGNyZWF0ZWQgcmlnaHQtdG8tbGVmdAogICAgICAgICAgICAgUG9zaXRpb24gc3RhcnQgPSBuZXdT
ZWxlY3Rpb24uc3RhcnQoKTsKQEAgLTYyMiwxNCArNjIyLDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVu
dChwb3MpOwogCi0gICAgICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkg
IT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gbV9m
cmFtZS5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpOwotICAgICAgICAgICAgbmV3U2VsZWN0aW9u
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkobV9mcmFtZS5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgp
KTsKKyAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgIT0gQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gbV9mcmFtZS0+
c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBh
bmRVc2luZ0dyYW51bGFyaXR5KG1fZnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIG5ld1NlbGVjdGlvbiA9IGV4cGFuZFNlbGVj
dGlvblRvUmVzcGVjdFVzZXJTZWxlY3RBbGwodGFyZ2V0Tm9kZSwgdmlzaWJsZVBvcyk7CisgICAg
ICAgIG5ld1NlbGVjdGlvbiA9IGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFVzZXJTZWxlY3RBbGwo
aW5uZXJOb2RlLCB2aXNpYmxlUG9zKTsKIAotICAgIGJvb2wgaGFuZGxlZCA9IHVwZGF0ZVNlbGVj
dGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwgbmV3U2Vs
ZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgYm9vbCBoYW5kbGVkID0gdXBkYXRlU2VsZWN0aW9u
Rm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydChpbm5lck5vZGUsIG5ld1NlbGVjdGlv
biwgZ3JhbnVsYXJpdHkpOwogCiAgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgPT0gTWlk
ZGxlQnV0dG9uKSB7CiAgICAgICAgIC8vIElnbm9yZSBoYW5kbGVkLCBzaW5jZSB3ZSB3YW50IHRv
IHBhc3RlIHRvIHdoZXJlIHRoZSBjYXJldCB3YXMgcGxhY2VkIGFueXdheS4KQEAgLTY1NSw5ICs2
NTUsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogCiAgICAgY2FuY2VsRmFrZU1vdXNlTW92
ZUV2ZW50KCk7CiAKLSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgaWYgKFNjcm9sbFZpZXcqIHNjcm9s
bFZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkgeworICAgIGlmIChTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
ID0gbV9mcmFtZS0+dmlldygpKSB7CiAgICAgICAgIGlmIChzY3JvbGxWaWV3LT5pc1BvaW50SW5T
Y3JvbGxiYXJDb3JuZXIoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC02ODEsMTEgKzY4MSwxMSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShTVkcpCi0gICAgaWYg
KG1fZnJhbWUuZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpCi0gICAgICAgICYmIHRvU1ZHRG9j
dW1lbnQobV9mcmFtZS5kb2N1bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgeworICAgIGlm
IChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkKKyAgICAgICAgJiYgdG9TVkdE
b2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgewogICAg
ICAgICBpZiAoZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgpICYmIHNpbmdsZUNsaWNrKSB7CiAgICAg
ICAgICAgICBtX3N2Z1BhbiA9IHRydWU7Ci0gICAgICAgICAgICB0b1NWR0RvY3VtZW50KG1fZnJh
bWUuZG9jdW1lbnQoKSktPnN0YXJ0UGFuKG1fZnJhbWUudmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpOworICAgICAgICAgICAgdG9TVkdEb2N1bWVudCht
X2ZyYW1lLT5kb2N1bWVudCgpKS0+c3RhcnRQYW4obV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02OTYsNyArNjk2LDkgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmUKICAgICBpZiAoc2luZ2xlQ2xpY2spCiAgICAgICAgIGZvY3VzRG9jdW1lbnRWaWV3
KCk7CiAKLSAgICBtX21vdXNlUHJlc3NOb2RlID0gZXZlbnQudGFyZ2V0Tm9kZSgpOworICAgIE5v
ZGUqIGlubmVyTm9kZSA9IGV2ZW50LnRhcmdldE5vZGUoKTsKKworICAgIG1fbW91c2VQcmVzc05v
ZGUgPSBpbm5lck5vZGU7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBtX2RyYWdTdGFy
dFBvcyA9IGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKTsKICNlbmRpZgpAQCAtNzU2LDcgKzc1OCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgaWYgKG1fc2VsZWN0aW9uSW5pdGlhdGlv
blN0YXRlICE9IEV4dGVuZGVkU2VsZWN0aW9uKSB7CiAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8
IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQo
KS0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwog
CiAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhyZXN1bHQpOwogICAgIH0KQEAg
LTc3MCwzNCArNzcyLDM0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIC8vIHRoYXQgaXRzIGxv
Z2ljIG5lZWRzIHRvIHN0YXkgaW4gc3luYyB3aXRoIGhhbmRsZU1vdXNlTW92ZUV2ZW50KCkgYW5k
IHRoZSB3YXkgd2Ugc2V0TW91c2VEb3duTWF5U3RhcnREcmFnCiAgICAgLy8gaW4gaGFuZGxlTW91
c2VQcmVzc0V2ZW50CiAgICAgCi0gICAgaWYgKCFtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpIHx8
ICFtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpLT5oYXNMYXllcigpKQorICAgIGlmICghbV9mcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCkgfHwgIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oYXNM
YXllcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZXZlbnQuYnV0dG9uKCkg
IT0gTGVmdEJ1dHRvbiB8fCBldmVudC5jbGlja0NvdW50KCkgIT0gMSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOworICAg
IEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKKyAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCk7CiAg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKLSAgICBtX2Zy
YW1lLmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgbV9m
cmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBE
cmFnU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIHJlc3VsdC5pbm5lckVsZW1lbnQoKSAmJiBwYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdnYWJsZUVsZW1lbnQoJm1fZnJhbWUsIHJlc3VsdC5pbm5l
ckVsZW1lbnQoKSwgcmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSwgc3RhdGUp
OworICAgIHJldHVybiByZXN1bHQuaW5uZXJFbGVtZW50KCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5kcmFnZ2FibGVFbGVtZW50KG1fZnJhbWUsIHJlc3VsdC5pbm5lckVsZW1lbnQoKSwgcmVz
dWx0LnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSwgc3RhdGUpOwogfQogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKIHsKLSAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1l
LT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyVmll
dyogcmVuZGVyZXIgPSBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOworICAgIFJlbmRlclZpZXcq
IHJlbmRlcmVyID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC04MzYsNyArODM4LDcgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRU
ZXN0UmVzdWwKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlzaWJs
ZVBvc2l0aW9uIHRhcmdldFBvc2l0aW9uID0gc2VsZWN0aW9uRXh0ZW50UmVzcGVjdGluZ0VkaXRp
bmdCb3VuZGFyeShtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLCBoaXRUZXN0UmVzdWx0
LmxvY2FsUG9pbnQoKSwgdGFyZ2V0KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdGFyZ2V0UG9zaXRp
b24gPSBzZWxlY3Rpb25FeHRlbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJ5KG1fZnJhbWUtPnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLCBoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSwgdGFyZ2V0
KTsKIAogICAgIC8vIERvbid0IG1vZGlmeSB0aGUgc2VsZWN0aW9uIGlmIHdlJ3JlIG5vdCBvbiBh
IG5vZGUuCiAgICAgaWYgKHRhcmdldFBvc2l0aW9uLmlzTnVsbCgpKQpAQCAtODQ0LDcgKzg0Niw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsCiAKICAgICAvLyBSZXN0YXJ0IHRoZSBzZWxlY3Rp
b24gaWYgdGhpcyBpcyB0aGUgZmlyc3QgbW91c2UgbW92ZS4gVGhpcyB3b3JrIGlzIHVzdWFsbHkK
ICAgICAvLyBkb25lIGluIGhhbmRsZU1vdXNlUHJlc3NFdmVudCwgYnV0IG5vdCBpZiB0aGUgbW91
c2UgcHJlc3Mgd2FzIG9uIGFuIGV4aXN0aW5nIHNlbGVjdGlvbi4KLSAgICBWaXNpYmxlU2VsZWN0
aW9uIG5ld1NlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgLy8gU3BlY2lhbCBjYXNlIHRvIGxpbWl0
IHNlbGVjdGlvbiB0byB0aGUgY29udGFpbmluZyBibG9jayBmb3IgU1ZHIHRleHQuCkBAIC04ODcs
MTcgKzg4OSwxNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VE
cmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bAogICAgIG5ld1NlbGVjdGlvbi5z
ZXRFeHRlbnQodGFyZ2V0UG9zaXRpb24pOwogI2VuZGlmCiAKLSAgICBpZiAobV9mcmFtZS5zZWxl
Y3Rpb24oKS5ncmFudWxhcml0eSgpICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQotICAgICAgICBu
ZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNlbGVjdGlvbigpLmdy
YW51bGFyaXR5KCkpOworICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgp
ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNp
bmdHcmFudWxhcml0eShtX2ZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpKTsKIAotICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0Tm9uRGlyZWN0aW9uYWxTZWxlY3Rpb25JZk5lZWRlZChu
ZXdTZWxlY3Rpb24sIG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSwKKyAgICBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS5zZXROb25EaXJlY3Rpb25hbFNlbGVjdGlvbklmTmVlZGVkKG5ld1Nl
bGVjdGlvbiwgbV9mcmFtZS0+c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSwKICAgICAgICAgRnJh
bWVTZWxlY3Rpb246OkFkanVzdEVuZHBvaW50c0F0QmlkaUJvdW5kYXJ5KTsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6bG9zdE1vdXNlQ2Fw
dHVyZSgpCiB7Ci0gICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRDYXJldEJsaW5raW5nU3VzcGVu
ZGVkKGZhbHNlKTsKKyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5zZXRDYXJldEJsaW5raW5nU3Vz
cGVuZGVkKGZhbHNlKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCkBAIC05NDIsMjQgKzk0NCwy
NCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAg
ICAgICAgICAgICAmJiBtX2RyYWdTdGFydFBvcyA9PSBldmVudC5ldmVudCgpLnBvc2l0aW9uKCkK
ICNlbmRpZgotICAgICAgICAgICAgJiYgbV9mcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkKKyAg
ICAgICAgICAgICYmIG1fZnJhbWUtPnNlbGVjdGlvbigpLmlzUmFuZ2UoKQogICAgICAgICAgICAg
JiYgZXZlbnQuZXZlbnQoKS5idXR0b24oKSAhPSBSaWdodEJ1dHRvbikgewogICAgICAgICBWaXNp
YmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbjsKICAgICAgICAgTm9kZSogbm9kZSA9IGV2ZW50LnRh
cmdldE5vZGUoKTsKLSAgICAgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS5zZXR0aW5n
cygpLmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgIGJvb2wgY2FyZXRCcm93c2luZyA9
IG1fZnJhbWUtPnNldHRpbmdzKCkuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICAgICAgaWYg
KG5vZGUgJiYgKGNhcmV0QnJvd3NpbmcgfHwgbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpICYm
IG5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSBu
b2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQoKSk7CiAg
ICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBvcyk7CiAgICAgICAg
IH0KIAotICAgICAgICBzZXRTZWxlY3Rpb25JZk5lZWRlZChtX2ZyYW1lLnNlbGVjdGlvbigpLCBu
ZXdTZWxlY3Rpb24pOworICAgICAgICBzZXRTZWxlY3Rpb25JZk5lZWRlZChtX2ZyYW1lLT5zZWxl
Y3Rpb24oKSwgbmV3U2VsZWN0aW9uKTsKIAogICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICB9
CiAKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLm5vdGlmeVJlbmRlcmVyT2ZTZWxlY3Rpb25DaGFu
Z2UoVXNlclRyaWdnZXJlZCk7CisgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkubm90aWZ5UmVuZGVy
ZXJPZlNlbGVjdGlvbkNoYW5nZShVc2VyVHJpZ2dlcmVkKTsKIAotICAgIG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0RnJhbWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0ZWQoKTsKKyAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3RGcmFtZUVsZW1lbnRJblBhcmVudElmRnVsbHlTZWxl
Y3RlZCgpOwogCiAgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9u
KSB7CiAgICAgICAgIC8vIElnbm9yZSBoYW5kbGVkLCBzaW5jZSB3ZSB3YW50IHRvIHBhc3RlIHRv
IHdoZXJlIHRoZSBjYXJldCB3YXMgcGxhY2VkIGFueXdheS4KQEAgLTEwMTQsMTEgKzEwMTYsMTQg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiBEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRl
RHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIHsKLSAgICBQYWdlKiBwYWdlID0gbV9m
cmFtZS5wYWdlKCk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gRHJhZ1NvdXJj
ZUFjdGlvbk5vbmU7CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Ob25lOwogCi0gICAgRnJh
bWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9m
cmFtZS0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIERyYWdTb3VyY2VB
Y3Rpb25Ob25lOwogCkBAIC0xMDMwLDEwICsxMDM1LDEwIEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRI
YW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEhp
dFRlCiB7CiAgICAgLy8gV2UgYWx3YXlzIHNlbmQgaGl0VGVzdFJlc3VsdEF0UG9pbnQgdG8gdGhl
IG1haW4gZnJhbWUgaWYgd2UgaGF2ZSBvbmUsCiAgICAgLy8gb3RoZXJ3aXNlIHdlIG1pZ2h0IGhp
dCBhcmVhcyB0aGF0IGFyZSBvYnNjdXJlZCBieSBoaWdoZXIgZnJhbWVzLgotICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKSkgewogICAgICAgICBGcmFtZSYgbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
Ci0gICAgICAgIGlmICgmbV9mcmFtZSAhPSAmbWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUudmlldygpOworICAgICAgICBpZiAobV9mcmFtZSAh
PSAmbWFpbkZyYW1lKSB7CisgICAgICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJh
bWUtPnZpZXcoKTsKICAgICAgICAgICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtYWluRnJhbWUu
dmlldygpOwogICAgICAgICAgICAgaWYgKGZyYW1lVmlldyAmJiBtYWluVmlldykgewogICAgICAg
ICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9D
b250ZW50cyhmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQocG9p
bnQpKSk7CkBAIC0xMDQ0LDE0ICsxMDQ5LDE0IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVy
OjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEhpdFRlCiAK
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGlu
Zy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogCi0gICAgaWYg
KCFtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmICghbV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAvLyBoaXRUZXN0UmVzdWx0
QXRQb2ludCBpcyBzcGVjaWZpY2FsbHkgdXNlZCB0byBoaXRUZXN0IGludG8gYWxsIGZyYW1lcywg
dGh1cyBpdCBhbHdheXMgYWxsb3dzIGNoaWxkIGZyYW1lIGNvbnRlbnQuCiAgICAgSGl0VGVzdFJl
cXVlc3QgcmVxdWVzdChoaXRUeXBlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNv
bnRlbnQpOwotICAgIG1fZnJhbWUuY29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwg
cmVzdWx0KTsKKyAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0
LCByZXN1bHQpOwogICAgIGlmICghcmVxdWVzdC5yZWFkT25seSgpKQotICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0LmlubmVy
RWxlbWVudCgpKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3Rp
dmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50KCkpOwogCiAgICAgaWYgKHJlcXVl
c3QuZGlzYWxsb3dzU2hhZG93Q29udGVudCgpKQogICAgICAgICByZXN1bHQuc2V0VG9Ob25TaGFk
b3dBbmNlc3RvcigpOwpAQCAtMTA3OSw3ICsxMDg0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNj
cm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5
IGcKICAgICBOb2RlKiBub2RlID0gc3RhcnRpbmdOb2RlOwogCiAgICAgaWYgKCFub2RlKQotICAg
ICAgICBub2RlID0gbV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOworICAgICAg
ICBub2RlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKTsKIAogICAgIGlm
ICghbm9kZSkKICAgICAgICAgbm9kZSA9IG1fbW91c2VQcmVzc05vZGUuZ2V0KCk7CkBAIC0xMTAw
LDcgKzExMDUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bG9naWNhbFNjcm9sbE92ZXJmbG93KFNj
cm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbAogICAgIE5vZGUqIG5vZGUgPSBz
dGFydGluZ05vZGU7CiAKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBtX2ZyYW1lLmRv
Y3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCk7CisgICAgICAgIG5vZGUgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwogCiAgICAgaWYgKCFub2RlKQogICAgICAgICBub2Rl
ID0gbV9tb3VzZVByZXNzTm9kZS5nZXQoKTsKQEAgLTExMjAsMjcgKzExMjUsMjcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXQKIHsKICAgICAvLyBUaGUgbGF5b3V0IG5lZWRzIHRvIGJlIHVwIHRv
IGRhdGUgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBzY3JvbGwuIFdlIG1heSBiZQogICAgIC8vIGhl
cmUgYmVjYXVzZSBvZiBhbiBvbkxvYWQgZXZlbnQsIGluIHdoaWNoIGNhc2UgdGhlIGZpbmFsIGxh
eW91dCBoYXNuJ3QgYmVlbiBwZXJmb3JtZWQgeWV0LgotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgaWYg
KHNjcm9sbE92ZXJmbG93KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIHN0YXJ0aW5nTm9kZSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOyAgICAKLSAgICBGcmFtZSogZnJhbWUgPSAmbV9mcmFtZTsKKyAg
ICBGcmFtZSogZnJhbWUgPSBtX2ZyYW1lOwogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52
aWV3KCk7CiAgICAgaWYgKHZpZXcgJiYgdmlldy0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJp
dHkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFy
ZW50KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFu
dWxhcml0eSwgbV9mcmFtZS5vd25lckVsZW1lbnQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtX2Zy
YW1lLT5vd25lckVsZW1lbnQoKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpsb2dpY2FsU2Ny
b2xsUmVjdXJzaXZlbHkoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUpCiB7CiAgICAgLy8gVGhl
IGxheW91dCBuZWVkcyB0byBiZSB1cCB0byBkYXRlIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gc2Ny
b2xsLiBXZSBtYXkgYmUKICAgICAvLyBoZXJlIGJlY2F1c2Ugb2YgYW4gb25Mb2FkIGV2ZW50LCBp
biB3aGljaCBjYXNlIHRoZSBmaW5hbCBsYXlvdXQgaGFzbid0IGJlZW4gcGVyZm9ybWVkIHlldC4K
LSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwogICAgIGlmIChsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9u
LCBncmFudWxhcml0eSwgc3RhcnRpbmdOb2RlKSkKICAgICAgICAgcmV0dXJuIHRydWU7ICAgIAot
ICAgIEZyYW1lKiBmcmFtZSA9ICZtX2ZyYW1lOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZnJhbWU7
CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICAKICAgICBib29sIHNj
cm9sbGVkID0gZmFsc2U7CkBAIC0xMTU5LDcgKzExNjQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9u
LCBTYwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkubG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlv
biwgZ3JhbnVsYXJpdHksIG1fZnJhbWUub3duZXJFbGVtZW50KCkpOworICAgIHJldHVybiBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkubG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3Jh
bnVsYXJpdHksIG1fZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKIH0KIAogSW50UG9pbnQgRXZlbnRI
YW5kbGVyOjpsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QKQEAgLTExOTYsOSArMTIwMSw5
IEBAIHN0YXRpYyBib29sIGlzU3VibWl0SW1hZ2UoTm9kZSogbm9kZSkKIH0KIAogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBub2RlJ3MgZWRpdGFibGUgYmxvY2sgaXMgbm90IGN1cnJlbnQgZm9jdXNl
ZCBmb3IgZWRpdGluZwotc3RhdGljIGJvb2wgbm9kZUlzTm90QmVpbmdFZGl0ZWQoY29uc3QgTm9k
ZSYgbm9kZSwgY29uc3QgRnJhbWUmIGZyYW1lKQorc3RhdGljIGJvb2wgbm9kZUlzTm90QmVpbmdF
ZGl0ZWQoTm9kZSogbm9kZSwgRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVybiBmcmFtZS5zZWxl
Y3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCkgIT0gbm9kZS5yb290RWRpdGFibGVFbGVtZW50
KCk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCkg
IT0gbm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6
dXNlSGFuZEN1cnNvcihOb2RlKiBub2RlLCBib29sIGlzT3ZlckxpbmssIGJvb2wgc2hpZnRLZXkp
CkBAIC0xMjExLDcgKzEyMTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXNlSGFuZEN1cnNvcihO
b2RlKiBub2RlLCBib29sIGlzT3ZlckxpbmssIGJvb2wgc2hpZnRLZXkpCiAKICAgICAvLyBJZiB0
aGUgbGluayBpcyBlZGl0YWJsZSwgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBzZXR0aW5ncyB0
byBzZWUgd2hldGhlciBvciBub3QgdGhlIGxpbmsgc2hvdWxkIGJlIGZvbGxvd2VkCiAgICAgaWYg
KGVkaXRhYmxlKSB7Ci0gICAgICAgIHN3aXRjaCAobV9mcmFtZS5zZXR0aW5ncygpLmVkaXRhYmxl
TGlua0JlaGF2aW9yKCkpIHsKKyAgICAgICAgc3dpdGNoIChtX2ZyYW1lLT5zZXR0aW5ncygpLmVk
aXRhYmxlTGlua0JlaGF2aW9yKCkpIHsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSBF
ZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3I6CiAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rQWx3
YXlzTGl2ZToKQEAgLTEyMjMsNyArMTIyOCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1c2VIYW5k
Q3Vyc29yKE5vZGUqIG5vZGUsIGJvb2wgaXNPdmVyTGluaywgYm9vbCBzaGlmdEtleSkKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rTGl2ZVdoZW5Ob3RGb2N1
c2VkOgotICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9IG5vZGVJc05vdEJlaW5nRWRp
dGVkKCpub2RlLCBtX2ZyYW1lKSB8fCBzaGlmdEtleTsKKyAgICAgICAgICAgIGVkaXRhYmxlTGlu
a0VuYWJsZWQgPSBub2RlSXNOb3RCZWluZ0VkaXRlZChub2RlLCBtX2ZyYW1lKSB8fCBzaGlmdEtl
eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rT25seUxp
dmVXaXRoU2hpZnRLZXk6CkBAIC0xMjM3LDcgKzEyNDIsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6
dXNlSGFuZEN1cnNvcihOb2RlKiBub2RlLCBib29sIGlzT3ZlckxpbmssIGJvb2wgc2hpZnRLZXkp
CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpjdXJzb3JVcGRhdGVUaW1lckZpcmVkKFRpbWVyPEV2ZW50
SGFuZGxlcj4qKQogewotICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIEFTU0VS
VChtX2ZyYW1lKTsKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisKICAgICB1cGRh
dGVDdXJzb3IoKTsKIH0KIApAQCAtMTI0Niw3ICsxMjUzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6
OnVwZGF0ZUN1cnNvcigpCiAgICAgaWYgKG1fbW91c2VQb3NpdGlvbklzVW5rbm93bikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CisgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMjYzLDcgKzEyNzAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBk
YXRlQ3Vyc29yKCkKICAgICBib29sIG1ldGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRh
S2V5KTsKIAotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKICAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQodmlldy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKQEAg
LTEyODEsNyArMTI4OCw3IEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vy
c29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmCiAgICAgaWYgKG1fcmVz
aXplTGF5ZXIgJiYgbV9yZXNpemVMYXllci0+aW5SZXNpemVNb2RlKCkpCiAgICAgICAgIHJldHVy
biBOb0N1cnNvckNoYW5nZTsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKKyAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIE5vQ3Vyc29yQ2hhbmdlOwogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQpAQCAtMTMw
MCw3ICsxMzA3LDcgQEAgT3B0aW9uYWxDdXJzb3IgRXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3Io
Y29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBib29sIHNoaWYKIAogI2lmIEVOQUJMRShDVVJT
T1JfVklTSUJJTElUWSkKICAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvclZpc2liaWxpdHko
KSA9PSBDdXJzb3JWaXNpYmlsaXR5QXV0b0hpZGUpIHsKLSAgICAgICAgRmVhdHVyZU9ic2VydmVy
OjpvYnNlcnZlKG1fZnJhbWUuZG9jdW1lbnQoKSwgRmVhdHVyZU9ic2VydmVyOjpDdXJzb3JWaXNp
YmlsaXR5KTsKKyAgICAgICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKG1fZnJhbWUtPmRvY3Vt
ZW50KCksIEZlYXR1cmVPYnNlcnZlcjo6Q3Vyc29yVmlzaWJpbGl0eSk7CiAgICAgICAgIHN0YXJ0
QXV0b0hpZGVDdXJzb3JUaW1lcigpOwogICAgIH0gZWxzZQogICAgICAgICBjYW5jZWxBdXRvSGlk
ZUN1cnNvclRpbWVyKCk7CkBAIC0xMzEyLDcgKzEzMTksNyBAQCBPcHRpb25hbEN1cnNvciBFdmVu
dEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wg
c2hpZgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgICAgICYmICFtX21vdXNlRG93bk1h
eVN0YXJ0RHJhZwogI2VuZGlmCi0gICAgICAgICYmIG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJl
dE9yUmFuZ2UoKSAmJiAhbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUpCisgICAgICAgICYmIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkgJiYgIW1fY2FwdHVyaW5nTW91c2VF
dmVudHNOb2RlKQogICAgICAgICByZXR1cm4gaUJlYW07CiAKICAgICBpZiAocmVuZGVyZXIpIHsK
QEAgLTEzNzIsNyArMTM3OSw3IEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0
Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmCiAgICAgICAgIGJv
b2wgaW5SZXNpemVyID0gZmFsc2U7CiAgICAgICAgIGlmIChyZW5kZXJlcikgewogICAgICAgICAg
ICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKQor
ICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAg
ICAgICAgICAgICAgICAgICAgIGluUmVzaXplciA9IGxheWVyLT5pc1BvaW50SW5SZXNpemVDb250
cm9sKHZpZXctPndpbmRvd1RvQ29udGVudHMocm91bmRlZEludFBvaW50KHJlc3VsdC5sb2NhbFBv
aW50KCkpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0NTcsNyArMTQ2NCw3IEBA
IE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQog
dm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0QXV0b0hpZGVDdXJzb3JUaW1lcigpCiB7Ci0gICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE0NzksMTUgKzE0ODYs
MTUgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmF1dG9IaWRlQ3Vyc29yVGltZXJGaXJlZChUaW1lcjxF
dmVudEhhbmRsZXI+KiB0aW1lcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9
PSAmbV9hdXRvSGlkZUN1cnNvclRpbWVyKTsKICAgICBtX2N1cnJlbnRNb3VzZUN1cnNvciA9IG5v
bmVDdXJzb3IoKTsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKHZpZXcgJiYgdmlldy0+
aXNBY3RpdmUoKSkKICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG1fY3VycmVudE1vdXNlQ3Vyc29y
KTsKIH0KICNlbmRpZgogCi1zdGF0aWMgTGF5b3V0UG9pbnQgZG9jdW1lbnRQb2ludEZvcldpbmRv
d1BvaW50KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQorc3RhdGlj
IExheW91dFBvaW50IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChGcmFtZSogZnJhbWUsIGNv
bnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFt
ZS52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICAvLyBG
SVhNRTogSXMgaXQgcmVhbGx5IE9LIHRvIHVzZSB0aGUgd3JvbmcgY29vcmRpbmF0ZXMgaGVyZSB3
aGVuIHZpZXcgaXMgMD8KICAgICAvLyBIaXN0b3JpY2FsbHkgdGhlIGNvZGUgd291bGQganVzdCBj
cmFzaDsgdGhpcyBpcyBjbGVhcmx5IG5vIHdvcnNlIHRoYW4gdGhhdC4KICAgICByZXR1cm4gdmll
dyA/IHZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpIDogd2luZG93UG9pbnQ7CkBA
IC0xNDk1LDkgKzE1MDIsOSBAQCBzdGF0aWMgTGF5b3V0UG9pbnQgZG9jdW1lbnRQb2ludEZvcldp
bmRvd1BvaW50KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIHdpbgogCiBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
bW91c2VFdmVudCkKIHsKLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52
aWV3KCkpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1lLT52aWV3KCkp
OwogCi0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyht
X2ZyYW1lLnBhZ2UoKSkpIHsKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5k
bGVNb3VzZVByZXNzKG1fZnJhbWUtPnBhZ2UoKSkpIHsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNr
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE1MTEsNyArMTUxOCw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBGSVhNRSAo
YnVnIDY4MTg1KTogdGhpcyBjYWxsIHNob3VsZCBiZSBtYWRlIGF0IGFub3RoZXIgYWJzdHJhY3Rp
b24gbGF5ZXIKLSAgICBtX2ZyYW1lLmxvYWRlcigpLnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lv
blByb3RlY3Rpb24oKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS5yZXNldE11bHRpcGxlRm9ybVN1
Ym1pc3Npb25Qcm90ZWN0aW9uKCk7CiAgICAgCiAgICAgY2FuY2VsRmFrZU1vdXNlTW92ZUV2ZW50
KCk7CiAgICAgbV9tb3VzZVByZXNzZWQgPSB0cnVlOwpAQCAtMTUyMyw3ICsxNTMwLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQpCiAjZW5kaWYKICAgICBtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0
ID0gZmFsc2U7CiAgICAgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwgPSBmYWxzZTsKLSAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCisgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9tb3VzZURvd25Qb3MgPSB2aWV3
LT53aW5kb3dUb0NvbnRlbnRzKG1vdXNlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGludmFsaWRhdGVDbGljaygpOwpAQCAtMTUzNSw3ICsxNTQyLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IG1vdXNlRXZlbnQpCiAgICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUg
aW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBw
ZW5zCiAgICAgLy8gd2hlbiB3ZSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgTGF5b3V0UG9pbnQg
ZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtb3Vz
ZUV2ZW50LnBvc2l0aW9uKCkpOwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2
ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVu
dFBvaW50LCBtb3VzZUV2ZW50KTsKKyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3Vt
ZW50UG9pbnQsIG1vdXNlRXZlbnQpOwogCiAgICAgaWYgKCFtZXYudGFyZ2V0Tm9kZSgpKSB7CiAg
ICAgICAgIGludmFsaWRhdGVDbGljaygpOwpAQCAtMTU2MCw3ICsxNTY3LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IG1vdXNlRXZlbnQpCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAgICAgLy8gV2Ugc3RvcmUg
d2hldGhlciBwYW4gc2Nyb2xsaW5nIGlzIGluIHByb2dyZXNzIGJlZm9yZSBjYWxsaW5nIHN0b3BB
dXRvc2Nyb2xsVGltZXIoKQogICAgIC8vIGJlY2F1c2UgaXQgd2lsbCBzZXQgbV9hdXRvc2Nyb2xs
VHlwZSB0byBOb0F1dG9zY3JvbGwgb24gcmV0dXJuLgotICAgIGJvb2wgaXNQYW5TY3JvbGxJblBy
b2dyZXNzID0gbV9mcmFtZS5wYWdlKCkgJiYgbV9mcmFtZS5wYWdlKCktPm1haW5GcmFtZSgpLmV2
ZW50SGFuZGxlcigpLnBhblNjcm9sbEluUHJvZ3Jlc3MoKTsKKyAgICBib29sIGlzUGFuU2Nyb2xs
SW5Qcm9ncmVzcyA9IG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLnBhblNjcm9sbEluUHJvZ3Jlc3MoKTsKICAgICBzdG9wQXV0b3Nj
cm9sbFRpbWVyKCk7CiAgICAgaWYgKGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcykgewogICAgICAgICAv
LyBXZSBpbnZhbGlkYXRlIHRoZSBjbGljayB3aGVuIGV4aXRpbmcgcGFuIHNjcm9sbGluZyBzbyB0
aGF0IHdlIGRvbid0IGluYWR2ZXJ0ZW50bHkgbmF2aWdhdGUKQEAgLTE1NzMsNyArMTU4MCw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIG1fY2xpY2tDb3VudCA9IG1vdXNlRXZlbnQuY2xp
Y2tDb3VudCgpOwogICAgIG1fY2xpY2tOb2RlID0gbWV2LnRhcmdldE5vZGUoKTsKIAotICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkgeworICAgIGlmIChGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0g
bV9jbGlja05vZGUtPnJlbmRlcmVyKCkgPyBtX2NsaWNrTm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9z
aW5nTGF5ZXIoKSA6IDA7CiAgICAgICAgIEludFBvaW50IHAgPSB2aWV3LT53aW5kb3dUb0NvbnRl
bnRzKG1vdXNlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgICAgIGlmIChsYXllciAmJiBsYXllci0+
aXNQb2ludEluUmVzaXplQ29udHJvbChwKSkgewpAQCAtMTU4NSw3ICsxNTkyLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIG1vdXNlRXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZyYW1lLnNlbGVjdGlv
bigpLnNldENhcmV0QmxpbmtpbmdTdXNwZW5kZWQodHJ1ZSk7CisgICAgbV9mcmFtZS0+c2VsZWN0
aW9uKCkuc2V0Q2FyZXRCbGlua2luZ1N1c3BlbmRlZCh0cnVlKTsKIAogICAgIGJvb2wgc3dhbGxv
d0V2ZW50ID0gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQs
IG1ldi50YXJnZXROb2RlKCksIHRydWUsIG1fY2xpY2tDb3VudCwgbW91c2VFdmVudCwgdHJ1ZSk7
CiAgICAgbV9jYXB0dXJlc0RyYWdnaW5nID0gIXN3YWxsb3dFdmVudCB8fCBtZXYuc2Nyb2xsYmFy
KCk7CkBAIC0xNTk1LDcgKzE2MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBpZiAo
bWV2LnNjcm9sbGJhcigpKSB7CiAgICAgICAgIGNvbnN0IGJvb2wgd2FzTGFzdFNjcm9sbEJhciA9
IG1ldi5zY3JvbGxiYXIoKSA9PSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpOwogICAg
ICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250
ZW50KTsKLSAgICAgICAgbWV2ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVu
dChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsKKyAgICAgICAgbWV2ID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2lu
dCwgbW91c2VFdmVudCk7CiAgICAgICAgIGlmICh3YXNMYXN0U2Nyb2xsQmFyICYmIG1ldi5zY3Jv
bGxiYXIoKSAhPSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpKQogICAgICAgICAgICAg
bV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IDA7CiAgICAgfQpAQCAtMTYxNSwxMCArMTYyMiwx
MCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5vZGUg
Y2FuJ3Qgc3RpbGwgYmUgdGhlIHNoYWRvdyBub2RlLgogICAgICAgICBpZiAobWV2LnRhcmdldE5v
ZGUoKS0+aXNTaGFkb3dSb290KCkgJiYgaXNIVE1MSW5wdXRFbGVtZW50KHRvU2hhZG93Um9vdCht
ZXYudGFyZ2V0Tm9kZSgpKS0+aG9zdEVsZW1lbnQoKSkpIHsKICAgICAgICAgICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwotICAgICAg
ICAgICAgbWV2ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0
LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsKKyAgICAgICAgICAgIG1ldiA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIG1v
dXNlRXZlbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS52aWV3KCk7CisgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAg
ICAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSB2aWV3ID8gdmlldy0+c2Nyb2xsYmFyQXRQb2lu
dChtb3VzZUV2ZW50LnBvc2l0aW9uKCkpIDogMDsKICAgICAgICAgaWYgKCFzY3JvbGxiYXIpCiAg
ICAgICAgICAgICBzY3JvbGxiYXIgPSBtZXYuc2Nyb2xsYmFyKCk7CkBAIC0xNjM3LDkgKzE2NDQs
OSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIC8vIFRoaXMgbWV0aG9kIG9ubHkgZXhpc3RzIGZv
ciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBrbm93IGhvdyB0byBkZWxpdmVyIAogYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIG1vdXNlRXZlbnQpCiB7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJh
bWUudmlldygpKTsKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmll
dygpKTsKIAotICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0Q2FyZXRCbGlua2luZ1N1c3BlbmRl
ZChmYWxzZSk7CisgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkuc2V0Q2FyZXRCbGlua2luZ1N1c3Bl
bmRlZChmYWxzZSk7CiAKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9y
KERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCkBAIC0xNjg4LDI0ICsxNjk1LDI0
IEBAIHN0YXRpYyBSZW5kZXJMYXllciogbGF5ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCiAKIGJvb2wg
RXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQp
CiB7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUudmlldygpKTsKKyAg
ICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS0+dmlldygpKTsKICAgICBNYXhp
bXVtRHVyYXRpb25UcmFja2VyIG1heER1cmF0aW9uVHJhY2tlcigmbV9tYXhNb3VzZU1vdmVkRHVy
YXRpb24pOwogCiAgICAgSGl0VGVzdFJlc3VsdCBob3ZlcmVkTm9kZSA9IEhpdFRlc3RSZXN1bHQo
TGF5b3V0UG9pbnQoKSk7CiAgICAgYm9vbCByZXN1bHQgPSBoYW5kbGVNb3VzZU1vdmVFdmVudChl
dmVudCwgJmhvdmVyZWROb2RlKTsKIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsK
KyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIGlmIChSZW5kZXJMYXllciogbGF5ZXIgPSBsYXllckZv
ck5vZGUoaG92ZXJlZE5vZGUuaW5uZXJOb2RlKCkpKSB7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1fZnJhbWUudmlldygpKSB7CisgICAgICAgIGlmIChGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lVmlldy0+
Y29udGFpbnNTY3JvbGxhYmxlQXJlYShsYXllcikpCiAgICAgICAgICAgICAgICAgbGF5ZXItPm1v
dXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKKyAgICBpZiAoRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+bW91c2VNb3Zl
ZEluQ29udGVudEFyZWEoKTsgIAogCiAgICAgaG92ZXJlZE5vZGUuc2V0VG9Ob25TaGFkb3dBbmNl
c3RvcigpOwpAQCAtMTcyMiwxMyArMTcyOSwyMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZQog
CiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSwgYm9vbCBv
bmx5VXBkYXRlU2Nyb2xsYmFycykKIHsKKyAgICAvLyBpbiBSYWRhciAzNzAzNzY4IHdlIHNhdyBm
cmVxdWVudCBjcmFzaGVzIGFwcGFyZW50bHkgZHVlIHRvIHRoZQorICAgIC8vIHBhcnQgYmVpbmcg
bnVsbCBoZXJlLCB3aGljaCBzZWVtcyBpbXBvc3NpYmxlLCBzbyBjaGVjayBmb3IgbmlsCisgICAg
Ly8gYnV0IGFsc28gYXNzZXJ0IHNvIHRoYXQgd2UgY2FuIHRyeSB0byBmaWd1cmUgdGhpcyBvdXQg
aW4gZGVidWcKKyAgICAvLyBidWlsZHMsIGlmIGl0IGhhcHBlbnMuCisgICAgQVNTRVJUKG1fZnJh
bWUpOworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5
bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQobW91c2VFdmVudCk7CiAgICAgaWYgKGRlZmF1bHRQ
cmV2ZW50ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8RnJh
bWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+
IHByb3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwogICAgIAogICAgIHNldExhc3RLbm93bk1vdXNl
UG9zaXRpb24obW91c2VFdmVudCk7CiAKQEAgLTE3NDEsNyArMTc1Niw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQsIEhpCiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX3N2Z1BhbikgewotICAg
ICAgICB0b1NWR0RvY3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSktPnVwZGF0ZVBhbihtX2ZyYW1l
LnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAg
ICAgICAgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC0xNzg5LDcgKzE4MDQsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogICAgIFJlZlB0cjxGcmFtZT4gbmV3U3ViZnJhbWUg
PSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZS5nZXQoKSA/IHN1YmZyYW1lRm9yVGFyZ2V0Tm9k
ZShtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZS5nZXQoKSkgOiBzdWJmcmFtZUZvckhpdFRlc3RS
ZXN1bHQobWV2KTsKICAKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0cyB0byBoYXBwZW4gZmlyc3Qs
IGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92ZSBldmVudCB0byB0aGUgbGFz
dCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91dHMuCi0gICAgaWYgKG1fbGFz
dE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZS0+
dHJlZSgpLmlzRGVzY2VuZGFudE9mKCZtX2ZyYW1lKSAmJiBtX2xhc3RNb3VzZU1vdmVFdmVudFN1
YmZyYW1lICE9IG5ld1N1YmZyYW1lKQorICAgIGlmIChtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZy
YW1lICYmIG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUtPnRyZWUoKS5pc0Rlc2NlbmRhbnRP
ZihtX2ZyYW1lKSAmJiBtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1l
KQogICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1ldiwgbV9sYXN0TW91c2VN
b3ZlRXZlbnRTdWJmcmFtZS5nZXQoKSk7CiAKICAgICBpZiAobmV3U3ViZnJhbWUpIHsKQEAgLTE4
MDEsNyArMTgxNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEhpCiAgICAgICAgIGlmIChuZXdT
dWJmcmFtZS0+dmlldygpKQogICAgICAgICAgICAgc3dhbGxvd0V2ZW50IHw9IHBhc3NNb3VzZU1v
dmVFdmVudFRvU3ViZnJhbWUobWV2LCBuZXdTdWJmcmFtZS5nZXQoKSwgaG92ZXJlZE5vZGUpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXco
KSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKSB7CiAg
ICAgICAgICAgICBPcHRpb25hbEN1cnNvciBvcHRpb25hbEN1cnNvciA9IHNlbGVjdEN1cnNvciht
ZXYuaGl0VGVzdFJlc3VsdCgpLCBtb3VzZUV2ZW50LnNoaWZ0S2V5KCkpOwogICAgICAgICAgICAg
aWYgKG9wdGlvbmFsQ3Vyc29yLmlzQ3Vyc29yQ2hhbmdlKCkpIHsKICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRNb3VzZUN1cnNvciA9IG9wdGlvbmFsQ3Vyc29yLmN1cnNvcigpOwpAQCAtMTg1Niw5
ICsxODcxLDkgQEAgaW5saW5lIHN0YXRpYyBib29sIG1vdXNlSXNSZWxlYXNlZE9uUHJlc3NlZEVs
ZW1lbnQoTm9kZSogdGFyZ2V0Tm9kZSwgTm9kZSogY2xpY2sKIAogYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VF
dmVudCkKIHsKLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkp
OworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwogCi0g
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRDYXJldEJsaW5raW5nU3VzcGVuZGVkKGZhbHNlKTsK
KyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5zZXRDYXJldEJsaW5raW5nU3VzcGVuZGVkKGZhbHNl
KTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVk
ID0gZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKG1vdXNlRXZlbnQpOwpAQCAt
MTg3OCw3ICsxODkzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICNpZiBFTkFCTEUoU1ZH
KQogICAgIGlmIChtX3N2Z1BhbikgewogICAgICAgICBtX3N2Z1BhbiA9IGZhbHNlOwotICAgICAg
ICB0b1NWR0RvY3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSktPnVwZGF0ZVBhbihtX2ZyYW1lLnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICAg
ICAgdG9TVkdEb2N1bWVudChtX2ZyYW1lLT5kb2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJhbWUt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC0xOTQ4LDEyICsxOTYzLDEyIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
Ci0gICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkKKyAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZyYW1lJiBmb2N1c0ZyYW1lID0gbV9mcmFtZS5wYWdl
KCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIEZyYW1lJiBm
b2N1c0ZyYW1lID0gbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICAvLyBEbyBub3QgcGFzdGUgaGVyZSBpZiB0aGUgZm9jdXMgd2FzIG1v
dmVkIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmICgmbV9mcmFtZSA9PSAmZm9jdXNGcmFtZSAmJiBt
X2ZyYW1lLmVkaXRvcigpLmNsaWVudCgpLT5zdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpKQotICAg
ICAgICByZXR1cm4gbV9mcmFtZS5lZGl0b3IoKS5jb21tYW5kKEFTQ0lJTGl0ZXJhbCgiUGFzdGVH
bG9iYWxTZWxlY3Rpb24iKSkuZXhlY3V0ZSgpOworICAgIGlmIChtX2ZyYW1lID09ICZmb2N1c0Zy
YW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5zdXBwb3J0c0dsb2JhbFNlbGVjdGlv
bigpKQorICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChBU0NJSUxpdGVy
YWwoIlBhc3RlR2xvYmFsU2VsZWN0aW9uIikpLmV4ZWN1dGUoKTsKIAogICAgIHJldHVybiBmYWxz
ZTsKIH0KQEAgLTE5NjIsNyArMTk3Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVQYXN0
ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlCiAKIGJv
b2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgTm9kZSogZHJhZ1RhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVu
dCwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiB7Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogCiAgICAg
Ly8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gZGlzcGF0Y2ggYSBkcmFnbGVhdmUgZXZlbiBpZiB0
aGUgdmlldyBpcyBnb25lLgogICAgIGlmICghdmlldykKQEAgLTE5NzAsNyArMTk4NSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgTm9kZSogZHJhZ1RhCiAKICAgICB2aWV3LT5yZXNldERlZmVycmVkUmVwYWludERl
bGF5KCk7CiAgICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1lID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQudGltZXN0YW1wKCksIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKKyAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQudGlt
ZXN0YW1wKCksIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksCiAgICAgICAgIDAs
IGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwg
ZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1v
dmVtZW50RGVsdGEoKS55KCksCkBAIC0yMDg2LDcgKzIxMDEsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xp
cGJvYXJkKgogewogICAgIGJvb2wgYWNjZXB0ID0gZmFsc2U7CiAKLSAgICBpZiAoIW1fZnJhbWUu
dmlldygpKQorICAgIGlmICghbV9mcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwpAQCAtMjIwMCw4ICsyMjE1
LDEwIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoUGFz
c1JlZlB0cjxOb2RlPiBuKQogCiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIEV2ZW50SGFu
ZGxlcjo6cHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbWV2KQogewotICAgIEFTU0VSVChtX2ZyYW1lLmRvY3Vt
ZW50KCkpOwotICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50
KHJlcXVlc3QsIGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtZXYucG9zaXRp
b24oKSksIG1ldik7CisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIEFTU0VSVChtX2ZyYW1lLT5k
b2N1bWVudCgpKTsKKyAgICAKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFy
ZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUs
IG1ldi5wb3NpdGlvbigpKSwgbWV2KTsKIH0KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0yMjc0LDkg
KzIyOTEsOSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUo
Tm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1NbwogICAgIGlmIChmaXJlTW91c2VPdmVy
T3V0KSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBsYXllckZvckxhc3ROb2RlID0gbGF5ZXJGb3JO
b2RlKG1fbGFzdE5vZGVVbmRlck1vdXNlLmdldCgpKTsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGxh
eWVyRm9yTm9kZVVuZGVyTW91c2UgPSBsYXllckZvck5vZGUobV9ub2RlVW5kZXJNb3VzZS5nZXQo
KSk7Ci0gICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKKyAgICAgICAgUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKIAotICAgICAgICBpZiAobV9sYXN0Tm9kZVVuZGVyTW91
c2UgJiYgKCFtX25vZGVVbmRlck1vdXNlIHx8ICZtX25vZGVVbmRlck1vdXNlLT5kb2N1bWVudCgp
ICE9IG1fZnJhbWUuZG9jdW1lbnQoKSkpIHsKKyAgICAgICAgaWYgKG1fbGFzdE5vZGVVbmRlck1v
dXNlICYmICghbV9ub2RlVW5kZXJNb3VzZSB8fCAmbV9ub2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQo
KSAhPSBtX2ZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgLy8gVGhlIG1vdXNlIGhh
cyBtb3ZlZCBiZXR3ZWVuIGZyYW1lcy4KICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBt
X2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkKQEAgLTIyOTIsNyAr
MjMwOSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShO
b2RlKiB0YXJnZXROb2RlLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAobV9ub2RlVW5kZXJNb3VzZSAmJiAoIW1fbGFzdE5vZGVVbmRlck1v
dXNlIHx8ICZtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQoKSAhPSBtX2ZyYW1lLmRvY3Vt
ZW50KCkpKSB7CisgICAgICAgIGlmIChtX25vZGVVbmRlck1vdXNlICYmICghbV9sYXN0Tm9kZVVu
ZGVyTW91c2UgfHwgJm1fbGFzdE5vZGVVbmRlck1vdXNlLT5kb2N1bWVudCgpICE9IG1fZnJhbWUt
PmRvY3VtZW50KCkpKSB7CiAgICAgICAgICAgICAvLyBUaGUgbW91c2UgaGFzIG1vdmVkIGJldHdl
ZW4gZnJhbWVzLgogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fbm9kZVVuZGVyTW91
c2UtPmRvY3VtZW50KCkuZnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpCkBAIC0yMzA4LDcgKzIzMjUsNyBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwg
Y29uc3QgUGxhdGZvcm1NbwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG1fbGFzdE5vZGVVbmRlck1vdXNlICYmICZtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQo
KSAhPSBtX2ZyYW1lLmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKG1fbGFzdE5vZGVVbmRlck1v
dXNlICYmICZtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQoKSAhPSBtX2ZyYW1lLT5kb2N1
bWVudCgpKSB7CiAgICAgICAgICAgICBtX2xhc3ROb2RlVW5kZXJNb3VzZSA9IDA7CiAgICAgICAg
ICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gMDsKICNpZiBFTkFCTEUoU1ZHKQpAQCAt
MjMzMyw3ICsyMzUwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJn
ZXROb2RlKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IFBsYXRmb3JtTW8KIAogYm9vbCBFdmVudEhh
bmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Tm9kZSogdGFyZ2V0Tm9kZSwgYm9vbCAvKmNhbmNlbGFibGUqLywgaW50IGNsaWNrQ291bnQsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCwgYm9vbCBzZXRVbmRlcikKIHsKLSAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCisgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgdmlldy0+cmVzZXREZWZlcnJlZFJl
cGFpbnREZWxheSgpOwogCiAgICAgdXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUodGFyZ2V0Tm9k
ZSwgbW91c2VFdmVudCwgc2V0VW5kZXIpOwpAQCAtMjM0NiwxMyArMjM2MywxMyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBOb2RlKiB0YXJnZQogICAgIGlmICghc3dhbGxvd0V2ZW50ICYmIGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKIAogICAgICAgICAvLyBJZiBjbGlja2luZyBv
biBhIGZyYW1lIHNjcm9sbGJhciwgZG8gbm90IG1lc3MgdXAgd2l0aCBjb250ZW50IGZvY3VzLgot
ICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAgICAg
aWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgaWYg
KHZpZXctPnNjcm9sbGJhckF0UG9pbnQobW91c2VFdmVudC5wb3NpdGlvbigpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBsYXlvdXQg
bmVlZHMgdG8gYmUgdXAgdG8gZGF0ZSB0byBkZXRlcm1pbmUgaWYgYW4gZWxlbWVudCBpcyBmb2N1
c2FibGUuCi0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgICAgIC8vIEJsdXIgY3VycmVu
dCBmb2N1cyBub2RlIHdoZW4gYSBsaW5rL2J1dHRvbiBpcyBjbGlja2VkOyB0aGlzCiAgICAgICAg
IC8vIGlzIGV4cGVjdGVkIGJ5IHNvbWUgc2l0ZXMgdGhhdCByZWx5IG9uIG9uQ2hhbmdlIGhhbmRs
ZXJzIHJ1bm5pbmcKQEAgLTIzNzEsOSArMjM4OCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNw
YXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdl
CiAgICAgICAgICAgICAgICAgLy8gbm9kZSBvbiBtb3VzZSBkb3duIGlmIGl0J3Mgc2VsZWN0ZWQg
YW5kIGluc2lkZSBhIGZvY3VzZWQgbm9kZS4gSXQgd2lsbCBiZQogICAgICAgICAgICAgICAgIC8v
IGZvY3VzZWQgaWYgdGhlIHVzZXIgZG9lcyBhIG1vdXNldXAgb3ZlciBpdCwgaG93ZXZlciwgYmVj
YXVzZSB0aGUgbW91c2V1cAogICAgICAgICAgICAgICAgIC8vIHdpbGwgc2V0IGEgc2VsZWN0aW9u
IGluc2lkZSBpdCwgd2hpY2ggd2lsbCBjYWxsIHNldEZvY3VzZU5vZGVJZk5lZWRlZC4KLSAgICAg
ICAgICAgICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgbV9mcmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLT5jb21w
YXJlTm9kZShlbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKSA9PSBSYW5nZTo6Tk9ERV9JTlNJREUK
LSAgICAgICAgICAgICAgICAgICAgJiYgZWxlbWVudC0+aXNEZXNjZW5kYW50T2YobV9mcmFtZS5k
b2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpKSkKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFt
ZS0+c2VsZWN0aW9uKCkuaXNSYW5nZSgpCisgICAgICAgICAgICAgICAgICAgICYmIG1fZnJhbWUt
PnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCktPmNvbXBhcmVOb2RlKGVsZW1lbnQsIElH
Tk9SRV9FWENFUFRJT04pID09IFJhbmdlOjpOT0RFX0lOU0lERQorICAgICAgICAgICAgICAgICAg
ICAmJiBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2Vk
RWxlbWVudCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM4NywxMiArMjQwNCwxMiBA
QCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBOb2RlKiB0YXJnZQogCiAgICAgICAgIC8vIElmIGZvY3VzIHNoaWZ0IGlz
IGJsb2NrZWQsIHdlIGVhdCB0aGUgZXZlbnQuICBOb3RlIHdlIHNob3VsZCBuZXZlciBjbGVhciBz
d2FsbG93RXZlbnQKICAgICAgICAgLy8gaWYgdGhlIHBhZ2UgYWxyZWFkeSBzZXQgaXQgKGUuZy4s
IGJ5IGNhbmNlbGluZyBkZWZhdWx0IGJlaGF2aW9yKS4KLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLnBhZ2UoKSkgeworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNNb3VzZUZvY3Vz
YWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5z
ZXRGb2N1c2VkRWxlbWVudChlbGVtZW50LCAmbV9mcmFtZSkpCisgICAgICAgICAgICAgICAgaWYg
KCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudChlbGVtZW50LCBtX2Zy
YW1lKSkKICAgICAgICAgICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0gdHJ1ZTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmZvY3VzZWQoKSkgewotICAgICAg
ICAgICAgICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnQo
MCwgJm1fZnJhbWUpKQorICAgICAgICAgICAgICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuc2V0Rm9jdXNlZEVsZW1lbnQoMCwgbV9mcmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIHN3
YWxsb3dFdmVudCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI0MDMsNyAr
MjQyMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdlCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpp
c0luc2lkZVNjcm9sbGJhcihjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7Ci0g
ICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigp
KSB7CisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKSkgewogICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAg
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh3aW5kb3dQb2ludCk7CiAgICAgICAgIHJlbmRlclZp
ZXctPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKQEAgLTI0NTcsMTUgKzI0NzQsMTUgQEAgRXZl
bnRIYW5kbGVyOjpEb21pbmFudFNjcm9sbEdlc3R1cmVEaXJlY3Rpb24gRXZlbnRIYW5kbGVyOjpk
b21pbmFudFNjcm9sbEdlc3R1cmUKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogewotICAgIERvY3VtZW50KiBkb2MgPSBt
X2ZyYW1lLmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50
KCk7CiAKICAgICBSZW5kZXJPYmplY3QqIGRvY1JlbmRlcmVyID0gZG9jLT5yZW5kZXJlcigpOwog
ICAgIGlmICghZG9jUmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBS
ZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkpOworICAgIFJlZlB0cjxG
cmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1lLT52aWV3KCkpOwogCi0gICAgRnJhbWVWaWV3KiB2
aWV3ID0gbV9mcmFtZS52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmll
dygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNTQ2LDcg
KzI1NjMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGUpCiAKIAogICAgIC8vIFdlIGRvIGFub3RoZXIgY2hlY2sgb24gdGhl
IGZyYW1lIHZpZXcgYmVjYXVzZSB0aGUgZXZlbnQgaGFuZGxlciBjYW4gcnVuIEpTIHdoaWNoIHJl
c3VsdHMgaW4gdGhlIGZyYW1lIGdldHRpbmcgZGVzdHJveWVkLgotICAgIHZpZXcgPSBtX2ZyYW1l
LnZpZXcoKTsKKyAgICB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGJvb2wgZGlkSGFuZGxl
RXZlbnQgPSB2aWV3ID8gdmlldy0+d2hlZWxFdmVudChldmVudCkgOiBmYWxzZTsKICAgICBtX2lz
SGFuZGxpbmdXaGVlbEV2ZW50ID0gZmFsc2U7CiAgICAgcmV0dXJuIGRpZEhhbmRsZUV2ZW50OwpA
QCAtMjU4MCw3ICsyNTk3LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50
SGFuZGxlcihOb2RlKiBzdGFydE5vZGUsIFdoZWVsRXZlbnQqIHdoZWVsRXYKICNpZiBFTkFCTEUo
R0VTVFVSRV9FVkVOVFMpCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVRhcERvd24o
KQogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOworICAgIEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9yID0gdmlldy0+
ZXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQpAQCAtMjYyOSw3ICsyNjQ2LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50KQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eTsKIAogICAgIGlmICgoIXNjcm9sbGJhciAmJiAhZXZlbnRUYXJnZXQpIHx8ICEoaGl0VHlwZSAm
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSkpIHsKLSAgICAgICAgSW50UG9pbnQgaGl0VGVzdFBv
aW50ID0gbV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMoYWRqdXN0ZWRQb2ludCk7Cisg
ICAgICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyhhZGp1c3RlZFBvaW50KTsKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBo
aXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIGhpdFR5cGUgfCBIaXRUZXN0UmVxdWVz
dDo6QWxsb3dGcmFtZVNjcm9sbGJhcnMpOwogICAgICAgICBldmVudFRhcmdldCA9IHJlc3VsdC50
YXJnZXROb2RlKCk7CiAgICAgICAgIGlmICghc2Nyb2xsYmFyKQpAQCAtMjcyNiw3ICsyNzQzLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJl
TG9uZ1ByZXNzKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnRvdWNo
RHJhZ0Ryb3BFbmFibGVkKCkpIHsKKyAgICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKS50b3VjaERy
YWdEcm9wRW5hYmxlZCgpKSB7CiAgICAgICAgIEludFBvaW50IGFkanVzdGVkUG9pbnQgPSBnZXN0
dXJlRXZlbnQucG9zaXRpb24oKTsKICNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKICAgICAg
ICAgYWRqdXN0R2VzdHVyZVBvc2l0aW9uKGdlc3R1cmVFdmVudCwgYWRqdXN0ZWRQb2ludCk7CkBA
IC0yNzk2LDEyICsyODEzLDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzR2VzdHVyZUV2ZW50
VG9XaWRnZXRJZlBvc3NpYmxlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50CiAKIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1l
LmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICBSZW5kZXJPYmplY3QqIGRvY3VtZW50UmVuZGVyZXIgPSBkb2N1bWVudC0+cmVuZGVy
ZXIoKTsKICAgICBpZiAoIWRvY3VtZW50UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOworICAgIEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMjgyNyw3ICsyODQ0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdl
c3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmUKICAg
ICBpZiAoZGVsdGEuaXNaZXJvKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0
IGZsb2F0IHNjYWxlRmFjdG9yID0gbV9mcmFtZS5wYWdlWm9vbUZhY3RvcigpICogbV9mcmFtZS5m
cmFtZVNjYWxlRmFjdG9yKCk7CisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSBtX2ZyYW1l
LT5wYWdlWm9vbUZhY3RvcigpICogbV9mcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogICAgIGRl
bHRhLnNjYWxlKDEgLyBzY2FsZUZhY3RvciwgMSAvIHNjYWxlRmFjdG9yKTsKIAogICAgIE5vZGUq
IG5vZGUgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUuZ2V0KCk7CkBAIC0yODM5LDcgKzI4
NTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZShjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZQogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RvcihtX2Zy
YW1lLnZpZXcoKSk7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUtPnZp
ZXcoKSk7CiAKICAgICAvLyBUcnkgdG8gc2VuZCB0aGUgZXZlbnQgdG8gdGhlIGNvcnJlY3Qgdmll
dy4KICAgICBpZiAocGFzc0dlc3R1cmVFdmVudFRvV2lkZ2V0SWZQb3NzaWJsZShnZXN0dXJlRXZl
bnQsIHJlbmRlcmVyKSkKQEAgLTI4NjksNyArMjg4Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpzZW5kU2Nyb2xsRXZlbnRUb1ZpZXcoY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRE
ZWx0YSkKIHsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTI5MDcsNyArMjkyNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpp
c1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdAogI2lmIEVOQUJMRShUT1VDSF9BREpV
U1RNRU5UKQogYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZEFwcGx5VG91Y2hBZGp1c3RtZW50KGNv
bnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBldmVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUuc2V0dGluZ3MoKS50b3VjaEFkanVzdG1lbnRFbmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1l
LT5zZXR0aW5ncygpLnRvdWNoQWRqdXN0bWVudEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiAhZXZlbnQuYXJlYSgpLmlzRW1wdHkoKTsKIH0KQEAgLTI5MTUsNyAr
MjkzMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGRBcHBseVRvdWNoQWRqdXN0bWVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpi
ZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVy
LCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBOb2Rl
KiYgdGFyZ2V0Tm9kZSkKIHsKLSAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7CisgICAgSW50UG9pbnQgaGl0VGVz
dFBvaW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsK
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQ
b2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwg
dG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3Vj
aFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CkBAIC0yOTMyLDcgKzI5NDksNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0
IEludFBvaW50JiB0b3VjaENlbnRlciwgYwogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENvbnRl
eHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25z
dCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBOb2RlKiYgdGFy
Z2V0Tm9kZSkKIHsKLSAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7CisgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50
ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hS
YWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1
cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CkBAIC0yOTQxLDcgKzI5NTgsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50
UG9pbnQmIHRvdWNoQ2VudGVyLAogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJl
YUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXpl
JiB0b3VjaFJhZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCiB7
Ci0gICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29u
dGVudHModG91Y2hDZW50ZXIpOworICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7CiAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dTaGFkb3dDb250ZW50LCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNo
UmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVz
KTsKQEAgLTI5NzUsOCArMjk5Miw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJl
UG9zaXRpb24oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVuCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBEb2N1bWVudCogZG9j
ID0gbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIEZyYW1lVmlldyogdiA9IG1fZnJhbWUudmlldygp
OworICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIEZyYW1lVmll
dyogdiA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKQEAgLTI5ODcsMTMgKzMwMDQsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRD
b250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVl
c3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyBtZXYgPSBkb2MtPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHZpZXdwb3J0UG9zLCBl
dmVudCk7CiAKLSAgICBpZiAobV9mcmFtZS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVj
dE9uQ29udGV4dHVhbE1lbnVDbGljaygpCi0gICAgICAgICYmICFtX2ZyYW1lLnNlbGVjdGlvbigp
LmNvbnRhaW5zKHZpZXdwb3J0UG9zKQorICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlv
cigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1lbnVDbGljaygpCisgICAgICAgICYmICFtX2Zy
YW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyh2aWV3cG9ydFBvcykKICAgICAgICAgJiYgIW1ldi5z
Y3JvbGxiYXIoKQogICAgICAgICAvLyBGSVhNRTogSW4gdGhlIGVkaXRhYmxlIGNhc2UsIHdvcmQg
c2VsZWN0aW9uIHNvbWV0aW1lcyBzZWxlY3RzIGNvbnRlbnQgdGhhdCBpc24ndCB1bmRlcm5lYXRo
IHRoZSBtb3VzZS4KICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBpcyBub24tZWRpdGFibGUs
IHdlIGRvIHdvcmQgc2VsZWN0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVzZSB0aGUgY29udGV4
dHVhbCBtZW51IGl0ZW1zCiAgICAgICAgIC8vIGF2YWlsYWJsZSBmb3IgdGV4dCBzZWxlY3Rpb25z
LiAgQnV0IG9ubHkgaWYgd2UncmUgYWJvdmUgdGV4dC4KLSAgICAgICAgJiYgKG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSB8fCAobWV2LnRhcmdldE5vZGUoKSAmJiBtZXYu
dGFyZ2V0Tm9kZSgpLT5pc1RleHROb2RlKCkpKSkgeworICAgICAgICAmJiAobV9mcmFtZS0+c2Vs
ZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSB8fCAobWV2LnRhcmdldE5vZGUoKSAmJiBtZXYu
dGFyZ2V0Tm9kZSgpLT5pc1RleHROb2RlKCkpKSkgewogICAgICAgICBtX21vdXNlRG93bk1heVN0
YXJ0U2VsZWN0ID0gdHJ1ZTsgLy8gY29udGV4dCBtZW51IGV2ZW50cyBhcmUgYWx3YXlzIGFsbG93
ZWQgdG8gcGVyZm9ybSBhIHNlbGVjdGlvbgogICAgICAgICBzZWxlY3RDbG9zZXN0V29yZE9yTGlu
a0Zyb21Nb3VzZUV2ZW50KG1ldik7CiAgICAgfQpAQCAtMzAwNSwxMSArMzAyMiwxMSBAQCBib29s
IEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KCkKIHsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS5kb2N1bWVudCgpOwor
ICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMwMjYsMTIgKzMwNDMsMTIgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkKICAgICBJbnRQb2ludCBsb2Nh
dGlvbjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZG9jLT5mb2N1c2VkRWxlbWVu
dCgpOwotICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigp
OworICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKTsK
ICAgICBQb3NpdGlvbiBzdGFydCA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpOwogCiAg
ICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgKHNlbGVjdGlvbi5yb290RWRpdGFibGVF
bGVtZW50KCkgfHwgc2VsZWN0aW9uLmlzUmFuZ2UoKSkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgICAg
ICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUuZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uo
c2VsZWN0aW9uUmFuZ2UuZ2V0KCkpOworICAgICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJh
bWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHNlbGVjdGlvblJhbmdlLmdldCgpKTsKIAog
ICAgICAgICBpbnQgeCA9IHJpZ2h0QWxpZ25lZCA/IGZpcnN0UmVjdC5tYXhYKCkgOiBmaXJzdFJl
Y3QueCgpOwogICAgICAgICAvLyBJbiBhIG11bHRpbGluZSBlZGl0LCBmaXJzdFJlY3QubWF4WSgp
IHdvdWxkIGVuZHVwIG9uIHRoZSBuZXh0IGxpbmUsIHNvIC0xLgpAQCAtMzA0OSw3ICszMDY2LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkKICAgICAg
ICAgICAgIGtDb250ZXh0TWVudU1hcmdpbik7CiAgICAgfQogCi0gICAgbV9mcmFtZS52aWV3KCkt
PnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOworICAgIG1fZnJhbWUtPnZpZXcoKS0+c2V0Q3Vy
c29yKHBvaW50ZXJDdXJzb3IoKSk7CiAKICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IHZpZXctPmNv
bnRlbnRzVG9Sb290Vmlldyhsb2NhdGlvbik7CiAgICAgSW50UG9pbnQgZ2xvYmFsUG9zaXRpb24g
PSB2aWV3LT5ob3N0V2luZG93KCktPnJvb3RWaWV3VG9TY3JlZW4oSW50UmVjdChwb3NpdGlvbiwg
SW50U2l6ZSgpKSkubG9jYXRpb24oKTsKQEAgLTMxMjEsNyArMzEzOCw3IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKQogICAgIGlmIChtX21vdXNl
UG9zaXRpb25Jc1Vua25vd24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9mcmFtZS5z
ZXR0aW5ncygpLmRldmljZVN1cHBvcnRzTW91c2UoKSkKKyAgICBpZiAoIW1fZnJhbWUtPnNldHRp
bmdzKCkuZGV2aWNlU3VwcG9ydHNNb3VzZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJ
ZiB0aGUgY29udGVudCBoYXMgZXZlciB0YWtlbiBsb25nZXIgdGhhbiBmYWtlTW91c2VNb3ZlU2hv
cnRJbnRlcnZhbCB3ZQpAQCAtMzE0MCw3ICszMTU3LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRp
c3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkaXNw
YXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQog
ewotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOworICAgIEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMzE2MCwxNCArMzE3NywxNCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92
ZUV2ZW50VGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+KiB0aW1lcikKICAgICBBU1NFUlRf
VU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1lcik7CiAgICAg
QVNTRVJUKCFtX21vdXNlUHJlc3NlZCk7CiAKLSAgICBpZiAoIW1fZnJhbWUuc2V0dGluZ3MoKS5k
ZXZpY2VTdXBwb3J0c01vdXNlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygpLmRldmlj
ZVN1cHBvcnRzTW91c2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVWaWV3KiB2aWV3
ID0gbV9mcmFtZS52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygp
OwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2ZyYW1lLnBh
Z2UoKSB8fCAhbV9mcmFtZS5wYWdlKCktPmlzT25zY3JlZW4oKSB8fCAhbV9mcmFtZS5wYWdlKCkt
PmZvY3VzQ29udHJvbGxlcigpLmlzQWN0aXZlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkg
fHwgIW1fZnJhbWUtPnBhZ2UoKS0+aXNPbnNjcmVlbigpIHx8ICFtX2ZyYW1lLT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
c2hpZnRLZXk7CkBAIC0zMTk0LDE0ICszMjExLDE1IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpob3Zl
clRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCiB7CiAgICAgbV9ob3ZlclRpbWVyLnN0
b3AoKTsKIAotICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIEFTU0VSVChtX2Zy
YW1lKTsKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAKLSAgICBpZiAoUmVuZGVy
VmlldyogcmVuZGVyZXIgPSBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKSB7Ci0gICAgICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkgeworICAgIGlmIChSZW5kZXJWaWV3
KiByZW5kZXJlciA9IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6Ok1vdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZp
ZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgICAg
ICAgICByZW5kZXJlci0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotICAgICAgICAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLT51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKHJlcXVlc3QsIHJlc3VsdC5p
bm5lckVsZW1lbnQoKSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVI
b3ZlckFjdGl2ZVN0YXRlKHJlcXVlc3QsIHJlc3VsdC5pbm5lckVsZW1lbnQoKSk7CiAgICAgICAg
IH0KICAgICB9CiB9CkBAIC0zMjE2LDcgKzMyMzQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlQWNjZXNzS2V5KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZ0KQogICAgIGlmICgo
ZXZ0Lm1vZGlmaWVycygpICYgflBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KSAhPSBhY2Nlc3NLZXlN
b2RpZmllcnMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN0cmluZyBrZXkgPSBldnQu
dW5tb2RpZmllZFRleHQoKTsKLSAgICBFbGVtZW50KiBlbGVtID0gbV9mcmFtZS5kb2N1bWVudCgp
LT5nZXRFbGVtZW50QnlBY2Nlc3NLZXkoa2V5Lmxvd2VyKCkpOworICAgIEVsZW1lbnQqIGVsZW0g
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlBY2Nlc3NLZXkoa2V5Lmxvd2VyKCkp
OwogICAgIGlmICghZWxlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGVsZW0tPmFjY2Vz
c0tleUFjdGlvbihmYWxzZSk7CkBAIC0zMjMzLDcgKzMyNTEsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6bmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKSBjb25zdAogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKIGJvb2wgRXZlbnRIYW5kbGVyOjppc0tleUV2ZW50QWxsb3dl
ZEluRnVsbFNjcmVlbihjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleUV2ZW50KSBjb25z
dAogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVu
dC0+d2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCkBAIC0zMjU0LDEwICszMjcyLDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjppc0tl
eUV2ZW50QWxsb3dlZEluRnVsbFNjcmVlbihjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtl
CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQmIGluaXRpYWxLZXlFdmVudCkKIHsKLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3Io
bV9mcmFtZS52aWV3KCkpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1l
LT52aWV3KCkpOyAKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAobV9mcmFt
ZS5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiAhaXNLZXlFdmVudEFsbG93ZWRJ
bkZ1bGxTY3JlZW4oaW5pdGlhbEtleUV2ZW50KSkKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQo
KS0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgIWlzS2V5RXZlbnRBbGxvd2VkSW5GdWxsU2NyZWVu
KGluaXRpYWxLZXlFdmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCkBAIC0z
MjY1LDcgKzMyODMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgICAgIGNhcHNMb2NrU3RhdGVN
YXlIYXZlQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgeworICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIo
KS5wYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKICAgICAgICAgICAgIC8vIElmIGEga2V5IGlzIHBy
ZXNzZWQgd2hpbGUgdGhlIHBhblNjcm9sbCBpcyBpbiBwcm9ncmVzcyB0aGVuIHdlIHdhbnQgdG8g
c3RvcAogICAgICAgICAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1F
dmVudDo6S2V5RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIApAQCAtMzI3OSwxOCArMzI5NywxOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6
a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAK
ICAgICAvLyBDaGVjayBmb3IgY2FzZXMgd2hlcmUgd2UgYXJlIHRvbyBlYXJseSBmb3IgZXZlbnRz
IC0tIHBvc3NpYmxlIHVubWF0Y2hlZCBrZXkgdXAKICAgICAvLyBmcm9tIHByZXNzaW5nIHJldHVy
biBpbiB0aGUgbG9jYXRpb24gYmFyLgotICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZXZlbnRUYXJn
ZXROb2RlRm9yRG9jdW1lbnQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8Tm9kZT4g
bm9kZSA9IGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCkpOwog
ICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KTsKLSAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNhdG9y
KG1fZnJhbWUpOworICAgIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJ
bmRpY2F0b3IoKm1fZnJhbWUpOwogCi0gICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUu
dmlldygpKQorICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAg
ICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAogICAgIC8vIEZJWE1FIChi
dWcgNjgxODUpOiB0aGlzIGNhbGwgc2hvdWxkIGJlIG1hZGUgYXQgYW5vdGhlciBhYnN0cmFjdGlv
biBsYXllcgotICAgIG1fZnJhbWUubG9hZGVyKCkucmVzZXRNdWx0aXBsZUZvcm1TdWJtaXNzaW9u
UHJvdGVjdGlvbigpOworICAgIG1fZnJhbWUtPmxvYWRlcigpLnJlc2V0TXVsdGlwbGVGb3JtU3Vi
bWlzc2lvblByb3RlY3Rpb24oKTsKIAogICAgIC8vIEluIElFLCBhY2Nlc3Mga2V5cyBhcmUgc3Bl
Y2lhbCwgdGhleSBhcmUgaGFuZGxlZCBhZnRlciBkZWZhdWx0IGtleWRvd24gcHJvY2Vzc2luZywg
YnV0IGNhbm5vdCBiZSBjYW5jZWxlZCAtIHRoaXMgaXMgaGFyZCB0byBtYXRjaC4KICAgICAvLyBP
biBNYWMgT1MgWCwgd2UgcHJvY2VzcyB0aGVtIGJlZm9yZSBkaXNwYXRjaGluZyBrZXlkb3duLCBh
cyB0aGUgZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaW1wbGVtZW50cyBFbWFjcyBrZXkgYmluZGlu
Z3MsIHdoaWNoIG1heSBjb25mbGljdApAQCAtMzMxMCw3ICszMzI4LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2
ZW50KQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlEb3duRXZlbnQgPSBpbml0aWFsS2V5
RXZlbnQ7ICAgIAogICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pCiAgICAgICAgIGtleURvd25FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZl
bnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7
Ci0gICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleWRvd24gPSBLZXlib2FyZEV2ZW50OjpjcmVh
dGUoa2V5RG93bkV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOworICAg
IFJlZlB0cjxLZXlib2FyZEV2ZW50PiBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtl
eURvd25FdmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgaWYg
KG1hdGNoZWRBbkFjY2Vzc0tleSkKICAgICAgICAga2V5ZG93bi0+c2V0RGVmYXVsdFByZXZlbnRl
ZCh0cnVlKTsKICAgICBrZXlkb3duLT5zZXRUYXJnZXQobm9kZSk7CkBAIC0zMzE4LDcgKzMzMzYs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2
ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICBub2RlLT5kaXNwYXRjaEV2ZW50
KGtleWRvd24sIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICAvLyBJZiBmcmFtZSBjaGFuZ2Vk
IGFzIGEgcmVzdWx0IG9mIGtleWRvd24gZGlzcGF0Y2gsIHRoZW4gcmV0dXJuIHRydWUgdG8gYXZv
aWQgc2VuZGluZyBhIHN1YnNlcXVlbnQga2V5cHJlc3MgbWVzc2FnZSB0byB0aGUgbmV3IGZyYW1l
LgotICAgICAgICBib29sIGNoYW5nZWRGb2N1c2VkRnJhbWUgPSBtX2ZyYW1lLnBhZ2UoKSAmJiAm
bV9mcmFtZSAhPSAmbV9mcmFtZS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOworICAgICAgICBib29sIGNoYW5nZWRGb2N1c2VkRnJhbWUgPSBtX2ZyYW1lLT5w
YWdlKCkgJiYgbV9mcmFtZSAhPSAmbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAgICAgcmV0dXJuIGtleWRvd24tPmRlZmF1bHRIYW5k
bGVkKCkgfHwga2V5ZG93bi0+ZGVmYXVsdFByZXZlbnRlZCgpIHx8IGNoYW5nZWRGb2N1c2VkRnJh
bWU7CiAgICAgfQogCkBAIC0zMzI3LDIwICszMzQ1LDIwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpr
ZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudCkKICAg
ICAvLyBpbiBvcmRlciB0byBtYXRjaCBJRToKICAgICAvLyAxLiBwcmV2ZW50aW5nIGRlZmF1bHQg
aGFuZGxpbmcgb2Yga2V5ZG93biBhbmQga2V5cHJlc3MgZXZlbnRzIGhhcyBubyBlZmZlY3Qgb24g
SU0gaW5wdXQ7CiAgICAgLy8gMi4gaWYgYW4gaW5wdXQgbWV0aG9kIGhhbmRsZXMgdGhlIGV2ZW50
LCBpdHMga2V5Q29kZSBpcyBzZXQgdG8gMjI5IGluIGtleWRvd24gZXZlbnQuCi0gICAgbV9mcmFt
ZS5lZGl0b3IoKS5oYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oa2V5ZG93bi5nZXQoKSk7CisgICAg
bV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkp
OwogICAgIAogICAgIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QgPSBrZXlkb3duLT5kZWZhdWx0
SGFuZGxlZCgpOwogICAgIAogICAgIGlmIChoYW5kbGVkQnlJbnB1dE1ldGhvZCkgewogICAgICAg
ICBrZXlEb3duRXZlbnQuc2V0V2luZG93c1ZpcnR1YWxLZXlDb2RlKENvbXBvc2l0aW9uRXZlbnRL
ZXlDb2RlKTsKLSAgICAgICAga2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3du
RXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgICAgIGtleWRv
d24gPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5kZWZhdWx0VmlldygpKTsKICAgICAgICAga2V5ZG93bi0+c2V0VGFyZ2V0KG5vZGUpOwog
ICAgICAgICBrZXlkb3duLT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIAogICAgIG5vZGUt
PmRpc3BhdGNoRXZlbnQoa2V5ZG93biwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgLy8gSWYgZnJh
bWUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiBrZXlkb3duIGRpc3BhdGNoLCB0aGVuIHJldHVybiBl
YXJseSB0byBhdm9pZCBzZW5kaW5nIGEgc3Vic2VxdWVudCBrZXlwcmVzcyBtZXNzYWdlIHRvIHRo
ZSBuZXcgZnJhbWUuCi0gICAgYm9vbCBjaGFuZ2VkRm9jdXNlZEZyYW1lID0gbV9mcmFtZS5wYWdl
KCkgJiYgJm1fZnJhbWUgIT0gJm1fZnJhbWUucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKKyAgICBib29sIGNoYW5nZWRGb2N1c2VkRnJhbWUgPSBtX2ZyYW1l
LT5wYWdlKCkgJiYgbV9mcmFtZSAhPSAmbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBib29sIGtleWRvd25SZXN1bHQgPSBrZXlkb3du
LT5kZWZhdWx0SGFuZGxlZCgpIHx8IGtleWRvd24tPmRlZmF1bHRQcmV2ZW50ZWQoKSB8fCBjaGFu
Z2VkRm9jdXNlZEZyYW1lOwogICAgIGlmIChoYW5kbGVkQnlJbnB1dE1ldGhvZCB8fCAoa2V5ZG93
blJlc3VsdCAmJiAhYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkpCiAgICAgICAgIHJldHVybiBr
ZXlkb3duUmVzdWx0OwpAQCAtMzM0OCw3ICszMzY2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omtl
eUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50KQogICAg
IC8vIEZvY3VzIG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIGtleWRvd24gaGFuZGxpbmcsIHNvIHJl
ZmV0Y2ggbm9kZS4KICAgICAvLyBCdXQgaWYgd2UgYXJlIGRpc3BhdGNoaW5nIGEgZmFrZSBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IGtleXByZXNzLCB0aGVuIHdlIHByZXRlbmQgdGhhdCB0aGUga2V5
cHJlc3MgaGFwcGVuZWQgb24gdGhlIG9yaWdpbmFsIG5vZGUuCiAgICAgaWYgKCFrZXlkb3duUmVz
dWx0KSB7Ci0gICAgICAgIG5vZGUgPSBldmVudFRhcmdldE5vZGVGb3JEb2N1bWVudChtX2ZyYW1l
LmRvY3VtZW50KCkpOworICAgICAgICBub2RlID0gZXZlbnRUYXJnZXROb2RlRm9yRG9jdW1lbnQo
bV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0zMzU3LDcgKzMzNzUsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQp
CiAgICAga2V5UHJlc3NFdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVu
dDo6Q2hhciwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7CiAgICAgaWYgKGtleVByZXNzRXZl
bnQudGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGtleWRvd25SZXN1bHQ7Ci0gICAg
UmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtl
eVByZXNzRXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgUmVm
UHRyPEtleWJvYXJkRXZlbnQ+IGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVBy
ZXNzRXZlbnQsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIGtleXBy
ZXNzLT5zZXRUYXJnZXQobm9kZSk7CiAgICAgaWYgKGtleWRvd25SZXN1bHQpCiAgICAgICAgIGtl
eXByZXNzLT5zZXREZWZhdWx0UHJldmVudGVkKHRydWUpOwpAQCAtMzQzNSwxNCArMzQ1MywxNCBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFj
Y2Vzc2liaWxpdHkoS2V5Ym9hcmRFdmVudAogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFj
Y2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkpCi0gICAgICAgICAgICBo
YW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KG1fZnJhbWUuc2VsZWN0aW9uKCksIGV2ZW50
KTsKKyAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQobV9mcmFtZS0+
c2VsZWN0aW9uKCksIGV2ZW50KTsKICAgICB9CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZh
dWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAgICBt
X2ZyYW1lLmVkaXRvcigpLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2Zy
YW1lLT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2
ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAo
ZXZlbnQtPmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDA5IikKQEAgLTM0NTgsNyArMzQ3Niw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCiAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JB
Y2Nlc3NpYmlsaXR5KGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgbV9mcmFtZS5lZGl0b3IoKS5oYW5k
bGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxl
S2V5Ym9hcmRFdmVudChldmVudCk7CiAgICAgICAgIGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgpID09
ICcgJykKQEAgLTM0NzUsNyArMzQ5Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVy
ZXNpc0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBmbG9hdERyYWdWaWV3cG9ydExvY2F0CiAKIGJv
b2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQm
IGRyYWdWaWV3cG9ydExvY2F0aW9uKSBjb25zdAogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1f
ZnJhbWUudmlldygpOworICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAg
ICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBJbnRQb2ludCBkcmFnTG9j
YXRpb24gPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZsb29yZWRJbnRQb2ludChkcmFnVmlld3Bv
cnRMb2NhdGlvbikpOwpAQCAtMzU2OCw5ICszNTg2LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNr
RHIKICAgICAgICAgLy8gdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRy
YWdnZWQKICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwotICAgICAgICBtX2ZyYW1lLmNv
bnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgICAgIGlmICht
X2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLnNvdXJjZSA9IG1fZnJhbWUu
cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdnYWJsZUVsZW1lbnQoJm1fZnJhbWUsIHJlc3Vs
dC5pbm5lckVsZW1lbnQoKSwgbV9tb3VzZURvd25Qb3MsIGRyYWdTdGF0ZSgpKTsKKyAgICAgICAg
bV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAg
ICAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIGRyYWdTdGF0ZSgpLnNvdXJj
ZSA9IG1fZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnZ2FibGVFbGVtZW50KG1f
ZnJhbWUsIHJlc3VsdC5pbm5lckVsZW1lbnQoKSwgbV9tb3VzZURvd25Qb3MsIGRyYWdTdGF0ZSgp
KTsKICAgICAgICAgCiAgICAgICAgIGlmICghZHJhZ1N0YXRlKCkuc291cmNlKQogICAgICAgICAg
ICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBpcyBkcmFn
Z2FibGUKQEAgLTM2MTQsNyArMzYzMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAg
fQogCiAgICAgLy8gV2UgYXJlIHN0YXJ0aW5nIGEgdGV4dC9pbWFnZS91cmwgZHJhZywgc28gdGhl
IGN1cnNvciBzaG91bGQgYmUgYW4gYXJyb3cKLSAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9m
cmFtZS52aWV3KCkpIHsKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygp
KSB7CiAgICAgICAgIC8vIEZJWE1FIDxyZGFyOi8vNzU3NzU5NT46IEN1c3RvbSBjdXJzb3JzIGFy
ZW4ndCBzdXBwb3J0ZWQgZHVyaW5nIGRyYWcgYW5kIGRyb3AgKGRlZmF1bHQgdG8gcG9pbnRlciku
CiAgICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KQEAgLTM2
NDksNyArMzY2Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgIH0gCiAgICAg
ICAgIAogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGRpc3BhdGNoRHJhZ1NyY0V2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnc3RhcnRFdmVudCwgbV9tb3VzZURvd24pCi0gICAgICAgICAg
ICAmJiAhbV9mcmFtZS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpOworICAgICAgICAg
ICAgJiYgIW1fZnJhbWUtPnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7CiAgICAgICAg
IAogICAgICAgICAvLyBJbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGFnYWluc3QgYW55bW9yZSBw
YXN0ZWJvYXJkIHdyaXRpbmcgZm9yIHNlY3VyaXR5LiAgVGhlIGRyYWcKICAgICAgICAgLy8gaW1h
Z2UgY2FuIHN0aWxsIGJlIGNoYW5nZWQgYXMgd2UgZHJhZywgYnV0IG5vdCB0aGUgcGFzdGVib2Fy
ZCBkYXRhLgpAQCAtMzY2Nyw4ICszNjg1LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURy
YWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAg
ICB9CiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7Ci0gICAgICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAgbV9kaWRTdGFydERyYWcgPSBwYWdl
ICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKCZtX2ZyYW1lLCBkcmFnU3RhdGUo
KSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgbV9kaWRTdGFydERyYWcgPSBwYWdlICYm
IHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBz
cmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOwogICAgICAgICAvLyBJbiBXZWJL
aXQyIHdlIGNvdWxkIHJlLWVudGVyIHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgog
ICAgICAgICAvLyBPbiBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hp
cCBvZiB0aGUgcGFzdGVib2FyZCBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAgICAgICBpZiAo
bV9kaWRTdGFydERyYWcpIHsKQEAgLTM3MDAsMTggKzM3MTgsMjEgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXZlbnQqIHVuZGVy
bHlpbmdFdmUKICAgICAvLyBhbmQgYXZvaWQgZGlzcGF0Y2hpbmcgdGV4dCBpbnB1dCBldmVudHMg
ZnJvbSBrZXlkb3duIGRlZmF1bHQgaGFuZGxlcnMuCiAgICAgQVNTRVJUKCF1bmRlcmx5aW5nRXZl
bnQgfHwgIXVuZGVybHlpbmdFdmVudC0+aXNLZXlib2FyZEV2ZW50KCkgfHwgc3RhdGljX2Nhc3Q8
S2V5Ym9hcmRFdmVudCo+KHVuZGVybHlpbmdFdmVudCktPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
a2V5cHJlc3NFdmVudCk7CiAKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQ7CiAgICAgaWYgKHVuZGVybHlpbmdFdmVudCkK
ICAgICAgICAgdGFyZ2V0ID0gdW5kZXJseWluZ0V2ZW50LT50YXJnZXQoKTsKICAgICBlbHNlCi0g
ICAgICAgIHRhcmdldCA9IGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KG1fZnJhbWUuZG9jdW1l
bnQoKSk7CisgICAgICAgIHRhcmdldCA9IGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KG1fZnJh
bWUtPmRvY3VtZW50KCkpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKQorICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHZpZXctPnJlc2V0
RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsKIAotICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0g
VGV4dEV2ZW50OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwg
aW5wdXRUeXBlKTsKKyAgICBSZWZQdHI8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3Jl
YXRlKG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOwog
ICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAogICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC0zNzM5LDcg
KzM3NjAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dGFic1RvTGlua3MoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgYSBiZXR0
ZXIgbmFtZS4gSXQgY2FuIGJlIGNhbGxlZCBmb3Iga2V5cHJlc3NlcyBvdGhlciB0aGFuIFRhYiB3
aGVuIHNwYXRpYWwgbmF2aWdhdGlvbiBpcyBlbmFibGVkLgogCi0gICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3NDksNyArMzc3MCw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QK
IAogdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRUZXh0SW5wdXRFdmVudEhhbmRsZXIoVGV4dEV2
ZW50KiBldmVudCkKIHsKLSAgICBpZiAobV9mcmFtZS5lZGl0b3IoKS5oYW5kbGVUZXh0RXZlbnQo
ZXZlbnQpKQorICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS5oYW5kbGVUZXh0RXZlbnQoZXZlbnQp
KQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIApAQCAtMzc2Nyw3ICsz
Nzg4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcihLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUudmlldygpOworICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUt
PnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzc4MiwxNCAr
MzgwMywxNCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxl
cihLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSB8fCBldmVu
dC0+bWV0YUtleSgpIHx8IGV2ZW50LT5hbHRLZXkoKSB8fCBldmVudC0+YWx0R3JhcGhLZXkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2ZyYW1lLmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkTmF2aWdhdGVCYWNrT25CYWNrc3BhY2UoKSkKKyAgICBpZiAoIW1fZnJhbWUtPmVkaXRv
cigpLmJlaGF2aW9yKCkuc2hvdWxkTmF2aWdhdGVCYWNrT25CYWNrc3BhY2UoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKKyAgICBQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX2ZyYW1lLnNldHRpbmdzKCkuYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVu
YWJsZWQoKSkKKyAgICBpZiAoIW1fZnJhbWUtPnNldHRpbmdzKCkuYmFja3NwYWNlS2V5TmF2aWdh
dGlvbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGJvb2wgaGFuZGxlZEV2
ZW50ID0gZmFsc2U7CkBAIC0zODExLDE2ICszODMyLDE2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb24sIEtl
eWJvCiAgICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkgfHwgZXZlbnQtPm1ldGFLZXkoKSB8fCBldmVu
dC0+YWx0R3JhcGhLZXkoKSB8fCBldmVudC0+c2hpZnRLZXkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCZtX2ZyYW1lKSkKKyAgICBpZiAoIWlzU3BhdGlh
bE5hdmlnYXRpb25FbmFibGVkKG1fZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBB
cnJvd3MgYW5kIG90aGVyIHBvc3NpYmxlIGRpcmVjdGlvbmFsIG5hdmlnYXRpb24ga2V5cyBjYW4g
YmUgdXNlZCBpbiBkZXNpZ24KICAgICAvLyBtb2RlIGVkaXRpbmcuCi0gICAgaWYgKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkt
PmluRGVzaWduTW9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuYWR2YW5jZUZvY3VzKGZvY3VzRGlyZWN0aW9uLCBldmVudCkpCkBAIC0zODM1
LDcgKzM4NTYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFRhYkV2ZW50SGFuZGxlcihL
ZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSB8fCBldmVudC0+
bWV0YUtleSgpIHx8IGV2ZW50LT5hbHRHcmFwaEtleSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXBhZ2Ut
PnRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cygpKQpAQCAtMzg0NCw3ICszODY1LDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRUYWJFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgRm9jdXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb24gPSBldmVudC0+c2hpZnRLZXko
KSA/IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQgOiBGb2N1c0RpcmVjdGlvbkZvcndhcmQ7CiAKICAg
ICAvLyBUYWJzIGNhbiBiZSB1c2VkIGluIGRlc2lnbiBtb2RlIGVkaXRpbmcuCi0gICAgaWYgKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCisgICAgaWYgKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmluRGVzaWduTW9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuYWR2YW5jZUZvY3VzKGZvY3VzRGlyZWN0aW9uLCBldmVudCkpCkBA
IC0zODUzLDcgKzM4NzQsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFRhYkV2ZW50SGFu
ZGxlcihLZXlib2FyZEV2ZW50KiBldmVudCkKIAogdm9pZCBFdmVudEhhbmRsZXI6OmNhcHNMb2Nr
U3RhdGVNYXlIYXZlQ2hhbmdlZCgpCiB7Ci0gICAgRG9jdW1lbnQqIGQgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQqIGQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmIChF
bGVtZW50KiBlbGVtZW50ID0gZC0+Zm9jdXNlZEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKHIt
PmlzVGV4dEZpZWxkKCkpCkBAIC0zODY1LDEzICszODg2LDEzIEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKQogdm9pZCBFdmVudEhhbmRsZXI6OnNlbmRT
Y3JvbGxFdmVudCgpCiB7CiAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwotICAgIGlm
IChtX2ZyYW1lLnZpZXcoKSAmJiBtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5lbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KG1f
ZnJhbWUuZG9jdW1lbnQoKSwgRG9jdW1lbnRFdmVudFF1ZXVlOjpTY3JvbGxFdmVudERvY3VtZW50
VGFyZ2V0KTsKKyAgICBpZiAobV9mcmFtZS0+dmlldygpICYmIG1fZnJhbWUtPmRvY3VtZW50KCkp
CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlz
cGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBEb2N1bWVudEV2ZW50UXVldWU6
OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0
RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCiB7Ci0gICAgRnJhbWVWaWV3KiB2ID0gbV9mcmFtZS52
aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGlmICh2KQog
ICAgICAgICB2LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcih0cnVlKTsKIH0KQEAgLTQwMTcsNyArNDAz
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGl0VGVzdFJlc3Vs
dEF0UG9pbnQocGFnZVBvaW50LCBoaXRUeXBlKTsKICAgICAgICAgICAgICAgICBtX29yaWdpbmF0
aW5nVG91Y2hQb2ludFRhcmdldEtleSA9IHRvdWNoUG9pbnRUYXJnZXRLZXk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50RG9jdW1lbnQuZ2V0KCkgJiYgbV9v
cmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJhbWUoKSkgewotICAgICAgICAgICAgICAg
IExheW91dFBvaW50IHBhZ2VQb2ludEluT3JpZ2luYXRpbmdEb2N1bWVudCA9IGRvY3VtZW50UG9p
bnRGb3JXaW5kb3dQb2ludCgqbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJhbWUo
KSwgcG9pbnQucG9zKCkpOworICAgICAgICAgICAgICAgIExheW91dFBvaW50IHBhZ2VQb2ludElu
T3JpZ2luYXRpbmdEb2N1bWVudCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX29yaWdp
bmF0aW5nVG91Y2hQb2ludERvY3VtZW50LT5mcmFtZSgpLCBwb2ludC5wb3MoKSk7CiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEluRnJhbWUobV9vcmlnaW5hdGluZ1RvdWNo
UG9pbnREb2N1bWVudC0+ZnJhbWUoKSwgcGFnZVBvaW50SW5PcmlnaW5hdGluZ0RvY3VtZW50LCBo
aXRUeXBlKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC00MDMxLDcgKzQwNTIsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50
KQogICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgICAgICAgICBu
b2RlID0gRXZlbnRQYXRoV2Fsa2VyOjpwYXJlbnQobm9kZSk7CiAKLSAgICAgICAgICAgIGlmIChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZVRvdWNoRXZlbnQobV9mcmFtZS5wYWdlKCks
IG5vZGUpKQorICAgICAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxl
VG91Y2hFdmVudChtX2ZyYW1lLT5wYWdlKCksIG5vZGUpKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgICAgICAgICBEb2N1bWVudCYgZG9jID0gbm9kZS0+ZG9jdW1lbnQoKTsK
QEAgLTQwNDcsNyArNDA2OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIH0gZWxzZSBpZiAocG9p
bnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQgfHwgcG9pbnRTdGF0
ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkKSB7CiAgICAgICAgICAgICAv
LyBObyBuZWVkIHRvIHBlcmZvcm0gYSBoaXQtdGVzdCBzaW5jZSB3ZSBvbmx5IG5lZWQgdG8gdW5z
ZXQgOmhvdmVyIGFuZCA6YWN0aXZlIHN0YXRlcy4KICAgICAgICAgICAgIGlmICghc2hvdWxkR2Vz
dHVyZXNUcmlnZ2VyQWN0aXZlKCkgJiYgYWxsVG91Y2hSZWxlYXNlZCkKLSAgICAgICAgICAgICAg
ICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoaGl0VHlwZSwgMCk7
CisgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVT
dGF0ZShoaXRUeXBlLCAwKTsKICAgICAgICAgICAgIGlmICh0b3VjaFBvaW50VGFyZ2V0S2V5ID09
IG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0S2V5KQogICAgICAgICAgICAgICAgIG1fb3Jp
Z2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0S2V5ID0gMDsKIApAQCAtNDA2Nyw5ICs0MDg4LDkgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JiBldmVudCkKICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGlmICgmbV9mcmFtZSAhPSB0YXJnZXRGcmFtZSkgeworICAgICAgICBp
ZiAobV9mcmFtZSAhPSB0YXJnZXRGcmFtZSkgewogICAgICAgICAgICAgLy8gcGFnZVBvaW50IHNo
b3VsZCBhbHdheXMgYmUgcmVsYXRpdmUgdG8gdGhlIHRhcmdldCBlbGVtZW50cyBjb250YWluaW5n
IGZyYW1lLgotICAgICAgICAgICAgcGFnZVBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1Bv
aW50KCp0YXJnZXRGcmFtZSwgcG9pbnQucG9zKCkpOworICAgICAgICAgICAgcGFnZVBvaW50ID0g
ZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KHRhcmdldEZyYW1lLCBwb2ludC5wb3MoKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHRhcmdldEZyYW1lLT5wYWdl
Wm9vbUZhY3RvcigpICogdGFyZ2V0RnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKQEAgLTQxNDQs
NyArNDE2NSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaFN5
bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVu
dCkKIHsKLSAgICBpZiAoIW1fZnJhbWUuc2V0dGluZ3MoKS5pc1RvdWNoRXZlbnRFbXVsYXRpb25F
bmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5zZXR0aW5ncygpLmlzVG91
Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
UGxhdGZvcm1FdmVudDo6VHlwZSBldmVudFR5cGUgPSBldmVudC50eXBlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAppbmRleCAzY2ZhMGY5Li4wOGU1MThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEwMSw3ICsxMDEsNyBAQCBlbnVtIENoZWNrRHJhZ0h5c3RlcmVzaXMgeyBTaG91bGRD
aGVja0RyYWdIeXN0ZXJlc2lzLCBEb250Q2hlY2tEcmFnSHlzdGVyZXNpcyB9OwogY2xhc3MgRXZl
bnRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudEhhbmRsZXIpOwogcHVi
bGljOgotICAgIGV4cGxpY2l0IEV2ZW50SGFuZGxlcihGcmFtZSYpOworICAgIGV4cGxpY2l0IEV2
ZW50SGFuZGxlcihGcmFtZSopOwogICAgIH5FdmVudEhhbmRsZXIoKTsKIAogICAgIHZvaWQgY2xl
YXIoKTsKQEAgLTQwOSw3ICs0MDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0b0hpZGVDdXJz
b3JUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKTsKICNlbmRpZgogCi0gICAgRnJhbWUm
IG1fZnJhbWU7CisgICAgRnJhbWUqIG1fZnJhbWU7CiAKICAgICBib29sIG1fbW91c2VQcmVzc2Vk
OwogICAgIGJvb2wgbV9jYXB0dXJlc0RyYWdnaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDU5MTc2ZDYuLmJjOTMwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlICJXaWRnZXQu
aCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIiAvLyBGb3IgZmlyc3RQb3NpdGlvbkluT3JCZWZv
cmVOb2RlCiAjaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC02MzIsNyArNjMxLDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6
OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFBhc3NSZWZQdHI8RnJhbWU+IG5l
d0YKICAgICB9CiAgICAgc2V0Rm9jdXNlZEZyYW1lKG5ld0ZvY3VzZWRGcmFtZSk7CiAKLSAgICBS
ZWY8RWxlbWVudD4gcHJvdGVjdCgqZWxlbWVudCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHByb3Rl
Y3QoZWxlbWVudCk7CiAgICAgaWYgKG5ld0RvY3VtZW50KSB7CiAgICAgICAgIGJvb2wgc3VjY2Vz
c2Z1bGx5Rm9jdXNlZCA9IG5ld0RvY3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudChlbGVtZW50LCBk
aXJlY3Rpb24pOwogICAgICAgICBpZiAoIXN1Y2Nlc3NmdWxseUZvY3VzZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCmluZGV4IDA5MDg4ZTcuLjczZGE5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0x
NjAsNyArMTYwLDcgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXIKICAgICAsIG1fc2NyaXB0KGFk
b3B0UHRyKG5ldyBTY3JpcHRDb250cm9sbGVyKHRoaXMpKSkKICAgICAsIG1fZWRpdG9yKEVkaXRv
cjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fc2VsZWN0aW9uKGFkb3B0UHRyKG5ldyBGcmFtZVNl
bGVjdGlvbih0aGlzKSkpCi0gICAgLCBtX2V2ZW50SGFuZGxlcihhZG9wdFB0cihuZXcgRXZlbnRI
YW5kbGVyKCp0aGlzKSkpCisgICAgLCBtX2V2ZW50SGFuZGxlcihhZG9wdFB0cihuZXcgRXZlbnRI
YW5kbGVyKHRoaXMpKSkKICAgICAsIG1fYW5pbWF0aW9uQ29udHJvbGxlcihhZG9wdFB0cihuZXcg
QW5pbWF0aW9uQ29udHJvbGxlcih0aGlzKSkpCiAgICAgLCBtX3BhZ2Vab29tRmFjdG9yKHBhcmVu
dFBhZ2Vab29tRmFjdG9yKHRoaXMpKQogICAgICwgbV90ZXh0Wm9vbUZhY3RvcihwYXJlbnRUZXh0
Wm9vbUZhY3Rvcih0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA4OTZiYjAyLi5iMGVmZTRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCkBAIC04Miw4ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzID0gMSA8PCAxLAogICAgICAg
ICBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyLAogICAgICAgICBMYXll
clRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMgPSAxIDw8IDMsCi0gICAgICAgIExheWVyVHJl
ZUZsYWdzSW5jbHVkZVBhaW50aW5nUGhhc2VzID0gMSA8PCA0LAotICAgICAgICBMYXllclRyZWVG
bGFnc0luY2x1ZGVDb250ZW50TGF5ZXJzID0gMSA8PCA1CisgICAgICAgIExheWVyVHJlZUZsYWdz
SW5jbHVkZVBhaW50aW5nUGhhc2VzID0gMSA8PCA0CiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2ln
bmVkIExheWVyVHJlZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNTg5
ZDI2NS4uZjkzNGMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNzgsNyArNzgs
NiBAQAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdl
Lmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0xMTE2LDcgKzExMTUs
NyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBQcm90ZWN0IHRoZSB2aWV3IGZyb20gYmVpbmcgZGVsZXRlZCBkdXJp
bmcgbGF5b3V0IChpbiByZWNhbGNTdHlsZSkKLSAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IodGhpcyk7CiAKICAgICAvLyBF
dmVyeSBzY3JvbGwgdGhhdCBoYXBwZW5zIGR1cmluZyBsYXlvdXQgaXMgcHJvZ3JhbW1hdGljLgog
ICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBjaGFuZ2VJblByb2dyYW1tYXRpY1Njcm9sbChtX2lu
UHJvZ3JhbW1hdGljU2Nyb2xsLCB0cnVlKTsKQEAgLTExODQsNyArMTE4Myw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAKICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgb25seSBvbmUgcmVmIHRvIHRoaXMgdmlldyBsZWZ0LCB0aGVuIGl0cyBnb2luZyB0byBiZSBk
ZXN0cm95ZWQgYXMgc29vbiBhcyB3ZSBleGl0LCAKICAgICAgICAgLy8gc28gdGhlcmUncyBubyBw
b2ludCB0byBjb250aW51aW5nIHRvIGxheW91dAotICAgICAgICBpZiAoaGFzT25lUmVmKCkpCisg
ICAgICAgIGlmIChwcm90ZWN0b3ItPmhhc09uZVJlZigpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHJvb3QgPSBzdWJ0cmVlID8gbV9sYXlvdXRSb290IDogZG9jdW1lbnQtPnJlbmRl
cmVyKCk7CkBAIC0xMjI3LDcgKzEyMjYsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wg
YWxsb3dTdWJ0cmVlKQogICAgICAgICBTY3JvbGxiYXJNb2RlIHZNb2RlOyAgICAKICAgICAgICAg
Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoaE1vZGUsIHZNb2RlKTsKIAotICAgICAg
ICBtX25lZWRzRnVsbFJlcGFpbnQgPSAhc3VidHJlZSAmJiAobV9maXJzdExheW91dCB8fCB0b1Jl
bmRlclZpZXcoKnJvb3QpLnByaW50aW5nKCkpOworICAgICAgICBtX25lZWRzRnVsbFJlcGFpbnQg
PSAhc3VidHJlZSAmJiAobV9maXJzdExheW91dCB8fCB0b1JlbmRlclZpZXcocm9vdCktPnByaW50
aW5nKCkpOwogCiAgICAgICAgIGlmICghc3VidHJlZSkgewogICAgICAgICAgICAgLy8gTm93IHNl
dCBvdXIgc2Nyb2xsYmFyIHN0YXRlIGZvciB0aGUgbGF5b3V0LgpAQCAtMTMwOCw3ICsxMzA3LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKIAogICAgIGJvb2wg
bmVlZGVkRnVsbFJlcGFpbnQgPSBtX25lZWRzRnVsbFJlcGFpbnQ7CiAKLSAgICBpZiAoIXN1YnRy
ZWUgJiYgIXRvUmVuZGVyVmlldygqcm9vdCkucHJpbnRpbmcoKSkKKyAgICBpZiAoIXN1YnRyZWUg
JiYgIXRvUmVuZGVyVmlldyhyb290KS0+cHJpbnRpbmcoKSkKICAgICAgICAgYWRqdXN0Vmlld1Np
emUoKTsKIAogICAgIG1fbmVlZHNGdWxsUmVwYWludCA9IG5lZWRlZEZ1bGxSZXBhaW50OwpAQCAt
MTU2Miw3ICsxNTYxLDggQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAKIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIGlmICht
X3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzICYmIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHMtPnJlbW92ZShvYmplY3QpKSB7CisgICAgaWYgKG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHMgJiYgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgewor
ICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5yZW1vdmUob2JqZWN0KTsKICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKQEAgLTI3NTksNyArMjc1OSw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKICAgICAKICAgICAv
LyBsYXlvdXQoKSBwcm90ZWN0cyBGcmFtZVZpZXcsIGJ1dCBpdCBzdGlsbCBjYW4gZ2V0IGRlc3Ry
b3llZCB3aGVuIHVwZGF0ZVdpZGdldHMoKQogICAgIC8vIGlzIGNhbGxlZCB0aHJvdWdoIHRoZSBw
b3N0IGxheW91dCB0aW1lci4KLSAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IodGhpcyk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1heFVwZGF0ZVdpZGdldHNJdGVyYXRpb25zOyBpKyspIHsKICAgICAgICAgaWYg
KHVwZGF0ZVdpZGdldHMoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA1OSwxMiArNDA1OSwy
MiBAQCBib29sIEZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNj
cm9sbGFibGVBcmVhKQogCiBib29sIEZyYW1lVmlldzo6cmVtb3ZlU2Nyb2xsYWJsZUFyZWEoU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBtX3Njcm9sbGFibGVB
cmVhcyAmJiBtX3Njcm9sbGFibGVBcmVhcy0+cmVtb3ZlKHNjcm9sbGFibGVBcmVhKTsKKyAgICBp
ZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTY3Jv
bGxhYmxlQXJlYVNldDo6aXRlcmF0b3IgaXQgPSBtX3Njcm9sbGFibGVBcmVhcy0+ZmluZChzY3Jv
bGxhYmxlQXJlYSk7CisgICAgaWYgKGl0ID09IG1fc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zY3JvbGxhYmxlQXJlYXMtPnJlbW92ZShpdCk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojpjb250YWluc1Njcm9sbGFi
bGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYXMgJiYgbV9zY3JvbGxhYmxlQXJlYXMtPmNvbnRhaW5zKHNjcm9s
bGFibGVBcmVhKTsKKyAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFzLT5jb250YWlucyhzY3JvbGxhYmxl
QXJlYSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQqIHdpZGdldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGM0ODRmMTguLjg5MDhlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cApAQCAtOTgsMTIgKzk4LDEzIEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNv
dW50ZWRMZWFrQ291bnRlciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIAogc3RhdGljIHZvaWQg
bmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKQogewotICAgIFZlY3RvcjxSZWY8RnJh
bWU+PiBmcmFtZXM7CisgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4gPiBmcmFtZXM7CiAgICAgCiAg
ICAgLy8gR2V0IGFsbCB0aGUgZnJhbWVzIG9mIGFsbCB0aGUgcGFnZXMgaW4gYWxsIHRoZSBwYWdl
IGdyb3VwcwotICAgIGZvciAoYXV0byBpdCA9IGFsbFBhZ2VzLT5iZWdpbigpLCBlbmQgPSBhbGxQ
YWdlcy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIEhhc2hTZXQ8UGFnZSo+OjppdGVy
YXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRl
cmF0b3IgaXQgPSBhbGxQYWdlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJigqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQo
KmZyYW1lKTsKKyAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOwogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKml0KTsKICAgICB9CiAK
QEAgLTQ5MSwxOCArNDkyLDIyIEBAIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdpbnMoYm9vbCByZWxv
YWQpCiAKICAgICBQbHVnaW5EYXRhOjpyZWZyZXNoKCk7CiAKLSAgICBWZWN0b3I8UmVmPEZyYW1l
Pj4gZnJhbWVzTmVlZGluZ1JlbG9hZDsKKyAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPiA+IGZyYW1l
c05lZWRpbmdSZWxvYWQ7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBhbGxQYWdlcy0+YmVnaW4oKSwg
ZW5kID0gYWxsUGFnZXMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUGFnZSYg
cGFnZSA9ICoqaXQ7Ci0gICAgICAgIHBhZ2UubV9wbHVnaW5EYXRhLmNsZWFyKCk7CisgICAgSGFz
aFNldDxQYWdlKj46Oml0ZXJhdG9yIGVuZCA9IGFsbFBhZ2VzLT5lbmQoKTsKKyAgICBmb3IgKEhh
c2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdCA9IGFsbFBhZ2VzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgUGFnZSogcGFnZSA9ICppdDsKKyAgICAgICAgCisgICAgICAgIC8v
IENsZWFyIG91dCB0aGUgcGFnZSdzIHBsdWctaW4gZGF0YS4KKyAgICAgICAgaWYgKHBhZ2UtPm1f
cGx1Z2luRGF0YSkKKyAgICAgICAgICAgIHBhZ2UtPm1fcGx1Z2luRGF0YSA9IDA7CiAKICAgICAg
ICAgaWYgKCFyZWxvYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9h
ZGVyKCktPmNvbnRhaW5zUGx1Z2lucygpKQotICAgICAgICAgICAgICAgIGZyYW1lc05lZWRpbmdS
ZWxvYWQuYXBwZW5kKCpmcmFtZSk7CisgICAgICAgICAgICAgICAgZnJhbWVzTmVlZGluZ1JlbG9h
ZC5hcHBlbmQoZnJhbWUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTc4LDI2ICsxMTgzLDIz
IEBAIHZvaWQgUGFnZTo6ZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS0+aW5pdEROU1ByZWZldGNoKCk7CiB9CiAKLVZlY3RvcjxSZWY8UGx1Z2lu
Vmlld0Jhc2U+PiBQYWdlOjpwbHVnaW5WaWV3cygpCit2b2lkIFBhZ2U6OmNvbGxlY3RQbHVnaW5W
aWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVnaW5WaWV3QmFzZXMp
CiB7Ci0gICAgVmVjdG9yPFJlZjxQbHVnaW5WaWV3QmFzZT4+IHZpZXdzOwotCiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXco
KTsKICAgICAgICAgaWYgKCF2aWV3KQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgYXV0byBjaGlsZHJlbiA9IHZpZXctPmNoaWxkcmVuKCk7CisgICAg
ICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4gPSB2aWV3LT5jaGls
ZHJlbigpOwogICAgICAgICBBU1NFUlQoY2hpbGRyZW4pOwogCi0gICAgICAgIGZvciAoYXV0byBp
dCA9IGNoaWxkcmVuLT5iZWdpbigpLCBlbmQgPSBjaGlsZHJlbi0+ZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGNoaWxkcmVuLT5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRn
ZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRyZW4tPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSAoKml0KS5nZXQoKTsKICAgICAg
ICAgICAgIGlmICh3aWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKLSAgICAgICAgICAgICAgICB2
aWV3cy5hcHBlbmQoKnRvUGx1Z2luVmlld0Jhc2Uod2lkZ2V0KSk7CisgICAgICAgICAgICAgICAg
cGx1Z2luVmlld0Jhc2VzLmFwcGVuZCh0b1BsdWdpblZpZXdCYXNlKHdpZGdldCkpOwogICAgICAg
ICB9CiAgICAgfQotCi0gICAgcmV0dXJuIHZpZXdzOwogfQogCiB2b2lkIFBhZ2U6OnN0b3JhZ2VC
bG9ja2luZ1N0YXRlQ2hhbmdlZCgpCkBAIC0xMjA3LDEwICsxMjA5LDExIEBAIHZvaWQgUGFnZTo6
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKIAogICAgIC8vIENvbGxlY3QgdGhlIFBsdWdp
blZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0
YWtlcwogICAgIC8vIGZyb20gYmVsb3cgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkIGRvZXMg
bm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KLSAgICBhdXRvIHZpZXdzID0gcGx1Z2luVmlld3Mo
KTsKKyAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+IHBsdWdpblZpZXdCYXNl
czsKKyAgICBjb2xsZWN0UGx1Z2luVmlld3MocGx1Z2luVmlld0Jhc2VzKTsKIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlld3NbaV0t
PnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGx1Z2luVmlld0Jhc2VzLnNpemUoKTsgKytpKQorICAgICAgICBwbHVnaW5WaWV3QmFzZXNb
aV0tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwogfQogCiB2b2lkIFBhZ2U6OnByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCkBAIC0xMjIyLDEwICsxMjI1LDExIEBAIHZvaWQgUGFn
ZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKIAogICAgIC8vIENvbGxlY3QgdGhlIFBs
dWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1p
biB0YWtlcwogICAgIC8vIGZyb20gYmVsb3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRv
ZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KLSAgICBhdXRvIHZpZXdzID0gcGx1Z2luVmll
d3MoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+IHBsdWdpblZpZXdC
YXNlczsKKyAgICBjb2xsZWN0UGx1Z2luVmlld3MocGx1Z2luVmlld0Jhc2VzKTsKIAotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlld3Nb
aV0tPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblZpZXdCYXNlcy5zaXplKCk7ICsraSkK
KyAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0x
MjcxLDEwICsxMjc1LDkgQEAgdm9pZCBQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2li
aWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWEKICAgICBtX3Zpc2liaWxp
dHlTdGF0ZSA9IHZpc2liaWxpdHlTdGF0ZTsKIAogICAgIGlmICghaXNJbml0aWFsU3RhdGUpIHsK
LSAgICAgICAgVmVjdG9yPFJlZjxEb2N1bWVudD4+IGRvY3VtZW50czsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxEb2N1bWVudD4+IGRvY3VtZW50czsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50cy5hcHBlbmQoKmZyYW1lLT5kb2N1bWVudCgp
KTsKLQorICAgICAgICAgICAgZG9jdW1lbnRzLmFwcGVuZChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZG9jdW1lbnRzLnNpemUoKTsgaSA8IHNp
emU7ICsraSkKICAgICAgICAgICAgIGRvY3VtZW50c1tpXS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OwogICAgIH0KQEAgLTE0MDcsOCArMTQxMCwxMSBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVw
YWludGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBvYgog
CiAgICAgLy8gSWYgdGhpcyBvYmplY3Qgd2FzIHByZXZpb3VzbHkgY291bnRlZCBhcyBhbiB1bnBh
aW50ZWQgb2JqZWN0LCByZW1vdmUgaXQgZnJvbSB0aGF0IEhhc2hTZXQKICAgICAvLyBhbmQgY29y
cmVzcG9uZGluZyBSZWdpb24uIEZJWE1FOiBUaGlzIGRvZXNuJ3QgZG8gdGhlIHJpZ2h0IHRoaW5n
IGlmIHRoZSBvYmplY3RzIG92ZXJsYXAuCi0gICAgaWYgKG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5k
ZXJPYmplY3RzLnJlbW92ZShvYmplY3QpKQorICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46Oml0
ZXJhdG9yIGl0ID0gbV9yZWxldmFudFVucGFpbnRlZFJlbmRlck9iamVjdHMuZmluZChvYmplY3Qp
OworICAgIGlmIChpdCAhPSBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0cy5lbmQoKSkg
eworICAgICAgICBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0cy5yZW1vdmUoaXQpOwog
ICAgICAgICBtX3JlbGV2YW50VW5wYWludGVkUmVnaW9uLnN1YnRyYWN0KHNuYXBwZWRQYWludFJl
Y3QpOworICAgIH0KIAogICAgIC8vIFNwbGl0IHRoZSByZWxldmFudFJlY3QgaW50byBhIHRvcCBo
YWxmIGFuZCBhIGJvdHRvbSBoYWxmLiBNYWtpbmcgc3VyZSB3ZSBoYXZlIGNvdmVyYWdlIGluCiAg
ICAgLy8gYm90aCBoYWx2ZXMgaGVscHMgdG8gcHJldmVudCBjYXNlcyB3aGVyZSB3ZSBoYXZlIGEg
ZnVsbHkgbG9hZGVkIG1lbnUgYmFyIG9yIG1hc3RoZWFkIHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXgg
NTA2MmExMS4uOTE2ZDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzNyw3
ICs0MzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VGltZXJBbGlnbm1lbnRJbnRlcnZhbChk
b3VibGUpOwogICAgIGRvdWJsZSB0aW1lckFsaWdubWVudEludGVydmFsKCkgY29uc3Q7CiAKLSAg
ICBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gcGx1Z2luVmlld3MoKTsKKyAgICB2b2lkIGNv
bGxlY3RQbHVnaW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVn
aW5WaWV3QmFzZXMpOwogCiAgICAgdm9pZCB0aHJvdHRsZVRpbWVycygpOwogICAgIHZvaWQgdW50
aHJvdHRsZVRpbWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDQ4MjBhODEu
LjIyOGM4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTM2NSw3ICszNjUsMTEg
QEAgdm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCogd29ybGQpCiAgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUod29ybGQpOworICAgIFVzZXJTY3JpcHRNYXA6Oml0
ZXJhdG9yIGl0ID0gbV91c2VyU2NyaXB0cy0+ZmluZCh3b3JsZCk7CisgICAgaWYgKGl0ID09IG1f
dXNlclNjcmlwdHMtPmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgICAgCisgICAgbV91c2Vy
U2NyaXB0cy0+cmVtb3ZlKGl0KTsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHls
ZVNoZWV0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQpAQCAtMzc0LDkgKzM3OCwx
MiBAQCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdy
YXBwZXJXb3JsZCogd29ybGQpCiAKICAgICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmUod29ybGQpKQor
ICAgIAorICAgIFVzZXJTdHlsZVNoZWV0TWFwOjppdGVyYXRvciBpdCA9IG1fdXNlclN0eWxlU2hl
ZXRzLT5maW5kKHdvcmxkKTsKKyAgICBpZiAoaXQgPT0gbV91c2VyU3R5bGVTaGVldHMtPmVuZCgp
KQogICAgICAgICByZXR1cm47CisgICAgCisgICAgbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZShp
dCk7CiAKICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1p
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCmlu
ZGV4IGUyYWY0M2UuLmY1NTE2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VVc2VyVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlVXNlclRpbWluZy5jcHAKQEAgLTk1LDcgKzk1LDggQEAgc3RhdGljIHZvaWQgY2xlYXJQZWZv
cm1hbmNlRW50cmllcyhQZXJmb3JtYW5jZUVudHJ5TWFwJiBwZXJmb3JtYW5jZUVudHJ5TWFwLCBj
b24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBlcmZvcm1hbmNlRW50cnlNYXAucmVt
b3ZlKG5hbWUpOworICAgIGlmIChwZXJmb3JtYW5jZUVudHJ5TWFwLmNvbnRhaW5zKG5hbWUpKQor
ICAgICAgICBwZXJmb3JtYW5jZUVudHJ5TWFwLnJlbW92ZShuYW1lKTsKIH0KIAogdm9pZCBVc2Vy
VGltaW5nOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRl
eCBiNGVjYmIzLi41MmZiMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlVuaXRCZXpp
ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00NTQs
OCArNDUzLDggQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVk
ZWQoKQogICAgIC8vIGR1cmluZyBhbiBhbmltYXRpb24gY2FsbGJhY2sgdGhhdCBtaWdodCBnZXQg
Y2FsbGVkLiBTaW5jZSB0aGUgb3duZXIgaXMgYSBDb21wb3NpdGVBbmltYXRpb24KICAgICAvLyBh
bmQgaXQgcmVmIGNvdW50cyB0aGlzIG9iamVjdCwgd2Ugd2lsbCBrZWVwIGEgcmVmIHRvIHRoYXQg
aW5zdGVhZC4gVGhhdCB3YXkgdGhlIEFuaW1hdGlvbkJhc2UKICAgICAvLyBjYW4gc3RpbGwgYWNj
ZXNzIHRoZSByZXNvdXJjZXMgb2YgaXRzIENvbXBvc2l0ZUFuaW1hdGlvbiBhcyBuZWVkZWQuCi0g
ICAgUmVmPEFuaW1hdGlvbkJhc2U+IHByb3RlY3QoKnRoaXMpOwotICAgIFJlZjxDb21wb3NpdGVB
bmltYXRpb24+IHByb3RlY3RDb21wb3NpdGVBbmltYXRpb24oKm1fY29tcEFuaW0pOworICAgIFJl
ZlB0cjxBbmltYXRpb25CYXNlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPENvbXBvc2l0
ZUFuaW1hdGlvbj4gY29tcFByb3RlY3RvcihtX2NvbXBBbmltKTsKICAgICAKICAgICAvLyBDaGVj
ayBmb3Igc3RhcnQgdGltZW91dAogICAgIGlmIChtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0
ZVN0YXJ0V2FpdFRpbWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9F
dmVudEhhbmRsZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVy
RWZsLmNwcAppbmRleCAxNzFiMjJkLi5kNjNmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKQEAgLTU2LDggKzU2LDggQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnRhYnNUb0FsbEZvcm1Db250cm9scyhLZXlib2FyZEV2ZW50KikgY29uc3QKIAogdm9pZCBF
dmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUucGFnZSgpKQotICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1
c2VkRnJhbWUoJm1fZnJhbWUpOworICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
KQorICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJhbWUobV9mcmFt
ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dp
ZGdldChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCmluZGV4IDllY2NiYzAuLjc5Njc0
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcApAQCAt
NTIsOCArNTIsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6dGFic1RvQWxsRm9ybUNvbnRyb2xzKEtl
eWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1
bWVudFZpZXcoKQogewotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAg
ICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZSgmbV9mcmFtZSk7Cisg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZShtX2ZyYW1lKTsKIH0KIAogYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tCmluZGV4IDkwNjJjYjEuLjI4ZjdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTk5LDcgKzk5LDcgQEAgaW5saW5lIEN1cnJl
bnRFdmVudFNjb3BlOjp+Q3VycmVudEV2ZW50U2NvcGUoKQogCiBib29sIEV2ZW50SGFuZGxlcjo6
d2hlZWxFdmVudChOU0V2ZW50ICpldmVudCkKIHsKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5w
YWdlKCk7CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTIzLDE2ICsxMjMsMTYgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmtleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6
Zm9jdXNEb2N1bWVudFZpZXcoKQogewotICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsK
KyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3
KCkpIHsKKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpIHsK
ICAgICAgICAgaWYgKE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gZnJhbWVWaWV3LT5kb2N1bWVudFZp
ZXcoKSkKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzTlNWaWV3KGRvY3VtZW50Vmll
dyk7CiAgICAgfQogCi0gICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1l
KCZtX2ZyYW1lKTsKKyAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJhbWUo
bV9mcmFtZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZl
bnRUb1dpZGdldChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKQEAg
LTE5OSw3ICsxOTksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlRG93bkV2ZW50VG9X
aWRnZXQoV2lkZ2V0KiBwV2lkZ2V0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
Ci0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAt
Mjc4LDcgKzI3OCw3IEBAIE5TVmlldyAqRXZlbnRIYW5kbGVyOjptb3VzZURvd25WaWV3SWZTdGls
bEdvb2QoKQogICAgIGlmICghbW91c2VEb3duVmlldykgewogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KLSAgICBGcmFtZVZpZXcqIHRvcEZyYW1lVmlldyA9IG1fZnJhbWUudmlldygpOworICAg
IEZyYW1lVmlldyogdG9wRnJhbWVWaWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgIE5TVmlldyAq
dG9wVmlldyA9IHRvcEZyYW1lVmlldyA/IHRvcEZyYW1lVmlldy0+cGxhdGZvcm1XaWRnZXQoKSA6
IG5pbDsKICAgICBpZiAoIXRvcFZpZXcgfHwgIWZpbmRWaWV3SW5TdWJ2aWV3cyh0b3BWaWV3LCBt
b3VzZURvd25WaWV3KSkgewogICAgICAgICBtX21vdXNlRG93blZpZXcgPSBuaWw7CkBAIC00NjEs
NyArNDYxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LAogCiB2b2lkIEV2ZW50SGFuZGxlcjo6
bW91c2VEb3duKE5TRXZlbnQgKmV2ZW50KQogewotICAgIEZyYW1lVmlldyogdiA9IG1fZnJhbWUu
dmlldygpOworICAgIEZyYW1lVmlldyogdiA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXYg
fHwgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDc4LDcg
KzQ3OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjptb3VzZURvd24oTlNFdmVudCAqZXZlbnQpCiAK
IHZvaWQgRXZlbnRIYW5kbGVyOjptb3VzZURyYWdnZWQoTlNFdmVudCAqZXZlbnQpCiB7Ci0gICAg
RnJhbWVWaWV3KiB2ID0gbV9mcmFtZS52aWV3KCk7CisgICAgRnJhbWVWaWV3KiB2ID0gbV9mcmFt
ZS0+dmlldygpOwogICAgIGlmICghdiB8fCBtX3NlbmRpbmdFdmVudFRvU3VidmlldykKICAgICAg
ICAgcmV0dXJuOwogCkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6Om1vdXNl
RHJhZ2dlZChOU0V2ZW50ICpldmVudCkKIAogdm9pZCBFdmVudEhhbmRsZXI6Om1vdXNlVXAoTlNF
dmVudCAqZXZlbnQpCiB7Ci0gICAgRnJhbWVWaWV3KiB2ID0gbV9mcmFtZS52aWV3KCk7CisgICAg
RnJhbWVWaWV3KiB2ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGlmICghdiB8fCBtX3NlbmRpbmdF
dmVudFRvU3VidmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC01MjksNyArNTI5LDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6Om1vdXNlVXAoTlNFdmVudCAqZXZlbnQpCiAgKi8KIHZvaWQgRXZlbnRI
YW5kbGVyOjpzZW5kRmFrZUV2ZW50c0FmdGVyV2lkZ2V0VHJhY2tpbmcoTlNFdmVudCAqaW5pdGlh
dGluZ0V2ZW50KQogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOworICAg
IEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjptb3Vz
ZU1vdmVkKE5TRXZlbnQgKmV2ZW50KQogewogICAgIC8vIFJlamVjdCBhIG1vdXNlIG1vdmVkIGlm
IHRoZSBidXR0b24gaXMgZG93biAtIHNjcmV3cyB1cCB0cmFja2luZyBkdXJpbmcgYXV0b3Njcm9s
bAogICAgIC8vIFRoZXNlIGhhcHBlbiBiZWNhdXNlIFdlYktpdCBzb21ldGltZXMgaGFzIHRvIGZh
a2UgdXAgbW92ZWQgZXZlbnRzLgotICAgIGlmICghbV9mcmFtZS52aWV3KCkgfHwgbV9tb3VzZVBy
ZXNzZWQgfHwgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpCisgICAgaWYgKCFtX2ZyYW1lLT52aWV3
KCkgfHwgbV9tb3VzZVByZXNzZWQgfHwgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC01OTks
NyArNTk5LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVkRXZlbnRUb1Njcm9s
bGJhcnMoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgLy8gUmVqZWN0IGEgbW91c2UgbW92ZWQgaWYg
dGhlIGJ1dHRvbiBpcyBkb3duIC0gc2NyZXdzIHVwIHRyYWNraW5nIGR1cmluZyBhdXRvc2Nyb2xs
CiAgICAgLy8gVGhlc2UgaGFwcGVuIGJlY2F1c2UgV2ViS2l0IHNvbWV0aW1lcyBoYXMgdG8gZmFr
ZSB1cCBtb3ZlZCBldmVudHMuCi0gICAgaWYgKCFtX2ZyYW1lLnZpZXcoKSB8fCBtX21vdXNlUHJl
c3NlZCB8fCBtX3NlbmRpbmdFdmVudFRvU3VidmlldykKKyAgICBpZiAoIW1fZnJhbWUtPnZpZXco
KSB8fCBtX21vdXNlUHJlc3NlZCB8fCBtX3NlbmRpbmdFdmVudFRvU3VidmlldykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtNjA4LDkgKzYw
OCw5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJz
KE5TRXZlbnQgKmV2ZW50KQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXN0
YXRpYyBib29sIGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQoY29uc3QgRnJhbWUmIGZyYW1lKQorc3Rh
dGljIGJvb2wgZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYg
KEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUudmlldygpKSB7CisgICAgaWYgKEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkgewogICAgICAgICBpZiAoZnJhbWVWaWV3LT5w
bGF0Zm9ybVdpZGdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNjU5
LDcgKzY1OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmCiBQbGF0Zm9ybU1vdXNlRXZlbnQg
RXZlbnRIYW5kbGVyOjpjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkgY29uc3QKIHsKICAgICBO
U1ZpZXcgKndpbmRvd1ZpZXcgPSBuaWw7Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBh
Z2UoKSkKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgd2lu
ZG93VmlldyA9IHBhZ2UtPmNocm9tZSgpLnBsYXRmb3JtUGFnZUNsaWVudCgpOwogICAgIHJldHVy
biBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGN1cnJlbnRO
U0V2ZW50KCksIHdpbmRvd1ZpZXcpOwogfQpAQCAtNjg0LDcgKzY4NCw3IEBAIFBhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QK
IAogYm9vbCBFdmVudEhhbmRsZXI6OnRhYnNUb0FsbEZvcm1Db250cm9scyhLZXlib2FyZEV2ZW50
KiBldmVudCkgY29uc3QKIHsKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CisgICAg
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNzA5LDExICs3MDksMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnRh
YnNUb0FsbEZvcm1Db250cm9scyhLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKIGJvb2wgRXZl
bnRIYW5kbGVyOjpuZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygpIGNvbnN0
CiB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIGlmIChtX2ZyYW1lLnNldHRp
bmdzKCkudXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKKyAgICBpZiAo
bV9mcmFtZS0+c2V0dGluZ3MoKS51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgICAgICAKLSAgICBpZiAobV9m
cmFtZS5zZXR0aW5ncygpLm5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzKCkp
CisgICAgaWYgKG1fZnJhbWUtPnNldHRpbmdzKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1
YXRpb25RdWlya3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCmluZGV4IDkwYzgyNWMu
LmVhZDcwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVy
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCkBA
IC02NSwxMCArNjUsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnRhYnNUb0FsbEZvcm1Db250cm9s
cyhLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKIAogdm9pZCBFdmVudEhhbmRsZXI6OmZvY3Vz
RG9jdW1lbnRWaWV3KCkKIHsKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CisgICAg
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybjsKLSAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJhbWUoJm1fZnJh
bWUpOworICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZShtX2ZyYW1l
KTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lk
Z2V0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKaW5kZXggZWNlNGRhMi4uYTM0ZGZhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCkBAIC0xMDQsMTAg
KzEwNCwxMCBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFn
Z2luZ0NsaXBib2FyZCgpIGNvbnN0CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50
VmlldygpCiB7Ci0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOworICAgIFBhZ2UqIHBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47Ci0g
ICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZtX2ZyYW1lKTsKKyAg
ICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJhbWUobV9mcmFtZSk7CiB9CiAK
IGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCBlNmZhODZhLi43YWY4YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFBhc3RlYm9hcmRfaAogCiAjaW5j
bHVkZSAiRHJhZ0ltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTkwLDIzICs4OSw2IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dCB7CiAjZW5kaWYKIH07CiAKLXN0cnVjdCBQYXN0ZWJvYXJkVVJMIHsKLSNpZiBQTEFURk9STShN
QUMpICYmICFQTEFURk9STShJT1MpCi0gICAgS1VSTCB1cmw7Ci0gICAgU3RyaW5nIHRpdGxlOwot
ICAgIFN0cmluZyB1c2VyVmlzaWJsZUZvcm07Ci0jZW5kaWYKLX07Ci0KLXN0cnVjdCBQYXN0ZWJv
YXJkSW1hZ2UgewotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKLSAgICBQYXN0
ZWJvYXJkVVJMIHVybDsKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKLSAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKLSNl
bmRpZgotfTsKLQogY2xhc3MgUGFzdGVib2FyZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UGFzdGVib2FyZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTU1LDIx
ICsxMzcsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VHlwZXMoY29uc3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQmKTsKICAgICB2b2lkIHdyaXRlQWZ0ZXJTZXR0aW5nVHlwZXMoY29uc3QgUGFzdGVi
b2FyZFdlYkNvbnRlbnQmKTsKIAotICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNv
bnRlbnQmKTsKLSAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICB2b2lk
IHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwotCiAgICAgYm9vbCB3cml0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAjaWYgIShQTEFURk9STShN
QUMpICYmICFQTEFURk9STShJT1MpKQogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSosIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCA9IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlKTsgLy8gRklYTUU6IExh
eWVyaW5nIHZpb2xhdGlvbi4KICNlbmRpZgogICAgIHZvaWQgd3JpdGVNYXJrdXAoY29uc3QgU3Ry
aW5nJiBtYXJrdXApOwogICAgIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21h
cnRSZXBsYWNlT3B0aW9uKTsKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1Mp
CiAgICAgdm9pZCB3cml0ZVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqID0g
MCk7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAgICAgdm9pZCB3cml0ZUltYWdlKE5v
ZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7IC8vIEZJWE1FOiBMYXllcmlu
ZyB2aW9sYXRpb24uCi0jZW5kaWYKLSNpZiBQTEFURk9STShJT1MpCisjZWxzZQogICAgIHZvaWQg
d3JpdGVJbWFnZShOb2RlKiwgRnJhbWUqKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlvbi4K
ICAgICB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIEZyYW1lKik7IC8vIEZJWE1F
OiBMYXllcmluZyB2aW9sYXRpb24uCiAgICAgc3RhdGljIE5TQXJyYXkqIHN1cHBvcnRlZFBhc3Rl
Ym9hcmRUeXBlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xv
Y2FsaXplZFN0cmluZ3NFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xvY2Fs
aXplZFN0cmluZ3NFZmwuY3BwCmluZGV4IDc2ZmUxYjcuLjI1MTY0MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5jcHAKQEAgLTY0
MCwxMSArNjQwLDYgQEAgU3RyaW5nIHRleHRUcmFja09mZk1lbnVJdGVtVGV4dCgpCiAgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoIk9mZiIpOwogfQogCi1TdHJpbmcgdGV4dFRyYWNrQXV0b21h
dGljTWVudUl0ZW1UZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiQXV0byIp
OwotfQotCiBTdHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQogewogICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KCJObyBsYWJlbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggYmFhNDc0
MC4uNDIzZDE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
ODIsNyArODEsMTIgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkZENsaWVudChEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKIAogYm9vbCBEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OnJlbW92ZUNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOworICAgIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudFNldDo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuZmluZChjbGllbnQp
OworICAgIGlmIChpdCAhPSBtX2NsaWVudHMuZW5kKCkpIHsKKyAgICAgICAgbV9jbGllbnRzLnJl
bW92ZShpdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCkBA
IC0xMDEsNyArMTA1LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRS
ZWZyZXNoKCkKIAogICAgIC8vIFRoZSBjYWxsIGJhY2sgY2FuIGNhdXNlIGFsbCBvdXIgY2xpZW50
cyB0byBiZSB1bnJlZ2lzdGVyZWQsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdAogICAgIC8vIGFnYWlu
c3QgZGVsZXRpb24gdW50aWwgdGhlIGVuZCBvZiB0aGUgbWV0aG9kLgotICAgIFJlZjxEaXNwbGF5
UmVmcmVzaE1vbml0b3I+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxEaXNwbGF5UmVmcmVz
aE1vbml0b3I+IHByb3RlY3Rvcih0aGlzKTsKICAgICAKICAgICBWZWN0b3I8RGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50Kj4gY2xpZW50czsKICAgICBjb3B5VG9WZWN0b3IobV9jbGllbnRzLCBj
bGllbnRzKTsKQEAgLTE3NCw4ICsxNzgsOSBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudAogdm9p
ZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5RGlkUmVmcmVzaChEaXNwbGF5
UmVmcmVzaE1vbml0b3IqIG1vbml0b3IpCiB7CiAgICAgaWYgKG1vbml0b3ItPnNob3VsZEJlVGVy
bWluYXRlZCgpKSB7Ci0gICAgICAgIEFTU0VSVChtX21vbml0b3JzLmNvbnRhaW5zKG1vbml0b3It
PmRpc3BsYXlJRCgpKSk7Ci0gICAgICAgIG1fbW9uaXRvcnMucmVtb3ZlKG1vbml0b3ItPmRpc3Bs
YXlJRCgpKTsKKyAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFwOjppdGVyYXRvciBpdCA9
IG1fbW9uaXRvcnMuZmluZChtb25pdG9yLT5kaXNwbGF5SUQoKSk7CisgICAgICAgIEFTU0VSVChp
dCAhPSBtX21vbml0b3JzLmVuZCgpKTsKKyAgICAgICAgbV9tb25pdG9ycy5yZW1vdmUoaXQpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oCmluZGV4IDE0MjlkYzIuLjE1MmE0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTUwLDggKzUwLDcgQEAgZW51
bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKICAgICBMYXllclRyZWVBc1RleHRJbmNs
dWRlVmlzaWJsZVJlY3RzID0gMSA8PCAxLAogICAgIExheWVyVHJlZUFzVGV4dEluY2x1ZGVUaWxl
Q2FjaGVzID0gMSA8PCAyLAogICAgIExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBhaW50UmVjdHMg
PSAxIDw8IDMsCi0gICAgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVBhaW50aW5nUGhhc2VzID0gMSA8
PCA0LAotICAgIExheWVyVHJlZUFzVGV4dEluY2x1ZGVDb250ZW50TGF5ZXJzID0gMSA8PCA1Cisg
ICAgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVBhaW50aW5nUGhhc2VzID0gMSA8PCA0CiB9OwogdHlw
ZWRlZiB1bnNpZ25lZCBMYXllclRyZWVBc1RleHRCZWhhdmlvcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDQ4ODJlODguLmRk
ZjM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTU2MiwxMSArNTYyLDYgQEAgYm9vbCBNZWRpYVBsYXllcjo6c3VwcG9ydHNT
Y2FubmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNTY2FubmluZygp
OwogfQogCi1ib29sIE1lZGlhUGxheWVyOjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5yZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0
aW5nKCk7Ci19Ci0KIEludFNpemUgTWVkaWFQbGF5ZXI6Om5hdHVyYWxTaXplKCkKIHsKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5uYXR1cmFsU2l6ZSgpOwpAQCAtODQ3LDE2ICs4NDIsNiBAQCBib29s
IE1lZGlhUGxheWVyOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QKIH0KICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLWJvb2wgTWVkaWFQbGF5ZXI6
OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZh
dGUtPnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllcjo6
c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sIG1haW50YWluQXNwZWN0UmF0aW8pCi17
Ci0gICAgbV9wcml2YXRlLT5zZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKG1haW50YWluQXNw
ZWN0UmF0aW8pOwotfQotCiBib29sIE1lZGlhUGxheWVyOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzU2luZ2xlU2VjdXJpdHlPcmln
aW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CmluZGV4IDY2NDdkZmEuLmIyNGFiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjE0LDcgKzIxNCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTZXRTaXplKGNvbnN0IEludFNpemUmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQYXVzZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllclBsYXkoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJQbGF0Zm9ybVZv
bHVtZUNvbmZpZ3VyYXRpb25SZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIG1lZGlhUGxheWVySXNQYXVzZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNMb29waW5nKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1lZGlhUGxheWVySG9zdFdpbmRvdygp
IHsgcmV0dXJuIDA7IH0KQEAgLTI2Myw3ICsyNjIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBw
b3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzU2F2ZSgpIGNvbnN0Owog
ICAgIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNJbW1l
ZGlhdGVDb21wb3NpdGluZygpIGNvbnN0OwogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRp
YSgpIGNvbnN0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CkBAIC0zMzAsNyArMzI4LDYgQEAgcHVibGlj
OgogCiAgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJs
ZSk7Ci0gICAgYm9vbCBwbGF0Zm9ybVZvbHVtZUNvbmZpZ3VyYXRpb25SZXF1aXJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyUGxhdGZvcm1Wb2x1bWVD
b25maWd1cmF0aW9uUmVxdWlyZWQoKTsgfQogCiAgICAgYm9vbCBtdXRlZCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0TXV0ZWQoYm9vbCk7CkBAIC00MTcsOSArNDE0LDYgQEAgcHVibGljOgogICAgIHZv
aWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKTsKICNlbmRpZgogCi0gICAgYm9v
bCBzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTaG91bGRN
YWludGFpbkFzcGVjdFJhdGlvKGJvb2wpOwotCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQogICAgIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggODA1OGJlZS4uY2JlODBlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKQEAgLTYyLDcgKzYyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1NhdmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCA9IDA7CiAKQEAg
LTE1MCw5ICsxNDksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkUmVu
ZGVyaW5nU3RhdGVDaGFuZ2VkKCkgeyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpIHsgfQotCiAgICAgdmly
dHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggODFmNWJhMC4uMjhjZmZkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAg
LTc3LDcgKzc3LDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqIHBsYXkKICAgICAsIG1fcGxheVdoZW5G
cmFtZXNBdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2luYmFuZFRyYWNrQ29uZmlndXJhdGlvblBl
bmRpbmcoZmFsc2UpCiAgICAgLCBtX2NoYXJhY3RlcmlzdGljc0NoYW5nZWQoZmFsc2UpCi0gICAg
LCBtX3Nob3VsZE1haW50YWluQXNwZWN0UmF0aW8odHJ1ZSkKICAgICAsIG1fc2Vla0NvdW50KDAp
CiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24oJXApIiwgdGhpcyk7CkBAIC01ODMsMTUgKzU4Miw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjphY2NlbGVyYXRlZFJlbmRl
cmluZ1N0YXRlQ2hhbmdlZCgpCiAgICAgc2V0VXBWaWRlb1JlbmRlcmluZygpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RS
YXRpbyhib29sIG1haW50YWluQXNwZWN0UmF0aW8pCi17Ci0gICAgaWYgKG1haW50YWluQXNwZWN0
UmF0aW8gPT0gbV9zaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3Nob3VsZE1haW50YWluQXNwZWN0UmF0aW8gPSBtYWludGFpbkFzcGVjdFJhdGlvOwot
ICAgIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjptZXRhZGF0YUxvYWRlZCgpCiB7CiAgICAgbV9sb2FkaW5nTWV0YWRh
dGEgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaAppbmRleCBjYWQ0MDk3Li4zMGFjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBAIC0xNjUsOSArMTY1
LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpOwogI2VuZGlmCi0gICAgdmlydHVhbCBib29sIHNob3VsZE1haW50YWlu
QXNwZWN0UmF0aW8oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Nob3VsZE1haW50YWluQXNw
ZWN0UmF0aW87IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRp
byhib29sKSBPVkVSUklERTsKLQogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVu
ZGVyaW5nKCk7CiAgICAgdmlydHVhbCBmbG9hdCBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoZmxvYXQp
IGNvbnN0ID0gMDsKQEAgLTIzMSw4ICsyMjgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBi
b29sIGhhc0NvbnRleHRSZW5kZXJlcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFz
TGF5ZXJSZW5kZXJlcigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRl
b0xheWVyR3Jhdml0eSgpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlU3RhdGVz
KCk7CiAKQEAgLTMxMyw3ICszMDgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wbGF5V2hlbkZy
YW1lc0F2YWlsYWJsZTsKICAgICBib29sIG1faW5iYW5kVHJhY2tDb25maWd1cmF0aW9uUGVuZGlu
ZzsKICAgICBib29sIG1fY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZDsKLSAgICBib29sIG1fc2hvdWxk
TWFpbnRhaW5Bc3BlY3RSYXRpbzsKICAgICBzaXplX3QgbV9zZWVrQ291bnQ7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcAppbmRleCBhN2M5YWM0Li4wZjhhN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAg
LTEwNCw3ICsxMDQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbkxvYWRpbmdNZXRhZGF0YSgp
OwogICAgIAogICAgIHZvaWQgc2Vla1RvVGltZShmbG9hdCk7Ci0gICAgdm9pZCB1cGRhdGVWaWRl
b0xheWVyR3Jhdml0eSgpOwogCiAgICAgdm9pZCBzZXRDdXJyZW50VHJhY2soSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRiopOwogICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRU
cmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRyYWNrOyB9CkBAIC0zMzMsMTQgKzMzMiw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNhbmNlbExvYWQoKQog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkoKQotewotICAgIEFTU0VS
VChzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpOwotCi0gICAgaWYgKG1fYXZmV3JhcHBl
cikKLSAgICAgICAgbV9hdmZXcmFwcGVyLT51cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpOwotfQot
CiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpoYXNMYXllclJlbmRlcmVy
KCkgY29uc3QKIHsKICAgICByZXR1cm4gdmlkZW9MYXllcihtX2F2ZldyYXBwZXIpOwpAQCAtNDE4
LDcgKzQwOSwxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVh
dGVBVlBsYXllcigpCiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CiAgICAgCiAgICAgc2V0RGVs
YXlDYWxsYmFja3ModHJ1ZSk7Ci0gICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVQbGF5ZXIocmVpbnRl
cnByZXRfY2FzdDxJRGlyZWN0M0REZXZpY2U5Kj4ocGxheWVyKCktPmdyYXBoaWNzRGV2aWNlQWRh
cHRlcigpKSk7CisKKyAgICBJRGlyZWN0M0REZXZpY2U5KiBkZXZpY2UgPSByZWludGVycHJldF9j
YXN0PElEaXJlY3QzRERldmljZTkqPihwbGF5ZXIoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkp
OworICAgIGlmICghZGV2aWNlKSB7CisgICAgICAgIHBsYXllcigpLT5mcmFtZVZpZXcoKS0+ZW50
ZXJDb21wb3NpdGluZ01vZGUoKTsKKyAgICAgICAgcGxheWVyKCktPm1lZGlhUGxheWVyQ2xpZW50
KCktPm1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQocGxheWVyKCkpOworICAgICAgICBk
ZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEaXJlY3QzRERldmljZTkqPihwbGF5ZXIoKS0+Z3Jh
cGhpY3NEZXZpY2VBZGFwdGVyKCkpOworICAgIH0KKworICAgIG1fYXZmV3JhcHBlci0+Y3JlYXRl
UGxheWVyKGRldmljZSk7CiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2UpOwogfQogCkBAIC05
NjksMTcgKzk2OCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnNp
emVDaGFuZ2VkKCkKICAgICBzZXROYXR1cmFsU2l6ZShJbnRTaXplKG5hdHVyYWxTaXplKSk7CiB9
CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlcXVpcmVzSW1tZWRp
YXRlQ29tcG9zaXRpbmcoKSBjb25zdAotewotICAgIC8vIFRoZSBBVkZvdW5kYXRpb25DRiBwbGF5
ZXIgbmVlZHMgdG8gaGF2ZSB0aGUgcm9vdCBjb21wb3NpdG9yIGF2YWlsYWJsZSBhdCBjb25zdHJ1
Y3Rpb24gdGltZQotICAgIC8vIHNvIGl0IGNhbiBhdHRhY2ggdG8gdGhlIHJlbmRlcmluZyBkZXZp
Y2UuIE90aGVyd2lzZSBpdCBmYWxscyBiYWNrIHRvIENQVS1vbmx5IG1vZGUuCi0gICAgLy8KLSAg
ICAvLyBJdCB3b3VsZCBiZSBuaWNlIGlmIEFWQ0ZQbGF5ZXIgaGFkIHNvbWUgd2F5IHRvIHN3aXRj
aCB0byBoYXJkd2FyZS1hY2NlbGVyYXRlZCBtb2RlCi0gICAgLy8gd2hlbiBhc2tlZCwgdGhlbiB3
ZSBjb3VsZCBmb2xsb3cgQVZGb3VuZGF0aW9uJ3MgbW9kZWwgYW5kIHN3aXRjaCB0byBjb21wb3Np
dGluZwotICAgIC8vIG1vZGUgd2hlbiBiZWdpbm5pbmcgdG8gcGxheSBtZWRpYS4KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogI2lmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQ
T1JUKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cHJvY2Vzc0xlZ2Fj
eUNsb3NlZENhcHRpb25zVHJhY2tzKCkKIHsKQEAgLTE1ODYsNyArMTU3NCw2IEBAIFBsYXRmb3Jt
TGF5ZXIqIEFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKQogICAgIENBQ0ZMYXllckluc2VydFN1
YmxheWVyKG1fdmlkZW9MYXllcldyYXBwZXItPnBsYXRmb3JtTGF5ZXIoKSwgbV9jYVZpZGVvTGF5
ZXIuZ2V0KCksIDApOwogICAgIG1fdmlkZW9MYXllcldyYXBwZXItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQzRCgpKTsKICAgICBtX3ZpZGVvTGF5ZXJXcmFwcGVyLT5zZXROZWVkc0xheW91dCgp
OwotICAgIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCk7CiAKICAgICByZXR1cm4gbV92aWRlb0xh
eWVyV3JhcHBlci0+cGxhdGZvcm1MYXllcigpOwogfQpAQCAtMTY4MCwxMiArMTY2Nyw2IEBAIEFW
Q0ZNZWRpYVNlbGVjdGlvbkdyb3VwUmVmIEFWRldyYXBwZXI6OnNhZmVNZWRpYVNlbGVjdGlvbkdy
b3VwRm9yTGVnaWJsZU1lZGlhKCkKIH0KICNlbmRpZgogCi12b2lkIEFWRldyYXBwZXI6OnVwZGF0
ZVZpZGVvTGF5ZXJHcmF2aXR5KCkKLXsKLSAgICAvLyBXZSBzaG91bGQgY2FsbCBBVkNGUGxheWVy
TGF5ZXJTZXRWaWRlb0dyYXZpdHkoKSBoZXJlLCBidXQgaXQgaXMgbm90IHlldCBpbXBsZW1lbnRl
ZC4KLSAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzE0ODg0MzQwPgotfQotCiB2b2lkIExh
eWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRmb3Jt
Q0FMYXllciogd3JhcHBlckxheWVyKQogewogICAgIEFTU0VSVChtX3BhcmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5oCmluZGV4IGRjNjE4ZDEuLjNiMTQ1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCkBAIC04NSw3ICs4NSw2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybU1heFRpbWVMb2FkZWQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Mb2FkaW5nTWV0YWRhdGEoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2l6ZUNoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNJbW1lZGlh
dGVDb21wb3NpdGluZygpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGhhc0F2
YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdDsKIApAQCAtOTgsOCArOTcsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZXh0UmVuZGVyZXIoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTGF5ZXJSZW5kZXJlcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVZpZGVvTGF5ZXJHcmF2aXR5KCkgT1ZFUlJJREU7Ci0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVu
dHNOZWVkc0Rpc3BsYXkoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlT2ZQcmltYXJ5
QXVkaW9UcmFjaygpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGI1
ZDM5NDkuLmY3YmYwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTE0OCw4ICsxNDgsNiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZXh0UmVuZGVyZXIoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTGF5ZXJSZW5kZXJlcigpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCkgT1ZFUlJJREU7Ci0KICAgICB2aXJ0dWFs
IGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICAKICNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTA4MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggZmIwYzc4MC4uYWQ2NTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC05OCw4ICs5
OCw2IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVBdWRpbywg
TlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVt
RGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lO
VEVSKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5B
cGVydHVyZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZV
UkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNT
dHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZSwgTlNTdHJpbmcgKikKIAogU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwg
a0NNVGltZVplcm8sIENNVGltZSkKIApAQCAtMTE4LDggKzExNiw2IEBAIFNPRlRfTElOS19DT05T
VEFOVChDb3JlTWVkaWEsIGtDTVRpbWVaZXJvLCBDTVRpbWUpCiAjZGVmaW5lIEFWUGxheWVySXRl
bURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24gZ2V0QVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5k
VGltZU5vdGlmaWNhdGlvbigpCiAjZGVmaW5lIEFWQXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJl
TW9kZUNsZWFuQXBlcnR1cmUgZ2V0QVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xl
YW5BcGVydHVyZSgpCiAjZGVmaW5lIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXkg
Z2V0QVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSgpCi0jZGVmaW5lIEFWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dCgpCi0jZGVmaW5lIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUgZ2V0QVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZSgpCiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JP
VVApCiB0eXBlZGVmIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCBBVk1lZGlhU2VsZWN0aW9uR3JvdXBU
eXBlOwpAQCAtMzc2LDcgKzM3Miw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcigpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBbbV92
aWRlb0xheWVyLmdldCgpIHNldE5hbWU6QCJWaWRlbyBsYXllciJdOwogI2VuZGlmCi0gICAgICAg
IHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCk7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoJXApIC0gcmV0dXJu
aW5nICVwIiwgdGhpcywgbV92aWRlb0xheWVyLmdldCgpKTsKICAgICB9CiB9CkBAIC05OTIsMTgg
Kzk4Nyw2IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1lZGlh
VGltZUZvclRpbWVWYWx1ZShmbG9hdCB0aW1lVmFsdWUpCiAgICAgcmV0dXJuIHRpbWVWYWx1ZTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRl
b0xheWVyR3Jhdml0eSgpCi17Ci0gICAgaWYgKCFtX3ZpZGVvTGF5ZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOyAgICAKLSAgICBOU1N0cmluZyogZ3Jhdml0eSA9IHNob3VsZE1h
aW50YWluQXNwZWN0UmF0aW8oKSA/IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgOiBB
VkxheWVyVmlkZW9HcmF2aXR5UmVzaXplOwotICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgc2V0Vmlk
ZW9HcmF2aXR5OmdyYXZpdHldOwotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tzQ2hhbmdlZCgpCiB7
CiAgICAgU3RyaW5nIHByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2UgPSBtX2xhbmd1YWdlT2ZQcmlt
YXJ5QXVkaW9UcmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJXZWJLaXRUaHJl
YWQuY3BwCmluZGV4IGYzMTA1ZGYuLmIyOGQ1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllcldlYktpdFRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJ
bWFnZUxheWVyV2ViS2l0VGhyZWFkLmNwcApAQCAtNDUsNiArNDUsNyBAQCBFR0xJbWFnZUxheWVy
V2ViS2l0VGhyZWFkOjpFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSB0eXBlKQog
ICAgICwgbV90ZXh0dXJlQWNjZXNzb3IoMCkKIHsKICAgICBsYXllckNvbXBvc2l0aW5nVGhyZWFk
KCktPnNldENsaWVudChtX2NsaWVudC5nZXQoKSk7CisgICAgc2V0TGF5ZXJQcm9ncmFtKExheWVy
UHJvZ3JhbVJHQkEpOwogfQogCiBFR0xJbWFnZUxheWVyV2ViS2l0VGhyZWFkOjp+RUdMSW1hZ2VM
YXllcldlYktpdFRocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaAppbmRleCA2NDAyZjZlLi4wM2E0YTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJEYXRhLmgKQEAgLTU2LDYgKzU2LDExIEBAIGNsYXNzIExheWVyRGF0YSB7CiBwdWJs
aWM6CiAgICAgZW51bSBMYXllclR5cGUgeyBMYXllciwgVHJhbnNmb3JtTGF5ZXIsIFdlYkdMTGF5
ZXIsIENhbnZhc0xheWVyLCBDdXN0b21MYXllciB9OwogICAgIGVudW0gRmlsdGVyVHlwZSB7IExp
bmVhciwgTmVhcmVzdCwgVHJpbGluZWFyLCBMYW5jem9zIH07CisgICAgZW51bSBMYXllclByb2dy
YW0geworICAgICAgICBMYXllclByb2dyYW1SR0JBID0gMCwKKyAgICAgICAgTGF5ZXJQcm9ncmFt
QkdSQSwKKyAgICAgICAgTnVtYmVyT2ZMYXllclByb2dyYW1zCisgICAgfTsKIAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICBlbnVtIENTU0ZpbHRlclNoYWRlcnMgewpAQCAtODYsNiArOTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9vcGFjaXR5KDEuMCkKICAgICAgICAgLCBtX2FuY2hv
clBvaW50WigwLjApCiAgICAgICAgICwgbV9ib3JkZXJXaWR0aCgwLjApCisgICAgICAgICwgbV9s
YXllclByb2dyYW0oTGF5ZXJQcm9ncmFtQkdSQSkKICAgICAgICAgLCBtX3BsdWdpblZpZXcoMCkK
ICNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgICwgbV9tZWRpYVBsYXllcigwKQpAQCAtMTUzLDYg
KzE1OSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbmVlZHNUZXh0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9sYXllclR5cGUgPT0gV2ViR0xMYXllciB8fCBtX2xheWVyVHlwZSA9PSBDYW52YXNMYXll
ciB8fCBtX25lZWRzVGV4dHVyZTsgfQogCisgICAgTGF5ZXJQcm9ncmFtIGxheWVyUHJvZ3JhbSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJQcm9ncmFtOyB9CisKICAgICBib29sIGlzRml4ZWRQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGaXhlZFBvc2l0aW9uOyB9CiAgICAgYm9vbCBoYXNG
aXhlZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRml4ZWRDb250YWluZXI7IH0KICAg
ICBib29sIGhhc0ZpeGVkQW5jZXN0b3JJbkRPTVRyZWUoKSBjb25zdCB7IHJldHVybiBtX2hhc0Zp
eGVkQW5jZXN0b3JJbkRPTVRyZWU7IH0KQEAgLTIxMSw2ICsyMTksOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgZmxvYXQgbV9hbmNob3JQb2ludFo7CiAgICAgZmxvYXQgbV9ib3JkZXJXaWR0aDsKIAorICAg
IExheWVyUHJvZ3JhbSBtX2xheWVyUHJvZ3JhbTsKKwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2lu
VmlldzsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgTWVkaWFQbGF5ZXIqIG1fbWVkaWFQbGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAppbmRleCBjMmQ4MmQzLi4yNGE4MDZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJSZW5kZXJlci5jcHAKQEAgLTUxMCw3ICs1MTAsMTEgQEAgdm9pZCBMYXllclJlbmRl
cmVyOjphZGRMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcikKIAogYm9vbCBMYXll
clJlbmRlcmVyOjpyZW1vdmVMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcikKIHsK
LSAgICByZXR1cm4gbV9sYXllcnMucmVtb3ZlKGxheWVyKTsKKyAgICBMYXllclNldDo6aXRlcmF0
b3IgaXRlciA9IG1fbGF5ZXJzLmZpbmQobGF5ZXIpOworICAgIGlmIChpdGVyID09IG1fbGF5ZXJz
LmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9sYXllcnMucmVtb3ZlKGxheWVy
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyOjphZGRMYXllclRv
UmVsZWFzZVRleHR1cmVSZXNvdXJjZXNMaXN0KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVy
KQpAQCAtOTE5LDkgKzkyMywxMSBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVy
c1JlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgaW50CiAKICAgICAgICAg
Ly8gRHJhdyB0aGUgc3VyZmFjZSBvbnRvIGFub3RoZXIgc3VyZmFjZSBvciBzY3JlZW4uCiAgICAg
ICAgIGJvb2wgZHJhd1N1cmZhY2UgPSBsYXllckFscmVhZHlPblN1cmZhY2UobGF5ZXIpOworICAg
ICAgICAvLyBUaGUgdGV4dHVyZSBmb3JtYXQgZm9yIHRoZSBzdXJmYWNlIGlzIFJHQkEuCisgICAg
ICAgIExheWVyRGF0YTo6TGF5ZXJQcm9ncmFtIGxheWVyUHJvZ3JhbSA9IGRyYXdTdXJmYWNlID8g
TGF5ZXJEYXRhOjpMYXllclByb2dyYW1SR0JBIDogbGF5ZXItPmxheWVyUHJvZ3JhbSgpOwogCiAg
ICAgICAgIGlmICghZHJhd1N1cmZhY2UpIHsKLSAgICAgICAgICAgIGNvbnN0IEdMRVMyUHJvZ3Jh
bSYgcHJvZ3JhbSA9IHVzZVByb2dyYW0oTGF5ZXJQcm9ncmFtUkdCQSk7CisgICAgICAgICAgICBj
b25zdCBHTEVTMlByb2dyYW0mIHByb2dyYW0gPSB1c2VMYXllclByb2dyYW0obGF5ZXJQcm9ncmFt
KTsKICAgICAgICAgICAgIGxheWVyLT5kcmF3VGV4dHVyZXMocHJvZ3JhbSwgbV9zY2FsZSwgbV92
aXNpYmxlUmVjdCwgY2xpcFJlY3QpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
RHJhdyB0aGUgcmVmbGVjdGlvbiBpZiBpdCBleGlzdHMuCkBAIC05MzMsMTEgKzkzOSwxMSBAQCB2
b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNvbXBvc2l0
aW5nVGhyZWFkKiBsYXllciwgaW50CiAgICAgICAgICAgICAgICAgaWYgKCFtYXNrICYmIGxheWVy
LT5yZXBsaWNhTGF5ZXIoKSkKICAgICAgICAgICAgICAgICAgICAgbWFzayA9IGxheWVyLT5yZXBs
aWNhTGF5ZXIoKS0+bWFza0xheWVyKCk7CiAKLSAgICAgICAgICAgICAgICBjb25zdCBHTEVTMlBy
b2dyYW0mIHByb2dyYW0gPSB1c2VQcm9ncmFtKG1hc2sgPyBMYXllck1hc2tQcm9ncmFtUkdCQSA6
IExheWVyUHJvZ3JhbVJHQkEpOworICAgICAgICAgICAgICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYg
cHJvZ3JhbSA9IHVzZUxheWVyUHJvZ3JhbShsYXllclByb2dyYW0sIG1hc2spOwogICAgICAgICAg
ICAgICAgIGxheWVyLT5kcmF3U3VyZmFjZShwcm9ncmFtLCBsYXllci0+bGF5ZXJSZW5kZXJlclN1
cmZhY2UoKS0+cmVwbGljYURyYXdUcmFuc2Zvcm0oKSwgbWFzayk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSA9IHVzZVByb2dyYW0obGF5
ZXItPm1hc2tMYXllcigpID8gTGF5ZXJNYXNrUHJvZ3JhbVJHQkEgOiBMYXllclByb2dyYW1SR0JB
KTsKKyAgICAgICAgICAgIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSA9IHVzZUxheWVyUHJv
Z3JhbShsYXllclByb2dyYW0sIGxheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgICAgICAgICBsYXll
ci0+ZHJhd1N1cmZhY2UocHJvZ3JhbSwgbGF5ZXItPmxheWVyUmVuZGVyZXJTdXJmYWNlKCktPmRy
YXdUcmFuc2Zvcm0oKSwgbGF5ZXItPm1hc2tMYXllcigpKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTEwNzQsNiArMTA4MCwxNSBAQCBib29sIExheWVyUmVuZGVyZXI6OmNyZWF0ZVByb2dyYW0oUHJv
Z3JhbUluZGV4IHByb2dyYW0pCiAgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChz
X3RleHR1cmUsIHZfdGV4Q29vcmQpICogYWxwaGE7IFxuIgogICAgICAgICAifSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7CiAKKyAg
ICBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclN0cmluZ0JHUkEgPQorICAgICAgICAidmFyeWlu
ZyBtZWRpdW1wIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgorICAgICAgICAidW5pZm9ybSBsb3dwIHNhbXBsZXIyRCBzX3RleHR1cmU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAidW5pZm9ybSBsb3dwIGZsb2F0IGFs
cGhhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAi
dm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFxuIgorICAgICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorICAgICAgICAiICBnbF9GcmFnQ29sb3Ig
PSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKS5iZ3JhICogYWxwaGE7IFxuIgorICAg
ICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxuIjsKKwogICAgIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU3RyaW5n
TWFza1JHQkEgPQogICAgICAgICAidmFyeWluZyBtZWRpdW1wIHZlYzIgdl90ZXhDb29yZDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiIKICAgICAgICAgInVuaWZvcm0gbG93cCBzYW1wbGVy
MkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCkBAIC0xMDg2LDYgKzEx
MDEsMTggQEAgYm9vbCBMYXllclJlbmRlcmVyOjpjcmVhdGVQcm9ncmFtKFByb2dyYW1JbmRleCBw
cm9ncmFtKQogICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLngsIHRleENv
bG9yLnksIHRleENvbG9yLnosIHRleENvbG9yLncpICogYWxwaGEgKiBtYXNrQ29sb3IudzsgICAg
ICAgICAgIFxuIgogICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiI7CiAKKyAgICBjb25zdCBjaGFyKiBmcmFnbWVudFNo
YWRlclN0cmluZ01hc2tCR1JBID0KKyAgICAgICAgInZhcnlpbmcgbWVkaXVtcCB2ZWMyIHZfdGV4
Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInVuaWZv
cm0gbG93cCBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcbiIKKyAgICAgICAgInVuaWZvcm0gbG93cCBzYW1wbGVyMkQgc19tYXNrOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgInVuaWZvcm0gbG93cCBmbG9hdCBh
bHBoYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAg
InZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcbiIKKyAgICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAgICAgIiAgbG93cCB2ZWM0IHRl
eENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCkuYmdyYTsgICAgICAgICAg
ICAgXG4iCisgICAgICAgICIgIGxvd3AgdmVjNCBtYXNrQ29sb3IgPSB0ZXh0dXJlMkQoc19tYXNr
LCB2X3RleENvb3JkKS5iZ3JhOyAgICAgICAgICBcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCh0ZXhDb2xvci54LCB0ZXhDb2xvci55LCB0ZXhDb2xvci56LCB0ZXhDb2xvci53KSAq
IGFscGhhICogbWFza0NvbG9yLnc7ICAgICAgICAgXG4iCisgICAgICAgICJ9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwor
CiAgICAgLy8gU2hhZGVycyBmb3IgZHJhd2luZyB0aGUgZGVidWcgYm9yZGVycyBhcm91bmQgdGhl
IGxheWVycy4KICAgICBjb25zdCBjaGFyKiBjb2xvclZlcnRleFNoYWRlclN0cmluZyA9CiAgICAg
ICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgpAQCAtMTEwNiw3ICsxMTMzLDkg
QEAgYm9vbCBMYXllclJlbmRlcmVyOjpjcmVhdGVQcm9ncmFtKFByb2dyYW1JbmRleCBwcm9ncmFt
KQogCiAgICAgc3dpdGNoIChwcm9ncmFtKSB7CiAgICAgY2FzZSBMYXllclByb2dyYW1SR0JBOgor
ICAgIGNhc2UgTGF5ZXJQcm9ncmFtQkdSQToKICAgICBjYXNlIExheWVyTWFza1Byb2dyYW1SR0JB
OgorICAgIGNhc2UgTGF5ZXJNYXNrUHJvZ3JhbUJHUkE6CiAgICAgICAgIHZlcnRleFNoYWRlciA9
IHZlcnRleFNoYWRlclN0cmluZzsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2xvclByb2dy
YW06CkBAIC0xMTIwLDkgKzExNDksMTUgQEAgYm9vbCBMYXllclJlbmRlcmVyOjpjcmVhdGVQcm9n
cmFtKFByb2dyYW1JbmRleCBwcm9ncmFtKQogICAgIGNhc2UgTGF5ZXJQcm9ncmFtUkdCQToKICAg
ICAgICAgZnJhZ21lbnRTaGFkZXIgPSBmcmFnbWVudFNoYWRlclN0cmluZ1JHQkE7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTGF5ZXJQcm9ncmFtQkdSQToKKyAgICAgICAgZnJhZ21lbnRTaGFk
ZXIgPSBmcmFnbWVudFNoYWRlclN0cmluZ0JHUkE7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TGF5ZXJNYXNrUHJvZ3JhbVJHQkE6CiAgICAgICAgIGZyYWdtZW50U2hhZGVyID0gZnJhZ21lbnRT
aGFkZXJTdHJpbmdNYXNrUkdCQTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMYXllck1hc2tQ
cm9ncmFtQkdSQToKKyAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBmcmFnbWVudFNoYWRlclN0cmlu
Z01hc2tCR1JBOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbG9yUHJvZ3JhbToKICAgICAg
ICAgZnJhZ21lbnRTaGFkZXIgPSBjb2xvckZyYWdtZW50U2hhZGVyU3RyaW5nOwogICAgICAgICBi
cmVhazsKQEAgLTExNTcsMTMgKzExOTIsMTUgQEAgYm9vbCBMYXllclJlbmRlcmVyOjpjcmVhdGVQ
cm9ncmFtKFByb2dyYW1JbmRleCBwcm9ncmFtKQogICAgIC8vIEdldCBsb2NhdGlvbnMgb2YgdW5p
Zm9ybXMgZm9yIHRoZSBsYXllciBjb250ZW50IHNoYWRlciBwcm9ncmFtLgogICAgIG1fcHJvZ3Jh
bXNbcHJvZ3JhbV0ubV9sb2NhdGlvbnNbR0xFUzJQcm9ncmFtOjpPcGFjaXR5VW5pZm9ybV0gPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtT2JqZWN0LCAiYWxwaGEiKTsKICAgICBzd2l0Y2gg
KHByb2dyYW0pIHsKLSAgICBjYXNlIExheWVyUHJvZ3JhbVJHQkE6IHsKKyAgICBjYXNlIExheWVy
UHJvZ3JhbVJHQkE6CisgICAgY2FzZSBMYXllclByb2dyYW1CR1JBOiB7CiAgICAgICAgIEdMaW50
IHNhbXBsZXJMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1PYmplY3QsICJz
X3RleHR1cmUiKTsKICAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW1PYmplY3QpOwogICAgICAg
ICBnbFVuaWZvcm0xaShzYW1wbGVyTG9jYXRpb24sIDApOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgY2FzZSBMYXllck1hc2tQcm9ncmFtUkdCQTogeworICAgIGNhc2UgTGF5ZXJNYXNrUHJv
Z3JhbVJHQkE6CisgICAgY2FzZSBMYXllck1hc2tQcm9ncmFtQkdSQTogewogICAgICAgICBHTGlu
dCBtYXNrU2FtcGxlckxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbU9iamVj
dCwgInNfdGV4dHVyZSIpOwogICAgICAgICBHTGludCBtYXNrU2FtcGxlckxvY2F0aW9uTWFzayA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1PYmplY3QsICJzX21hc2siKTsKICAgICAgICAg
Z2xVc2VQcm9ncmFtKHByb2dyYW1PYmplY3QpOwpAQCAtMTE5OCw2ICsxMjM1LDE0IEBAIGNvbnN0
IEdMRVMyUHJvZ3JhbSYgTGF5ZXJSZW5kZXJlcjo6dXNlUHJvZ3JhbShQcm9ncmFtSW5kZXggaW5k
ZXgpCiAgICAgcmV0dXJuIHByb2dyYW07CiB9CiAKK2NvbnN0IEdMRVMyUHJvZ3JhbSYgTGF5ZXJS
ZW5kZXJlcjo6dXNlTGF5ZXJQcm9ncmFtKExheWVyRGF0YTo6TGF5ZXJQcm9ncmFtIGxheWVyUHJv
Z3JhbSwgYm9vbCBpc01hc2sgLyogPSBmYWxzZSAqLykKK3sKKyAgICBpbnQgcHJvZ3JhbSA9IGxh
eWVyUHJvZ3JhbTsKKyAgICBpZiAoaXNNYXNrKQorICAgICAgICBwcm9ncmFtICs9IE1hc2tQcm9n
cmFtczsKKyAgICByZXR1cm4gdXNlUHJvZ3JhbShzdGF0aWNfY2FzdDxQcm9ncmFtSW5kZXg+KHBy
b2dyYW0pKTsKK30KKwogdm9pZCBMYXllclJlbmRlcmluZ1Jlc3VsdHM6OmFkZERpcnR5UmVjdChj
b25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFJlY3QgZGlydHlVbmlvbltOdW1iZXJPZkRp
cnR5UmVjdHNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaAppbmRleCA4ODI2NTg1Li5kYjY2NzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXIuaApAQCAtMTU4LDE0ICsxNTgsMjIgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgZW51bSBQcm9ncmFtSW5kZXggewot
ICAgICAgICBMYXllclByb2dyYW1SR0JBLAotICAgICAgICBMYXllck1hc2tQcm9ncmFtUkdCQSwK
LSAgICAgICAgQ29sb3JQcm9ncmFtLAorICAgICAgICBMYXllclByb2dyYW1SR0JBID0gTGF5ZXJE
YXRhOjpMYXllclByb2dyYW1SR0JBLAorICAgICAgICBMYXllclByb2dyYW1CR1JBID0gTGF5ZXJE
YXRhOjpMYXllclByb2dyYW1CR1JBLAorCisgICAgICAgIE1hc2tQcm9ncmFtcywKKyAgICAgICAg
TGF5ZXJNYXNrUHJvZ3JhbVJHQkEgPSBNYXNrUHJvZ3JhbXMgKyBMYXllckRhdGE6OkxheWVyUHJv
Z3JhbVJHQkEsCisgICAgICAgIExheWVyTWFza1Byb2dyYW1CR1JBID0gTWFza1Byb2dyYW1zICsg
TGF5ZXJEYXRhOjpMYXllclByb2dyYW1CR1JBLAorCisgICAgICAgIEludGVybmFsUHJvZ3JhbXMs
CisgICAgICAgIENvbG9yUHJvZ3JhbSA9IEludGVybmFsUHJvZ3JhbXMsCisKICAgICAgICAgTnVt
YmVyT2ZQcm9ncmFtcwogICAgIH07CiAKICAgICBib29sIGNyZWF0ZVByb2dyYW0oUHJvZ3JhbUlu
ZGV4KTsKICAgICBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyUHJv
Z3JhbSYgdXNlUHJvZ3JhbShQcm9ncmFtSW5kZXgpOworICAgIGNvbnN0IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6R0xFUzJQcm9ncmFtJiB1c2VMYXllclByb2dyYW0oTGF5ZXJEYXRh
OjpMYXllclByb2dyYW0sIGJvb2wgaXNNYXNrID0gZmFsc2UpOwogCiAgICAgTGF5ZXJSZW5kZXJl
ckNsaWVudCogbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaAppbmRleCBl
OGI4NWM4Li5kMGE0N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oCkBAIC0yMjEs
NiArMjIxLDcgQEAgcHJvdGVjdGVkOgogICAgIExheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSwg
R3JhcGhpY3NMYXllckJsYWNrQmVycnkqIG93bmVyKTsKIAogICAgIHZvaWQgc2V0TmVlZHNUZXh0
dXJlKGJvb2wgbmVlZHNUZXh0dXJlKSB7IG1fbmVlZHNUZXh0dXJlID0gbmVlZHNUZXh0dXJlOyB9
CisgICAgdm9pZCBzZXRMYXllclByb2dyYW0oTGF5ZXJEYXRhOjpMYXllclByb2dyYW0gbGF5ZXJQ
cm9ncmFtKSB7IG1fbGF5ZXJQcm9ncmFtID0gbGF5ZXJQcm9ncmFtOyB9CiAgICAgYm9vbCBpc0Ry
YXdhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9CiAKICAgICB2b2lkIHVwZGF0
ZVZpc2liaWxpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvUGx1Z2luTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QbHVnaW5MYXllcldlYktpdFRocmVhZC5j
cHAKaW5kZXggMjUxY2MwZi4uYWY3MWMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QbHVnaW5MYXllcldlYktpdFRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9QbHVnaW5MYXll
cldlYktpdFRocmVhZC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgdm9pZCBQbHVnaW5MYXllcldlYktp
dFRocmVhZDo6c2V0UGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQogewogICAgIG1f
cGx1Z2luVmlldyA9IHBsdWdpblZpZXc7CiAgICAgc2V0TmVlZHNUZXh0dXJlKGlzRHJhd2FibGUo
KSAmJiBwbHVnaW5WaWV3KTsKKyAgICBzZXRMYXllclByb2dyYW0oTGF5ZXJQcm9ncmFtUkdCQSk7
CiAKICAgICBpZiAobV9wbHVnaW5WaWV3KQogICAgICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCmluZGV4IGIwNjNiZWUuLjZmN2E5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzA1
LDkgKzMwNSw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp3aWxsQmVEZXN0cm95ZWQoKQogICAg
IAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0
T3duZXIoMCk7Ci0KLSAgICBpZiAobV9jb250ZW50c0NsaXBwaW5nTGF5ZXIpCi0gICAgICAgIG1f
Y29udGVudHNDbGlwcGluZ0xheWVyLT5zZXRPd25lcigwKTsKICAgICAgICAgCiAgICAgaWYgKG1f
c3RydWN0dXJhbExheWVyKQogICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+c2V0T3duZXIoMCk7
CkBAIC02NzIsMTYgKzY2OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0Q29udGVudHNSZWN0KHJlY3QpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChDb250ZW50c1JlY3RzQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRD
b250ZW50c0NsaXBwaW5nUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIGlmIChyZWN0
ID09IG1fY29udGVudHNDbGlwcGluZ1JlY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KHJlY3QpOwotICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChDb250ZW50c1JlY3RzQ2hhbmdlZCk7CisgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKENvbnRlbnRzUmVjdENoYW5nZWQpOwogfQogCiBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6c2hvdWxkUmVwYWludE9uU2l6ZUNoYW5nZSgpIGNvbnN0CkBAIC0xMjI2LDggKzEyMTQsOCBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJz
KENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZQogICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IERpcnR5UmVjdHNDaGFuZ2VkKQogICAgICAgICByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7CiAg
ICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNSZWN0c0NoYW5nZWQp
IC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0
ZUNvbnRlbnRzUmVjdHMoKTsKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50
c1JlY3RDaGFuZ2VkKQorICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKIAogICAgIGlmICht
X3VuY29tbWl0dGVkQ2hhbmdlcyAmIE1hc2tMYXllckNoYW5nZWQpCiAgICAgICAgIHVwZGF0ZU1h
c2tMYXllcigpOwpAQCAtMTMwOSw3ICsxMjk3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZVN1YmxheWVyTGlzdChib29sIG1heExheWVyRGVwdGhSZWFjaGVkKQogICAgICAgICAvLyBG
SVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBvcmRlciB3aXRoIG5l
Z2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCiAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgY2F1c2Ug
dmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVudGx5IGNvbnRlbnRzIGxheWVy
cyBhcmUgb25seSB1c2VkCiAgICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRv
bid0IGhhdmUgY2hpbGRyZW4uCi0gICAgICAgIHByaW1hcnlMYXllckNoaWxkcmVuLmFwcGVuZCht
X2NvbnRlbnRzQ2xpcHBpbmdMYXllciA/IG1fY29udGVudHNDbGlwcGluZ0xheWVyIDogbV9jb250
ZW50c0xheWVyKTsKKyAgICAgICAgcHJpbWFyeUxheWVyQ2hpbGRyZW4uYXBwZW5kKG1fY29udGVu
dHNMYXllcik7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4m
IGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsKQEAgLTE3MzQsNyArMTcyMiw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0ltYWdlKCkKICAgICAgICAgICAgICAgICBpdC0+
dmFsdWUtPnNldENvbnRlbnRzKG1fY29udGVudHNMYXllci0+Y29udGVudHMoKSk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdHMoKTsKKyAgICAgICAgdXBk
YXRlQ29udGVudHNSZWN0KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm8gaW1hZ2UuCiAg
ICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZVN1Ymxh
eWVyTGlzdC4KQEAgLTE3NDksNyArMTczNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRh
dGVDb250ZW50c01lZGlhTGF5ZXIoKQogCiAgICAgLy8gVmlkZW8gbGF5ZXIgd2FzIHNldCBhcyBt
X2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxp
c3QoKS4KICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKLSAg
ICB1cGRhdGVDb250ZW50c1JlY3RzKCk7CisgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCkKQEAgLTE3
NjAsNyArMTc0OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0NhbnZh
c0xheWVyKCkKICAgICAvLyBDYW52YXNMYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwg
YW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgogICAgIHNldHVw
Q29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAgIG1fY29udGVudHNMYXll
ci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgdXBkYXRlQ29udGVudHNSZWN0cygpOworICAgIHVw
ZGF0ZUNvbnRlbnRzUmVjdCgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29u
dGVudHNDb2xvckxheWVyKCkKQEAgLTE3NzAsNyArMTc1OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjp1cGRhdGVDb250ZW50c0NvbG9yTGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBz
ZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKLSAgICB1cGRhdGVDb250
ZW50c1JlY3RzKCk7CisgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgQVNTRVJUKG1fY29u
dGVudHNTb2xpZENvbG9yLmlzVmFsaWQoKSk7CiAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IobV9jb250ZW50c1NvbGlkQ29sb3IpOwogCkBAIC0xNzgxLDc0ICsxNzY5LDIy
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0NvbG9yTGF5ZXIoKQogICAg
IH0KIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUmVjdHMoKQordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUmVjdCgpCiB7CiAgICAgaWYgKCFtX2Nv
bnRlbnRzTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UG9pbnQgY29udGVudE9y
aWdpbjsKLSAgICBGbG9hdFJlY3QgY29udGVudEJvdW5kcygwLCAwLCBtX2NvbnRlbnRzUmVjdC53
aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSk7Ci0KLSAgICBGbG9hdFBvaW50IGNsaXBw
aW5nT3JpZ2luOwotICAgIEZsb2F0UmVjdCBjbGlwcGluZ0JvdW5kczsKLSAgICAKLSAgICBib29s
IGdhaW5lZE9yTG9zdENsaXBwaW5nTGF5ZXIgPSBmYWxzZTsKLSAgICBpZiAoIW1fY29udGVudHND
bGlwcGluZ1JlY3QuY29udGFpbnMobV9jb250ZW50c1JlY3QpKSB7Ci0gICAgICAgIGlmICghbV9j
b250ZW50c0NsaXBwaW5nTGF5ZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xh
eWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVM
YXllciwgdGhpcyk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKLSAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KCkpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAg
IG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5zZXROYW1lKCJDb250ZW50cyBDbGlwcGluZyIpOwot
I2VuZGlmCi0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVy
KCk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+YXBwZW5kU3VibGF5ZXIo
bV9jb250ZW50c0xheWVyLmdldCgpKTsKLSAgICAgICAgICAgIGdhaW5lZE9yTG9zdENsaXBwaW5n
TGF5ZXIgPSB0cnVlOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGNsaXBwaW5nT3JpZ2luID0g
bV9jb250ZW50c0NsaXBwaW5nUmVjdC5sb2NhdGlvbigpOwotICAgICAgICBjbGlwcGluZ0JvdW5k
cy5zZXRTaXplKG1fY29udGVudHNDbGlwcGluZ1JlY3Quc2l6ZSgpKTsKLQotICAgICAgICBjb250
ZW50T3JpZ2luID0gdG9Qb2ludChtX2NvbnRlbnRzUmVjdC5sb2NhdGlvbigpIC0gbV9jb250ZW50
c0NsaXBwaW5nUmVjdC5sb2NhdGlvbigpKTsKLQotICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdM
YXllci0+c2V0UG9zaXRpb24oY2xpcHBpbmdPcmlnaW4pOwotICAgICAgICBtX2NvbnRlbnRzQ2xp
cHBpbmdMYXllci0+c2V0Qm91bmRzKGNsaXBwaW5nQm91bmRzKTsKLQotICAgICAgICBtX2NvbnRl
bnRzTGF5ZXItPnNldFBvc2l0aW9uKGNvbnRlbnRPcmlnaW4pOwotICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKLSAgICAKLSAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV9jb250ZW50c0NsaXBwaW5nTGF5ZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVu
dHNMYXllci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICBGbG9hdFBvaW50IHBvaW50KG1f
Y29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1JlY3QueSgpKTsKKyAgICBGbG9hdFJlY3QgcmVj
dCgwLCAwLCBtX2NvbnRlbnRzUmVjdC53aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSk7
CiAKLSAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5yZW1vdmVGcm9tU3VwZXJs
YXllcigpOwotICAgICAgICAgICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPnNldE93bmVyKDAp
OwotICAgICAgICAgICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXIgPSBudWxscHRyOwotICAgICAg
ICAgICAgZ2FpbmVkT3JMb3N0Q2xpcHBpbmdMYXllciA9IHRydWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb250ZW50T3JpZ2luID0gbV9jb250ZW50c1JlY3QubG9jYXRpb24oKTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKGdhaW5lZE9yTG9zdENsaXBwaW5nTGF5ZXIpCi0gICAgICAgIG5vdGVTdWJs
YXllcnNDaGFuZ2VkKCk7Ci0KLSAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKGNvbnRl
bnRPcmlnaW4pOwotICAgIG1fY29udGVudHNMYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMp
OworICAgIG1fY29udGVudHNMYXllci0+c2V0UG9zaXRpb24ocG9pbnQpOworICAgIG1fY29udGVu
dHNMYXllci0+c2V0Qm91bmRzKHJlY3QpOwogCiAgICAgaWYgKG1fY29udGVudHNMYXllckNsb25l
cykgewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xh
eWVyQ2xvbmVzLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRQb3NpdGlvbihjb250ZW50T3JpZ2luKTsKLSAgICAg
ICAgICAgIGl0LT52YWx1ZS0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKG1fY29udGVudHNDbGlwcGluZ0xheWVyQ2xvbmVzKSB7Ci0gICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNs
b25lcy0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9jb250ZW50c0NsaXBwaW5nTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRQb3NpdGlvbihjbGlwcGluZ09yaWdpbik7Ci0g
ICAgICAgICAgICBpdC0+dmFsdWUtPnNldEJvdW5kcyhjbGlwcGluZ0JvdW5kcyk7CisgICAgICAg
ICAgICBpdC0+dmFsdWUtPnNldFBvc2l0aW9uKHBvaW50KTsKKyAgICAgICAgICAgIGl0LT52YWx1
ZS0+c2V0Qm91bmRzKHJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjcyNCwyMCArMjY2
MCw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4
dFN0cmVhbSYgdGV4dFN0cmVhbSwgaW50IGluZGVuCiAgICAgICAgIHdyaXRlSW5kZW50KHRleHRT
dHJlYW0sIGluZGVudCArIDEpOwogICAgICAgICB0ZXh0U3RyZWFtIDw8ICIodG9wIGxlZnQgdGls
ZSAiIDw8IGdyaWRFeHRlbnQueCgpIDw8ICIsICIgPDwgZ3JpZEV4dGVudC55KCkgPDwgIiB0aWxl
cyBncmlkICIgPDwgZ3JpZEV4dGVudC53aWR0aCgpIDw8ICIgeCAiIDw8IGdyaWRFeHRlbnQuaGVp
Z2h0KCkgPDwgIilcbiI7CiAgICAgfQotICAgIAotICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJl
ZUFzVGV4dEluY2x1ZGVDb250ZW50TGF5ZXJzKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzQ2xp
cHBpbmdMYXllcikgewotICAgICAgICAgICAgd3JpdGVJbmRlbnQodGV4dFN0cmVhbSwgaW5kZW50
ICsgMSk7Ci0gICAgICAgICAgICB0ZXh0U3RyZWFtIDw8ICIoY29udGVudHMgY2xpcHBpbmcgbGF5
ZXIgIiA8PCBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+cG9zaXRpb24oKS54KCkgPDwgIiwgIiA8
PCBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+cG9zaXRpb24oKS55KCkKLSAgICAgICAgICAgICAg
ICA8PCAiICIgPDwgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPmJvdW5kcygpLndpZHRoKCkgPDwg
IiB4ICIgPDwgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIDw8ICIp
XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgewotICAgICAg
ICAgICAgd3JpdGVJbmRlbnQodGV4dFN0cmVhbSwgaW5kZW50ICsgMSk7Ci0gICAgICAgICAgICB0
ZXh0U3RyZWFtIDw8ICIoY29udGVudHMgbGF5ZXIgIiA8PCBtX2NvbnRlbnRzTGF5ZXItPnBvc2l0
aW9uKCkueCgpIDw8ICIsICIgPDwgbV9jb250ZW50c0xheWVyLT5wb3NpdGlvbigpLnkoKQotICAg
ICAgICAgICAgICAgIDw8ICIgIiA8PCBtX2NvbnRlbnRzTGF5ZXItPmJvdW5kcygpLndpZHRoKCkg
PDwgIiB4ICIgPDwgbV9jb250ZW50c0xheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSA8PCAiKVxuIjsK
LSAgICAgICAgfQotICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQm9y
ZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCkBAIC0yODczLDggKzI3
OTUsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmaW5k
T3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBQbAogICAgIHJldHVybiByZXN1bHRMYXllcjsK
IH0gICAKIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQg
Y2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4mIHN0cnVjdHVyYWxMYXllciwKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiYgY29udGVudHNMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzQ2xp
cHBpbmdMYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQordm9pZCBHcmFwaGljc0xheWVyQ0E6
OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHN0cnVjdHVyYWxMYXll
ciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzTGF5ZXIsIENsb25lTGV2ZWwgY2xv
bmVMZXZlbCkKIHsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSAwOwogICAgIGNvbnRlbnRzTGF5ZXIg
PSAwOwpAQCAtMjg4OCwxMyArMjgwOSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVD
bG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+CiAgICAg
aWYgKCFtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgJiYgbV9jb250ZW50c0xheWVyKQogICAgICAgICBt
X2NvbnRlbnRzTGF5ZXJDbG9uZXMgPSBhZG9wdFB0cihuZXcgTGF5ZXJNYXApOwogCi0gICAgaWYg
KCFtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNsb25lcyAmJiBtX2NvbnRlbnRzQ2xpcHBpbmdMYXll
cikKLSAgICAgICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXJDbG9uZXMgPSBhZG9wdFB0cihuZXcg
TGF5ZXJNYXApOwotCiAgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQs
IG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwogICAgIHN0
cnVjdHVyYWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXll
ci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwogICAg
IGNvbnRlbnRzTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9jb250ZW50c0xheWVy
LmdldCgpLCBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwotICAgIGNv
bnRlbnRzQ2xpcHBpbmdMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2NvbnRlbnRz
Q2xpcHBpbmdMYXllci5nZXQoKSwgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXJDbG9uZXMuZ2V0KCks
IGNsb25lTGV2ZWwpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQ2xvbmVMYXll
cnMoKQpAQCAtMjkwMiw3ICsyODE5LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUNs
b25lTGF5ZXJzKCkKICAgICBtX2xheWVyQ2xvbmVzID0gbnVsbHB0cjsKICAgICBtX3N0cnVjdHVy
YWxMYXllckNsb25lcyA9IG51bGxwdHI7CiAgICAgbV9jb250ZW50c0xheWVyQ2xvbmVzID0gbnVs
bHB0cjsKLSAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNsb25lcyA9IG51bGxwdHI7CiB9CiAK
IEZsb2F0UG9pbnQgR3JhcGhpY3NMYXllckNBOjpwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCkg
Y29uc3QKQEAgLTI5MzMsOCArMjg0OSw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBH
cmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAgICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+IHN0cnVjdHVyYWxMYXllcjsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBj
b250ZW50c0xheWVyOwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNvbnRlbnRzQ2xpcHBp
bmdMYXllcjsKLSAgICBlbnN1cmVDbG9uZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBw
cmltYXJ5TGF5ZXIsIHN0cnVjdHVyYWxMYXllciwgY29udGVudHNMYXllciwgY29udGVudHNDbGlw
cGluZ0xheWVyLCBjbG9uZUxldmVsKTsKKyAgICBlbnN1cmVDbG9uZUxheWVycyhyZXBsaWNhU3Rh
dGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVjdHVyYWxMYXllciwgY29udGVudHNMYXll
ciwgY2xvbmVMZXZlbCk7CiAKICAgICBpZiAobV9tYXNrTGF5ZXIpIHsKICAgICAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbWFza0Nsb25lID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4obV9tYXNrTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3Rh
dGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOwpAQCAtMjk2NywxMyArMjg4Miw4IEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMo
R3JhcGhpY3NMYXllciogcmVwCiAgICAgICAgIHJlcGxpY2FMYXllciA9IHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYUxheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNh
Um9vdCwgcmVwbGljYVN0YXRlLCBSb290Q2xvbmVMZXZlbCk7CiAgICAgICAgIHJlcGxpY2FTdGF0
ZS5zZXRCcmFuY2hUeXBlKFJlcGxpY2FTdGF0ZTo6Q2hpbGRCcmFuY2gpOwogICAgIH0KLQotICAg
IGlmIChjb250ZW50c0NsaXBwaW5nTGF5ZXIpIHsKLSAgICAgICAgQVNTRVJUKGNvbnRlbnRzTGF5
ZXIpOwotICAgICAgICBjb250ZW50c0NsaXBwaW5nTGF5ZXItPmFwcGVuZFN1YmxheWVyKGNvbnRl
bnRzTGF5ZXIuZ2V0KCkpOwotICAgIH0KICAgICAKLSAgICBpZiAocmVwbGljYUxheWVyIHx8IHN0
cnVjdHVyYWxMYXllciB8fCBjb250ZW50c0xheWVyIHx8IGNvbnRlbnRzQ2xpcHBpbmdMYXllciB8
fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7CisgICAgaWYgKHJlcGxpY2FMYXllciB8fCBzdHJ1
Y3R1cmFsTGF5ZXIgfHwgY29udGVudHNMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKICAgICAgICAgICAgIC8vIFJlcGxpY2Fz
IHJlbmRlciBiZWhpbmQgdGhlIGFjdHVhbCBsYXllciBjb250ZW50LgogICAgICAgICAgICAgaWYg
KHJlcGxpY2FMYXllcikKQEAgLTI5ODEsMTEgKzI4OTEsNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIq
IHJlcAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxh
eWVyIG5leHQuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUg
cHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgogICAgICAgICAgICAgY2xvbmFsU3Vi
bGF5ZXJzLmFwcGVuZChwcmltYXJ5TGF5ZXIpOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRz
Q2xpcHBpbmdMYXllcikgewotICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMg
bGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVu
LgotICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBp
c3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKLSAg
ICAgICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRy
ZW4uCi0gICAgICAgICAgICBjbG9uYWxTdWJsYXllcnMuYXBwZW5kKGNvbnRlbnRzQ2xpcHBpbmdM
YXllcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudHNMYXllcikgewogICAgICAgICAgICAg
Ly8gRklYTUU6IGFkZCB0aGUgY29udGVudHMgbGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0
aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgogICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5v
dCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVu
dHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKQEAgLTMwMTQsMTEgKzI5MTksMTEgQEAgUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFw
aGljc0xheWVyKiByZXAKICAgICBpZiAoc3RydWN0dXJhbExheWVyKSB7CiAgICAgICAgIHN0cnVj
dHVyYWxMYXllci0+c2V0U3VibGF5ZXJzKGNsb25hbFN1YmxheWVycyk7CiAKLSAgICAgICAgaWYg
KGNvbnRlbnRzQ2xpcHBpbmdMYXllciB8fCBjb250ZW50c0xheWVyKSB7CisgICAgICAgIGlmIChj
b250ZW50c0xheWVyKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxh
eWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXllciBpcyBwYXJlbnRlZCBpbiB0aGUgCiAgICAgICAg
ICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJh
bnNmb3JtIGxheWVyKS4KICAgICAgICAgICAgIHByaW1hcnlMYXllci0+cmVtb3ZlQWxsU3VibGF5
ZXJzKCk7Ci0gICAgICAgICAgICBwcmltYXJ5TGF5ZXItPmFwcGVuZFN1YmxheWVyKGNvbnRlbnRz
Q2xpcHBpbmdMYXllciA/IGNvbnRlbnRzQ2xpcHBpbmdMYXllci5nZXQoKSA6IGNvbnRlbnRzTGF5
ZXIuZ2V0KCkpOworICAgICAgICAgICAgcHJpbWFyeUxheWVyLT5hcHBlbmRTdWJsYXllcihjb250
ZW50c0xheWVyLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJlc3VsdCA9IHN0cnVjdHVy
YWxMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKaW5kZXggOTU4ZWZmMS4uNTBlMjliNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAg
LTEwNSw3ICsxMDUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVl
ZHNEaXNwbGF5KCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25z
dCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KGNv
bnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFu
aW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25z
KCk7CkBAIC0zMTUsOCArMzE0LDcgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKiwgQ2xvbmVMZXZlbCk7CiAgICAg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1ha2VDbG9uZShDbG9uZUlELCBQbGF0
Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVsKTsKIAotICAgIHZvaWQgZW5zdXJl
Q2xvbmVMYXllcnMoQ2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXll
ciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHN0cnVjdHVyYWxMYXllciwKLSAgICAgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzTGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBjb250ZW50c0NsaXBwaW5nTGF5ZXIsIENsb25lTGV2ZWwpOworICAgIHZvaWQgZW5zdXJl
Q2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgcHJp
bWFyeUxheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc3RydWN0dXJhbExheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNMYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVs
KTsKIAogICAgIGJvb2wgaGFzQ2xvbmVMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2xheWVyQ2xv
bmVzOyB9CiAgICAgdm9pZCByZW1vdmVDbG9uZUxheWVycygpOwpAQCAtMzQyLDcgKzM0MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKTsKICAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzQ29s
b3JMYXllcigpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0cygpOworICAgIHZvaWQgdXBk
YXRlQ29udGVudHNSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVNYXNrTGF5ZXIoKTsKICAgICB2b2lk
IHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKIApAQCAtMzk0LDcgKzM5Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgIENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQgPSAxIDw8IDE2LAogICAgICAgICBD
b250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCA9IDEgPDwgMTcsCiAgICAgICAgIENvbnRlbnRzQ29s
b3JMYXllckNoYW5nZWQgPSAxIDw8IDE4LAotICAgICAgICBDb250ZW50c1JlY3RzQ2hhbmdlZCA9
IDEgPDwgMTksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5nZWQgPSAxIDw8IDE5LAogICAgICAg
ICBNYXNrTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMCwKICAgICAgICAgUmVwbGljYXRlZExheWVyQ2hh
bmdlZCA9IDEgPDwgMjEsCiAgICAgICAgIENvbnRlbnRzTmVlZHNEaXNwbGF5ID0gMSA8PCAyMiwK
QEAgLTQxNSwxNCArNDEzLDEyIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBtX2xheWVyOyAvLyBUaGUgbWFpbiBsYXllcgogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IG1fc3RydWN0dXJhbExheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVh
c29ucywgbGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFy
ZW50IG9mIG1fbGF5ZXIuCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9jb250ZW50c0Ns
aXBwaW5nTGF5ZXI7IC8vIEEgbGF5ZXIgdXNlZCB0byBjbGlwIGlubmVyIGNvbnRlbnQKICAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX2NvbnRlbnRzTGF5ZXI7IC8vIEEgbGF5ZXIgdXNlZCBm
b3IgaW5uZXIgY29udGVudCwgbGlrZSBpbWFnZSBhbmQgdmlkZW8KIAogICAgIC8vIFJlZmVyZW5j
ZXMgdG8gY2xvbmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KICAgICBP
d25QdHI8TGF5ZXJNYXA+IG1fbGF5ZXJDbG9uZXM7CiAgICAgT3duUHRyPExheWVyTWFwPiBtX3N0
cnVjdHVyYWxMYXllckNsb25lczsKICAgICBPd25QdHI8TGF5ZXJNYXA+IG1fY29udGVudHNMYXll
ckNsb25lczsKLSAgICBPd25QdHI8TGF5ZXJNYXA+IG1fY29udGVudHNDbGlwcGluZ0xheWVyQ2xv
bmVzOwogCiAjaWZkZWYgVklTSUJMRV9USUxFX1dBU0gKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBtX3Zpc2libGVUaWxlV2FzaExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA4
YzYyZTdlLi40Y2Y3MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTAyLDggKzEwMiw2
IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCAv
KiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yCiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gQWNj
ZWxlcmF0ZWQpCiAgICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBjcmVhdGVDYWlyb0dMU3VyZmFj
ZShzaXplLCBtX2RhdGEubV90ZXh0dXJlKTsKICAgICBlbHNlCi0jZWxzZQotICAgIEFTU0VSVF9V
TlVTRUQocmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTW9kZSAhPSBBY2NlbGVyYXRlZCk7CiAjZW5k
aWYKICAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZh
Y2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDJmNDY2MTEuLjE2NWU0NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwCkBAIC01MCwxNyArNTAsMTYgQEAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGdNYXhLZXJuZWxTaXplID0gMTAwMDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUdh
dXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIoRmlsdGVyKiBmaWx0ZXIsIGZsb2F0IHgsIGZsb2F0
IHksIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKK0ZFR2F1c3NpYW5CbHVyOjpGRUdhdXNzaWFuQmx1
cihGaWx0ZXIqIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSkKICAgICA6IEZpbHRlckVmZmVjdChm
aWx0ZXIpCiAgICAgLCBtX3N0ZFgoeCkKICAgICAsIG1fc3RkWSh5KQotICAgICwgbV9lZGdlTW9k
ZShlZGdlTW9kZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxGRUdhdXNzaWFuQmx1cj4gRkVHYXVzc2lh
bkJsdXI6OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVU
eXBlIGVkZ2VNb2RlKQorUGFzc1JlZlB0cjxGRUdhdXNzaWFuQmx1cj4gRkVHYXVzc2lhbkJsdXI6
OmNyZWF0ZShGaWx0ZXIqIGZpbHRlciwgZmxvYXQgeCwgZmxvYXQgeSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZFR2F1c3NpYW5CbHVyKGZpbHRlciwgeCwgeSwgZWRnZU1vZGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZFR2F1c3NpYW5CbHVyKGZpbHRlciwgeCwgeSkpOwogfQog
CiBmbG9hdCBGRUdhdXNzaWFuQmx1cjo6c3RkRGV2aWF0aW9uWCgpIGNvbnN0CkBAIC04Myw2OSAr
ODIsMjYgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCB5KQog
ICAgIG1fc3RkWSA9IHk7CiB9CiAKLUVkZ2VNb2RlVHlwZSBGRUdhdXNzaWFuQmx1cjo6ZWRnZU1v
ZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2VkZ2VNb2RlOwotfQotCi12b2lkIEZFR2F1c3Np
YW5CbHVyOjpzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCi17Ci0gICAgbV9lZGdl
TW9kZSA9IGVkZ2VNb2RlOwotfQotCiBpbmxpbmUgdm9pZCBib3hCbHVyKFVpbnQ4Q2xhbXBlZEFy
cmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSwKLSAg
ICB1bnNpZ25lZCBkeCwgaW50IGR4TGVmdCwgaW50IGR4UmlnaHQsIGludCBzdHJpZGUsIGludCBz
dHJpZGVMaW5lLCBpbnQgZWZmZWN0V2lkdGgsIGludCBlZmZlY3RIZWlnaHQsIGJvb2wgYWxwaGFJ
bWFnZSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQorICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBkeCwgaW50IGR4TGVmdCwgaW50IGR4UmlnaHQsIGludCBzdHJpZGUsIGludCBzdHJpZGVMaW5l
LCBpbnQgZWZmZWN0V2lkdGgsIGludCBlZmZlY3RIZWlnaHQsIGJvb2wgYWxwaGFJbWFnZSkKIHsK
ICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGVmZmVjdEhlaWdodDsgKyt5KSB7CiAgICAgICAgIGlu
dCBsaW5lID0geSAqIHN0cmlkZUxpbmU7CiAgICAgICAgIGZvciAoaW50IGNoYW5uZWwgPSAzOyBj
aGFubmVsID49IDA7IC0tY2hhbm5lbCkgewogICAgICAgICAgICAgaW50IHN1bSA9IDA7Ci0gICAg
ICAgICAgICAvLyBUaGUgY29kZSBmb3IgZWRnZU1vZGU9J25vbmUnIGlzIHRoZSBjb21tb24gY2Fz
ZSBhbmQgaGlnaGx5IG9wdGltaXplZC4KLSAgICAgICAgICAgIC8vIEZ1cnRoZXJtb3JlLCB0aGlz
IGNvZGUgcGF0aCBhZmZlY3RzIG1vcmUgdGhhbiBqdXN0IHRoZSBpbnB1dCBhcmVhLgotICAgICAg
ICAgICAgaWYgKGVkZ2VNb2RlID09IEVER0VNT0RFX05PTkUpIHsKLSAgICAgICAgICAgICAgICAv
LyBGaWxsIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICBpbnQgbWF4S2VybmVsU2l6ZSA9IG1p
bihkeFJpZ2h0LCBlZmZlY3RXaWR0aCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtYXhLZXJuZWxTaXplOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQ
aXhlbEFycmF5LT5pdGVtKGxpbmUgKyBpICogc3RyaWRlICsgY2hhbm5lbCk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBCbHVycmluZwotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
ZWZmZWN0V2lkdGg7ICsreCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxCeXRlT2Zm
c2V0ID0gbGluZSArIHggKiBzdHJpZGUgKyBjaGFubmVsOwotICAgICAgICAgICAgICAgICAgICBk
c3RQaXhlbEFycmF5LT5zZXQocGl4ZWxCeXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihzdW0gLyBkeCkpOwotICAgICAgICAgICAgICAgICAgICAvLyBTaGlmdCBrZXJuZWwuCi0g
ICAgICAgICAgICAgICAgICAgIGlmICh4ID49IGR4TGVmdCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN1bSAtPSBzcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCAtIGR4TGVmdCAq
IHN0cmlkZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh4ICsgZHhSaWdodCA8IGVmZmVjdFdp
ZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPml0ZW0o
cGl4ZWxCeXRlT2Zmc2V0ICsgZHhSaWdodCAqIHN0cmlkZSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yICd3cmFwJyBoZXJlLgotICAgICAgICAgICAgICAgIC8vIEdldCBlZGdlIHZhbHVlcyBm
b3IgZWRnZU1vZGUgJ2R1cGxpY2F0ZScuCi0gICAgICAgICAgICAgICAgaW50IGVkZ2VWYWx1ZUxl
ZnQgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGxpbmUgKyBjaGFubmVsKTsKLSAgICAgICAgICAgICAg
ICBpbnQgZWRnZVZhbHVlUmlnaHQgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGxpbmUgKyAoZWZmZWN0
V2lkdGggLSAxKSAqIHN0cmlkZSArIGNoYW5uZWwpOwotICAgICAgICAgICAgICAgIC8vIEZpbGwg
dGhlIGtlcm5lbAotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBkeExlZnQgKiAtMTsgaSA8
IGR4UmlnaHQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IDApCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzdW0gKz0gZWRnZVZhbHVlTGVmdDsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaSA+PSBlZmZlY3RXaWR0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1
bSArPSBlZGdlVmFsdWVSaWdodDsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPml0ZW0obGluZSArIGkgKiBzdHJp
ZGUgKyBjaGFubmVsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gQmx1
cnJpbmcKLSAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGVmZmVjdFdpZHRoOyAr
K3gpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsQnl0ZU9mZnNldCA9IGxpbmUgKyB4
ICogc3RyaWRlICsgY2hhbm5lbDsKLSAgICAgICAgICAgICAgICAgICAgZHN0UGl4ZWxBcnJheS0+
c2V0KHBpeGVsQnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3VtIC8gZHgp
KTsKLSAgICAgICAgICAgICAgICAgICAgLy8gU2hpZnQga2VybmVsLgotICAgICAgICAgICAgICAg
ICAgICBpZiAoeCA8IGR4TGVmdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1bSAtPSBlZGdl
VmFsdWVMZWZ0OwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzdW0gLT0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZzZXQgLSBkeExlZnQg
KiBzdHJpZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoeCArIGR4UmlnaHQgPj0gZWZmZWN0
V2lkdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdW0gKz0gZWRnZVZhbHVlUmlnaHQ7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSBz
cmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCArIGR4UmlnaHQgKiBzdHJpZGUpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZpbGwgdGhlIGtlcm5lbAorICAgICAg
ICAgICAgaW50IG1heEtlcm5lbFNpemUgPSBtaW4oZHhSaWdodCwgZWZmZWN0V2lkdGgpOworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhLZXJuZWxTaXplOyArK2kpCisgICAgICAg
ICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPml0ZW0obGluZSArIGkgKiBzdHJpZGUgKyBj
aGFubmVsKTsKKworICAgICAgICAgICAgLy8gQmx1cnJpbmcKKyAgICAgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgZWZmZWN0V2lkdGg7ICsreCkgeworICAgICAgICAgICAgICAgIGludCBwaXhl
bEJ5dGVPZmZzZXQgPSBsaW5lICsgeCAqIHN0cmlkZSArIGNoYW5uZWw7CisgICAgICAgICAgICAg
ICAgZHN0UGl4ZWxBcnJheS0+c2V0KHBpeGVsQnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oc3VtIC8gZHgpKTsKKyAgICAgICAgICAgICAgICBpZiAoeCA+PSBkeExlZnQpCisg
ICAgICAgICAgICAgICAgICAgIHN1bSAtPSBzcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9m
ZnNldCAtIGR4TGVmdCAqIHN0cmlkZSk7CisgICAgICAgICAgICAgICAgaWYgKHggKyBkeFJpZ2h0
IDwgZWZmZWN0V2lkdGgpCisgICAgICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQaXhlbEFycmF5
LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCArIGR4UmlnaHQgKiBzdHJpZGUpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKGFscGhhSW1hZ2UpIC8vIFNvdXJjZSBpbWFnZSBpcyBibGFjaywg
aXQganVzdCBoYXMgZGlmZmVyZW50IGFscGhhIHZhbHVlcwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTcwLDkgKzEyNiw5IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9y
bUFwcGx5R2VuZXJpYyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJhCiAgICAgICAgICAg
ICBpZiAoIWlzQWxwaGFJbWFnZSgpKQogICAgICAgICAgICAgICAgIGJveEJsdXJORU9OKHNyYywg
ZHN0LCBrZXJuZWxTaXplWCwgZHhMZWZ0LCBkeFJpZ2h0LCA0LCBzdHJpZGUsIHBhaW50U2l6ZS53
aWR0aCgpLCBwYWludFNpemUuaGVpZ2h0KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGJveEJsdXIoc3JjLCBkc3QsIGtlcm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQsIDQs
IHN0cmlkZSwgcGFpbnRTaXplLndpZHRoKCksIHBhaW50U2l6ZS5oZWlnaHQoKSwgdHJ1ZSwgbV9l
ZGdlTW9kZSk7CisgICAgICAgICAgICAgICAgYm94Qmx1cihzcmMsIGRzdCwga2VybmVsU2l6ZVgs
IGR4TGVmdCwgZHhSaWdodCwgNCwgc3RyaWRlLCBwYWludFNpemUud2lkdGgoKSwgcGFpbnRTaXpl
LmhlaWdodCgpLCB0cnVlKTsKICNlbHNlCi0gICAgICAgICAgICBib3hCbHVyKHNyYywgZHN0LCBr
ZXJuZWxTaXplWCwgZHhMZWZ0LCBkeFJpZ2h0LCA0LCBzdHJpZGUsIHBhaW50U2l6ZS53aWR0aCgp
LCBwYWludFNpemUuaGVpZ2h0KCksIGlzQWxwaGFJbWFnZSgpLCBtX2VkZ2VNb2RlKTsKKyAgICAg
ICAgICAgIGJveEJsdXIoc3JjLCBkc3QsIGtlcm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQsIDQs
IHN0cmlkZSwgcGFpbnRTaXplLndpZHRoKCksIHBhaW50U2l6ZS5oZWlnaHQoKSwgaXNBbHBoYUlt
YWdlKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBzd2FwKHNyYywgZHN0KTsKICAgICAgICAgfQpA
QCAtMTgzLDkgKzEzOSw5IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFw
cGx5R2VuZXJpYyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJhCiAgICAgICAgICAgICBp
ZiAoIWlzQWxwaGFJbWFnZSgpKQogICAgICAgICAgICAgICAgIGJveEJsdXJORU9OKHNyYywgZHN0
LCBrZXJuZWxTaXplWSwgZHlMZWZ0LCBkeVJpZ2h0LCBzdHJpZGUsIDQsIHBhaW50U2l6ZS5oZWln
aHQoKSwgcGFpbnRTaXplLndpZHRoKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGJveEJsdXIoc3JjLCBkc3QsIGtlcm5lbFNpemVZLCBkeUxlZnQsIGR5UmlnaHQsIHN0cmlk
ZSwgNCwgcGFpbnRTaXplLmhlaWdodCgpLCBwYWludFNpemUud2lkdGgoKSwgdHJ1ZSwgbV9lZGdl
TW9kZSk7CisgICAgICAgICAgICAgICAgYm94Qmx1cihzcmMsIGRzdCwga2VybmVsU2l6ZVksIGR5
TGVmdCwgZHlSaWdodCwgc3RyaWRlLCA0LCBwYWludFNpemUuaGVpZ2h0KCksIHBhaW50U2l6ZS53
aWR0aCgpLCB0cnVlKTsKICNlbHNlCi0gICAgICAgICAgICBib3hCbHVyKHNyYywgZHN0LCBrZXJu
ZWxTaXplWSwgZHlMZWZ0LCBkeVJpZ2h0LCBzdHJpZGUsIDQsIHBhaW50U2l6ZS5oZWlnaHQoKSwg
cGFpbnRTaXplLndpZHRoKCksIGlzQWxwaGFJbWFnZSgpLCBtX2VkZ2VNb2RlKTsKKyAgICAgICAg
ICAgIGJveEJsdXIoc3JjLCBkc3QsIGtlcm5lbFNpemVZLCBkeUxlZnQsIGR5UmlnaHQsIHN0cmlk
ZSwgNCwgcGFpbnRTaXplLmhlaWdodCgpLCBwYWludFNpemUud2lkdGgoKSwgaXNBbHBoYUltYWdl
KCkpOwogI2VuZGlmCiAgICAgICAgICAgICBzd2FwKHNyYywgZHN0KTsKICAgICAgICAgfQpAQCAt
MzA4LDExICsyNjQsNiBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdCgpCiAgICAgY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIoKSwga2VybmVsU2l6ZVgs
IGtlcm5lbFNpemVZLCBtX3N0ZFgsIG1fc3RkWSk7CiAKICAgICBGbG9hdFJlY3QgYWJzb2x1dGVQ
YWludFJlY3QgPSBpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQYWludFJlY3QoKTsKLSAgICAvLyBF
ZGdlIG1vZGVzIG90aGVyIHRoYW4gJ25vbmUnIGRvIG5vdCBpbmZsYXRlIHRoZSBhZmZlY3RlZCBw
YWludCByZWN0LgotICAgIGlmIChtX2VkZ2VNb2RlICE9IEVER0VNT0RFX05PTkUpIHsKLSAgICAg
ICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZVBhaW50UmVj
dCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgLy8gV2UgdGFrZSB0aGUgaGFsZiBr
ZXJuZWwgc2l6ZSBhbmQgbXVsdGlwbHkgaXQgd2l0aCB0aHJlZSwgYmVjYXVzZSB3ZSBydW4gYm94
IGJsdXIgdGhyZWUgdGltZXMuCiAgICAgYWJzb2x1dGVQYWludFJlY3QuaW5mbGF0ZVgoMyAqIGtl
cm5lbFNpemVYICogMC41Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggYjY2NmI1OS4uZjU1NGVm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtMjMsMTUgKzIzLDE0IEBACiAjZGVmaW5lIEZFR2F1
c3NpYW5CbHVyX2gKIAogI2lmIEVOQUJMRShGSUxURVJTKQotI2luY2x1ZGUgIkZFQ29udm9sdmVN
YXRyaXguaCIKLSNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
KyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGRUdh
dXNzaWFuQmx1ciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZFR2F1c3NpYW5CbHVyPiBjcmVhdGUoRmlsdGVyKiwgZmxvYXQsIGZsb2F0LCBF
ZGdlTW9kZVR5cGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFR2F1c3NpYW5CbHVyPiBjcmVh
dGUoRmlsdGVyKiwgZmxvYXQsIGZsb2F0KTsKIAogICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBj
b25zdDsKICAgICB2b2lkIHNldFN0ZERldmlhdGlvblgoZmxvYXQpOwpAQCAtMzksOSArMzgsNiBA
QCBwdWJsaWM6CiAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWSgpIGNvbnN0OwogICAgIHZvaWQgc2V0
U3RkRGV2aWF0aW9uWShmbG9hdCk7CiAKLSAgICBFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBjb25z
dDsKLSAgICB2b2lkIHNldEVkZ2VNb2RlKEVkZ2VNb2RlVHlwZSk7Ci0KICAgICBzdGF0aWMgZmxv
YXQgY2FsY3VsYXRlU3RkRGV2aWF0aW9uKGZsb2F0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKTsKQEAgLTcxLDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
YXRpYyB2b2lkIHBsYXRmb3JtQXBwbHlXb3JrZXIoUGxhdGZvcm1BcHBseVBhcmFtZXRlcnMqKTsK
IAotICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlciosIGZsb2F0LCBmbG9hdCwgRWRnZU1vZGVUeXBl
KTsKKyAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXIqLCBmbG9hdCwgZmxvYXQpOwogCiAgICAgc3Rh
dGljIGlubGluZSB2b2lkIGtlcm5lbFBvc2l0aW9uKGludCBib3hCbHVyLCB1bnNpZ25lZCYgc3Rk
LCBpbnQmIGRMZWZ0LCBpbnQmIGRSaWdodCk7CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBs
eShVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRt
cFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwg
SW50U2l6ZSYgcGFpbnRTaXplKTsKQEAgLTgwLDcgKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIGZs
b2F0IG1fc3RkWDsKICAgICBmbG9hdCBtX3N0ZFk7Ci0gICAgRWRnZU1vZGVUeXBlIG1fZWRnZU1v
ZGU7CiB9OwogCiBpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6a2VybmVsUG9zaXRpb24oaW50
IGJveEJsdXIsIHVuc2lnbmVkJiBzdGQsIGludCYgZExlZnQsIGludCYgZFJpZ2h0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0MmIxYzZh
Li4xN2E0NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtODEsOSArODEsNiBAQCBzdGF0aWMgY29uc3QgZ2ludDY0IGdQZXJjZW50TWF4
ID0gR1NUX0ZPUk1BVF9QRVJDRU5UX01BWDsKIHN0YXRpYyBjb25zdCBjaGFyKiBnUGxheWJpbk5h
bWUgPSAicGxheWJpbjIiOwogc3RhdGljIGNvbnN0IGdpbnQ2NCBnUGVyY2VudE1heCA9IDEwMDsK
ICNlbmRpZgotLy8gTWF4IGludGVydmFsIGluIHNlY29uZHMgdG8gc3RheSBpbiB0aGUgUkVBRFkg
c3RhdGUgb24gbWFudWFsCi0vLyBzdGF0ZSBjaGFuZ2UgcmVxdWVzdHMuCi1zdGF0aWMgY29uc3Qg
Z3VpbnQgZ1JlYWR5U3RhdGVUaW1lckludGVydmFsID0gNjA7CiAKIEdTVF9ERUJVR19DQVRFR09S
WV9FWFRFUk4od2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVG
QVVMVCB3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnCkBAIC0xNjEsMTQgKzE1OCw2IEBAIHN0YXRp
YyBHc3RGbG93UmV0dXJuIG1lZGlhUGxheWVyUHJpdmF0ZU5ld1RleHRTYW1wbGVDYWxsYmFjayhH
T2JqZWN0KiwgTWVkaWFQbGF5CiB9CiAjZW5kaWYKIAotc3RhdGljIGdib29sZWFuIG1lZGlhUGxh
eWVyUHJpdmF0ZVJlYWR5U3RhdGVUaW1lb3V0Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKiBwbGF5ZXIpCi17Ci0gICAgLy8gVGhpcyBpcyB0aGUgY2FsbGJhY2sgb2YgdGhlIHRp
bWVvdXQgc291cmNlIGNyZWF0ZWQgaW4gOjpjaGFuZ2VQaXBlbGluZVN0YXRlLgotICAgIC8vIFJl
c2V0IHBpcGVsaW5lIGlmIHdlIGFyZSBzaXR0aW5nIG9uIFJFQURZIHN0YXRlIHdoZW4gdGltZW91
dCBpcyByZWFjaGVkCi0gICAgcGxheWVyLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9O
VUxMKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJp
dmF0ZVBsdWdpbkluc3RhbGxlclJlc3VsdEZ1bmN0aW9uKEdzdEluc3RhbGxQbHVnaW5zUmV0dXJu
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKiBwbGF5ZXIgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcio+KHVzZXJEYXRhKTsKQEAgLTI2OCw3ICsyNTcsNiBAQCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVy
KQogICAgICwgbV9hdWRpb1RpbWVySGFuZGxlcigwKQogICAgICwgbV90ZXh0VGltZXJIYW5kbGVy
KDApCiAgICAgLCBtX3ZpZGVvVGltZXJIYW5kbGVyKDApCi0gICAgLCBtX3JlYWR5VGltZXJIYW5k
bGVyKDApCiAgICAgLCBtX3dlYmtpdEF1ZGlvU2luaygwKQogICAgICwgbV90b3RhbEJ5dGVzKC0x
KQogICAgICwgbV9wcmVzZXJ2ZXNQaXRjaChmYWxzZSkKQEAgLTI5NSw5ICsyODMsNiBAQCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQog
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QobV9h
dXRvQXVkaW9TaW5rLmdldCgpKSwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50
ZXI+KHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAo
bV9yZWFkeVRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fcmVhZHlUaW1l
ckhhbmRsZXIpOwotCiAgICAgaWYgKG1fcGxheUJpbikgewogICAgICAgICBHUmVmUHRyPEdzdEJ1
cz4gYnVzID0gd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5n
ZXQoKSkpOwogICAgICAgICBBU1NFUlQoYnVzKTsKQEAgLTM4Miw3ICszNjcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29tbWl0TG9hZCgpCiAKICAgICAvLyBHU3RyZWFt
ZXIgbmVlZHMgdG8gaGF2ZSB0aGUgcGlwZWxpbmUgc2V0IHRvIGEgcGF1c2VkIHN0YXRlIHRvCiAg
ICAgLy8gc3RhcnQgcHJvdmlkaW5nIGFueXRoaW5nIHVzZWZ1bC4KLSAgICBjaGFuZ2VQaXBlbGlu
ZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3Bs
YXlCaW4uZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOwogCiAgICAgc2V0RG93bmxvYWRCdWZmZXJp
bmcoKTsKICAgICB1cGRhdGVTdGF0ZXMoKTsKQEAgLTQyMyw3ICs0MDgsNyBAQCBmbG9hdCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAogCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0
ZSBuZXdTdGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wbGF5QmluKTsKKyAgICBBU1NFUlQobmV3U3Rh
dGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcgfHwgbmV3U3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCk7
CiAKICAgICBHc3RTdGF0ZSBjdXJyZW50U3RhdGU7CiAgICAgR3N0U3RhdGUgcGVuZGluZzsKQEAg
LTQ0NCwxOCArNDI5LDYgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNoYW5n
ZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCiAgICAgICAgIGxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6OkVtcHR5KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQotICAg
IC8vIENyZWF0ZSBhIHRpbWVyIHdoZW4gZW50ZXJpbmcgdGhlIFJFQURZIHN0YXRlIHNvIHRoYXQg
d2UgY2FuIGZyZWUgcmVzb3VyY2VzCi0gICAgLy8gaWYgd2Ugc3RheSBmb3IgdG9vIGxvbmcgb24g
UkVBRFkuCi0gICAgLy8gQWxzbyBsZXRzIHJlbW92ZSB0aGUgdGltZXIgaWYgd2UgcmVxdWVzdCBh
IHN0YXRlIGNoYW5nZSBmb3IgYW55IHN0YXRlIG90aGVyIHRoYW4gUkVBRFkuCi0gICAgLy8gU2Vl
IGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzM1NAotICAg
IGlmIChuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkgJiYgIW1fcmVhZHlUaW1lckhhbmRsZXIp
IHsKLSAgICAgICAgbV9yZWFkeVRpbWVySGFuZGxlciA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyhn
UmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1l
ZGlhUGxheWVyUHJpdmF0ZVJlYWR5U3RhdGVUaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICB9
IGVsc2UgaWYgKG5ld1N0YXRlICE9IEdTVF9TVEFURV9SRUFEWSAmJiBtX3JlYWR5VGltZXJIYW5k
bGVyKSB7Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3JlYWR5VGltZXJIYW5kbGVyKTsKLSAg
ICAgICAgbV9yZWFkeVRpbWVySGFuZGxlciA9IDA7Ci0gICAgfQotCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTc1NSw3ICs3MjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c2V0UmF0ZShmbG9hdCByYXRlKQogICAgIG1fY2hhbmdpbmdSYXRlID0gdHJ1ZTsKIAogICAg
IGlmICghcmF0ZSkgewotICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVT
RUQpOworICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCBHU1Rf
U1RBVEVfUEFVU0VEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTY1LDggKzkzOCw4
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQbHVnaW5JbnN0YWxs
ZXJSZXN1bHQoR3N0SW5zdGFsbFBsdWdpbnNSCiB7CiAgICAgbV9taXNzaW5nUGx1Z2lucyA9IGZh
bHNlOwogICAgIGlmIChyZXN1bHQgPT0gR1NUX0lOU1RBTExfUExVR0lOU19TVUNDRVNTKSB7Ci0g
ICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKLSAgICAgICAgY2hh
bmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICAgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX1BBVVNFRCk7CiAg
ICAgfQogfQogCkBAIC0xMTcxLDcgKzExNDQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y2FuY2VsTG9hZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BsYXlC
aW4pCi0gICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKKyAgICAg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX05VTEwp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXN5bmNTdGF0ZUNoYW5n
ZURvbmUoKQpAQCAtMTIzOCwxMiArMTIxMSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHU1RfU1RB
VEVfUkVBRFk6Ci0gICAgICAgICAgICAvLyBEbyBub3QgY2hhbmdlIG5ldHdvcmsvcmVhZHkgc3Rh
dGVzIGlmIG9uIEVPUyBhbmQgc3RhdGUgY2hhbmdlZCB0byBSRUFEWSB0byBhdm9pZAotICAgICAg
ICAgICAgLy8gcmVjcmVhdGluZyB0aGUgcGxheWVyIG9uIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAg
ICAgICAgICBpZiAoIW1faXNFbmRSZWFjaGVkKSB7Ci0gICAgICAgICAgICAgICAgbV9yZWFkeVN0
YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsKLSAgICAgICAgICAgICAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpFbXB0eTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7CisgICAgICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpFbXB0eTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEdTVF9TVEFURV9QQVVTRUQ6CiAgICAgICAgIGNhc2UgR1NUX1NUQVRFX1BM
QVlJTkc6CkBAIC0xMjg0LDE0ICsxMjUzLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogCiAgICAgICAgICAgICBpZiAoZGlkQnVmZmVyaW5nICYm
ICFtX2J1ZmZlcmluZyAmJiAhbV9wYXVzZWQpIHsKICAgICAgICAgICAgICAgICBMT0dfTUVESUFf
TUVTU0FHRSgiW0J1ZmZlcmluZ10gUmVzdGFydGluZyBwbGF5YmFjay4iKTsKLSAgICAgICAgICAg
ICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgICAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCBHU1RfU1RBVEVfUExB
WUlORyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gR1NUX1NU
QVRFX1BMQVlJTkcpIHsKICAgICAgICAgICAgIG1fcGF1c2VkID0gZmFsc2U7CiAKICAgICAgICAg
ICAgIGlmIChtX2J1ZmZlcmluZyAmJiAhaXNMaXZlU3RyZWFtKCkpIHsKICAgICAgICAgICAgICAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiW0J1ZmZlcmluZ10gUGF1c2luZyBzdHJlYW0gZm9yIGJ1ZmZl
cmluZy4iKTsKLSAgICAgICAgICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9Q
QVVTRUQpOworICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4u
Z2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKQEAgLTEzMTQsOCArMTI4Myw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogCiAgICAgICAgIC8v
IEEgbGl2ZSBzdHJlYW0gd2FzIHBhdXNlZCwgcmVzZXQgdGhlIHBpcGVsaW5lLgogICAgICAgICBp
ZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCAmJiBwZW5kaW5nID09IEdTVF9TVEFURV9QTEFZ
SU5HICYmIGlzTGl2ZVN0cmVhbSgpKSB7Ci0gICAgICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRl
KEdTVF9TVEFURV9SRUFEWSk7Ci0gICAgICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9T
VEFURV9QTEFZSU5HKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlC
aW4uZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BsYXlCaW4uZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJyZWFrOwpAQCAtMTMzOSw3ICsxMzA4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNl
OwogCiAgICAgICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAgICAgICBjaGFuZ2VQaXBlbGluZVN0
YXRlKEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZShtX3BsYXlCaW4uZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsKIAogICAgICAgICBtX25ldHdv
cmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICBicmVhazsKQEAgLTE0NDQs
NyArMTQxMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExv
Y2F0aW9uKCkKIAogICAgICAgICAgICAgLy8gUmVzZXQgcGlwZWxpbmUgc3RhdGUuCiAgICAgICAg
ICAgICBtX3Jlc2V0UGlwZWxpbmUgPSB0cnVlOwotICAgICAgICAgICAgY2hhbmdlUGlwZWxpbmVT
dGF0ZShHU1RfU1RBVEVfUkVBRFkpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX1JFQURZKTsKIAogICAgICAgICAgICAgR3N0U3Rh
dGUgc3RhdGU7CiAgICAgICAgICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLmdl
dCgpLCAmc3RhdGUsIDAsIDApOwpAQCAtMTQ1Miw3ICsxNDIxLDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24oKQogICAgICAgICAgICAgICAgIC8v
IFNldCB0aGUgbmV3IHVyaSBhbmQgc3RhcnQgcGxheWluZy4KICAgICAgICAgICAgICAgICBnX29i
amVjdF9zZXQobV9wbGF5QmluLmdldCgpLCAidXJpIiwgbmV3VXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIE5VTEwpOwogICAgICAgICAgICAgICAgIG1fdXJsID0gbmV3VXJsOwotICAgICAgICAg
ICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BMQVlJTkcpOworICAgICAgICAg
ICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksIEdTVF9TVEFURV9Q
TEFZSU5HKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlCkBAIC0xNDkwLDcgKzE0NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKIAogICAgIGlmICghbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCktPm1lZGlhUGxheWVySXNMb29waW5nKCkpIHsKICAgICAgICAgbV9wYXVzZWQgPSB0cnVl
OwotICAgICAgICBjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9SRUFEWSk7CisgICAgICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsK
ICAgICAgICAgbV9kb3dubG9hZEZpbmlzaGVkID0gZmFsc2U7CiAgICAgfQogfQpAQCAtMTUzNSwx
MyArMTUwNCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFp
bGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IpCiAgICAgICAgIG1fcmVhZHlTdGF0
ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKICAgICAgICAgbV9wbGF5ZXItPnJlYWR5U3Rh
dGVDaGFuZ2VkKCk7CiAgICAgfQotCi0gICAgLy8gTG9hZGluZyBmYWlsZWQsIGZvcmNlIHJlc2V0
IHBpcGVsaW5lIGFuZCByZW1vdmUgcmVhZHkgdGltZXIuCi0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0
YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgIGlmIChtX3JlYWR5VGlt
ZXJIYW5kbGVyKSB7Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3JlYWR5VGltZXJIYW5kbGVy
KTsKLSAgICAgICAgbV9yZWFkeVRpbWVySGFuZGxlciA9IDA7Ci0gICAgfQogfQogCiBzdGF0aWMg
SGFzaFNldDxTdHJpbmc+IG1pbWVUeXBlQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGQ3ZjZlZDYuLjI5YjJhYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTEwNyw4ICsxMDcsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKTsKIAotICAg
IGJvb2wgY2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSk7Ci0KIHByaXZhdGU6CiAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKik7CiAKQEAgLTEyOSw2ICsxMjcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXN5bmNTdGF0ZUNoYW5nZURvbmUoKTsKIAogICAgIHZv
aWQgY3JlYXRlR1NUUGxheUJpbigpOworICAgIGJvb2wgY2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RT
dGF0ZSk7CiAKICAgICBib29sIGxvYWROZXh0TG9jYXRpb24oKTsKICAgICB2b2lkIG1lZGlhTG9j
YXRpb25DaGFuZ2VkKEdzdE1lc3NhZ2UqKTsKQEAgLTE3Nyw3ICsxNzYsNiBAQCBwcml2YXRlOgog
ICAgIGd1aW50IG1fYXVkaW9UaW1lckhhbmRsZXI7CiAgICAgZ3VpbnQgbV90ZXh0VGltZXJIYW5k
bGVyOwogICAgIGd1aW50IG1fdmlkZW9UaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV9yZWFkeVRp
bWVySGFuZGxlcjsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fd2Via2l0QXVkaW9TaW5rOwog
ICAgIG11dGFibGUgbG9uZyBtX3RvdGFsQnl0ZXM7CiAgICAgS1VSTCBtX3VybDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCAw
MGU5NWYyLi5kOWQ0YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03Niw3ICs3Niw2IEBAIHN0YXRpYyBpbnQgZ3JlYXRl
c3RDb21tb25EaXZpc29yKGludCBhLCBpbnQgYikKIHN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJp
dmF0ZVZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0KiwgR1BhcmFtU3BlYyosIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqIHBsYXllcikKIHsKICAgICAvLyBUaGlzIGlzIGNhbGxl
ZCB3aGVuIG1fdm9sdW1lRWxlbWVudCByZWNlaXZlcyB0aGUgbm90aWZ5Ojp2b2x1bWUgc2lnbmFs
LgotICAgIExPR19NRURJQV9NRVNTQUdFKCJWb2x1bWUgY2hhbmdlZCB0bzogJWYiLCBwbGF5ZXIt
PnZvbHVtZSgpKTsKICAgICBwbGF5ZXItPnZvbHVtZUNoYW5nZWQoKTsKIH0KIApAQCAtMjM1LDcg
KzIzNCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0Vm9sdW1l
KGZsb2F0IHZvbHVtZSkKICAgICBpZiAoIW1fdm9sdW1lRWxlbWVudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIlNldHRpbmcgdm9sdW1lOiAlZiIsIHZvbHVtZSk7
CiAgICAgZ3N0X3N0cmVhbV92b2x1bWVfc2V0X3ZvbHVtZShtX3ZvbHVtZUVsZW1lbnQuZ2V0KCks
IEdTVF9TVFJFQU1fVk9MVU1FX0ZPUk1BVF9DVUJJQywgc3RhdGljX2Nhc3Q8ZG91YmxlPih2b2x1
bWUpKTsKIH0KIApAQCAtNjIwLDE2ICs2MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnNldFN0cmVhbVZvbHVtZUVsZW1lbnQoR3N0U3RyZWFtVm9sdW1lKiB2bwog
ICAgIEFTU0VSVCghbV92b2x1bWVFbGVtZW50KTsKICAgICBtX3ZvbHVtZUVsZW1lbnQgPSB2b2x1
bWU7CiAKLSAgICAvLyBXZSBkb24ndCBzZXQgdGhlIGluaXRpYWwgdm9sdW1lIGJlY2F1c2Ugd2Ug
dHJ1c3QgdGhlIHNpbmsgdG8ga2VlcCBpdCBmb3IgdXMuIFNlZQotICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5NzQgZm9yIG1vcmUgaW5mb3JtYXRpb24u
Ci0gICAgaWYgKCFtX3BsYXllci0+cGxhdGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQo
KSkgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2V0dGluZyBzdHJlYW0gdm9sdW1lIHRv
ICVmIiwgbV9wbGF5ZXItPnZvbHVtZSgpKTsKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fdm9sdW1l
RWxlbWVudC5nZXQoKSwgInZvbHVtZSIsIG1fcGxheWVyLT52b2x1bWUoKSwgTlVMTCk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJOb3Qgc2V0dGluZyBzdHJlYW0gdm9s
dW1lLCB0cnVzdGluZyBzeXN0ZW0gb25lIik7Ci0KLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2V0
dGluZyBzdHJlYW0gbXV0ZWQgJWQiLCAgbV9wbGF5ZXItPm11dGVkKCkpOwotICAgIGdfb2JqZWN0
X3NldChtX3ZvbHVtZUVsZW1lbnQuZ2V0KCksICJtdXRlIiwgbV9wbGF5ZXItPm11dGVkKCksIE5V
TEwpOworICAgIGdfb2JqZWN0X3NldChtX3ZvbHVtZUVsZW1lbnQuZ2V0KCksICJtdXRlIiwgbV9w
bGF5ZXItPm11dGVkKCksICJ2b2x1bWUiLCBtX3BsYXllci0+dm9sdW1lKCksIE5VTEwpOwogCiAg
ICAgbV92b2x1bWVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3ZvbHVtZUVsZW1l
bnQuZ2V0KCksICJub3RpZnk6OnZvbHVtZSIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRl
Vm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgbV9tdXRlU2lnbmFsSGFuZGxlciA9
IGdfc2lnbmFsX2Nvbm5lY3QobV92b2x1bWVFbGVtZW50LmdldCgpLCAibm90aWZ5OjptdXRlIiwg
R19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVNdXRlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQ
YWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAKaW5kZXggN2U5YjMwOS4uYjY3OWNl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBo
UGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcApAQCAtNDYsNiArNDYsOSBA
QCBib29sIEdseXBoUGFnZTo6ZmlsbCh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwg
VUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYgogICAgIFNhdmVEQyhkYyk7CiAgICAgU2VsZWN0T2Jq
ZWN0KGRjLCBmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7CiAKKyAgICBURVhUTUVU
UklDIHRtOworICAgIEdldFRleHRNZXRyaWNzKGRjLCAmdG0pOworCiAgICAgV09SRCBsb2NhbEds
eXBoQnVmZmVyW0dseXBoUGFnZTo6c2l6ZSAqIDJdOwogICAgIERXT1JEIHJlc3VsdCA9IEdldEds
eXBoSW5kaWNlcyhkYywgYnVmZmVyLCBidWZmZXJMZW5ndGgsIGxvY2FsR2x5cGhCdWZmZXIsIDAp
OwogICAgIGJvb2wgc3VjY2VzcyA9IHJlc3VsdCAhPSBHRElfRVJST1IgJiYgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJlc3VsdCkgPT0gYnVmZmVyTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCmluZGV4IDI5NWZhZWEuLjg2
YjY2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRT
dHJpbmdzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVk
U3RyaW5nc0d0ay5jcHAKQEAgLTgwMywxMSArODAzLDYgQEAgU3RyaW5nIHRleHRUcmFja09mZk1l
bnVJdGVtVGV4dCgpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoQ18oIk9mZiIsICJNZW51
IGl0ZW0gbGFiZWwgZm9yIHRoZSB0cmFjayB0aGF0IHJlcHJlc2VudHMgZGlzYWJsaW5nIGNsb3Nl
ZCBjYXB0aW9ucyIpKTsKIH0KIAotU3RyaW5nIHRleHRUcmFja0F1dG9tYXRpY01lbnVJdGVtVGV4
dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoQ18oIk1lbnUgaXRlbSBsYWJlbCBm
b3IgdGhlIGF1dG9tYXRpY2FsbHkgY2hvb3NlbiB0cmFjayIsICJBdXRvIikpOwotfQotCiBTdHJp
bmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQogewogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KENfKCJObyBsYWJlbCIsICJNZW51IGl0ZW0gbGFiZWwgZm9yIGEgY2xvc2VkIGNhcHRpb25zIHRy
YWNrIHRoYXQgaGFzIG5vIG90aGVyIG5hbWUiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9L
VVJMTWFjLm1tCmluZGV4IDkyMzc1YzcuLmZkNGZjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tCkBAIC00OSw3ICs0OSw3IEBAIEtVUkw6Om9wZXJhdG9yIE5TVVJMICoo
KSBjb25zdAogewogICAgIC8vIENyZWF0aW5nIGEgdG9sbC1mcmVlIGJyaWRnZWQgQ0ZVUkwsIGJl
Y2F1c2UgYSByZWFsIE5TVVJMIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5n
LgogICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZV
UkxHZXRCeXRlcygpLgotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVDRlVSTCgp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlVSTCgpLmxl
YWtSZWYoKSk7CiB9CiAKIFJldGFpblB0cjxDRlVSTFJlZj4gS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBj
b25zdApAQCAtNTgsOCArNTgsMTAgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBLVVJMOjpjcmVhdGVD
RlVSTCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGlzRW1wdHkoKSkgewot
ICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQg
Q0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxs
IHZhbHVlcy4KLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGFkb3B0
TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXSkuZ2V0KCkpOworICAgICAgICAv
LyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8K
KyAgICAgICAgLy8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBu
dWxsIHZhbHVlcy4KKyAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBlbXB0eU5TVVJMID0gYWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdKTsKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGVtcHR5TlNVUkwuZ2V0KCkpOwogICAgIH0KIAogICAg
IFVSTENoYXJCdWZmZXIgYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQppbmRleCA2YzFlMWNjLi5jYzU3NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMTg3LDI1ICsxODcsMjUgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVw
bGFjZU9wdGlvbiBzbWFydFJlcGwKICAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJT
bWFydFBhc3RlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAKLXN0YXRpYyBsb25n
IHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQor
c3RhdGljIGxvbmcgd3JpdGVVUkxGb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZVN0ciwgRnJhbWUqIGZyYW1lKQogewogICAgIGxvbmcgbmV3Q2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5
cGVzLCBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgCi0gICAgQVNTRVJUKCFwYXN0ZWJvYXJkVVJMLnVy
bC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghdXJsLmlzRW1wdHkoKSk7CiAgICAgCi0gICAgTlNV
UkwgKmNvY29hVVJMID0gcGFzdGVib2FyZFVSTC51cmw7Ci0gICAgTlNTdHJpbmcgKnVzZXJWaXNp
YmxlU3RyaW5nID0gcGFzdGVib2FyZFVSTC51c2VyVmlzaWJsZUZvcm07Ci0gICAgTlNTdHJpbmcg
KnRpdGxlID0gKE5TU3RyaW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKLSAgICBpZiAoIVt0aXRs
ZSBsZW5ndGhdKSB7CisgICAgTlNVUkwgKmNvY29hVVJMID0gdXJsOworICAgIE5TU3RyaW5nICp1
c2VyVmlzaWJsZVN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+dXNlclZpc2libGVT
dHJpbmcoY29jb2FVUkwpOworICAgIAorICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyop
dGl0bGVTdHI7CisgICAgaWYgKFt0aXRsZSBsZW5ndGhdID09IDApIHsKICAgICAgICAgdGl0bGUg
PSBbW2NvY29hVVJMIHBhdGhdIGxhc3RQYXRoQ29tcG9uZW50XTsKLSAgICAgICAgaWYgKCFbdGl0
bGUgbGVuZ3RoXSkKKyAgICAgICAgaWYgKFt0aXRsZSBsZW5ndGhdID09IDApCiAgICAgICAgICAg
ICB0aXRsZSA9IHVzZXJWaXNpYmxlU3RyaW5nOwogICAgIH0KLQogICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHBhdGhzOwogICAgICAgICBwYXRocy5hcHBlbmQoW2NvY29hVVJMIGFic29sdXRlU3RyaW5n
XSk7Ci0gICAgICAgIHBhdGhzLmFwcGVuZChwYXN0ZWJvYXJkVVJMLnRpdGxlLnN0cmlwV2hpdGVT
cGFjZSgpKTsKKyAgICAgICAgcGF0aHMuYXBwZW5kKHRpdGxlU3RyLnN0cmlwV2hpdGVTcGFjZSgp
KTsKICAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnNldFBhdGhuYW1lc0ZvclR5cGUocGF0aHMsIFdlYlVSTHNXaXRoVGl0
bGVzUGJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOwogICAgIH0KICAgICBpZiAodHlwZXMuY29u
dGFpbnMoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSkpKQpAQCAtMjIwLDQ1ICsyMjAsNjUgQEAgc3Rh
dGljIGxvbmcgd3JpdGVVUkxGb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2EKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAgICAg
Ci12b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRV
UkwpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZVN0ciwgRnJhbWUqIGZyYW1lKQogewotICAgIG1fY2hhbmdlQ291bnQgPSB3cml0
ZVVSTEZvclR5cGVzKHdyaXRhYmxlVHlwZXNGb3JVUkwoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZFVSTCk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXMod3JpdGFi
bGVUeXBlc0ZvclVSTCgpLCBtX3Bhc3RlYm9hcmROYW1lLCB1cmwsIHRpdGxlU3RyLCBmcmFtZSk7
CiB9CiAKLXN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJk
SW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKK3N0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBl
ckZvckltYWdlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgTlNVUkwgKnVybCkKIHsKLSAgICBO
U0RhdGEgKmRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBSZXNvdXJjZUJ1ZmZlciogY29yZURhdGEgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKTsKKyAgICBOU0RhdGEgKmRhdGEgPSBbW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6
Y29yZURhdGEtPmRhdGEoKSBsZW5ndGg6Y29yZURhdGEtPnNpemUoKV0gYXV0b3JlbGVhc2VdOwog
ICAgIE5TRmlsZVdyYXBwZXIgKndyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0gYXV0b3JlbGVhc2VdOwotICAgIFtkYXRhIHJl
bGVhc2VdOwotICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVu
YW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VNSU1FVHlwZSldOworICAgIFN0cmluZyBjb3JlTUlNRVR5cGUgPSByZXNvdXJjZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpOworICAgIE5TU3RyaW5nICpNSU1FVHlwZSA9IG5pbDsKKyAg
ICBpZiAoIWNvcmVNSU1FVHlwZS5pc051bGwoKSkKKyAgICAgICAgTUlNRVR5cGUgPSBjb3JlTUlN
RVR5cGU7CisgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUodXJsLCBNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyOwogfQog
Ci1zdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFw
cGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBsb25nJiBuZXdDaGFu
Z2VDb3VudCkKK3N0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5T
RmlsZVdyYXBwZXIqIHdyYXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcm
IG5ld0NoYW5nZUNvdW50KQogewogICAgIE5TVGV4dEF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBb
W05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6d3JhcHBlcl07Cisg
ICAgCiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbTlNBdHRyaWJ1dGVkU3RyaW5n
IGF0dHJpYnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2htZW50XTsKICAgICBbYXR0YWNo
bWVudCByZWxlYXNlXTsKLQorICAgIAogICAgIE5TRGF0YSAqUlRGRERhdGEgPSBbc3RyaW5nIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bmlsXTsKLSAgICBpZiAoIVJURkREYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBu
ZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoUlRGRERhdGEpLmdl
dCgpLCBOU1JURkRQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgaWYgKFJURkREYXRh
KQorICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEo
UlRGRERhdGEpLmdldCgpLCBOU1JURkRQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSk7CiB9CiAK
LXZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIE5TRGF0YSAqaW1hZ2VEYXRhID0g
W3Bhc3RlYm9hcmRJbWFnZS5pbWFnZS0+Z2V0TlNJbWFnZSgpIFRJRkZSZXByZXNlbnRhdGlvbl07
Ci0gICAgaWYgKCFpbWFnZURhdGEpCisgICAgQVNTRVJUKG5vZGUpOworCisgICAgaWYgKCEobm9k
ZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2h5IGNhbiB3ZSBhc3NlcnQgdGhpcz8gSXQgZG9lc24n
dCBzZWVtIGxpa2UgaXQncyBndWFyYW50ZWVkLgotICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VNSU1FVHlwZSkpOworICAgIE5TVVJMICpjb2NvYVVSTCA9IHVybDsKKyAgICBBU1NFUlQoY29j
b2FVUkwpOwogCi0gICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXMod3JpdGFibGVU
eXBlc0ZvckltYWdlKCksIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwpOwor
ICAgIFJlbmRlckltYWdlKiByZW5kZXJlciA9IHRvUmVuZGVySW1hZ2Uobm9kZS0+cmVuZGVyZXIo
KSk7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdl
KCk7CisgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBl
cyh3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29jb2FVUkwsIG5z
U3RyaW5nTmlsSWZFbXB0eSh0aXRsZSksIG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKSk7CisgICAg
CisgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBOU0RhdGEgKmltYWdl
RGF0YSA9IChOU0RhdGEgKilbaW1hZ2UtPmdldE5TSW1hZ2UoKSBUSUZGUmVwcmVzZW50YXRpb25d
OworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm47CiAgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoaW1hZ2VEYXRhKSwgTlNUSUZGUGJvYXJk
VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFj
aG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZEltYWdlKSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9j
aGFuZ2VDb3VudCk7CisKKyAgICBTdHJpbmcgTUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOworICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlUmVzb3VyY2VNSU1FVHlwZShNSU1FVHlwZSkpOworCisgICAgd3JpdGVGaWxlV3JhcHBl
ckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXJGb3JJbWFnZShjYWNoZWRJbWFnZSwgY29jb2FV
UkwpLCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KTsKIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVBhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCmluZGV4
IGI4YWE2ZjIuLmM3MjBjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVOU1VSTEV4dHJhcy5tbQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwg
Qk9PTCBlbmNvCiAgICAgCiAgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6
QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCkgewogICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJp
bmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFz
ZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMoTlVMTCwgKENGU3Ry
aW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAgICAgIHN1YnN0cmluZyA9IEhhcmRB
dXRvcmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMoTlVM
TCwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CiAgICAgICAgIGlmIChzdWJz
dHJpbmcpIHsKICAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKICAgICAgICAgICAgIHJh
bmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKQEAgLTU2NCw5ICs1NjQsOSBA
QCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICAg
ICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24g
aXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAogICAgICAg
ICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlm
ZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCiAgICAgICAg
IC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCi0gICAgICAgIHJlc3Vs
dCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVM
TCwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoQ0ZVUkxSZWYpYmFzZVVS
TCwgWUVTKSk7CisgICAgICAgIHJlc3VsdCA9IEhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgKENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAg
ICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMoTlVMTCwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRp
bjEsIChDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IEhhcmRB
dXRvcmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVzLCBs
ZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVT
KSk7CiAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAIiJdOwogICAgICAgICAgICAgICAgIApAQCAtODM4LDcgKzgzOCw3IEBAIE5TU3RyaW5nICp1
c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQogICAgIAogICAgIHJlc3VsdCA9IG1hcEhvc3RO
YW1lcyhyZXN1bHQsICFuZWVkc0hvc3ROYW1lRGVjb2RpbmcpOwogICAgIHJlc3VsdCA9IFtyZXN1
bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENG
QnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygo
Q0ZTdHJpbmdSZWYpcmVzdWx0KSk7CisgICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVT
dHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKENGU3RyaW5nUmVmKXJlc3VsdCkpOwog
fQogCiBCT09MIGlzVXNlclZpc2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IGI0MjIzYjMuLjM2M2M3ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtNDAsNyArNDAsNiBAQAog
I2ltcG9ydCAiU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2lt
cG9ydCAiV2ViQ29yZVZpZXcuaCIKLSNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBOU1dpbmRvdyAoV2ViV2luZG93RGV0YWlscykKQEAg
LTE3MSw3ICsxNzAsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiAKICAgICAvLyBUYWtlIGEgcmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0LCBiZWNhdXNl
IHNlbmRpbmcgbWVzc2FnZXMgdG8gb3V0ZXJWaWV3IGNhbiBpbnZva2UgYXJiaXRyYXJ5CiAgICAg
Ly8gY29kZSwgd2hpY2ggY2FuIGRlcmVmIGl0LgotICAgIFJlZjxXaWRnZXQ+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZlB0cjxXaWRnZXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBOU1Jl
Y3QgdmlzaWJsZVJlY3QgPSBbb3V0ZXJWaWV3IHZpc2libGVSZWN0XTsKICAgICBOU1JlY3QgZiA9
IHJlY3Q7CkBAIC0yMTMsNyArMjEyLDcgQEAgdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKIAogICAgIC8vIFRha2UgYSByZWZlcmVuY2UgdG8g
dGhpcyBXaWRnZXQsIGJlY2F1c2Ugc2VuZGluZyBtZXNzYWdlcyB0byB0aGUgdmlld3MgY2FuIGlu
dm9rZSBhcmJpdHJhcnkKICAgICAvLyBjb2RlLCB3aGljaCBjYW4gZGVyZWYgaXQuCi0gICAgUmVm
PFdpZGdldD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPFdpZGdldD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKIAogICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjdXJyZW50Q29udGV4dCA9IFtOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF07CiAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09
IFtbdmlldyB3aW5kb3ddIGdyYXBoaWNzQ29udGV4dF0gfHwgIVtjdXJyZW50Q29udGV4dCBpc0Ry
YXdpbmdUb1NjcmVlbl0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCBkYjc1ZmJkLi4yZDhhZjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI0Niw3
ICsyNDUsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZG9TdGFydCgpCiAgICAgaWYgKG1f
YXN5bmMpCiAgICAgICAgIGdldFNpemVGb3JOZXh0KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFJl
ZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOyAvLyBnZXRTaXplRm9yTmV4dCBj
YWxscyB0aGUgY2xpZW50CisgICAgICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3Rl
Y3QodGhpcyk7IC8vIGdldFNpemVGb3JOZXh0IGNhbGxzIHRoZSBjbGllbnQKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSAmJiAhbV9hYm9y
dGVkICYmICFtX2Vycm9yQ29kZTsgKytpKQogICAgICAgICAgICAgZ2V0U2l6ZUZvck5leHQoKTsK
ICAgICAgICAgbm90aWZ5UmVzcG9uc2UoKTsKQEAgLTI2MSw3ICsyNjAsNyBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6Z2V0U2l6ZUZvck5leHQoKQogCiAgICAgICAgIC8vIFN0YXJ0IHJlYWRp
bmcgaWYgaW4gYXN5bmNocm9ub3VzIG1vZGUuCiAgICAgICAgIGlmIChtX2FzeW5jKSB7Ci0gICAg
ICAgICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QodGhpcyk7CiAgICAgICAgICAg
ICBub3RpZnlSZXNwb25zZSgpOwogICAgICAgICAgICAgbV9idWZmZXIucmVzaXplKGJ1ZmZlclNp
emUpOwogICAgICAgICAgICAgcmVhZEFzeW5jKCk7CkBAIC0zNDYsNyArMzQ1LDcgQEAgdm9pZCBC
bG9iUmVzb3VyY2VIYW5kbGU6OnNlZWsoKQogaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZFN5
bmMoY2hhciogYnVmLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9hc3luYyk7Ci0gICAg
UmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPEJsb2JS
ZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCh0aGlzKTsKIAogICAgIGludCBvZmZzZXQgPSAwOwogICAg
IGludCByZW1haW5pbmcgPSBsZW5ndGg7CkBAIC00NjgsNyArNDY3LDcgQEAgdm9pZCBCbG9iUmVz
b3VyY2VIYW5kbGU6OnJlYWRBc3luYygpCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZERh
dGFBc3luYyhjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMp
OwotICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0
cjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QodGhpcyk7CiAKICAgICBsb25nIGxvbmcgYnl0
ZXNUb1JlYWQgPSBpdGVtLmxlbmd0aCAtIG1fY3VycmVudEl0ZW1SZWFkU2l6ZTsKICAgICBpZiAo
Ynl0ZXNUb1JlYWQgPiBtX3RvdGFsUmVtYWluaW5nU2l6ZSkKQEAgLTUyMCw3ICs1MTksNyBAQCB2
b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZGlkUmVhZChpbnQgYnl0ZXNSZWFkKQogdm9pZCBCbG9i
UmVzb3VyY2VIYW5kbGU6OmNvbnN1bWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1Jl
YWQpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwotICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3Qo
dGhpcyk7CiAKICAgICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtPSBieXRlc1JlYWQ7CiAKQEAgLTU1
MCw3ICs1NDksNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6Y29uc3VtZURhdGEoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpmYWls
ZWQoaW50IGVycm9yQ29kZSkKIHsKICAgICBBU1NFUlQobV9hc3luYyk7Ci0gICAgUmVmPEJsb2JS
ZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhh
bmRsZT4gcHJvdGVjdCh0aGlzKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgY2xpZW50LgogICAgIG5v
dGlmeUZhaWwoZXJyb3JDb2RlKTsKQEAgLTU2OCw3ICs1NjcsNyBAQCB2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9l
cnJvckNvZGUpIHsKLSAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhp
cyk7CisgICAgICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QodGhpcyk7CiAg
ICAgICAgIG5vdGlmeVJlc3BvbnNlT25FcnJvcigpOwogICAgICAgICBub3RpZnlGaW5pc2goKTsK
ICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDcxYWFmMWE4Li5mNWEzYjcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01
MDMsNyArNTAyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICAgICAgfQogICAgIH0K
IAotICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmUHRyPFJl
c291cmNlSGFuZGxlPiBwcm90ZWN0KHRoaXMpOwogICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVl
c3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKICAgICAvLyBDbGllbnQgY2Fs
bCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0
IGlzIHNlbnQgb3ZlciBJUEMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IDA5NDAwYTEuLjRhZjk3OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0ICJTeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0
IDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTM5MCw3ICszODksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlcwogICAgIGlmIChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpIHsKICAg
ICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4g
cHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCh0
aGlzKTsKICAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKTsKIAogICAgICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNl
cnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJ
UEMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggMmU2YjNhNi4uYzk1Y2RjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVz
dFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtODAsNyArODAsMTUgQEAgU291cE1lc3NhZ2UqIFJlc291
cmNlUmVxdWVzdDo6dG9Tb3VwTWVzc2FnZSgpIGNvbnN0CiAgICAgaWYgKCFzb3VwTWVzc2FnZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZSk7
CisgICAgdXBkYXRlU291cE1lc3NhZ2VIZWFkZXJzKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2hlYWRl
cnMpOworCisgICAgU3RyaW5nIGZpcnN0UGFydHlTdHJpbmcgPSBmaXJzdFBhcnR5Rm9yQ29va2ll
cygpLnN0cmluZygpOworICAgIGlmICghZmlyc3RQYXJ0eVN0cmluZy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgR093blB0cjxTb3VwVVJJPiBmaXJzdFBhcnR5KHNvdXBfdXJpX25ldyhmaXJzdFBhcnR5
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9maXJzdF9w
YXJ0eShzb3VwTWVzc2FnZSwgZmlyc3RQYXJ0eS5nZXQoKSk7CisgICAgfQorCisgICAgc291cF9t
ZXNzYWdlX3NldF9mbGFncyhzb3VwTWVzc2FnZSwgbV9zb3VwRmxhZ3MpOwogCiAgICAgLy8gQm9k
eSBkYXRhIGlzIG9ubHkgaGFuZGxlZCBhdCBSZXNvdXJjZUhhbmRsZVNvdXA6OnN0YXJ0SHR0cCBm
b3IKICAgICAvLyBub3c7IHRoaXMgaXMgYmVjYXVzZSB0aGlzIG1heSBub3QgYmUgYSBnb29kIHBs
YWNlIHRvIGdvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5
cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5h
dGlvbkNGLmNwcAppbmRleCBjNTU4MjhiLi45NjE4ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nS2V5ZWRN
UlVDYWNoZS5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDkgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdGVtcGxhdGU8PgogUmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1S
VUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkK
IHsKLSAgICAvLyBDRiBoeXBoZW5hdGlvbiBmdW5jdGlvbnMgdXNlIGxvY2FsZSAocmVnaW9uYWwg
Zm9ybWF0cykgbGFuZ3VhZ2UsIHdoaWNoIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWF0Y2ggcHJpbWFy
eSBVSSBsYW5ndWFnZSwKLSAgICAvLyBzbyB3ZSBjYW4ndCB1c2UgZGVmYXVsdCBsb2NhbGUgaGVy
ZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNDg5NzY2ND4uCi0gICAgUmV0YWluUHRyPENGTG9jYWxl
UmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKDAsIGRlZmF1bHRMYW5ndWFnZSgp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxv
Y2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKIAogICAgIHJldHVybiBDRlN0
cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFibGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2Fs
ZSA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9T
dHJpbmdJbXBsTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5n
SW1wbE1hYy5tbQppbmRleCBhODA1ZTY2Li5kYThmMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KQEAgLTI4LDcgKzI4LDcgQEAg
bmFtZXNwYWNlIFdURiB7CiAKIFN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICooKQogewot
ICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaW5kb3dN
ZXNzYWdlQnJvYWRjYXN0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpbmRv
d01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAKaW5kZXggZDJlMWQ0Ny4uNzA4ODk5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpbmRvd01lc3NhZ2VCcm9hZGNh
c3Rlci5jcHAKQEAgLTg1LDcgKzg1LDEyIEBAIHZvaWQgV2luZG93TWVzc2FnZUJyb2FkY2FzdGVy
OjphZGRMaXN0ZW5lcihXaW5kb3dNZXNzYWdlTGlzdGVuZXIqIGxpc3RlbmVyKQogCiB2b2lkIFdp
bmRvd01lc3NhZ2VCcm9hZGNhc3Rlcjo6cmVtb3ZlTGlzdGVuZXIoV2luZG93TWVzc2FnZUxpc3Rl
bmVyKiBsaXN0ZW5lcikKIHsKLSAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworICAg
IExpc3RlbmVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1fbGlzdGVuZXJzLmZpbmQobGlzdGVuZXIp
OworICAgIGlmIChmb3VuZCA9PSBtX2xpc3RlbmVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGZvdW5kKTsKKwogICAgIGlmIChtX2xpc3RlbmVycy5p
c0VtcHR5KCkpCiAgICAgICAgIGRlc3Ryb3koKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggZjhjYzAxMy4uMmQxN2FiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTM3MSw3ICszNzEsMTEgQEAgdm9pZCBQ
bHVnaW5EYXRhYmFzZTo6Y2xlYXIoKQogCiBib29sIFBsdWdpbkRhdGFiYXNlOjpyZW1vdmVEaXNh
YmxlZFBsdWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICByZXR1cm4gbV9k
aXNhYmxlZFBsdWdpbkZpbGVzLnJlbW92ZShmaWxlTmFtZSk7CisgICAgaWYgKCFtX2Rpc2FibGVk
UGx1Z2luRmlsZXMuY29udGFpbnMoZmlsZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX2Rpc2FibGVkUGx1Z2luRmlsZXMucmVtb3ZlKGZpbGVOYW1lKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogYm9vbCBQbHVnaW5EYXRhYmFzZTo6YWRkRGlzYWJsZWRQbHVnaW5GaWxlKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcAppbmRleCAwZGExYTNjLi42ZDkwZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
bGxpcHNpc0JveC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0
b20pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7
Ci0gICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0
eWxlKCkpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG1fcmVuZGVyZXItPnN0eWxlKGlzRmly
c3RMaW5lU3R5bGUoKSk7CiAgICAgQ29sb3IgdGV4dENvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOwogICAgIGlmICh0ZXh0
Q29sb3IgIT0gY29udGV4dC0+ZmlsbENvbG9yKCkpCiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcih0ZXh0Q29sb3IsIHN0eWxlLT5jb2xvclNwYWNlKCkpOwpAQCAtNTEsMTMgKzUxLDEzIEBA
IHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgICAgIHBhaW50U2VsZWN0aW9uKGNvbnRleHQs
IHBhaW50T2Zmc2V0LCBzdHlsZSwgZm9udCk7CiAKICAgICAgICAgLy8gU2VsZWN0IHRoZSBjb3Jy
ZWN0IGNvbG9yIGZvciBwYWludGluZyB0aGUgdGV4dC4KLSAgICAgICAgQ29sb3IgZm9yZWdyb3Vu
ZCA9IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8gQ29sb3I6OmJsYWNrIDogcmVuZGVyZXIo
KS5zZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9
IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8gQ29sb3I6OmJsYWNrIDogcmVuZGVyZXIoKS0+
c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFs
aWQoKSAmJiBmb3JlZ3JvdW5kICE9IHRleHRDb2xvcikKICAgICAgICAgICAgIGNvbnRleHQtPnNl
dEZpbGxDb2xvcihmb3JlZ3JvdW5kLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVj
dCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KLSAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmcmVuZGVyZXIoKSwgZm9udCwgbV9zdHIsIHN0eWxl
LCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFp
bnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBzdHlsZS0+Zm9udE1ldHJpY3Mo
KS5hc2NlbnQoKSkpOworICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyKCksIGZvbnQsIG1fc3RyLCBzdHlsZSwgVGV4dFJ1bjo6
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0Lngo
KSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgc3R5bGUtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
KTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4
dENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQpAQCAtNzEsMTggKzcxLDE4IEBAIHZvaWQg
RWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsIExhCiAKIElubGluZUJveCogRWxsaXBzaXNCb3g6Om1hcmt1cEJveCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Nob3VsZFBhaW50TWFya3VwQm94IHx8ICFyZW5kZXJlcigp
LmlzUmVuZGVyQmxvY2soKSkKKyAgICBpZiAoIW1fc2hvdWxkUGFpbnRNYXJrdXBCb3ggfHwgIW1f
cmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZW5k
ZXJCbG9jayYgYmxvY2sgPSB0b1JlbmRlckJsb2NrKHJlbmRlcmVyKCkpOwotICAgIFJvb3RJbmxp
bmVCb3gqIGxhc3RMaW5lID0gYmxvY2subGluZUF0SW5kZXgoYmxvY2subGluZUNvdW50KCkgLSAx
KTsKKyAgICBSZW5kZXJCbG9jayogYmxvY2sgPSB0b1JlbmRlckJsb2NrKG1fcmVuZGVyZXIpOwor
ICAgIFJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0gYmxvY2stPmxpbmVBdEluZGV4KGJsb2NrLT5s
aW5lQ291bnQoKSAtIDEpOwogICAgIGlmICghbGFzdExpbmUpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgLy8gSWYgdGhlIGxhc3QgbGluZS1ib3ggb24gdGhlIGxhc3QgbGluZSBvZiBhIGJsb2Nr
IGlzIGEgbGluaywgLXdlYmtpdC1saW5lLWNsYW1wIHBhaW50cyB0aGF0IGJveCBhZnRlciB0aGUg
ZWxsaXBzaXMuCiAgICAgLy8gSXQgZG9lcyBub3QgYWN0dWFsbHkgbW92ZSB0aGUgbGluay4KICAg
ICBJbmxpbmVCb3gqIGFuY2hvckJveCA9IGxhc3RMaW5lLT5sYXN0Q2hpbGQoKTsKLSAgICBpZiAo
IWFuY2hvckJveCB8fCAhYW5jaG9yQm94LT5yZW5kZXJlcigpLnN0eWxlKCktPmlzTGluaygpKQor
ICAgIGlmICghYW5jaG9yQm94IHx8ICFhbmNob3JCb3gtPnJlbmRlcmVyKCktPnN0eWxlKCktPmlz
TGluaygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBhbmNob3JCb3g7CkBAIC05
NiwyMiArOTYsMjIgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnRNYXJrdXBCb3goUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KIAogICAgIExheW91dFBvaW50
IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldDsKICAgICBhZGp1c3RlZFBhaW50T2Zm
c2V0Lm1vdmUoeCgpICsgbV9sb2dpY2FsV2lkdGggLSBtYXJrdXBCb3gtPngoKSwKLSAgICAgICAg
eSgpICsgc3R5bGUtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSAobWFya3VwQm94LT55KCkgKyBt
YXJrdXBCb3gtPnJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJp
Y3MoKS5hc2NlbnQoKSkpOworICAgICAgICB5KCkgKyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2Nl
bnQoKSAtIChtYXJrdXBCb3gtPnkoKSArIG1hcmt1cEJveC0+cmVuZGVyZXIoKS0+c3R5bGUoaXNG
aXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwogICAgIG1hcmt1cEJv
eC0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90
dG9tKTsKIH0KIAogSW50UmVjdCBFbGxpcHNpc0JveDo6c2VsZWN0aW9uUmVjdCgpCiB7Ci0gICAg
UmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkp
OworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG1fcmVuZGVyZXItPnN0eWxlKGlzRmlyc3RMaW5l
U3R5bGUoKSk7CiAgICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlLT5mb250KCk7CiAgICAgLy8g
RklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4
dCBydW4gZmxhZ3MgYmVsb3cuCi0gICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoZm9udC5zZWxl
Y3Rpb25SZWN0Rm9yVGV4dChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmcmVuZGVyZXIo
KSwgZm9udCwgbV9zdHIsIHN0eWxlLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwg
SW50UG9pbnQoeCgpLCB5KCkgKyByb290KCktPnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2Vk
aW5nQmxvY2soKSksIHJvb3QoKS0+c2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVjZWRpbmdC
bG9jaygpKSk7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoZm9udC5zZWxlY3Rpb25SZWN0
Rm9yVGV4dChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihyZW5kZXJlcigpLCBmb250LCBt
X3N0ciwgc3R5bGUsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pLCBJbnRQb2ludCh4
KCksIHkoKSArIHJvb3QoKS0+c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygp
KSwgcm9vdCgpLT5zZWxlY3Rpb25IZWlnaHRBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkpKTsK
IH0KIAogdm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgRm9udCYgZm9udCkKIHsKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBzdHlsZS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwotICAgIENvbG9yIGMgPSByZW5k
ZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgIENvbG9yIGMgPSBtX3JlbmRl
cmVyLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWMuaXNWYWxpZCgpIHx8
ICFjLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQg
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgYWxpZ25TZWxlY3Rpb25SZWN0VG9EZXZpY2VQaXhlbHMo
Y2xpcFJlY3QpOwogICAgIGNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwogICAgIC8vIEZJWE1FOiBX
aHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZs
YWdzIGJlbG93LgotICAgIGNvbnRleHQtPmRyYXdIaWdobGlnaHRGb3JUZXh0KGZvbnQsIFJlbmRl
ckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZyZW5kZXJlcigpLCBmb250LCBtX3N0ciwgc3R5bGUs
IFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pLCByb3VuZGVkSW50UG9pbnQoTGF5b3V0
UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyB0b3Ap
KSwgaCwgYywgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC0+ZHJhd0hpZ2hsaWdo
dEZvclRleHQoZm9udCwgUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4ocmVuZGVyZXIoKSwg
Zm9udCwgbV9zdHIsIHN0eWxlLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgcm91
bmRlZEludFBvaW50KExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFp
bnRPZmZzZXQueSgpICsgdG9wKSksIGgsIGMsIHN0eWxlLT5jb2xvclNwYWNlKCkpOwogfQogCiBi
b29sIEVsbGlwc2lzQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVz
dCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0
VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCkBAIC0xMzYsMTkgKzEzNiwxOSBA
QCBib29sIEVsbGlwc2lzQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdQogCiAgICAgLy8gSGl0IHRlc3QgdGhlIG1hcmt1cCBi
b3guCiAgICAgaWYgKElubGluZUJveCogbWFya3VwQm94ID0gdGhpcy0+bWFya3VwQm94KCkpIHsK
LSAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGlu
ZVN0eWxlKCkpOworICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3JlbmRlcmVyLT5zdHls
ZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgICAgICBMYXlvdXRVbml0IG10eCA9IGFkanVzdGVk
TG9jYXRpb24ueCgpICsgbV9sb2dpY2FsV2lkdGggLSBtYXJrdXBCb3gtPngoKTsKLSAgICAgICAg
TGF5b3V0VW5pdCBtdHkgPSBhZGp1c3RlZExvY2F0aW9uLnkoKSArIHN0eWxlLT5mb250TWV0cmlj
cygpLmFzY2VudCgpIC0gKG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5yZW5kZXJlcigpLnN0
eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOworICAgICAg
ICBMYXlvdXRVbml0IG10eSA9IGFkanVzdGVkTG9jYXRpb24ueSgpICsgc3R5bGUtPmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgLSAobWFya3VwQm94LT55KCkgKyBtYXJrdXBCb3gtPnJlbmRlcmVyKCkt
PnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOwogICAg
ICAgICBpZiAobWFya3VwQm94LT5ub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9u
SW5Db250YWluZXIsIExheW91dFBvaW50KG10eCwgbXR5KSwgbGluZVRvcCwgbGluZUJvdHRvbSkp
IHsKLSAgICAgICAgICAgIHJlbmRlcmVyKCkudXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxv
Y2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIExheW91dFNpemUobXR4LCBtdHkpKTsKKyAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbklu
Q29udGFpbmVyLnBvaW50KCkgLSBMYXlvdXRTaXplKG10eCwgbXR5KSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIExheW91dFJlY3QgYm91bmRzUmVj
dChhZGp1c3RlZExvY2F0aW9uLCBMYXlvdXRTaXplKG1fbG9naWNhbFdpZHRoLCBtX2hlaWdodCkp
OwogICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkgJiYgYm91bmRzUmVjdC5pbnRlcnNlY3Rz
KEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQo
KSwgMCwgMCwgMCwgMCkpKSB7Ci0gICAgICAgIHJlbmRlcmVyKCkudXBkYXRlSGl0VGVzdFJlc3Vs
dChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhZGp1
c3RlZExvY2F0aW9uKSk7Ci0gICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRl
c3RSZXN1bHQocmVuZGVyZXIoKS5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIs
IGJvdW5kc1JlY3QpKQorICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJl
c3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFkanVzdGVk
TG9jYXRpb24pKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJl
c3VsdChyZW5kZXJlcigpLT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIGJv
dW5kc1JlY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCmluZGV4IDg0NGVjMzMuLjdjNjBiMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCkBAIC0yOSw5ICsyOSw5IEBAIGNsYXNzIEhp
dFRlc3RSZXN1bHQ7CiAKIGNsYXNzIEVsbGlwc2lzQm94IEZJTkFMIDogcHVibGljIElubGluZUJv
eCB7CiBwdWJsaWM6Ci0gICAgRWxsaXBzaXNCb3goUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29u
c3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpc1N0ciwgSW5saW5lRmxvd0JveCogcGFyZW50LAorICAg
IEVsbGlwc2lzQm94KFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlw
c2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsCiAgICAgICAgICAgICAgICAgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNWZXJ0aWNhbCwgSW5s
aW5lQm94KiBtYXJrdXBCb3gpCi0gICAgICAgIDogSW5saW5lQm94KHJlbmRlcmVyLCBGbG9hdFBv
aW50KDAsIHkpLCB3aWR0aCwgZmlyc3RMaW5lLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGlzVmVydGlj
YWwsIDAsIDAsIHBhcmVudCkKKyAgICAgICAgOiBJbmxpbmVCb3gob2JqLCBGbG9hdFBvaW50KDAs
IHkpLCB3aWR0aCwgZmlyc3RMaW5lLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGlzVmVydGljYWwsIDAs
IDAsIHBhcmVudCkKICAgICAgICAgLCBtX3Nob3VsZFBhaW50TWFya3VwQm94KG1hcmt1cEJveCkK
ICAgICAgICAgLCBtX2hlaWdodChoZWlnaHQpCiAgICAgICAgICwgbV9zdHIoZWxsaXBzaXNTdHIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cAppbmRleCBiMDZiZDRlLi4wODFlYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKIAogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCiAKKyNpbmNsdWRlICJDaGlsZEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgogI2luY2x1
ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKQEAg
LTE3OSw3ICsxNzksNyBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlck9iamVjdAogI2VuZGlmCiB9CiAKLWJv
b2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIEZpbHRlckNvbnN1bWVyIGNvbnN1bWVy
KQorYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgYm9vbCBjbGlwc1RvQm91bmRz
KQogewogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBtX2hhc0N1c3RvbVNoYWRlckZpbHRl
ciA9IGZhbHNlOwpAQCAtMzI2LDcgKzMyNiw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmCiAg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICBCbHVyRmls
dGVyT3BlcmF0aW9uKiBibHVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Qmx1ckZpbHRlck9wZXJh
dGlvbio+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24g
PSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCAwKTsK
LSAgICAgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUodGhpcywgc3RkRGV2
aWF0aW9uLCBzdGREZXZpYXRpb24sIGNvbnN1bWVyID09IEZpbHRlclByb3BlcnR5ID8gRURHRU1P
REVfTk9ORSA6IEVER0VNT0RFX0RVUExJQ0FURSk7CisgICAgICAgICAgICBlZmZlY3QgPSBGRUdh
dXNzaWFuQmx1cjo6Y3JlYXRlKHRoaXMsIHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpEUk9QX1NIQURPVzogewpAQCAtMzU3LDcgKzM1Nyw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmCiAgICAgICAgIGlmIChlZmZlY3QpIHsKICAgICAgICAgICAgIC8vIFVubGlrZSBTVkcgRmls
dGVycyBhbmQgQ1NTRmlsdGVySW1hZ2VzLCBmaWx0ZXIgZnVuY3Rpb25zIG9uIHRoZSBmaWx0ZXIK
ICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFwcGxpZWQgaGVyZSBzaG91bGQgbm90IGNsaXAgdG8g
dGhlaXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMuCi0gICAgICAgICAgICBlZmZlY3QtPnNldENsaXBz
VG9Cb3VuZHMoY29uc3VtZXIgPT0gRmlsdGVyRnVuY3Rpb24pOworICAgICAgICAgICAgZWZmZWN0
LT5zZXRDbGlwc1RvQm91bmRzKGNsaXBzVG9Cb3VuZHMpOwogICAgICAgICAgICAgZWZmZWN0LT5z
ZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkgIT0g
RmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXggYTBmNDdjMi4uMGM1MWUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTUz
LDExICs1Myw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIFJlbmRlckxheWVyOwog
Y2xhc3MgUmVuZGVyT2JqZWN0OwogCi1lbnVtIEZpbHRlckNvbnN1bWVyIHsKLSAgICBGaWx0ZXJQ
cm9wZXJ0eSwKLSAgICBGaWx0ZXJGdW5jdGlvbgotfTsKLQogY2xhc3MgRmlsdGVyRWZmZWN0UmVu
ZGVyZXJIZWxwZXIgewogcHVibGljOgogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyKGJv
b2wgaGF2ZUZpbHRlckVmZmVjdCkKQEAgLTEwOSw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkg
Y29uc3QgeyByZXR1cm4gbGFzdEVmZmVjdCgpLT5hc0ltYWdlQnVmZmVyKCk7IH0KIAotICAgIGJv
b2wgYnVpbGQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYs
IEZpbHRlckNvbnN1bWVyKTsKKyAgICBib29sIGJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBib29sIGNsaXBzVG9Cb3VuZHMgPSBmYWxzZSk7CiAg
ICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwg
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKik7CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmVS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCk7CiAgICAgdm9pZCBhbGxvY2F0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Rmxvd1RocmVhZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dU
aHJlYWRDb250cm9sbGVyLmNwcAppbmRleCA4MjI3M2Y3Li4wMTBhZDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAKQEAgLTMzLDcg
KzMzLDYgQEAKIAogI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJS
ZW5kZXJGbG93VGhyZWFkLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIK
ICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKQEAgLTI4MywzMiArMjgyLDYgQEAgYm9vbCBG
bG93VGhyZWFkQ29udHJvbGxlcjo6aXNDb250ZW50Tm9kZVJlZ2lzdGVyZWRXaXRoQW55TmFtZWRG
bG93KGNvbnN0IE5vZGUqIGMKICAgICByZXR1cm4gbV9tYXBOYW1lZEZsb3dDb250ZW50Tm9kZXMu
Y29udGFpbnMoY29udGVudE5vZGUpOwogfQogCi0vLyBDb2xsZWN0IHRoZSBmaXhlZCBwb3NpdGlv
bmVkIGxheWVycyB0aGF0IGhhdmUgdGhlIG5hbWVkIGZsb3dzIGFzIGNvbnRhaW5pbmcgYmxvY2sK
LS8vIFRoZXNlIGxheWVycyBhcmUgcGFpbnRlZCBhbmQgaGl0LXRlc3RlZCBzdGFydGluZyBmcm9t
IFJlbmRlclZpZXcgbm90IGZyb20gcmVnaW9ucy4KLXZvaWQgRmxvd1RocmVhZENvbnRyb2xsZXI6
OmNvbGxlY3RGaXhlZFBvc2l0aW9uZWRMYXllcnMoVmVjdG9yPFJlbmRlckxheWVyKj4mIGZpeGVk
UG9zTGF5ZXJzKSBjb25zdAotewotICAgIGZvciAoUmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdDo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdC0+YmVnaW4o
KTsgaXRlciAhPSBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPmVuZCgpOyArK2l0ZXIpIHsK
LSAgICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRlcjsKLQot
ICAgICAgICAvLyBJZiB0aGUgbmFtZWQgZmxvdyBkb2VzIG5vdCBoYXZlIGFueSByZWdpb25zIGF0
dGFjaGVkLCBhIGZpeGVkIGVsZW1lbnQgc2hvdWxkIG5vdCBiZQotICAgICAgICAvLyBkaXNwbGF5
ZWQgZXZlbiBpZiB0aGUgZml4ZWQgZWxlbWVudCBpcyBwb3NpdGlvbmVkL3NpemVkIGJ5IHRoZSB2
aWV3cG9ydC4KLSAgICAgICAgaWYgKCFmbG93UmVuZGVyZXItPmhhc1JlZ2lvbnMoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZml4ZWQgcG9z
aXRpb25lZCBlbGVtZW50cyBpbiB0aGUgZmxvdyB0aHJlYWQKLSAgICAgICAgVHJhY2tlZFJlbmRl
cmVyTGlzdEhhc2hTZXQqIHBvc2l0aW9uZWREZXNjZW5kYW50cyA9IGZsb3dSZW5kZXJlci0+cG9z
aXRpb25lZE9iamVjdHMoKTsKLSAgICAgICAgaWYgKHBvc2l0aW9uZWREZXNjZW5kYW50cykgewot
ICAgICAgICAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGVuZCA9IHBv
c2l0aW9uZWREZXNjZW5kYW50cy0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKFRyYWNrZWRSZW5k
ZXJlckxpc3RIYXNoU2V0OjppdGVyYXRvciBpdCA9IHBvc2l0aW9uZWREZXNjZW5kYW50cy0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyQm94KiBib3gg
PSAqaXQ7Ci0gICAgICAgICAgICAgICAgaWYgKCFib3gtPmZpeGVkUG9zaXRpb25lZFdpdGhOYW1l
ZEZsb3dDb250YWluaW5nQmxvY2soKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgZml4ZWRQb3NMYXllcnMuYXBwZW5kKGJveC0+bGF5ZXIoKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KICNpZm5kZWYgTkRFQlVHCiBib29sIEZs
b3dUaHJlYWRDb250cm9sbGVyOjppc0F1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0NvdW50Q29uc2lz
dGVudCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
d1RocmVhZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFk
Q29udHJvbGxlci5oCmluZGV4IDI1NGI0Y2UuLjM1MjQ0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oCkBAIC0zNyw3ICszNyw2IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZsb3dUaHJlYWQ7Ci1jbGFzcyBSZW5k
ZXJMYXllcjsKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKIAogdHlwZWRlZiBMaXN0SGFz
aFNldDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0OwpA
QCAtODAsMTAgKzc5LDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRmxvd1RocmVhZHNJbnRv
TWVhc3VyZUNvbnRlbnRQaGFzZSgpOwogICAgIHZvaWQgdXBkYXRlRmxvd1RocmVhZHNJbnRvRmlu
YWxQaGFzZSgpOwogCi0gICAgLy8gQ29sbGVjdCB0aGUgZml4ZWQgcG9zaXRpb25lZCBsYXllcnMg
dGhhdCBoYXZlIHRoZSBuYW1lZCBmbG93cyBhcyBjb250YWluaW5nIGJsb2NrCi0gICAgLy8gVGhl
c2UgbGF5ZXJzIGFyZSBwYWludGVkIGFuZCBoaXQtdGVzdGVkIGJ5IFJlbmRlclZpZXcKLSAgICB2
b2lkIGNvbGxlY3RGaXhlZFBvc2l0aW9uZWRMYXllcnMoVmVjdG9yPFJlbmRlckxheWVyKj4mIGZp
eGVkUG9zTGF5ZXJzKSBjb25zdDsKLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICB2b2lkIHVwZGF0ZVJlbmRlckZsb3dUaHJlYWRMYXllcnNJZk5lZWRlZCgpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMjY5OTQw
Yy4uZDk0MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cApAQCAtNjkwLDIyICs2OTAsMTIgQEAgTm9kZSogSGl0VGVzdFJlc3VsdDo6dGFyZ2V0Tm9kZSgp
IGNvbnN0CiAKIEVsZW1lbnQqIEhpdFRlc3RSZXN1bHQ6OmlubmVyRWxlbWVudCgpIGNvbnN0CiB7
Ci0gICAgTm9kZSogbm9kZSA9IG1faW5uZXJOb2RlLmdldCgpOwotICAgIGlmICghbm9kZSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAg
cmV0dXJuIHRvRWxlbWVudChub2RlKTsKLSAgICByZXR1cm4gbm9kZS0+cGFyZW50RWxlbWVudCgp
OwotfQorICAgIGZvciAoTm9kZSogbm9kZSA9IG1faW5uZXJOb2RlLmdldCgpOyBub2RlOyBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOworICAgIH0KIAotRWxlbWVu
dCogSGl0VGVzdFJlc3VsdDo6aW5uZXJOb25TaGFyZWRFbGVtZW50KCkgY29uc3QKLXsKLSAgICBO
b2RlKiBub2RlID0gbV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCk7Ci0gICAgaWYgKCFub2RlKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAg
ICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwotICAgIHJldHVybiBub2RlLT5wYXJlbnRFbGVtZW50
KCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IGQxM2RiYTMuLmI2Zjc3MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNjIsNyArNjIsNiBA
QCBwdWJsaWM6CiAgICAgTm9kZSogaW5uZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lck5v
ZGUuZ2V0KCk7IH0KICAgICBFbGVtZW50KiBpbm5lckVsZW1lbnQoKSBjb25zdDsKICAgICBOb2Rl
KiBpbm5lck5vblNoYXJlZE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9k
ZS5nZXQoKTsgfQotICAgIEVsZW1lbnQqIGlubmVyTm9uU2hhcmVkRWxlbWVudCgpIGNvbnN0Owog
ICAgIEVsZW1lbnQqIFVSTEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lubmVyVVJMRWxlbWVu
dC5nZXQoKTsgfQogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlzT3ZlcldpZGdldCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNPdmVyV2lkZ2V0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCmlu
ZGV4IDI1NmFkMmIuLjg4MzQ5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3gu
Y3BwCkBAIC0xMDMsMTIgKzEwMywxNCBAQCBjb25zdCBjaGFyKiBJbmxpbmVCb3g6OmJveE5hbWUo
KSBjb25zdAogCiB2b2lkIElubGluZUJveDo6c2hvd1RyZWVGb3JUaGlzKCkgY29uc3QKIHsKLSAg
ICBtX3JlbmRlcmVyLnNob3dUcmVlRm9yVGhpcygpOworICAgIGlmIChtX3JlbmRlcmVyKQorICAg
ICAgICBtX3JlbmRlcmVyLT5zaG93VHJlZUZvclRoaXMoKTsKIH0KIAogdm9pZCBJbmxpbmVCb3g6
OnNob3dMaW5lVHJlZUZvclRoaXMoKSBjb25zdAogewotICAgIG1fcmVuZGVyZXIuY29udGFpbmlu
Z0Jsb2NrKCktPnNob3dMaW5lVHJlZUFuZE1hcmsodGhpcywgIioiKTsKKyAgICBpZiAobV9yZW5k
ZXJlcikKKyAgICAgICAgbV9yZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCktPnNob3dMaW5lVHJl
ZUFuZE1hcmsodGhpcywgIioiKTsKIH0KIAogdm9pZCBJbmxpbmVCb3g6OnNob3dMaW5lVHJlZUFu
ZE1hcmsoY29uc3QgSW5saW5lQm94KiBtYXJrZWRCb3gxLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJl
bDEsIGNvbnN0IElubGluZUJveCogbWFya2VkQm94MiwgY29uc3QgY2hhciogbWFya2VkTGFiZWwy
LCBjb25zdCBSZW5kZXJPYmplY3QqIG9iaiwgaW50IGRlcHRoKSBjb25zdApAQCAtMTE4LDcgKzEy
MCw3IEBAIHZvaWQgSW5saW5lQm94OjpzaG93TGluZVRyZWVBbmRNYXJrKGNvbnN0IElubGluZUJv
eCogbWFya2VkQm94MSwgY29uc3QgY2hhciogbWFyCiAgICAgICAgIHByaW50ZWRDaGFyYWN0ZXJz
ICs9IGZwcmludGYoc3RkZXJyLCAiJXMiLCBtYXJrZWRMYWJlbDEpOwogICAgIGlmICh0aGlzID09
IG1hcmtlZEJveDIpCiAgICAgICAgIHByaW50ZWRDaGFyYWN0ZXJzICs9IGZwcmludGYoc3RkZXJy
LCAiJXMiLCBtYXJrZWRMYWJlbDIpOwotICAgIGlmICgmbV9yZW5kZXJlciA9PSBvYmopCisgICAg
aWYgKHJlbmRlcmVyKCkgPT0gb2JqKQogICAgICAgICBwcmludGVkQ2hhcmFjdGVycyArPSBmcHJp
bnRmKHN0ZGVyciwgIioiKTsKICAgICBmb3IgKDsgcHJpbnRlZENoYXJhY3RlcnMgPCBkZXB0aCAq
IDI7IHByaW50ZWRDaGFyYWN0ZXJzKyspCiAgICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKQEAg
LTEzMSw3ICsxMzMsNyBAQCB2b2lkIElubGluZUJveDo6c2hvd0JveChpbnQgcHJpbnRlZENoYXJh
Y3RlcnMpIGNvbnN0CiAgICAgcHJpbnRlZENoYXJhY3RlcnMgKz0gZnByaW50ZihzdGRlcnIsICIl
c1x0JXAiLCBib3hOYW1lKCksIHRoaXMpOwogICAgIGZvciAoOyBwcmludGVkQ2hhcmFjdGVycyA8
IHNob3dUcmVlQ2hhcmFjdGVyT2Zmc2V0OyBwcmludGVkQ2hhcmFjdGVycysrKQogICAgICAgICBm
cHV0YygnICcsIHN0ZGVycik7Ci0gICAgZnByaW50ZihzdGRlcnIsICJcdCVzICVwXG4iLCByZW5k
ZXJlcigpLnJlbmRlck5hbWUoKSwgJnJlbmRlcmVyKCkpOworICAgIGZwcmludGYoc3RkZXJyLCAi
XHQlcyAlcFxuIiwgcmVuZGVyZXIoKSA/IHJlbmRlcmVyKCktPnJlbmRlck5hbWUoKSA6ICJObyBS
ZW5kZXJlciIsIHJlbmRlcmVyKCkpOwogfQogI2VuZGlmCiAKQEAgLTE0MCwxNCArMTQyLDE0IEBA
IGZsb2F0IElubGluZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgaWYgKGhhc1ZpcnR1
YWxMb2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiB2aXJ0dWFsTG9naWNhbEhlaWdodCgp
OwogICAgIAotICAgIGlmIChyZW5kZXJlcigpLmlzVGV4dCgpKQotICAgICAgICByZXR1cm4gbV9i
aXRmaWVsZHMuaXNUZXh0KCkgPyByZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSkt
PmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkgOiAwOwotICAgIGlmIChyZW5kZXJlcigpLmlzQm94KCkg
JiYgcGFyZW50KCkpCi0gICAgICAgIHJldHVybiBpc0hvcml6b250YWwoKSA/IHRvUmVuZGVyQm94
KHJlbmRlcmVyKCkpLmhlaWdodCgpIDogdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkud2lkdGgoKTsK
KyAgICBpZiAocmVuZGVyZXIoKS0+aXNUZXh0KCkpCisgICAgICAgIHJldHVybiBtX2JpdGZpZWxk
cy5pc1RleHQoKSA/IHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnRN
ZXRyaWNzKCkuaGVpZ2h0KCkgOiAwOworICAgIGlmIChyZW5kZXJlcigpLT5pc0JveCgpICYmIHBh
cmVudCgpKQorICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyB0b1JlbmRlckJveChtX3Jl
bmRlcmVyKS0+aGVpZ2h0KCkgOiB0b1JlbmRlckJveChtX3JlbmRlcmVyKS0+d2lkdGgoKTsKIAog
ICAgIEFTU0VSVChpc0lubGluZUZsb3dCb3goKSk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGZsb3dPYmplY3QgPSBib3hNb2RlbE9iamVjdCgpOwotICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcyA9IHJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1l
dHJpY3MoKTsKKyAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSByZW5kZXJlcigp
LT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250TWV0cmljcygpOwogICAgIGZsb2F0IHJl
c3VsdCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwogICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAg
cmVzdWx0ICs9IGZsb3dPYmplY3QtPmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7CkBA
IC0xNjYsMTIgKzE2OCwxMiBAQCBMYXlvdXRVbml0IElubGluZUJveDo6bGluZUhlaWdodCgpIGNv
bnN0CiAKIGludCBJbmxpbmVCb3g6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QgCiB7IAotICAgIHJl
dHVybiBtX3JlbmRlcmVyLmNhcmV0TWluT2Zmc2V0KCk7CisgICAgcmV0dXJuIG1fcmVuZGVyZXIt
PmNhcmV0TWluT2Zmc2V0KCk7IAogfQogCiBpbnQgSW5saW5lQm94OjpjYXJldE1heE9mZnNldCgp
IGNvbnN0IAogeyAKLSAgICByZXR1cm4gbV9yZW5kZXJlci5jYXJldE1heE9mZnNldCgpOworICAg
IHJldHVybiBtX3JlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpOyAKIH0KIAogdm9pZCBJbmxpbmVC
b3g6OmRpcnR5TGluZUJveGVzKCkKQEAgLTE4Myw0MSArMTg1LDQxIEBAIHZvaWQgSW5saW5lQm94
OjpkaXJ0eUxpbmVCb3hlcygpCiAKIHZvaWQgSW5saW5lQm94OjpkZWxldGVMaW5lKFJlbmRlckFy
ZW5hKiBhcmVuYSkKIHsKLSAgICBpZiAoIW1fYml0ZmllbGRzLmV4dHJhY3RlZCgpICYmIG1fcmVu
ZGVyZXIuaXNCb3goKSkKLSAgICAgICAgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuc2V0SW5saW5l
Qm94V3JhcHBlcigwKTsKKyAgICBpZiAoIW1fYml0ZmllbGRzLmV4dHJhY3RlZCgpICYmIG1fcmVu
ZGVyZXItPmlzQm94KCkpCisgICAgICAgIHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpLT5zZXRJbmxp
bmVCb3hXcmFwcGVyKDApOwogICAgIGRlc3Ryb3koYXJlbmEpOwogfQogCiB2b2lkIElubGluZUJv
eDo6ZXh0cmFjdExpbmUoKQogewogICAgIG1fYml0ZmllbGRzLnNldEV4dHJhY3RlZCh0cnVlKTsK
LSAgICBpZiAobV9yZW5kZXJlci5pc0JveCgpKQotICAgICAgICB0b1JlbmRlckJveChyZW5kZXJl
cigpKS5zZXRJbmxpbmVCb3hXcmFwcGVyKDApOworICAgIGlmIChtX3JlbmRlcmVyLT5pc0JveCgp
KQorICAgICAgICB0b1JlbmRlckJveChtX3JlbmRlcmVyKS0+c2V0SW5saW5lQm94V3JhcHBlcigw
KTsKIH0KIAogdm9pZCBJbmxpbmVCb3g6OmF0dGFjaExpbmUoKQogewogICAgIG1fYml0ZmllbGRz
LnNldEV4dHJhY3RlZChmYWxzZSk7Ci0gICAgaWYgKG1fcmVuZGVyZXIuaXNCb3goKSkKLSAgICAg
ICAgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuc2V0SW5saW5lQm94V3JhcHBlcih0aGlzKTsKKyAg
ICBpZiAobV9yZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgdG9SZW5kZXJCb3gobV9yZW5kZXJl
ciktPnNldElubGluZUJveFdyYXBwZXIodGhpcyk7CiB9CiAKIHZvaWQgSW5saW5lQm94OjphZGp1
c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpCiB7CiAgICAgbV90b3BMZWZ0Lm1vdmUoZHgs
IGR5KTsKIAotICAgIGlmIChtX3JlbmRlcmVyLmlzUmVwbGFjZWQoKSkKLSAgICAgICAgdG9SZW5k
ZXJCb3gocmVuZGVyZXIoKSkubW92ZShkeCwgZHkpOworICAgIGlmIChtX3JlbmRlcmVyLT5pc1Jl
cGxhY2VkKCkpIAorICAgICAgICB0b1JlbmRlckJveChtX3JlbmRlcmVyKS0+bW92ZShkeCwgZHkp
OyAKIH0KIAogdm9pZCBJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgLyogbGluZVRvcCAqLywgTGF5
b3V0VW5pdCAvKmxpbmVCb3R0b20qLykKIHsKLSAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QoJnJlbmRlcmVyKCkpIHx8IChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pKQor
ICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCAo
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0
UG9pbnQgY2hpbGRQb2ludCA9IHBhaW50T2Zmc2V0OwotICAgIGlmIChwYXJlbnQoKS0+cmVuZGVy
ZXIoKS5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSAvLyBGYXN0ZXIgdGhh
biBjYWxsaW5nIGNvbnRhaW5pbmdCbG9jaygpLgotICAgICAgICBjaGlsZFBvaW50ID0gbV9yZW5k
ZXJlci5jb250YWluaW5nQmxvY2soKS0+ZmxpcEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQoJnRvUmVu
ZGVyQm94KHJlbmRlcmVyKCkpLCBjaGlsZFBvaW50KTsKKyAgICBpZiAocGFyZW50KCktPnJlbmRl
cmVyKCktPnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIC8vIEZhc3RlciB0
aGFuIGNhbGxpbmcgY29udGFpbmluZ0Jsb2NrKCkuCisgICAgICAgIGNoaWxkUG9pbnQgPSByZW5k
ZXJlcigpLT5jb250YWluaW5nQmxvY2soKS0+ZmxpcEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQodG9S
ZW5kZXJCb3gocmVuZGVyZXIoKSksIGNoaWxkUG9pbnQpOwogICAgIAogICAgIC8vIFBhaW50IGFs
bCBwaGFzZXMgb2YgcmVwbGFjZWQgZWxlbWVudHMgYXRvbWljYWxseSwgYXMgdGhvdWdoIHRoZSBy
ZXBsYWNlZCBlbGVtZW50IGVzdGFibGlzaGVkIGl0cwogICAgIC8vIG93biBzdGFja2luZyBjb250
ZXh0LiAgKFNlZSBBcHBlbmRpeCBFLjIsIHNlY3Rpb24gNi40IG9uIGlubGluZSBibG9jay90YWJs
ZSBlbGVtZW50cyBpbiB0aGUgQ1NTMi4xCkBAIC0yMjUsMTYgKzIyNywxNiBAQCB2b2lkIElubGlu
ZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwgTGF5bwogICAgIGJvb2wgcHJlc2VydmVQaGFzZSA9IHBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlU2VsZWN0aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlVGV4
dENsaXA7CiAgICAgUGFpbnRJbmZvIGluZm8ocGFpbnRJbmZvKTsKICAgICBpbmZvLnBoYXNlID0g
cHJlc2VydmVQaGFzZSA/IHBhaW50SW5mby5waGFzZSA6IFBhaW50UGhhc2VCbG9ja0JhY2tncm91
bmQ7Ci0gICAgbV9yZW5kZXJlci5wYWludChpbmZvLCBjaGlsZFBvaW50KTsKKyAgICByZW5kZXJl
cigpLT5wYWludChpbmZvLCBjaGlsZFBvaW50KTsKICAgICBpZiAoIXByZXNlcnZlUGhhc2UpIHsK
ICAgICAgICAgaW5mby5waGFzZSA9IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7Ci0g
ICAgICAgIG1fcmVuZGVyZXIucGFpbnQoaW5mbywgY2hpbGRQb2ludCk7CisgICAgICAgIHJlbmRl
cmVyKCktPnBhaW50KGluZm8sIGNoaWxkUG9pbnQpOwogICAgICAgICBpbmZvLnBoYXNlID0gUGFp
bnRQaGFzZUZsb2F0OwotICAgICAgICBtX3JlbmRlcmVyLnBhaW50KGluZm8sIGNoaWxkUG9pbnQp
OworICAgICAgICByZW5kZXJlcigpLT5wYWludChpbmZvLCBjaGlsZFBvaW50KTsKICAgICAgICAg
aW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5kOwotICAgICAgICBtX3JlbmRlcmVyLnBh
aW50KGluZm8sIGNoaWxkUG9pbnQpOworICAgICAgICByZW5kZXJlcigpLT5wYWludChpbmZvLCBj
aGlsZFBvaW50KTsKICAgICAgICAgaW5mby5waGFzZSA9IFBhaW50UGhhc2VPdXRsaW5lOwotICAg
ICAgICBtX3JlbmRlcmVyLnBhaW50KGluZm8sIGNoaWxkUG9pbnQpOworICAgICAgICByZW5kZXJl
cigpLT5wYWludChpbmZvLCBjaGlsZFBvaW50KTsKICAgICB9CiB9CiAKQEAgLTI0NCwxMCArMjQ2
LDEwIEBAIGJvb2wgSW5saW5lQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0CiAgICAgLy8gb3duIHN0YWNraW5nIGNvbnRl
eHQuICAoU2VlIEFwcGVuZGl4IEUuMiwgc2VjdGlvbiA2LjQgb24gaW5saW5lIGJsb2NrL3RhYmxl
IGVsZW1lbnRzIGluIHRoZSBDU1MyLjEKICAgICAvLyBzcGVjaWZpY2F0aW9uLikKICAgICBMYXlv
dXRQb2ludCBjaGlsZFBvaW50ID0gYWNjdW11bGF0ZWRPZmZzZXQ7Ci0gICAgaWYgKHBhcmVudCgp
LT5yZW5kZXJlcigpLnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIC8vIEZh
c3RlciB0aGFuIGNhbGxpbmcgY29udGFpbmluZ0Jsb2NrKCkuCi0gICAgICAgIGNoaWxkUG9pbnQg
PSBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5mbGlwRm9yV3JpdGluZ01vZGVGb3JDaGls
ZCgmdG9SZW5kZXJCb3gocmVuZGVyZXIoKSksIGNoaWxkUG9pbnQpOworICAgIGlmIChwYXJlbnQo
KS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgLy8g
RmFzdGVyIHRoYW4gY2FsbGluZyBjb250YWluaW5nQmxvY2soKS4KKyAgICAgICAgY2hpbGRQb2lu
dCA9IHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpLT5mbGlwRm9yV3JpdGluZ01vZGVGb3JD
aGlsZCh0b1JlbmRlckJveChyZW5kZXJlcigpKSwgY2hpbGRQb2ludCk7CiAgICAgCi0gICAgcmV0
dXJuIG1fcmVuZGVyZXIuaGl0VGVzdChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNoaWxkUG9pbnQpOworICAgIHJldHVybiByZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2ludCk7CiB9CiAKIGNvbnN0IFJv
b3RJbmxpbmVCb3gqIElubGluZUJveDo6cm9vdCgpIGNvbnN0CkBAIC0zMTksMTMgKzMyMSwxMyBA
QCBJbmxpbmVCb3gqIElubGluZUJveDo6cHJldkxlYWZDaGlsZElnbm9yaW5nTGluZUJyZWFrKCkg
Y29uc3QKIAogUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBJbmxpbmVCb3g6OnNlbGVjdGlv
blN0YXRlKCkKIHsKLSAgICByZXR1cm4gbV9yZW5kZXJlci5zZWxlY3Rpb25TdGF0ZSgpOworICAg
IHJldHVybiByZW5kZXJlcigpLT5zZWxlY3Rpb25TdGF0ZSgpOwogfQogCiBib29sIElubGluZUJv
eDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVs
bGlwc2lzV2lkdGgpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXJlcGxhY2VkIGVsZW1lbnRzIGNhbiBh
bHdheXMgYWNjb21tb2RhdGUgYW4gZWxsaXBzaXMuCi0gICAgaWYgKCFtX3JlbmRlcmVyLmlzUmVw
bGFjZWQoKSkKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVwbGFjZWQo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgSW50UmVjdCBib3hSZWN0KGxlZnQo
KSwgMCwgbV9sb2dpY2FsV2lkdGgsIDEwKTsKQEAgLTM0OSw0MSArMzUxLDQxIEBAIHZvaWQgSW5s
aW5lQm94OjpjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpCiAKIEZsb2F0UG9pbnQgSW5saW5l
Qm94Ojpsb2NhdGlvbkluY2x1ZGluZ0ZsaXBwaW5nKCkKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIu
c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKKyAgICBpZiAoIXJlbmRlcmVy
KCktPnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVy
biBGbG9hdFBvaW50KHgoKSwgeSgpKTsKLSAgICBSZW5kZXJCbG9jayYgYmxvY2sgPSByb290KCkt
PmJsb2NrKCk7Ci0gICAgaWYgKGJsb2NrLnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCi0gICAgICAgIHJldHVybiBGbG9hdFBvaW50KHgoKSwgYmxvY2suaGVpZ2h0KCkgLSBoZWln
aHQoKSAtIHkoKSk7CisgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gcm9vdCgpLT5ibG9jaygpOwor
ICAgIGlmIChibG9jay0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIEZsb2F0UG9pbnQoeCgpLCBibG9jay0+aGVpZ2h0KCkgLSBoZWlnaHQoKSAtIHko
KSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gRmxvYXRQb2ludChibG9jay53aWR0aCgpIC0g
d2lkdGgoKSAtIHgoKSwgeSgpKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoYmxvY2stPndp
ZHRoKCkgLSB3aWR0aCgpIC0geCgpLCB5KCkpOwogfQogCiB2b2lkIElubGluZUJveDo6ZmxpcEZv
cldyaXRpbmdNb2RlKEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIuc3R5
bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKKyAgICBpZiAoIXJlbmRlcmVyKCkt
PnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICByb290KCktPmJsb2NrKCkuZmxpcEZvcldyaXRpbmdNb2RlKHJlY3QpOworICAgIHJvb3Qo
KS0+YmxvY2soKS0+ZmxpcEZvcldyaXRpbmdNb2RlKHJlY3QpOwogfQogCiBGbG9hdFBvaW50IElu
bGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogewot
ICAgIGlmICghbV9yZW5kZXJlci5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgp
KQorICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSkKICAgICAgICAgcmV0dXJuIHBvaW50OwotICAgIHJldHVybiByb290KCktPmJsb2NrKCku
ZmxpcEZvcldyaXRpbmdNb2RlKHBvaW50KTsKKyAgICByZXR1cm4gcm9vdCgpLT5ibG9jaygpLT5m
bGlwRm9yV3JpdGluZ01vZGUocG9pbnQpOwogfQogCiB2b2lkIElubGluZUJveDo6ZmxpcEZvcldy
aXRpbmdNb2RlKExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtX3JlbmRlcmVyLnN0eWxl
KCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCisgICAgaWYgKCFyZW5kZXJlcigpLT5z
dHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgcm9vdCgpLT5ibG9jaygpLmZsaXBGb3JXcml0aW5nTW9kZShyZWN0KTsKKyAgICByb290KCkt
PmJsb2NrKCktPmZsaXBGb3JXcml0aW5nTW9kZShyZWN0KTsKIH0KIAogTGF5b3V0UG9pbnQgSW5s
aW5lQm94OjpmbGlwRm9yV3JpdGluZ01vZGUoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogewot
ICAgIGlmICghbV9yZW5kZXJlci5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgp
KQorICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSkKICAgICAgICAgcmV0dXJuIHBvaW50OwotICAgIHJldHVybiByb290KCktPmJsb2NrKCku
ZmxpcEZvcldyaXRpbmdNb2RlKHBvaW50KTsKKyAgICByZXR1cm4gcm9vdCgpLT5ibG9jaygpLT5m
bGlwRm9yV3JpdGluZ01vZGUocG9pbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKaW5kZXggNDdjYzM5MC4uMmY0ODBjOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKQEAgLTM0LDExICszNCwxMSBAQCBjbGFz
cyBSb290SW5saW5lQm94OwogLy8gc29tZSBSZW5kZXJPYmplY3QgKGkuZS4sIGl0IHJlcHJlc2Vu
dHMgYSBwb3J0aW9uIG9mIHRoYXQgUmVuZGVyT2JqZWN0KS4KIGNsYXNzIElubGluZUJveCB7CiBw
dWJsaWM6Ci0gICAgSW5saW5lQm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCisgICAgSW5saW5l
Qm94KFJlbmRlck9iamVjdCogb2JqKQogICAgICAgICA6IG1fbmV4dCgwKQogICAgICAgICAsIG1f
cHJldigwKQogICAgICAgICAsIG1fcGFyZW50KDApCi0gICAgICAgICwgbV9yZW5kZXJlcihyZW5k
ZXJlcikKKyAgICAgICAgLCBtX3JlbmRlcmVyKG9iaikKICAgICAgICAgLCBtX2xvZ2ljYWxXaWR0
aCgwKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLCBtX2hhc0JhZFBhcmVudChmYWxz
ZSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIElubGlu
ZUJveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBGbG9hdFBvaW50IHRvcExlZnQsIGZsb2F0IGxv
Z2ljYWxXaWR0aCwgYm9vbCBmaXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQsCisgICAgSW5saW5l
Qm94KFJlbmRlck9iamVjdCogb2JqLCBGbG9hdFBvaW50IHRvcExlZnQsIGZsb2F0IGxvZ2ljYWxX
aWR0aCwgYm9vbCBmaXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQsCiAgICAgICAgICAgICAgIGJv
b2wgZGlydHksIGJvb2wgZXh0cmFjdGVkLCBib29sIGlzSG9yaXpvbnRhbCwgSW5saW5lQm94KiBu
ZXh0LCBJbmxpbmVCb3gqIHByZXYsIElubGluZUZsb3dCb3gqIHBhcmVudCkKICAgICAgICAgOiBt
X25leHQobmV4dCkKICAgICAgICAgLCBtX3ByZXYocHJldikKICAgICAgICAgLCBtX3BhcmVudChw
YXJlbnQpCi0gICAgICAgICwgbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICAgICAgLCBtX3JlbmRl
cmVyKG9iaikKICAgICAgICAgLCBtX3RvcExlZnQodG9wTGVmdCkKICAgICAgICAgLCBtX2xvZ2lj
YWxXaWR0aChsb2dpY2FsV2lkdGgpCiAgICAgICAgICwgbV9iaXRmaWVsZHMoZmlyc3RMaW5lLCBj
b25zdHJ1Y3RlZCwgZGlydHksIGV4dHJhY3RlZCwgaXNIb3Jpem9udGFsKQpAQCAtMTgxLDcgKzE4
MSw3IEBAIHB1YmxpYzoKICAgICBJbmxpbmVCb3gqIG5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVC
cmVhaygpIGNvbnN0OwogICAgIElubGluZUJveCogcHJldkxlYWZDaGlsZElnbm9yaW5nTGluZUJy
ZWFrKCkgY29uc3Q7CiAKLSAgICBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJlcjsgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmVyOyB9CiAKICAgICBJbmxpbmVGbG93Qm94KiBwYXJlbnQoKSBjb25zdAog
ICAgIHsKQEAgLTI3OCwxNSArMjc4LDE1IEBAIHB1YmxpYzoKIAogICAgIGludCBleHBhbnNpb24o
KSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5leHBhbnNpb24oKTsgfQogCi0gICAgYm9vbCB2
aXNpYmxlVG9IaXRUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLT52
aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiByZW5kZXJlcigpLnN0eWxlKCktPnBvaW50ZXJFdmVu
dHMoKSAhPSBQRV9OT05FOyB9CisgICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgY29uc3Qg
eyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYg
cmVuZGVyZXIoKS0+c3R5bGUoKS0+cG9pbnRlckV2ZW50cygpICE9IFBFX05PTkU7IH0KICAgICAK
LSAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gcmVuZGVy
ZXIoKS5zdHlsZShtX2JpdGZpZWxkcy5maXJzdExpbmUoKSktPnZlcnRpY2FsQWxpZ24oKTsgfQor
ICAgIEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiByZW5kZXJl
cigpLT5zdHlsZShtX2JpdGZpZWxkcy5maXJzdExpbmUoKSktPnZlcnRpY2FsQWxpZ24oKTsgfQog
CiAgICAgLy8gVXNlIHdpdGggY2F1dGlvbiEgVGhlIHR5cGUgaXMgbm90IGNoZWNrZWQhCiAgICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIGJveE1vZGVsT2JqZWN0KCkgY29uc3QKICAgICB7IAotICAg
ICAgICBpZiAoIW1fcmVuZGVyZXIuaXNUZXh0KCkpCi0gICAgICAgICAgICByZXR1cm4gJnRvUmVu
ZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJlcik7CisgICAgICAgIGlmICghbV9yZW5kZXJlci0+
aXNUZXh0KCkpCisgICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX3Jl
bmRlcmVyKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0zMDgsOSArMzA4LDkgQEAg
cHJpdmF0ZToKIAogICAgIElubGluZUZsb3dCb3gqIG1fcGFyZW50OyAvLyBUaGUgYm94IHRoYXQg
Y29udGFpbnMgdXMuCiAKLSAgICBSZW5kZXJPYmplY3QmIG1fcmVuZGVyZXI7Ci0KIHB1YmxpYzoK
KyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisKICAgICBGbG9hdFBvaW50IG1fdG9wTGVm
dDsKICAgICBmbG9hdCBtX2xvZ2ljYWxXaWR0aDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCmluZGV4IDZmYzI3MDkuLjQ2NTZhNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqIGNoaWxkKQogICAgIGNoaWxkLT5z
ZXRGaXJzdExpbmVTdHlsZUJpdChpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgIGNoaWxkLT5zZXRJ
c0hvcml6b250YWwoaXNIb3Jpem9udGFsKCkpOwogICAgIGlmIChjaGlsZC0+aXNUZXh0KCkpIHsK
LSAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpID09ICZyZW5kZXJlcigpKQor
ICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCktPnBhcmVudCgpID09IHJlbmRlcmVyKCkpCiAg
ICAgICAgICAgICBtX2hhc1RleHRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgIHNldEhhc1RleHRE
ZXNjZW5kYW50c09uQW5jZXN0b3JzKHRoaXMpOwogICAgIH0gZWxzZSBpZiAoY2hpbGQtPmlzSW5s
aW5lRmxvd0JveCgpKSB7CkBAIC0xMjAsMTQgKzEyMCwxNCBAQCB2b2lkIElubGluZUZsb3dCb3g6
OmFkZFRvTGluZShJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgc2V0SGFzVGV4dERlc2Nl
bmRhbnRzT25BbmNlc3RvcnModGhpcyk7CiAgICAgfQogCi0gICAgaWYgKGRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiAhY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
cmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOwotICAgICAgICBSZW5kZXJTdHls
ZSogY2hpbGRTdHlsZSA9IGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUo
KSk7CisgICAgaWYgKGRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAm
JiAhY2hpbGQtPnJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgICAg
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5l
U3R5bGUoKSk7CisgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY2hpbGQtPnJlbmRl
cmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgICAgIGJvb2wgc2hvdWxkQ2xl
YXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpCisgICAgICAgIGlmIChjaGls
ZC0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpKQogICAgICAgICAgICAgc2hvdWxkQ2xlYXJEZXNj
ZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsKICAgICAgICAgZWxz
ZSBpZiAoY2hpbGQtPmlzVGV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVy
KCkuaXNCUigpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5kZXJlcigpKSB7
CisgICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCktPmlzQlIoKSB8fCBjaGlsZC0+cmVu
ZGVyZXIoKS0+cGFyZW50KCkgIT0gcmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIGlmICgh
cGFyZW50U3R5bGUtPmZvbnQoKS5mb250TWV0cmljcygpLmhhc0lkZW50aWNhbEFzY2VudERlc2Nl
bnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUtPmZvbnQoKS5mb250TWV0cmljcygpKQogICAgICAgICAg
ICAgICAgICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9IGNoaWxkU3R5bGUtPmxp
bmVIZWlnaHQoKQogICAgICAgICAgICAgICAgICAgICB8fCAocGFyZW50U3R5bGUtPnZlcnRpY2Fs
QWxpZ24oKSAhPSBCQVNFTElORSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUt
PnZlcnRpY2FsQWxpZ24oKSAhPSBCQVNFTElORSkKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgaWYg
KGNoaWxkU3R5bGUtPmhhc1RleHRDb21iaW5lKCkgfHwgY2hpbGRTdHlsZS0+dGV4dEVtcGhhc2lz
TWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lKQogICAgICAgICAgICAgICAgIHNob3VsZENs
ZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNCUigpKSB7
CisgICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCktPmlzQlIoKSkgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGR1bWIuIFdlIG9ubHkgdHVybiBvZmYgYmVjYXVzZSBj
dXJyZW50IGxheW91dCB0ZXN0IHJlc3VsdHMgZXhwZWN0IHRoZSA8YnI+IHRvIGJlIDAtaGVpZ2h0
IG9uIHRoZSBiYXNlbGluZS4KICAgICAgICAgICAgICAgICAvLyBPdGhlciB0aGFuIG1ha2luZyBh
IHppbGxpb24gdGVzdHMgaGF2ZSB0byByZWdlbmVyYXRlIHJlc3VsdHMsIHRoZXJlJ3Mgbm8gcmVh
c29uIHRvIGRpdGNoIHRoZSBvcHRpbWl6YXRpb24gaGVyZS4KICAgICAgICAgICAgICAgICBzaG91
bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwpA
QCAtMTU3LDE4ICsxNTcsMTggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoSW5saW5l
Qm94KiBjaGlsZCkKICAgICAgICAgICAgIGNsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWln
aHRBbmRCYXNlbGluZSgpOwogICAgIH0KIAotICAgIGlmICghY2hpbGQtPnJlbmRlcmVyKCkuaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKKyAgICBpZiAoIWNoaWxkLT5yZW5kZXJlcigpLT5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzVGV4dCgpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNoaWxkLT5yZW5kZXJlcigpLnN0
eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSk7CisgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRT
dHlsZSA9IGNoaWxkLT5yZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAg
ICAgICAgICAgaWYgKGNoaWxkU3R5bGUtPmxldHRlclNwYWNpbmcoKSA8IDAgfHwgY2hpbGRTdHls
ZS0+dGV4dFNoYWRvdygpIHx8IGNoaWxkU3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0
RW1waGFzaXNNYXJrTm9uZSB8fCBjaGlsZFN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgoKSkKICAgICAg
ICAgICAgICAgICBjaGlsZC0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKLSAgICAgICAg
fSBlbHNlIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgICAg
IGNvbnN0IFJlbmRlckJveCYgYm94ID0gdG9SZW5kZXJCb3goY2hpbGQtPnJlbmRlcmVyKCkpOwot
ICAgICAgICAgICAgaWYgKGJveC5oYXNSZW5kZXJPdmVyZmxvdygpIHx8IGJveC5oYXNTZWxmUGFp
bnRpbmdMYXllcigpKQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5yZW5kZXJlcigpLT5pc1Jl
cGxhY2VkKCkpIHsKKyAgICAgICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3goY2hp
bGQtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgaWYgKGJveC0+aGFzUmVuZGVyT3ZlcmZsb3co
KSB8fCBib3gtPmhhc1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAgICAgICAgICAgY2hpbGQt
PmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNoaWxk
LT5yZW5kZXJlcigpLmlzQlIoKSAmJiAoY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExp
bmVTdHlsZSgpKS0+Ym94U2hhZG93KCkgfHwgY2hpbGQtPmJveE1vZGVsT2JqZWN0KCktPmhhc1Nl
bGZQYWludGluZ0xheWVyKCkKLSAgICAgICAgICAgICAgICAgICB8fCAoY2hpbGQtPnJlbmRlcmVy
KCkuaXNMaXN0TWFya2VyKCkgJiYgIXRvUmVuZGVyTGlzdE1hcmtlcihjaGlsZC0+cmVuZGVyZXIo
KSkuaXNJbnNpZGUoKSkKLSAgICAgICAgICAgICAgICAgICB8fCBjaGlsZC0+cmVuZGVyZXIoKS5z
dHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5oYXNCb3JkZXJJbWFnZU91dHNldHMoKSkpCisgICAg
ICAgIH0gZWxzZSBpZiAoIWNoaWxkLT5yZW5kZXJlcigpLT5pc0JSKCkgJiYgKGNoaWxkLT5yZW5k
ZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5ib3hTaGFkb3coKSB8fCBjaGlsZC0+
Ym94TW9kZWxPYmplY3QoKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKQorICAgICAgICAgICAgICAg
ICAgIHx8IChjaGlsZC0+cmVuZGVyZXIoKS0+aXNMaXN0TWFya2VyKCkgJiYgIXRvUmVuZGVyTGlz
dE1hcmtlcihjaGlsZC0+cmVuZGVyZXIoKSktPmlzSW5zaWRlKCkpCisgICAgICAgICAgICAgICAg
ICAgfHwgY2hpbGQtPnJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmhhc0Jv
cmRlckltYWdlT3V0c2V0cygpKSkKICAgICAgICAgICAgIGNoaWxkLT5jbGVhcktub3duVG9IYXZl
Tm9PdmVyZmxvdygpOwogICAgICAgICAKICAgICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxv
dygpICYmIGNoaWxkLT5pc0lubGluZUZsb3dCb3goKSAmJiAhdG9JbmxpbmVGbG93Qm94KGNoaWxk
KS0+a25vd25Ub0hhdmVOb092ZXJmbG93KCkpCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpkZWxldGVMaW5lKFJlbmRlckFyZW5hKiBhcmVuYSkKIAogdm9pZCBJbmxpbmVG
bG93Qm94OjpyZW1vdmVMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpCiB7Ci0gICAgdG9SZW5kZXJJ
bmxpbmUocmVuZGVyZXIoKSkubGluZUJveGVzKCktPnJlbW92ZUxpbmVCb3godGhpcyk7CisgICAg
dG9SZW5kZXJJbmxpbmUocmVuZGVyZXIoKSktPmxpbmVCb3hlcygpLT5yZW1vdmVMaW5lQm94KHRo
aXMpOwogfQogCiB2b2lkIElubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lKCkKQEAgLTIzOCw3ICsy
MzgsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lKCkKIAogdm9pZCBJbmxpbmVG
bG93Qm94OjpleHRyYWN0TGluZUJveEZyb21SZW5kZXJPYmplY3QoKQogewotICAgIHRvUmVuZGVy
SW5saW5lKHJlbmRlcmVyKCkpLmxpbmVCb3hlcygpLT5leHRyYWN0TGluZUJveCh0aGlzKTsKKyAg
ICB0b1JlbmRlcklubGluZShyZW5kZXJlcigpKS0+bGluZUJveGVzKCktPmV4dHJhY3RMaW5lQm94
KHRoaXMpOwogfQogCiB2b2lkIElubGluZUZsb3dCb3g6OmF0dGFjaExpbmUoKQpAQCAtMjUxLDcg
KzI1MSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YXR0YWNoTGluZSgpCiAKIHZvaWQgSW5saW5l
Rmxvd0JveDo6YXR0YWNoTGluZUJveFRvUmVuZGVyT2JqZWN0KCkKIHsKLSAgICB0b1JlbmRlcklu
bGluZShyZW5kZXJlcigpKS5saW5lQm94ZXMoKS0+YXR0YWNoTGluZUJveCh0aGlzKTsKKyAgICB0
b1JlbmRlcklubGluZShyZW5kZXJlcigpKS0+bGluZUJveGVzKCktPmF0dGFjaExpbmVCb3godGhp
cyk7CiB9CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZs
b2F0IGR5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0UG9z
aXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5KQogCiBSZW5kZXJMaW5lQm94TGlzdCogSW5saW5lRmxv
d0JveDo6cmVuZGVyZXJMaW5lQm94ZXMoKSBjb25zdAogewotICAgIHJldHVybiB0b1JlbmRlcklu
bGluZShyZW5kZXJlcigpKS5saW5lQm94ZXMoKTsKKyAgICByZXR1cm4gdG9SZW5kZXJJbmxpbmUo
cmVuZGVyZXIoKSktPmxpbmVCb3hlcygpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNMYXN0
Q2hpbGRGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIGFuY2VzdG9yLCBSZW5kZXJPYmplY3QqIGNo
aWxkKQpAQCAtMjkxLDExICsyOTEsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzTGFzdENoaWxk
Rm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBhbmNlc3RvciwgUmVuZGVyT2JqZWN0KgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soUmVu
ZGVyT2JqZWN0JiBhbmNlc3RvciwgUmVuZGVyT2JqZWN0KiBjaGlsZCkKK3N0YXRpYyBib29sIGlz
QW5zZWN0b3JBbmRXaXRoaW5CbG9jayhSZW5kZXJPYmplY3QqIGFuY2VzdG9yLCBSZW5kZXJPYmpl
Y3QqIGNoaWxkKQogewogICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY2hpbGQ7CiAgICAgd2hp
bGUgKG9iamVjdCAmJiAoIW9iamVjdC0+aXNSZW5kZXJCbG9jaygpIHx8IG9iamVjdC0+aXNJbmxp
bmUoKSkpIHsKLSAgICAgICAgaWYgKG9iamVjdCA9PSAmYW5jZXN0b3IpCisgICAgICAgIGlmIChv
YmplY3QgPT0gYW5jZXN0b3IpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgb2Jq
ZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKICAgICB9CkBAIC0zMTEsMTQgKzMxMSwxNCBAQCB2b2lk
IElubGluZUZsb3dCb3g6OmRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMoYm9vbCBsYXN0TGlu
ZSwgYm9vbCBpc0xvZ2ljYWxseQogCiAgICAgLy8gVGhlIHJvb3QgaW5saW5lIGJveCBuZXZlciBo
YXMgYm9yZGVycy9tYXJnaW5zL3BhZGRpbmcuCiAgICAgaWYgKHBhcmVudCgpKSB7Ci0gICAgICAg
IGJvb2wgbHRyID0gcmVuZGVyZXIoKS5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7
CisgICAgICAgIGJvb2wgbHRyID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpOwogCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhbGwgaW5pdGlhbCBsaW5l
cyBhcmUgdW5jb25zdHJ1Y3RlZC4gIElmIHNvLCB0aGVuCiAgICAgICAgIC8vIHdlIGtub3cgdGhl
IGlubGluZSBiZWdhbiBvbiB0aGlzIGxpbmUgKHVubGVzcyB3ZSBhcmUgYSBjb250aW51YXRpb24p
LgogICAgICAgICBSZW5kZXJMaW5lQm94TGlzdCogbGluZUJveExpc3QgPSByZW5kZXJlckxpbmVC
b3hlcygpOwotICAgICAgICBpZiAoIWxpbmVCb3hMaXN0LT5maXJzdExpbmVCb3goKS0+aXNDb25z
dHJ1Y3RlZCgpICYmICFyZW5kZXJlcigpLmlzSW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpKSB7
CisgICAgICAgIGlmICghbGluZUJveExpc3QtPmZpcnN0TGluZUJveCgpLT5pc0NvbnN0cnVjdGVk
KCkgJiYgIXJlbmRlcmVyKCktPmlzSW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpKSB7CiAjaWYg
RU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKLSAgICAgICAgICAgIGlmIChyZW5kZXJl
cigpLnN0eWxlKCktPmJveERlY29yYXRpb25CcmVhaygpID09IERDTE9ORSkKKyAgICAgICAgICAg
IGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5ib3hEZWNvcmF0aW9uQnJlYWsoKSA9PSBEQ0xPTkUp
CiAgICAgICAgICAgICAgICAgaW5jbHVkZUxlZnRFZGdlID0gaW5jbHVkZVJpZ2h0RWRnZSA9IHRy
dWU7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTMyOSw4ICszMjksOCBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMoYm9vbCBsYXN0TGluZSwg
Ym9vbCBpc0xvZ2ljYWxseQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFsaW5lQm94TGlzdC0+
bGFzdExpbmVCb3goKS0+aXNDb25zdHJ1Y3RlZCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJJbmxp
bmUmIGlubGluZUZsb3cgPSB0b1JlbmRlcklubGluZShyZW5kZXJlcigpKTsKLSAgICAgICAgICAg
IGJvb2wgaXNMYXN0T2JqZWN0T25MaW5lID0gIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhyZW5k
ZXJlcigpLCBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpIHx8IChpc0xhc3RDaGlsZEZvclJlbmRl
cmVyKCZyZW5kZXJlcigpLCBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpICYmICFpc0xvZ2ljYWxs
eUxhc3RSdW5XcmFwcGVkKTsKKyAgICAgICAgICAgIFJlbmRlcklubGluZSogaW5saW5lRmxvdyA9
IHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKCkpOworICAgICAgICAgICAgYm9vbCBpc0xhc3RPYmpl
Y3RPbkxpbmUgPSAhaXNBbnNlY3RvckFuZFdpdGhpbkJsb2NrKHJlbmRlcmVyKCksIGxvZ2ljYWxs
eUxhc3RSdW5SZW5kZXJlcikgfHwgKGlzTGFzdENoaWxkRm9yUmVuZGVyZXIocmVuZGVyZXIoKSwg
bG9naWNhbGx5TGFzdFJ1blJlbmRlcmVyKSAmJiAhaXNMb2dpY2FsbHlMYXN0UnVuV3JhcHBlZCk7
CiAKICAgICAgICAgICAgIC8vIFdlIGluY2x1ZGUgdGhlIGJvcmRlciB1bmRlciB0aGVzZSBjb25k
aXRpb25zOgogICAgICAgICAgICAgLy8gKDEpIFRoZSBuZXh0IGxpbmUgd2FzIG5vdCBjcmVhdGVk
LCBvciBpdCBpcyBjb25zdHJ1Y3RlZC4gV2UgY2hlY2sgdGhlIHByZXZpb3VzIGxpbmUgZm9yIHJ0
bC4KQEAgLTMzOCwxNyArMzM4LDE3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3Bh
Y2luZ0ZvckZsb3dCb3hlcyhib29sIGxhc3RMaW5lLCBib29sIGlzTG9naWNhbGx5CiAgICAgICAg
ICAgICAvLyAoMykgVGhlIGxvZ2ljYWxseUxhc3RSdW4gaXMgYSBkZXNjZW5kYW50IG9mIHRoaXMg
cmVuZGVyZXIsIGJ1dCBpdCBpcyB0aGUgbGFzdCBjaGlsZCBvZiB0aGlzIHJlbmRlcmVyIGFuZCBp
dCBkb2VzIG5vdCB3cmFwIHRvIHRoZSBuZXh0IGxpbmUuCiAjaWYgRU5BQkxFKENTU19CT1hfREVD
T1JBVElPTl9CUkVBSykKICAgICAgICAgICAgIC8vICg0KSBUaGUgZGVjb3JhdGlvbiBicmVhayBp
cyBzZXQgdG8gY2xvbmUgdGhlcmVmb3JlIHRoZXJlIHdpbGwgYmUgYm9yZGVycyBvbiBldmVyeSBz
aWRlcy4KLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCktPmJveERlY29yYXRpb25C
cmVhaygpID09IERDTE9ORSkKKyAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5i
b3hEZWNvcmF0aW9uQnJlYWsoKSA9PSBEQ0xPTkUpCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxl
ZnRFZGdlID0gaW5jbHVkZVJpZ2h0RWRnZSA9IHRydWU7CiAgICAgICAgICAgICBlbHNlCiAjZW5k
aWYKICAgICAgICAgICAgIGlmIChsdHIpIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRMaW5l
Qm94KCkKLSAgICAgICAgICAgICAgICAgICAgJiYgKChsYXN0TGluZSB8fCBpc0xhc3RPYmplY3RP
bkxpbmUpICYmICFpbmxpbmVGbG93LmNvbnRpbnVhdGlvbigpKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgKChsYXN0TGluZSB8fCBpc0xhc3RPYmplY3RPbkxpbmUpICYmICFpbmxpbmVGbG93LT5j
b250aW51YXRpb24oKSkpCiAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVSaWdodEVkZ2UgPSB0
cnVlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoKCFwcmV2TGlu
ZUJveCgpIHx8IHByZXZMaW5lQm94KCktPmlzQ29uc3RydWN0ZWQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgJiYgKChsYXN0TGluZSB8fCBpc0xhc3RPYmplY3RPbkxpbmUpICYmICFpbmxpbmVGbG93
LmNvbnRpbnVhdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKChsYXN0TGluZSB8fCBp
c0xhc3RPYmplY3RPbkxpbmUpICYmICFpbmxpbmVGbG93LT5jb250aW51YXRpb24oKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGluY2x1ZGVMZWZ0RWRnZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTM4NiwxMyArMzg2LDEzIEBAIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNl
Qm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXCiBm
bG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oSW5saW5l
Qm94KiBmaXJzdENoaWxkLCBJbmxpbmVCb3gqIGxhc3RDaGlsZCwgZmxvYXQmIGxvZ2ljYWxMZWZ0
LCBmbG9hdCYgbWluTG9naWNhbExlZnQsIGZsb2F0JiBtYXhMb2dpY2FsUmlnaHQsIGJvb2wmIG5l
ZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94
RGF0YU1hcCkKIHsKICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQ7IGN1cnIg
JiYgY3VyciAhPSBsYXN0Q2hpbGQ7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKLSAgICAg
ICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNUZXh0KCkpIHsKKyAgICAgICAgaWYgKGN1cnItPnJl
bmRlcmVyKCktPmlzVGV4dCgpKSB7CiAgICAgICAgICAgICBJbmxpbmVUZXh0Qm94KiB0ZXh0ID0g
dG9JbmxpbmVUZXh0Qm94KGN1cnIpOwotICAgICAgICAgICAgUmVuZGVyVGV4dCYgcnQgPSB0ZXh0
LT50ZXh0UmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmIChydC50ZXh0TGVuZ3RoKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobmVlZHNXb3JkU3BhY2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJ0
LmNoYXJhY3RlckF0KHRleHQtPnN0YXJ0KCkpKSkKLSAgICAgICAgICAgICAgICAgICAgbG9naWNh
bExlZnQgKz0gcnQuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLndvcmRTcGFjaW5n
KCk7Ci0gICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9ICFpc1NwYWNlT3JOZXdsaW5l
KHJ0LmNoYXJhY3RlckF0KHRleHQtPmVuZCgpKSk7CisgICAgICAgICAgICBSZW5kZXJUZXh0KiBy
dCA9IHRvUmVuZGVyVGV4dCh0ZXh0LT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIGlmIChydC0+
dGV4dExlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKG5lZWRzV29yZFNwYWNpbmcgJiYg
aXNTcGFjZU9yTmV3bGluZShydC0+Y2hhcmFjdGVyQXQodGV4dC0+c3RhcnQoKSkpKQorICAgICAg
ICAgICAgICAgICAgICBsb2dpY2FsTGVmdCArPSBydC0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgp
KS0+Zm9udCgpLndvcmRTcGFjaW5nKCk7CisgICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2lu
ZyA9ICFpc1NwYWNlT3JOZXdsaW5lKHJ0LT5jaGFyYWN0ZXJBdCh0ZXh0LT5lbmQoKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgdGV4dC0+c2V0TG9naWNhbExlZnQobG9naWNhbExlZnQp
OwogICAgICAgICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpKQpAQCAtNDAxLDE3ICs0
MDEsMTcgQEAgZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0
aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW4KICAgICAgICAgICAgIGlmIChrbm93blRv
SGF2ZU5vT3ZlcmZsb3coKSkKICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsUmlnaHQgPSBtYXgo
bG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLnBhcmVudCgpLT5zdHlsZSgpLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY3Vyci0+cmVu
ZGVyZXIoKS0+cGFyZW50KCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAg
ICAgICAgICAgICAgICAgICAgY3Vyci0+c2V0TG9naWNhbExlZnQobG9naWNhbExlZnQpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgLy8gT3VyIG9mZnNldCB0aGF0
IHdlIGNhY2hlIG5lZWRzIHRvIGJlIGZyb20gdGhlIGVkZ2Ugb2YgdGhlIHJpZ2h0IGJvcmRlciBi
b3ggYW5kCiAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCB0aGUgbGVmdCBib3JkZXIgYm94LiAg
V2UgaGF2ZSB0byBzdWJ0cmFjdCB8eHwgZnJvbSB0aGUgd2lkdGggb2YgdGhlIGJsb2NrCiAgICAg
ICAgICAgICAgICAgICAgIC8vICh3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgcm9vdCBs
aW5lIGJveCkuCi0gICAgICAgICAgICAgICAgICAgIGN1cnItPnNldExvZ2ljYWxMZWZ0KHJvb3Qo
KS0+YmxvY2soKS5sb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY3Vyci0+c2V0TG9naWNhbExlZnQocm9vdCgpLT5ibG9jaygpLT5sb2dpY2FsV2lkdGgo
KSAtIGxvZ2ljYWxMZWZ0KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gVGhlIHBvc2l0
aW9uZWQgb2JqZWN0IGhhcyBubyBlZmZlY3Qgb24gdGhlIHdpZHRoLgogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNSZW5kZXJJbmxpbmUoKSkgeworICAg
ICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAg
ICAgICAgICAgICBJbmxpbmVGbG93Qm94KiBmbG93ID0gdG9JbmxpbmVGbG93Qm94KGN1cnIpOwog
ICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IGZsb3ctPm1hcmdpbkxvZ2ljYWxMZWZ0KCk7
CiAgICAgICAgICAgICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpKQpAQCAtNDIwLDcg
KzQyMCw3IEBAIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVj
dGlvbihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQsIElubGluCiAgICAgICAgICAgICAgICAgaWYgKGtu
b3duVG9IYXZlTm9PdmVyZmxvdygpKQogICAgICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsUmln
aHQgPSBtYXgobG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCk7CiAgICAgICAgICAgICAgICAg
bG9naWNhbExlZnQgKz0gZmxvdy0+bWFyZ2luTG9naWNhbFJpZ2h0KCk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKCFjdXJyLT5yZW5kZXJlcigpLmlzTGlzdE1hcmtlcigpIHx8IHRvUmVuZGVyTGlz
dE1hcmtlcihjdXJyLT5yZW5kZXJlcigpKS5pc0luc2lkZSgpKSB7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKCFjdXJyLT5yZW5kZXJlcigpLT5pc0xpc3RNYXJrZXIoKSB8fCB0b1JlbmRlckxpc3RN
YXJrZXIoY3Vyci0+cmVuZGVyZXIoKSktPmlzSW5zaWRlKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgYm94IGNhbiBoYXZlIGEgZGlmZmVyZW50IHdyaXRpbmctbW9kZSB0aGFuIHRoZSBvdmVy
YWxsIGxpbmUsIHNvIHRoaXMgaXMgYSBiaXQgY29tcGxpY2F0ZWQuCiAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBnZXQgYWxsIHRoZSBwaHlzaWNhbCBtYXJnaW4gYW5kIG92ZXJmbG93IHZhbHVlcyBi
eSBoYW5kIGJhc2VkIG9mZiB8aXNWZXJ0aWNhbHwuCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdE1hcmdpbiA9IGlzSG9yaXpvbnRhbCgpID8gY3Vyci0+Ym94TW9kZWxPYmpl
Y3QoKS0+bWFyZ2luTGVmdCgpIDogY3Vyci0+Ym94TW9kZWxPYmplY3QoKS0+bWFyZ2luVG9wKCk7
CkBAIC00NDcsMTkgKzQ0NywxOSBAQCBib29sIElubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dy
YXBoaWNCYXNlbGluZShjb25zdCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGbwogICAgIGlmIChp
c0hvcml6b250YWwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChyZW5k
ZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnREZXNjcmlwdGlvbigpLm5vbkNK
S0dseXBoT3JpZW50YXRpb24oKSA9PSBOb25DSktHbHlwaE9yaWVudGF0aW9uVXByaWdodAotICAg
ICAgICB8fCByZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnQoKS5wcmlt
YXJ5Rm9udCgpLT5oYXNWZXJ0aWNhbEdseXBocygpKQorICAgIGlmIChyZW5kZXJlcigpLT5zdHls
ZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250RGVzY3JpcHRpb24oKS5ub25DSktHbHlwaE9yaWVu
dGF0aW9uKCkgPT0gTm9uQ0pLR2x5cGhPcmllbnRhdGlvblVwcmlnaHQKKyAgICAgICAgfHwgcmVu
ZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLnByaW1hcnlGb250KCkt
Pmhhc1ZlcnRpY2FsR2x5cGhzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChJ
bmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25M
aW5lKCkpIHsKLSAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCisgICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBk
b24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgogICAgICAgICAKICAgICAgICAgaWYgKGN1cnItPmlz
SW5saW5lRmxvd0JveCgpKSB7CiAgICAgICAgICAgICBpZiAodG9JbmxpbmVGbG93Qm94KGN1cnIp
LT5yZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUodGV4dEJveERhdGFNYXApKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGN1
cnItPnJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLnByaW1hcnlG
b250KCktPmhhc1ZlcnRpY2FsR2x5cGhzKCkpCisgICAgICAgICAgICBpZiAoY3Vyci0+cmVuZGVy
ZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLnByaW1hcnlGb250KCktPmhh
c1ZlcnRpY2FsR2x5cGhzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGNvbnN0IFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KiB1
c2VkRm9udHMgPSAwOwpAQCAtNDgwLDExICs0ODAsMTEgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpy
ZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUoY29uc3QgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIHZlcnRpY2FsQWxpZ25BcHBs
aWVzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCitzdGF0aWMgYm9vbCB2ZXJ0aWNhbEFs
aWduQXBwbGllcyhSZW5kZXJPYmplY3QqIGN1cnIpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvQ1NTMi92aXN1ZGV0Lmh0bWwjcHJvcGRlZi12ZXJ0aWNhbC1hbGlnbiAtIHZlcnRpY2Fs
LWFsaWduCiAgICAgLy8gb25seSBhcHBsaWVzIHRvIGlubGluZSBsZXZlbCBhbmQgdGFibGUtY2Vs
bCBlbGVtZW50cwotICAgIHJldHVybiAhcmVuZGVyZXIuaXNUZXh0KCkgfHwgcmVuZGVyZXIucGFy
ZW50KCktPmlzSW5saW5lKCkgfHwgcmVuZGVyZXIucGFyZW50KCktPmlzVGFibGVDZWxsKCk7Cisg
ICAgcmV0dXJuICFjdXJyLT5pc1RleHQoKSB8fCBjdXJyLT5wYXJlbnQoKS0+aXNJbmxpbmUoKSB8
fCBjdXJyLT5wYXJlbnQoKS0+aXNUYWJsZUNlbGwoKTsKIH0KIAogdm9pZCBJbmxpbmVGbG93Qm94
OjphZGp1c3RNYXhBc2NlbnRBbmREZXNjZW50KGludCYgbWF4QXNjZW50LCBpbnQmIG1heERlc2Nl
bnQsIGludCBtYXhQb3NpdGlvblRvcCwgaW50IG1heFBvc2l0aW9uQm90dG9tKQpAQCAtNDkyLDcg
KzQ5Miw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0TWF4QXNjZW50QW5kRGVzY2VudChp
bnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNjZW50LCBpCiAgICAgZm9yIChJbmxpbmVCb3gqIGN1
cnIgPSBmaXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKICAg
ICAgICAgLy8gVGhlIGNvbXB1dGVkIGxpbmVoZWlnaHQgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgZm9y
IHRoZQogICAgICAgICAvLyBwb3NpdGlvbmVkIGVsZW1lbnRzCi0gICAgICAgIGlmIChjdXJyLT5y
ZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+cmVu
ZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsg
Ly8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KIAog
ICAgICAgICBpZiAoKGN1cnItPnZlcnRpY2FsQWxpZ24oKSA9PSBUT1AgfHwgY3Vyci0+dmVydGlj
YWxBbGlnbigpID09IEJPVFRPTSkgJiYgdmVydGljYWxBbGlnbkFwcGxpZXMoY3Vyci0+cmVuZGVy
ZXIoKSkpIHsKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNvbXB1dGVM
b2dpY2FsQm94SGVpZ2h0cyhSb290SW5saW5lQm94KiByb290Qm94LCBMYXlvdXRVbml0JgogICAg
ICAgICByZXR1cm47CiAKICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsg
Y3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewotICAgICAgICBpZiAoY3Vyci0+cmVu
ZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPnJlbmRl
cmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8v
IFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAgICAg
ICAgIAogICAgICAgICBJbmxpbmVGbG93Qm94KiBpbmxpbmVGbG93Qm94ID0gY3Vyci0+aXNJbmxp
bmVGbG93Qm94KCkgPyB0b0lubGluZUZsb3dCb3goY3VycikgOiAwOwpAQCAtNjE3LDcgKzYxNyw3
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0
VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiB7CiAgICAgYm9vbCBpc1Jvb3RCb3ggPSBpc1Jv
b3RJbmxpbmVCb3goKTsKICAgICBpZiAoaXNSb290Qm94KSB7Ci0gICAgICAgIGNvbnN0IEZvbnRN
ZXRyaWNzJiBmb250TWV0cmljcyA9IHJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgp
KS0+Zm9udE1ldHJpY3MoKTsKKyAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNz
ID0gcmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJpY3MoKTsK
ICAgICAgICAgLy8gUm9vdElubGluZUJveGVzIGFyZSBhbHdheXMgcGxhY2VkIG9uIGF0IHBpeGVs
IGJvdW5kYXJpZXMgaW4gdGhlaXIgbG9naWNhbCB5IGRpcmVjdGlvbi4gTm90IGRvaW5nCiAgICAg
ICAgIC8vIHNvIHJlc3VsdHMgaW4gaW5jb3JyZWN0IHJlbmRlcmluZyBvZiB0ZXh0IGRlY29yYXRp
b25zLCBtb3N0IG5vdGFibHkgdW5kZXJsaW5lcy4KICAgICAgICAgc2V0TG9naWNhbFRvcChyb3Vu
ZFRvSW50KHRvcCArIG1heEFzY2VudCAtIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUp
KSk7CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5C
bG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCBtYXhIZWkKICAgICB9CiAK
ICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRPbkxpbmUoKSkgewotICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxh
Y2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAKICAgICAgICAgaWYgKGRlc2Nl
bmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSkgewpAQCAtNjYwLDIwICs2NjAs
MTkgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbihMYXlv
dXRVbml0IHRvcCwgTGF5b3V0VW5pdCBtYXhIZWkKICAgICAgICAgTGF5b3V0VW5pdCBib3hIZWln
aHRJbmNsdWRpbmdNYXJnaW5zID0gYm94SGVpZ2h0OwogICAgICAgICAgICAgCiAgICAgICAgIGlm
IChjdXJyLT5pc1RleHQoKSB8fCBjdXJyLT5pc0lubGluZUZsb3dCb3goKSkgewotICAgICAgICAg
ICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gY3Vyci0+cmVuZGVyZXIoKS5zdHls
ZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250TWV0cmljcygpOworICAgICAgICAgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gY3Vyci0+cmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJz
dExpbmVTdHlsZSgpKS0+Zm9udE1ldHJpY3MoKTsKICAgICAgICAgICAgIG5ld0xvZ2ljYWxUb3Ag
Kz0gY3Vyci0+YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUpIC0gZm9udE1ldHJpY3MuYXNj
ZW50KGJhc2VsaW5lVHlwZSk7CiAgICAgICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94
KCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94T2JqZWN0ID0g
dG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyLT5yZW5kZXJlcigpKTsKLSAgICAgICAgICAgICAg
ICBuZXdMb2dpY2FsVG9wIC09IGJveE9iamVjdC5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpCi0gICAgICAgICAgICAgICAgICAgID8gYm94T2JqZWN0
LmJvcmRlclRvcCgpICsgYm94T2JqZWN0LnBhZGRpbmdUb3AoKQotICAgICAgICAgICAgICAgICAg
ICA6IGJveE9iamVjdC5ib3JkZXJSaWdodCgpICsgYm94T2JqZWN0LnBhZGRpbmdSaWdodCgpOwor
ICAgICAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3hPYmplY3QgPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KGN1cnItPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgICAgIG5ld0xv
Z2ljYWxUb3AgLT0gYm94T2JqZWN0LT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gYm94T2JqZWN0LT5ib3JkZXJUb3AoKSArIGJveE9iamVjdC0+
cGFkZGluZ1RvcCgpIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hPYmpl
Y3QtPmJvcmRlclJpZ2h0KCkgKyBib3hPYmplY3QtPnBhZGRpbmdSaWdodCgpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dp
Y2FsVG9wOwotICAgICAgICB9IGVsc2UgaWYgKCFjdXJyLT5yZW5kZXJlcigpLmlzQlIoKSkgewot
ICAgICAgICAgICAgY29uc3QgUmVuZGVyQm94JiBib3ggPSB0b1JlbmRlckJveChjdXJyLT5yZW5k
ZXJlcigpKTsKKyAgICAgICAgfSBlbHNlIGlmICghY3Vyci0+cmVuZGVyZXIoKS0+aXNCUigpKSB7
CisgICAgICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KGN1cnItPnJlbmRlcmVy
KCkpOwogICAgICAgICAgICAgbmV3TG9naWNhbFRvcEluY2x1ZGluZ01hcmdpbnMgPSBuZXdMb2dp
Y2FsVG9wOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBvdmVyU2lkZU1hcmdpbiA9IGN1cnItPmlz
SG9yaXpvbnRhbCgpID8gYm94Lm1hcmdpblRvcCgpIDogYm94Lm1hcmdpblJpZ2h0KCk7Ci0gICAg
ICAgICAgICBMYXlvdXRVbml0IHVuZGVyU2lkZU1hcmdpbiA9IGN1cnItPmlzSG9yaXpvbnRhbCgp
ID8gYm94Lm1hcmdpbkJvdHRvbSgpIDogYm94Lm1hcmdpbkxlZnQoKTsKKyAgICAgICAgICAgIExh
eW91dFVuaXQgb3ZlclNpZGVNYXJnaW4gPSBjdXJyLT5pc0hvcml6b250YWwoKSA/IGJveC0+bWFy
Z2luVG9wKCkgOiBib3gtPm1hcmdpblJpZ2h0KCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHVu
ZGVyU2lkZU1hcmdpbiA9IGN1cnItPmlzSG9yaXpvbnRhbCgpID8gYm94LT5tYXJnaW5Cb3R0b20o
KSA6IGJveC0+bWFyZ2luTGVmdCgpOwogICAgICAgICAgICAgbmV3TG9naWNhbFRvcCArPSBvdmVy
U2lkZU1hcmdpbjsKICAgICAgICAgICAgIGJveEhlaWdodEluY2x1ZGluZ01hcmdpbnMgKz0gb3Zl
clNpZGVNYXJnaW4gKyB1bmRlclNpZGVNYXJnaW47CiAgICAgICAgIH0KQEAgLTY4MSwyOCArNjgw
LDI4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5
b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiAgICAgICAgIGN1cnItPnNldExvZ2ljYWxU
b3AobmV3TG9naWNhbFRvcCk7CiAKICAgICAgICAgaWYgKGNoaWxkQWZmZWN0c1RvcEJvdHRvbVBv
cykgewotICAgICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNSdWJ5UnVuKCkpIHsKKyAg
ICAgICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1J1YnlSdW4oKSkgewogICAgICAgICAg
ICAgICAgIC8vIFRyZWF0IHRoZSBsZWFkaW5nIG9uIHRoZSBmaXJzdCBhbmQgbGFzdCBsaW5lcyBv
ZiBydWJ5IHJ1bnMgYXMgbm90IGJlaW5nIHBhcnQgb2YgdGhlIG92ZXJhbGwgbGluZVRvcC9saW5l
Qm90dG9tLgogICAgICAgICAgICAgICAgIC8vIFJlYWxseSB0aGlzIGlzIGEgd29ya2Fyb3VuZCBo
YWNrIGZvciB0aGUgZmFjdCB0aGF0IHJ1Ynkgc2hvdWxkIGhhdmUgYmVlbiBkb25lIGFzIGxpbmUg
bGF5b3V0IGFuZCBub3QgZG9uZSB1c2luZwogICAgICAgICAgICAgICAgIC8vIGlubGluZS1ibG9j
ay4KLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLT5pc0ZsaXBwZWRMaW5l
c1dyaXRpbmdNb2RlKCkgPT0gKGN1cnItPnJlbmRlcmVyKCkuc3R5bGUoKS0+cnVieVBvc2l0aW9u
KCkgPT0gUnVieVBvc2l0aW9uQWZ0ZXIpKQorICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlcigp
LT5zdHlsZSgpLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPT0gKGN1cnItPnJlbmRlcmVy
KCktPnN0eWxlKCktPnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbkFmdGVyKSkKICAgICAg
ICAgICAgICAgICAgICAgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgaGFzQW5ub3RhdGlvbnNBZnRlciA9IHRydWU7
CiAKLSAgICAgICAgICAgICAgICBSZW5kZXJSdWJ5UnVuJiBydWJ5UnVuID0gdG9SZW5kZXJSdWJ5
UnVuKGN1cnItPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJSdWJ5QmFz
ZSogcnVieUJhc2UgPSBydWJ5UnVuLnJ1YnlCYXNlKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5k
ZXJSdWJ5UnVuKiBydWJ5UnVuID0gdG9SZW5kZXJSdWJ5UnVuKGN1cnItPnJlbmRlcmVyKCkpOwor
ICAgICAgICAgICAgICAgIGlmIChSZW5kZXJSdWJ5QmFzZSogcnVieUJhc2UgPSBydWJ5UnVuLT5y
dWJ5QmFzZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tUnVieUJh
c2VMZWFkaW5nID0gKGN1cnItPmxvZ2ljYWxIZWlnaHQoKSAtIHJ1YnlCYXNlLT5sb2dpY2FsQm90
dG9tKCkpICsgcnVieUJhc2UtPmxvZ2ljYWxIZWlnaHQoKSAtIChydWJ5QmFzZS0+bGFzdFJvb3RC
b3goKSA/IHJ1YnlCYXNlLT5sYXN0Um9vdEJveCgpLT5saW5lQm90dG9tKCkgOiBMYXlvdXRVbml0
KCkpOwogICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHRvcFJ1YnlCYXNlTGVhZGluZyA9
IHJ1YnlCYXNlLT5sb2dpY2FsVG9wKCkgKyAocnVieUJhc2UtPmZpcnN0Um9vdEJveCgpID8gcnVi
eUJhc2UtPmZpcnN0Um9vdEJveCgpLT5saW5lVG9wKCkgOiBMYXlvdXRVbml0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBuZXdMb2dpY2FsVG9wICs9ICFyZW5kZXJlcigpLnN0eWxlKCktPmlzRmxp
cHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IHRvcFJ1YnlCYXNlTGVhZGluZyA6IGJvdHRvbVJ1YnlC
YXNlTGVhZGluZzsKKyAgICAgICAgICAgICAgICAgICAgbmV3TG9naWNhbFRvcCArPSAhcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID8gdG9wUnVieUJhc2VM
ZWFkaW5nIDogYm90dG9tUnVieUJhc2VMZWFkaW5nOwogICAgICAgICAgICAgICAgICAgICBib3hI
ZWlnaHQgLT0gKHRvcFJ1YnlCYXNlTGVhZGluZyArIGJvdHRvbVJ1YnlCYXNlTGVhZGluZyk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1cnItPmlz
SW5saW5lVGV4dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dEVtcGhhc2lzUG9zaXRpb24g
ZW1waGFzaXNNYXJrUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgaWYgKHRvSW5saW5lVGV4dEJv
eChjdXJyKS0+Z2V0RW1waGFzaXNNYXJrUG9zaXRpb24oY3Vyci0+cmVuZGVyZXIoKS5zdHlsZShp
c0ZpcnN0TGluZVN0eWxlKCkpLCBlbXBoYXNpc01hcmtQb3NpdGlvbikpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodG9JbmxpbmVUZXh0Qm94KGN1cnIpLT5nZXRFbXBoYXNpc01hcmtQb3NpdGlvbihj
dXJyLT5yZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLCBlbXBoYXNpc01hcmtQ
b3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbXBoYXNpc01hcmtJc092ZXIg
PSBlbXBoYXNpc01hcmtQb3NpdGlvbiA9PSBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChlbXBoYXNpc01hcmtJc092ZXIgIT0gY3Vyci0+cmVuZGVyZXIo
KS5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkp
CisgICAgICAgICAgICAgICAgICAgIGlmIChlbXBoYXNpc01hcmtJc092ZXIgIT0gY3Vyci0+cmVu
ZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+aXNGbGlwcGVkTGluZXNXcml0aW5n
TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBo
YXNBbm5vdGF0aW9uc0FmdGVyID0gdHJ1ZTsKQEAgLTc0Miw3ICs3NDEsNyBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgdG9wLCBMYXlv
dXRVbml0IG1heEhlaQogICAgICAgICAgICAgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMgPSBt
YXgobGluZUJvdHRvbSwgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLT5pc0ZsaXBwZWRMaW5lc1dy
aXRpbmdNb2RlKCkpCisgICAgICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5pc0ZsaXBwZWRM
aW5lc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICBmbGlwTGluZXNJbkJsb2NrRGlyZWN0aW9u
KGxpbmVUb3BJbmNsdWRpbmdNYXJnaW5zLCBsaW5lQm90dG9tSW5jbHVkaW5nTWFyZ2lucyk7CiAg
ICAgfQogfQpAQCAtNzUxLDcgKzc1MCw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hl
c0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiB2b2lk
IElubGluZUZsb3dCb3g6OmNvbXB1dGVNYXhMb2dpY2FsVG9wKGZsb2F0JiBtYXhMb2dpY2FsVG9w
KSBjb25zdAogewogICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJy
OyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5yZW5kZXJl
cigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIo
KS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9z
aXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KIAogICAgICAg
ICBpZiAoZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpKQpAQCAtNzcy
LDcgKzc3MSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6ZmxpcExpbmVzSW5CbG9ja0RpcmVjdGlv
bihMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluCiAgICAgc2V0TG9naWNhbFRvcChs
aW5lQm90dG9tIC0gKGxvZ2ljYWxUb3AoKSAtIGxpbmVUb3ApIC0gbG9naWNhbEhlaWdodCgpKTsK
ICAgICAKICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3Vy
ciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewotICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9u
ZWQgcGxhY2Vob2xkZXJzIGFyZW4ndCBhZmZlY3RlZCBoZXJlLgogICAgICAgICAKICAgICAgICAg
aWYgKGN1cnItPmlzSW5saW5lRmxvd0JveCgpKQpAQCAtNzg4LDcgKzc4Nyw3IEBAIGlubGluZSB2
b2lkIElubGluZUZsb3dCb3g6OmFkZEJveFNoYWRvd1Zpc3VhbE92ZXJmbG93KExheW91dFJlY3Qm
IGxvZ2ljYWxWaXN1YWxPCiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0eWxl
KCkpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RM
aW5lU3R5bGUoKSk7CiAgICAgaWYgKCFzdHlsZS0+Ym94U2hhZG93KCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtODIxLDcgKzgyMCw3IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZEJv
cmRlck91dHNldFZpc3VhbE92ZXJmbG93KExheW91dFJlY3QmIGxvZ2ljYWxWaXN1CiAgICAgaWYg
KCFwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlbmRlclN0eWxlKiBzdHls
ZSA9IHJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKTsKKyAgICBSZW5kZXJTdHls
ZSogc3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgIGlm
ICghc3R5bGUtPmhhc0JvcmRlckltYWdlT3V0c2V0cygpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTg1NSw3ICs4NTQsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94Vmlz
dWFsT3ZlcmZsb3coSW5saW5lVGV4dEJveCogdGV4dEJveCwgR2x5cAogICAgIGlmICh0ZXh0Qm94
LT5rbm93blRvSGF2ZU5vT3ZlcmZsb3coKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVy
U3R5bGUqIHN0eWxlID0gdGV4dEJveC0+cmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0eWxl
KCkpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHRCb3gtPnJlbmRlcmVyKCktPnN0eWxl
KGlzRmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgCiAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuZmluZCh0ZXh0Qm94KTsKICAg
ICBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93ID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5k
KCkgPyAwIDogJml0LT52YWx1ZS5zZWNvbmQ7CkBAIC05MTIsMTMgKzkxMSwxMyBAQCBpbmxpbmUg
dm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coSW5saW5lVGV4dEJv
eCogdGV4dEJveCwgR2x5cAogCiBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRSZXBsYWNl
ZENoaWxkT3ZlcmZsb3coY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3gsIExheW91dFJlY3QmIGxv
Z2ljYWxMYXlvdXRPdmVyZmxvdywgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KQog
ewotICAgIGNvbnN0IFJlbmRlckJveCYgYm94ID0gdG9SZW5kZXJCb3goaW5saW5lQm94LT5yZW5k
ZXJlcigpKTsKKyAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KGlubGluZUJveC0+cmVu
ZGVyZXIoKSk7CiAgICAgCiAgICAgLy8gVmlzdWFsIG92ZXJmbG93IG9ubHkgcHJvcGFnYXRlcyBp
ZiB0aGUgYm94IGRvZXNuJ3QgaGF2ZSBhIHNlbGYtcGFpbnRpbmcgbGF5ZXIuICBUaGlzIHJlY3Rh
bmdsZSBkb2VzIG5vdCBpbmNsdWRlCiAgICAgLy8gdHJhbnNmb3JtcyBvciByZWxhdGl2ZSBwb3Np
dGlvbmluZyAoc2luY2UgdGhvc2Ugb2JqZWN0cyBhbHdheXMgaGF2ZSBzZWxmLXBhaW50aW5nIGxh
eWVycyksIGJ1dCBpdCBkb2VzIG5lZWQgdG8gYmUgYWRqdXN0ZWQKICAgICAvLyBmb3Igd3JpdGlu
Zy1tb2RlIGRpZmZlcmVuY2VzLgotICAgIGlmICghYm94Lmhhc1NlbGZQYWludGluZ0xheWVyKCkp
IHsKLSAgICAgICAgTGF5b3V0UmVjdCBjaGlsZExvZ2ljYWxWaXN1YWxPdmVyZmxvdyA9IGJveC5s
b2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24ocmVuZGVyZXIoKS5zdHlsZSgp
KTsKKyAgICBpZiAoIWJveC0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgeworICAgICAgICBMYXlv
dXRSZWN0IGNoaWxkTG9naWNhbFZpc3VhbE92ZXJmbG93ID0gYm94LT5sb2dpY2FsVmlzdWFsT3Zl
cmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24ocmVuZGVyZXIoKS0+c3R5bGUoKSk7CiAgICAgICAgIGNo
aWxkTG9naWNhbFZpc3VhbE92ZXJmbG93Lm1vdmUoaW5saW5lQm94LT5sb2dpY2FsTGVmdCgpLCBp
bmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSk7CiAgICAgICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy51
bml0ZShjaGlsZExvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAgICAgfQpAQCAtOTI2LDcgKzkyNSw3
IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhj
b25zdCBJbmxpbmVCb3gqIGlubGluZUJveCwKICAgICAvLyBMYXlvdXQgb3ZlcmZsb3cgaW50ZXJu
YWwgdG8gdGhlIGNoaWxkIGJveCBvbmx5IHByb3BhZ2F0ZXMgaWYgdGhlIGNoaWxkIGJveCBkb2Vz
bid0IGhhdmUgb3ZlcmZsb3cgY2xpcCBzZXQuCiAgICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGlsZCBi
b3JkZXIgYm94IHByb3BhZ2F0ZXMgYXMgbGF5b3V0IG92ZXJmbG93LiAgVGhpcyByZWN0YW5nbGUg
bXVzdCBpbmNsdWRlIHRyYW5zZm9ybXMgYW5kIHJlbGF0aXZlIHBvc2l0aW9uaW5nCiAgICAgLy8g
YW5kIGJlIGFkanVzdGVkIGZvciB3cml0aW5nLW1vZGUgZGlmZmVyZW5jZXMuCi0gICAgTGF5b3V0
UmVjdCBjaGlsZExvZ2ljYWxMYXlvdXRPdmVyZmxvdyA9IGJveC5sb2dpY2FsTGF5b3V0T3ZlcmZs
b3dSZWN0Rm9yUHJvcGFnYXRpb24ocmVuZGVyZXIoKS5zdHlsZSgpKTsKKyAgICBMYXlvdXRSZWN0
IGNoaWxkTG9naWNhbExheW91dE92ZXJmbG93ID0gYm94LT5sb2dpY2FsTGF5b3V0T3ZlcmZsb3dS
ZWN0Rm9yUHJvcGFnYXRpb24ocmVuZGVyZXIoKS0+c3R5bGUoKSk7CiAgICAgY2hpbGRMb2dpY2Fs
TGF5b3V0T3ZlcmZsb3cubW92ZShpbmxpbmVCb3gtPmxvZ2ljYWxMZWZ0KCksIGlubGluZUJveC0+
bG9naWNhbFRvcCgpKTsKICAgICBsb2dpY2FsTGF5b3V0T3ZlcmZsb3cudW5pdGUoY2hpbGRMb2dp
Y2FsTGF5b3V0T3ZlcmZsb3cpOwogfQpAQCAtOTQ3LDE3ICs5NDYsMTggQEAgdm9pZCBJbmxpbmVG
bG93Qm94Ojpjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxp
bmVCb3R0b20sIEcKICAgICBhZGRCb3JkZXJPdXRzZXRWaXN1YWxPdmVyZmxvdyhsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cpOwogCiAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxkKCk7
IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKLSAgICAgICAgaWYgKGN1cnItPnJl
bmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIGlmIChjdXJyLT5yZW5k
ZXJlcigpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAv
LyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgogICAg
ICAgICAKLSAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNUZXh0KCkpIHsKKyAgICAgICAg
aWYgKGN1cnItPnJlbmRlcmVyKCktPmlzVGV4dCgpKSB7CiAgICAgICAgICAgICBJbmxpbmVUZXh0
Qm94KiB0ZXh0ID0gdG9JbmxpbmVUZXh0Qm94KGN1cnIpOwotICAgICAgICAgICAgaWYgKHRleHQt
PnJlbmRlcmVyKCkuaXNCUigpKQorICAgICAgICAgICAgUmVuZGVyVGV4dCogcnQgPSB0b1JlbmRl
clRleHQodGV4dC0+cmVuZGVyZXIoKSk7CisgICAgICAgICAgICBpZiAocnQtPmlzQlIoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIExheW91dFJlY3QgdGV4dEJveE92
ZXJmbG93KGVuY2xvc2luZ0xheW91dFJlY3QodGV4dC0+bG9naWNhbEZyYW1lUmVjdCgpKSk7CiAg
ICAgICAgICAgICBhZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3codGV4dCwgdGV4dEJveERhdGFNYXAs
IHRleHRCb3hPdmVyZmxvdyk7CiAgICAgICAgICAgICBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cudW5p
dGUodGV4dEJveE92ZXJmbG93KTsKLSAgICAgICAgfSBlbHNlICBpZiAoY3Vyci0+cmVuZGVyZXIo
KS5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgIH0gZWxzZSAgaWYgKGN1cnItPnJlbmRlcmVy
KCktPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAgICAgICAgIElubGluZUZsb3dCb3gqIGZsb3cg
PSB0b0lubGluZUZsb3dCb3goY3Vycik7CiAgICAgICAgICAgICBmbG93LT5jb21wdXRlT3ZlcmZs
b3cobGluZVRvcCwgbGluZUJvdHRvbSwgdGV4dEJveERhdGFNYXApOwogICAgICAgICAgICAgaWYg
KCFmbG93LT5ib3hNb2RlbE9iamVjdCgpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQpAQCAtMTAx
NywxOSArMTAxNywxOSBAQCBib29sIElubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIC8vIFdlIG5lZWQg
dG8gYWNjb3VudCBmb3IgY3VsbGVkIGlubGluZSBwYXJlbnRzIG9mIHRoZSBoaXQtdGVzdGVkIG5v
ZGVzLCBzbyB0aGF0IHRoZXkgbWF5IGFsc28gZ2V0IGluY2x1ZGVkIGluIGFyZWEtYmFzZWQgaGl0
LXRlc3RzLgogICAgIFJlbmRlck9iamVjdCogY3VsbGVkUGFyZW50ID0gMDsKICAgICBmb3IgKElu
bGluZUJveCogY3VyciA9IGxhc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldk9uTGlu
ZSgpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLmlzVGV4dCgpIHx8ICFjdXJyLT5i
b3hNb2RlbE9iamVjdCgpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CisgICAgICAgIGlmIChj
dXJyLT5yZW5kZXJlcigpLT5pc1RleHQoKSB8fCAhY3Vyci0+Ym94TW9kZWxPYmplY3QoKS0+aGFz
U2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdQYXJl
bnQgPSAwOwogICAgICAgICAgICAgLy8gQ3VsbGVkIHBhcmVudHMgYXJlIG9ubHkgcmVsZXZhbnQg
Zm9yIGFyZWEtYmFzZWQgaGl0LXRlc3RzLCBzbyBpZ25vcmUgaXQgaW4gcG9pbnQtYmFzZWQgb25l
cy4KICAgICAgICAgICAgIGlmIChsb2NhdGlvbkluQ29udGFpbmVyLmlzUmVjdEJhc2VkVGVzdCgp
KSB7Ci0gICAgICAgICAgICAgICAgbmV3UGFyZW50ID0gY3Vyci0+cmVuZGVyZXIoKS5wYXJlbnQo
KTsKLSAgICAgICAgICAgICAgICBpZiAobmV3UGFyZW50ID09ICZyZW5kZXJlcigpKQorICAgICAg
ICAgICAgICAgIG5ld1BhcmVudCA9IGN1cnItPnJlbmRlcmVyKCktPnBhcmVudCgpOworICAgICAg
ICAgICAgICAgIGlmIChuZXdQYXJlbnQgPT0gcmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAg
ICAgbmV3UGFyZW50ID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIENoZWNrIHRo
ZSBjdWxsZWQgcGFyZW50IGFmdGVyIGFsbCBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGNoZWNrZWQs
IHRvIGRvIHRoaXMgd2Ugd2FpdCB1bnRpbAogICAgICAgICAgICAgLy8gd2UgYXJlIGFib3V0IHRv
IHRlc3QgYW4gZWxlbWVudCB3aXRoIGEgZGlmZmVyZW50IHBhcmVudC4KICAgICAgICAgICAgIGlm
IChuZXdQYXJlbnQgIT0gY3VsbGVkUGFyZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdQ
YXJlbnQgfHwgIW5ld1BhcmVudC0+aXNEZXNjZW5kYW50T2YoY3VsbGVkUGFyZW50KSkgewotICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoY3VsbGVkUGFyZW50ICYmIGN1bGxlZFBhcmVudCAhPSAm
cmVuZGVyZXIoKSAmJiBjdWxsZWRQYXJlbnQgIT0gbmV3UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgICAgIHdoaWxlIChjdWxsZWRQYXJlbnQgJiYgY3VsbGVkUGFyZW50ICE9IHJlbmRlcmVyKCkg
JiYgY3VsbGVkUGFyZW50ICE9IG5ld1BhcmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGN1bGxlZFBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAmJiB0b1JlbmRlcklubGluZShjdWxs
ZWRQYXJlbnQpLT5oaXRUZXN0Q3VsbGVkSW5saW5lKHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgY3VsbGVkUGFyZW50ID0g
Y3VsbGVkUGFyZW50LT5wYXJlbnQoKTsKQEAgLTEwMzgsMTMgKzEwMzgsMTMgQEAgYm9vbCBJbmxp
bmVGbG93Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmUKICAgICAgICAgICAgICAgICBjdWxsZWRQYXJlbnQgPSBuZXdQYXJlbnQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY3Vyci0+bm9kZUF0UG9pbnQocmVxdWVz
dCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgbGluZVRv
cCwgbGluZUJvdHRvbSkpIHsKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLnVwZGF0ZUhpdFRl
c3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNp
emUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT51cGRh
dGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9M
YXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gQ2hlY2sgYW55IGN1
bGxlZCBhbmNlc3RvciBvZiB0aGUgZmluYWwgY2hpbGRyZW4gdGVzdGVkLgotICAgIHdoaWxlIChj
dWxsZWRQYXJlbnQgJiYgY3VsbGVkUGFyZW50ICE9ICZyZW5kZXJlcigpKSB7CisgICAgd2hpbGUg
KGN1bGxlZFBhcmVudCAmJiBjdWxsZWRQYXJlbnQgIT0gcmVuZGVyZXIoKSkgewogICAgICAgICBp
ZiAoY3VsbGVkUGFyZW50LT5pc1JlbmRlcklubGluZSgpICYmIHRvUmVuZGVySW5saW5lKGN1bGxl
ZFBhcmVudCktPmhpdFRlc3RDdWxsZWRJbmxpbmUocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbklu
Q29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgY3VsbGVkUGFyZW50ID0gY3VsbGVkUGFyZW50LT5wYXJlbnQoKTsKQEAgLTEwNjAs
NyArMTA2MCw3IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAgIExheW91dFJlY3Qg
Ym91bmRzUmVjdChyb3VuZGVkRnJhbWVSZWN0KCkpOwogCiAgICAgICAgIGlmIChpc0hvcml6b250
YWwoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyKCkuc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gYm91bmRzUmVjdC5zaGlmdFhFZGdlVG8oZWxsaXBzaXNCb3gtPnJpZ2h0KCkpIDog
Ym91bmRzUmVjdC5zZXRXaWR0aChlbGxpcHNpc0JveC0+bGVmdCgpIC0gbGVmdCgpKTsKKyAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJv
dW5kc1JlY3Quc2hpZnRYRWRnZVRvKGVsbGlwc2lzQm94LT5yaWdodCgpKSA6IGJvdW5kc1JlY3Qu
c2V0V2lkdGgoZWxsaXBzaXNCb3gtPmxlZnQoKSAtIGxlZnQoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGJvdW5kc1JlY3Quc2hpZnRZRWRnZVRvKGVsbGlwc2lzQm94LT5yaWdodCgpKTsK
IApAQCAtMTA3OCw3ICsxMDc4LDcgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICBMYXlv
dXRVbml0IGhlaWdodCA9IGZyYW1lUmVjdC5oZWlnaHQoKTsKIAogICAgIC8vIENvbnN0cmFpbiBv
dXIgaGl0IHRlc3RpbmcgdG8gdGhlIGxpbmUgdG9wIGFuZCBib3R0b20gaWYgbmVjZXNzYXJ5Lgot
ICAgIGJvb2wgbm9RdWlya3NNb2RlID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmluTm9RdWlya3NN
b2RlKCk7CisgICAgYm9vbCBub1F1aXJrc01vZGUgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLmlu
Tm9RdWlya3NNb2RlKCk7CiAgICAgaWYgKCFub1F1aXJrc01vZGUgJiYgIWhhc1RleHRDaGlsZHJl
bigpICYmICEoZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpICYmIGhh
c1RleHREZXNjZW5kYW50cygpKSkgewogICAgICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0g
cm9vdCgpOwogICAgICAgICBMYXlvdXRVbml0JiB0b3AgPSBpc0hvcml6b250YWwoKSA/IG1pblkg
OiBtaW5YOwpAQCAtMTA5NCw4ICsxMDk0LDggQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAg
ICByZWN0Lm1vdmVCeShhY2N1bXVsYXRlZE9mZnNldCk7CiAKICAgICBpZiAobG9jYXRpb25JbkNv
bnRhaW5lci5pbnRlcnNlY3RzKHJlY3QpKSB7Ci0gICAgICAgIHJlbmRlcmVyKCkudXBkYXRlSGl0
VGVzdFJlc3VsdChyZXN1bHQsIGZsaXBGb3JXcml0aW5nTW9kZShsb2NhdGlvbkluQ29udGFpbmVy
LnBvaW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKSk7IC8vIERvbid0IGFk
ZCBpbiBtX3ggb3IgbV95IGhlcmUsIHdlIHdhbnQgY29vcmRzIGluIHRoZSBjb250YWluaW5nIGJs
b2NrJ3Mgc3BhY2UuCi0gICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RS
ZXN1bHQocmVuZGVyZXIoKS5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIHJl
Y3QpKQorICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgZmxp
cEZvcldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6
ZShhY2N1bXVsYXRlZE9mZnNldCkpKTsgLy8gRG9uJ3QgYWRkIGluIG1feCBvciBtX3kgaGVyZSwg
d2Ugd2FudCBjb29yZHMgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBzcGFjZS4KKyAgICAgICAg
aWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlcigpLT5ub2Rl
KCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIHJlY3QpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMTA1LDcgKzExMDUsNyBAQCBib29sIElubGluZUZsb3dC
b3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZQogdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91
dFVuaXQgbGluZUJvdHRvbSkKIHsKICAgICBMYXlvdXRSZWN0IG92ZXJmbG93UmVjdCh2aXN1YWxP
dmVyZmxvd1JlY3QobGluZVRvcCwgbGluZUJvdHRvbSkpOwotICAgIG92ZXJmbG93UmVjdC5pbmZs
YXRlKHJlbmRlcmVyKCkubWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSkpOworICAg
IG92ZXJmbG93UmVjdC5pbmZsYXRlKHJlbmRlcmVyKCktPm1heGltYWxPdXRsaW5lU2l6ZShwYWlu
dEluZm8ucGhhc2UpKTsKICAgICBmbGlwRm9yV3JpdGluZ01vZGUob3ZlcmZsb3dSZWN0KTsKICAg
ICBvdmVyZmxvd1JlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICAKQEAgLTExMTYsMTYgKzEx
MTYsMTYgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
U2VsZk91dGxpbmUpIHsKICAgICAgICAgICAgIC8vIEFkZCBvdXJzZWx2ZXMgdG8gdGhlIHBhaW50
IGluZm8gc3RydWN0J3MgbGlzdCBvZiBpbmxpbmVzIHRoYXQgbmVlZCB0byBwYWludCB0aGVpcgog
ICAgICAgICAgICAgLy8gb3V0bGluZXMuCi0gICAgICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiByZW5kZXJlcigpLmhhc091dGxpbmUoKSAm
JiAhaXNSb290SW5saW5lQm94KCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUmIGlu
bGluZUZsb3cgPSB0b1JlbmRlcklubGluZShyZW5kZXJlcigpKTsKKyAgICAgICAgICAgIGlmIChy
ZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiByZW5kZXJlcigp
LT5oYXNPdXRsaW5lKCkgJiYgIWlzUm9vdElubGluZUJveCgpKSB7CisgICAgICAgICAgICAgICAg
UmVuZGVySW5saW5lKiBpbmxpbmVGbG93ID0gdG9SZW5kZXJJbmxpbmUocmVuZGVyZXIoKSk7CiAK
ICAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayogY2IgPSAwOwotICAgICAgICAgICAgICAgIGJv
b2wgY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSA9IGlubGluZUZsb3cu
Y29udGludWF0aW9uKCkgfHwgaW5saW5lRmxvdy5pc0lubGluZUVsZW1lbnRDb250aW51YXRpb24o
KTsKKyAgICAgICAgICAgICAgICBib29sIGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVhdGlv
bk91dGxpbmUgPSBpbmxpbmVGbG93LT5jb250aW51YXRpb24oKSB8fCBpbmxpbmVGbG93LT5pc0lu
bGluZUVsZW1lbnRDb250aW51YXRpb24oKTsKICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmlu
Z0Jsb2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSkgeyAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0NjkwLiBXZSBjdXJyZW50bHkgZG9uJ3QgcmVjb25uZWN0IGlubGluZSBjb250aW51
YXRpb25zCiAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIGEgY2hpbGQgcmVtb3ZhbC4gQXMg
YSByZXN1bHQsIHRob3NlIG1lcmdlZCBpbmxpbmVzIGRvIG5vdCBnZXQgc2VwZXJhdGVkIGFuZCBo
ZW5jZSBub3QgZ2V0IGVuY2xvc2VkIGJ5CiAgICAgICAgICAgICAgICAgICAgIC8vIGFub255bW91
cyBibG9ja3MuIEluIHRoaXMgY2FzZSwgaXQgaXMgYmV0dGVyIHRvIGJhaWwgb3V0IGFuZCBwYWlu
dCBpdCBvdXJzZWxmLgotICAgICAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayogZW5jbG9zaW5n
QW5vbnltb3VzQmxvY2sgPSByZW5kZXJlcigpLmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJCbG9jayogZW5jbG9zaW5nQW5vbnltb3VzQmxvY2sgPSByZW5kZXJl
cigpLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmNsb3Np
bmdBbm9ueW1vdXNCbG9jay0+aXNBbm9ueW1vdXNCbG9jaygpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTExNDIsOSArMTE0Miw5IEBAIHZvaWQgSW5s
aW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwKICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrUGFpbnRz
Q29udGludWF0aW9uT3V0bGluZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgb3Vyc2Vs
dmVzIHRvIHRoZSBjb250YWluaW5nIGJsb2NrIG9mIHRoZSBlbnRpcmUgY29udGludWF0aW9uIHNv
IHRoYXQgaXQgY2FuCiAgICAgICAgICAgICAgICAgICAgIC8vIHBhaW50IHVzIGF0b21pY2FsbHku
Ci0gICAgICAgICAgICAgICAgICAgIGNiLT5hZGRDb250aW51YXRpb25XaXRoT3V0bGluZSh0b1Jl
bmRlcklubGluZShyZW5kZXJlcigpLm5vZGUoKS0+cmVuZGVyZXIoKSkpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIWlubGluZUZsb3cuaXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby5vdXRsaW5lT2JqZWN0cy0+YWRkKCZpbmxp
bmVGbG93KTsKKyAgICAgICAgICAgICAgICAgICAgY2ItPmFkZENvbnRpbnVhdGlvbldpdGhPdXRs
aW5lKHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKCktPm5vZGUoKS0+cmVuZGVyZXIoKSkpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUZsb3ctPmlzSW5saW5lRWxlbWVudENvbnRp
bnVhdGlvbigpKQorICAgICAgICAgICAgICAgICAgICBwYWludEluZm8ub3V0bGluZU9iamVjdHMt
PmFkZChpbmxpbmVGbG93KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spIHsKICAgICAgICAgICAgIHBhaW50TWFzayhw
YWludEluZm8sIHBhaW50T2Zmc2V0KTsKQEAgLTExNjEsMTIgKzExNjEsMTIgQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LAogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcyA/IFBhaW50UGhhc2VPdXRsaW5lIDogcGFpbnRJ
bmZvLnBoYXNlOwogICAgIFBhaW50SW5mbyBjaGlsZEluZm8ocGFpbnRJbmZvKTsKICAgICBjaGls
ZEluZm8ucGhhc2UgPSBwYWludFBoYXNlOwotICAgIGNoaWxkSW5mby51cGRhdGVTdWJ0cmVlUGFp
bnRSb290Rm9yQ2hpbGRyZW4oJnJlbmRlcmVyKCkpOworICAgIGNoaWxkSW5mby51cGRhdGVTdWJ0
cmVlUGFpbnRSb290Rm9yQ2hpbGRyZW4ocmVuZGVyZXIoKSk7CiAgICAgCiAgICAgLy8gUGFpbnQg
b3VyIGNoaWxkcmVuLgogICAgIGlmIChwYWludFBoYXNlICE9IFBhaW50UGhhc2VTZWxmT3V0bGlu
ZSkgewogICAgICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3Vycjsg
Y3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewotICAgICAgICAgICAgaWYgKGN1cnItPnJlbmRl
cmVyKCkuaXNUZXh0KCkgfHwgIWN1cnItPmJveE1vZGVsT2JqZWN0KCktPmhhc1NlbGZQYWludGlu
Z0xheWVyKCkpCisgICAgICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+aXNUZXh0KCkgfHwg
IWN1cnItPmJveE1vZGVsT2JqZWN0KCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAg
ICAgICAgICAgY3Vyci0+cGFpbnQoY2hpbGRJbmZvLCBwYWludE9mZnNldCwgbGluZVRvcCwgbGlu
ZUJvdHRvbSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTg1LDE4ICsxMTg1LDE4IEBAIGJvb2wg
SW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IEZp
bGxMYXllciYgbGFzdEJhY2tnCiAgICAgLy8gVGhlIGNoZWNrcyBoZXJlIG1hdGNoIGhvdyBwYWlu
dEZpbGxMYXllcigpIGRlY2lkZXMgd2hldGhlciB0byBjbGlwIChpZiBpdCBkb2VzLCB0aGUgc2hh
ZG93CiAgICAgLy8gd291bGQgYmUgY2xpcHBlZCBvdXQsIHNvIGl0IGhhcyB0byBiZSBkcmF3biBz
ZXBhcmF0ZWx5KS4KICAgICBTdHlsZUltYWdlKiBpbWFnZSA9IGxhc3RCYWNrZ3JvdW5kTGF5ZXIu
aW1hZ2UoKTsKLSAgICBib29sIGhhc0ZpbGxJbWFnZSA9IGltYWdlICYmIGltYWdlLT5jYW5SZW5k
ZXIoJnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAg
ICByZXR1cm4gKCFoYXNGaWxsSW1hZ2UgJiYgIXJlbmRlcmVyKCkuc3R5bGUoKS0+aGFzQm9yZGVy
UmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVu
dCgpOworICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1hZ2UgJiYgaW1hZ2UtPmNhblJlbmRlcihy
ZW5kZXJlcigpLCByZW5kZXJlcigpLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOworICAgIHJl
dHVybiAoIWhhc0ZpbGxJbWFnZSAmJiAhcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQm9yZGVyUmFk
aXVzKCkpIHx8ICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVudCgp
OwogfQogCiB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIFN0
eWxlSW1hZ2UqIGltZyA9IGZpbGxMYXllci0+aW1hZ2UoKTsKLSAgICBib29sIGhhc0ZpbGxJbWFn
ZSA9IGltZyAmJiBpbWctPmNhblJlbmRlcigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgp
LT5lZmZlY3RpdmVab29tKCkpOwotICAgIGlmICgoIWhhc0ZpbGxJbWFnZSAmJiAhcmVuZGVyZXIo
KS5zdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkgfHwgKCFwcmV2TGluZUJveCgpICYmICFuZXh0
TGluZUJveCgpKSB8fCAhcGFyZW50KCkpCisgICAgYm9vbCBoYXNGaWxsSW1hZ2UgPSBpbWcgJiYg
aW1nLT5jYW5SZW5kZXIocmVuZGVyZXIoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKTsKKyAgICBpZiAoKCFoYXNGaWxsSW1hZ2UgJiYgIXJlbmRlcmVyKCktPnN0eWxlKCkt
Pmhhc0JvcmRlclJhZGl1cygpKSB8fCAoIXByZXZMaW5lQm94KCkgJiYgIW5leHRMaW5lQm94KCkp
IHx8ICFwYXJlbnQoKSkKICAgICAgICAgYm94TW9kZWxPYmplY3QoKS0+cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9u
ZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKQotICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS0+Ym94RGVjb3JhdGlvbkJy
ZWFrKCkgPT0gRENMT05FKSB7CisgICAgZWxzZSBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym94
RGVjb3JhdGlvbkJyZWFrKCkgPT0gRENMT05FKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwogICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+Y2xpcChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwg
aGVpZ2h0KCkpKTsKICAgICAgICAgYm94TW9kZWxPYmplY3QoKS0+cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwg
dGhpcywgcmVjdC5zaXplKCksIG9wKTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IENvbG9yJiBjLCBjCiAgICAgICAgIC8vIHRoZSBwcmV2aW91cyBsaW5lIGxlZnQgb2ZmLgogICAg
ICAgICBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRPbkxpbmUgPSAwOwogICAgICAgICBMYXlvdXRV
bml0IHRvdGFsTG9naWNhbFdpZHRoOwotICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLT5k
aXJlY3Rpb24oKSA9PSBMVFIpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmRp
cmVjdGlvbigpID09IExUUikgewogICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJy
ID0gcHJldkxpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZMaW5lQm94KCkpCiAgICAg
ICAgICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsK
ICAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKQEAg
LTEyNDgsNyArMTI0OCw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hTaGFkb3coY29u
c3QgUGFpbnRJbmZvJiBpbmZvLCBSZW5kZXJTdHlsZSogcywgU2hhZG93CiAKIHZvaWQgSW5saW5l
Rmxvd0JveDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYg
cmVjdCkgY29uc3QKIHsKLSAgICBib29sIG5vUXVpcmtzTW9kZSA9IHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5pbk5vUXVpcmtzTW9kZSgpOworICAgIGJvb2wgbm9RdWlya3NNb2RlID0gcmVuZGVyZXIo
KS0+ZG9jdW1lbnQoKS5pbk5vUXVpcmtzTW9kZSgpOwogICAgIGlmICghbm9RdWlya3NNb2RlICYm
ICFoYXNUZXh0Q2hpbGRyZW4oKSAmJiAhKGRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5k
QmFzZWxpbmUoKSAmJiBoYXNUZXh0RGVzY2VuZGFudHMoKSkpIHsKICAgICAgICAgY29uc3QgUm9v
dElubGluZUJveCogcm9vdEJveCA9IHJvb3QoKTsKICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wID0gaXNIb3Jpem9udGFsKCkgPyByZWN0LnkoKSA6IHJlY3QueCgpOwpAQCAtMTI2OSw3ICsx
MjY5LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb25zdHJhaW5Ub0xpbmVUb3BBbmRCb3R0b21J
Zk5lZWRlZChMYXlvdXRSZWN0JiByZWN0KSBjb25zdAogc3RhdGljIExheW91dFJlY3QgY2xpcFJl
Y3RGb3JOaW5lUGllY2VJbWFnZVN0cmlwKElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTmluZVBp
ZWNlSW1hZ2UmIGltYWdlLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7CiAgICAgTGF5
b3V0UmVjdCBjbGlwUmVjdChwYWludFJlY3QpOwotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGJv
eC0+cmVuZGVyZXIoKS5zdHlsZSgpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGJveC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKTsKICAgICBMYXlvdXRCb3hFeHRlbnQgb3V0c2V0cyA9IHN0eWxlLT5p
bWFnZU91dHNldHMoaW1hZ2UpOwogICAgIGlmIChib3gtPmlzSG9yaXpvbnRhbCgpKSB7CiAgICAg
ICAgIGNsaXBSZWN0LnNldFkocGFpbnRSZWN0LnkoKSAtIG91dHNldHMudG9wKCkpOwpAQCAtMTI5
NSw3ICsxMjk1LDcgQEAgc3RhdGljIExheW91dFJlY3QgY2xpcFJlY3RGb3JOaW5lUGllY2VJbWFn
ZVN0cmlwKElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTmluZVAKIAogdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRX
aXRoaW5Sb290KCZyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCktPnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkK
KyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwg
cmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBQaXhlbCBzbmFwIGJhY2tncm91bmQvYm9yZGVyIHBhaW50aW5nLgpAQCAtMTMxMiw4ICsxMzEy
LDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAKICAgICAvLyBZb3UgY2FuIHVzZSBw
OjpmaXJzdC1saW5lIHRvIHNwZWNpZnkgYSBiYWNrZ3JvdW5kLiBJZiBzbywgdGhlIHJvb3QgbGlu
ZSBib3hlcyBmb3IKICAgICAvLyBhIGxpbmUgbWF5IGFjdHVhbGx5IGhhdmUgdG8gcGFpbnQgYSBi
YWNrZ3JvdW5kLgotICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gcmVuZGVyZXIoKS5zdHls
ZShpc0ZpcnN0TGluZVN0eWxlKCkpOwotICAgIGlmICgoIXBhcmVudCgpICYmIGlzRmlyc3RMaW5l
U3R5bGUoKSAmJiBzdHlsZVRvVXNlICE9IHJlbmRlcmVyKCkuc3R5bGUoKSkgfHwgKHBhcmVudCgp
ICYmIHJlbmRlcmVyKCkuaGFzQm94RGVjb3JhdGlvbnMoKSkpIHsKKyAgICBSZW5kZXJTdHlsZSog
c3R5bGVUb1VzZSA9IHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSk7CisgICAg
aWYgKCghcGFyZW50KCkgJiYgaXNGaXJzdExpbmVTdHlsZSgpICYmIHN0eWxlVG9Vc2UgIT0gcmVu
ZGVyZXIoKS0+c3R5bGUoKSkgfHwgKHBhcmVudCgpICYmIHJlbmRlcmVyKCktPmhhc0JveERlY29y
YXRpb25zKCkpKSB7CiAgICAgICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChh
ZGp1c3RlZFBhaW50b2Zmc2V0LCBmcmFtZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgLy8gU2hhZG93
IGNvbWVzIGZpcnN0IGFuZCBpcyBiZWhpbmQgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci4KICAg
ICAgICAgaWYgKCFib3hNb2RlbE9iamVjdCgpLT5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0Jh
Y2tncm91bmQoQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcykpCkBAIC0xMzI1LDE3ICsxMzI1LDE3
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAKICAgICAgICAgLy8gOmZpcnN0LWxpbmUgY2Fu
bm90IGJlIHVzZWQgdG8gcHV0IGJvcmRlcnMgb24gYSBsaW5lLiBBbHdheXMgcGFpbnQgYm9yZGVy
cyB3aXRoIG91cgogICAgICAgICAvLyBub24tZmlyc3QtbGluZSBzdHlsZS4KLSAgICAgICAgaWYg
KHBhcmVudCgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS0+aGFzQm9yZGVyKCkpIHsKLSAgICAgICAg
ICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBib3JkZXJJbWFnZSA9IHJlbmRlcmVyKCkuc3R5bGUo
KS0+Ym9yZGVySW1hZ2UoKTsKKyAgICAgICAgaWYgKHBhcmVudCgpICYmIHJlbmRlcmVyKCktPnN0
eWxlKCktPmhhc0JvcmRlcigpKSB7CisgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYg
Ym9yZGVySW1hZ2UgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5ib3JkZXJJbWFnZSgpOwogICAgICAg
ICAgICAgU3R5bGVJbWFnZSogYm9yZGVySW1hZ2VTb3VyY2UgPSBib3JkZXJJbWFnZS5pbWFnZSgp
OwotICAgICAgICAgICAgYm9vbCBoYXNCb3JkZXJJbWFnZSA9IGJvcmRlckltYWdlU291cmNlICYm
IGJvcmRlckltYWdlU291cmNlLT5jYW5SZW5kZXIoJnJlbmRlcmVyKCksIHN0eWxlVG9Vc2UtPmVm
ZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICBib29sIGhhc0JvcmRlckltYWdlID0gYm9yZGVy
SW1hZ2VTb3VyY2UgJiYgYm9yZGVySW1hZ2VTb3VyY2UtPmNhblJlbmRlcihyZW5kZXJlcigpLCBz
dHlsZVRvVXNlLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICAgICAgaWYgKGhhc0JvcmRlcklt
YWdlICYmICFib3JkZXJJbWFnZVNvdXJjZS0+aXNMb2FkZWQoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47IC8vIERvbid0IHBhaW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFn
ZSB0byBsb2FkLgogCiAgICAgICAgICAgICAvLyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2Ug
ZWl0aGVyIGhhdmUgbm8gYm9yZGVyIGltYWdlIG9yIHdlIGFyZSB0aGUgb25seSBib3ggZm9yIHRo
aXMgb2JqZWN0LiAgSW4gdGhvc2UKICAgICAgICAgICAgIC8vIGNhc2VzIG9ubHkgYSBzaW5nbGUg
Y2FsbCB0byBkcmF3IGlzIHJlcXVpcmVkLgogICAgICAgICAgICAgaWYgKCFoYXNCb3JkZXJJbWFn
ZSB8fCAoIXByZXZMaW5lQm94KCkgJiYgIW5leHRMaW5lQm94KCkpKQotICAgICAgICAgICAgICAg
IGJveE1vZGVsT2JqZWN0KCktPnBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCByZW5k
ZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSksIEJhY2tncm91bmRCbGVlZE5vbmUsIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UoKSk7CisgICAg
ICAgICAgICAgICAgYm94TW9kZWxPYmplY3QoKS0+cGFpbnRCb3JkZXIocGFpbnRJbmZvLCBwYWlu
dFJlY3QsIHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSksIEJhY2tncm91bmRC
bGVlZE5vbmUsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UoKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEg
Ym9yZGVyIGltYWdlIHRoYXQgc3BhbnMgbXVsdGlwbGUgbGluZXMuCiAgICAgICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBhZGp1c3QgdHggYW5kIHR5IGJ5IHRoZSB3aWR0aCBvZiBhbGwgcHJldmlv
dXMgbGluZXMuCkBAIC0xMzU5LDcgKzEzNTksNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50
Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50Jgog
ICAgICAgICAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVj
ZUltYWdlU3RyaXAodGhpcywgYm9yZGVySW1hZ2UsIHBhaW50UmVjdCk7CiAgICAgICAgICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKLSAgICAgICAgICAgICAgICBib3hN
b2RlbE9iamVjdCgpLT5wYWludEJvcmRlcihwYWludEluZm8sIExheW91dFJlY3Qoc3RyaXBYLCBz
dHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0
TGluZVN0eWxlKCkpKTsKKyAgICAgICAgICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEJv
cmRlcihwYWludEluZm8sIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0
cmlwSGVpZ2h0KSwgcmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JgogCiB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlm
ICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgmcmVuZGVyZXIoKSkgfHwgcmVuZGVy
ZXIoKS5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZU1hc2spCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5S
b290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gUGl4ZWwgc25hcCBtYXNrIHBhaW50aW5nLgpAQCAtMTM4MCwxNiArMTM4
MCwxNiBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIGZsaXBGb3JXcml0aW5nTW9kZShs
b2NhbFJlY3QpOwogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9m
ZnNldCArIGxvY2FsUmVjdC5sb2NhdGlvbigpOwogCi0gICAgY29uc3QgTmluZVBpZWNlSW1hZ2Um
IG1hc2tOaW5lUGllY2VJbWFnZSA9IHJlbmRlcmVyKCkuc3R5bGUoKS0+bWFza0JveEltYWdlKCk7
Ci0gICAgU3R5bGVJbWFnZSogbWFza0JveEltYWdlID0gcmVuZGVyZXIoKS5zdHlsZSgpLT5tYXNr
Qm94SW1hZ2UoKS5pbWFnZSgpOworICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBtYXNrTmluZVBp
ZWNlSW1hZ2UgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5tYXNrQm94SW1hZ2UoKTsKKyAgICBTdHls
ZUltYWdlKiBtYXNrQm94SW1hZ2UgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5tYXNrQm94SW1hZ2Uo
KS5pbWFnZSgpOwogCiAgICAgLy8gRmlndXJlIG91dCBpZiB3ZSBuZWVkIHRvIHB1c2ggYSB0cmFu
c3BhcmVuY3kgbGF5ZXIgdG8gcmVuZGVyIG91ciBtYXNrLgogICAgIGJvb2wgcHVzaFRyYW5zcGFy
ZW5jeUxheWVyID0gZmFsc2U7Ci0gICAgYm9vbCBjb21wb3NpdGVkTWFzayA9IHJlbmRlcmVyKCku
aGFzTGF5ZXIoKSAmJiBib3hNb2RlbE9iamVjdCgpLT5sYXllcigpLT5oYXNDb21wb3NpdGVkTWFz
aygpOwotICAgIGJvb2wgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzID0gcmVuZGVyZXIoKS52aWV3
KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKKyAgICBib29sIGNvbXBvc2l0ZWRNYXNrID0gcmVuZGVyZXIoKS0+aGFz
TGF5ZXIoKSAmJiBib3hNb2RlbE9iamVjdCgpLT5sYXllcigpLT5oYXNDb21wb3NpdGVkTWFzaygp
OworICAgIGJvb2wgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzID0gcmVuZGVyZXIoKS0+dmlldygp
LmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnM7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3Np
dGVTb3VyY2VPdmVyOwogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzKSB7Ci0gICAgICAgIGlmICgobWFza0JveEltYWdlICYmIHJlbmRlcmVyKCkuc3R5
bGUoKS0+bWFza0xheWVycygpLT5oYXNJbWFnZSgpKSB8fCByZW5kZXJlcigpLnN0eWxlKCktPm1h
c2tMYXllcnMoKS0+bmV4dCgpKQorICAgICAgICBpZiAoKG1hc2tCb3hJbWFnZSAmJiByZW5kZXJl
cigpLT5zdHlsZSgpLT5tYXNrTGF5ZXJzKCktPmhhc0ltYWdlKCkpIHx8IHJlbmRlcmVyKCktPnN0
eWxlKCktPm1hc2tMYXllcnMoKS0+bmV4dCgpKQogICAgICAgICAgICAgcHVzaFRyYW5zcGFyZW5j
eUxheWVyID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRl
RGVzdGluYXRpb25JbjsKQEAgLTE0MDEsOSArMTQwMSw5IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzCiAgICAgfQogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KGFkanVz
dGVkUGFpbnRPZmZzZXQsIGZyYW1lUmVjdC5zaXplKCkpOwotICAgIHBhaW50RmlsbExheWVycyhw
YWludEluZm8sIENvbG9yKCksIHJlbmRlcmVyKCkuc3R5bGUoKS0+bWFza0xheWVycygpLCBwYWlu
dFJlY3QsIGNvbXBvc2l0ZU9wKTsKKyAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xv
cigpLCByZW5kZXJlcigpLT5zdHlsZSgpLT5tYXNrTGF5ZXJzKCksIHBhaW50UmVjdCwgY29tcG9z
aXRlT3ApOwogICAgIAotICAgIGJvb2wgaGFzQm94SW1hZ2UgPSBtYXNrQm94SW1hZ2UgJiYgbWFz
a0JveEltYWdlLT5jYW5SZW5kZXIoJnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS0+ZWZm
ZWN0aXZlWm9vbSgpKTsKKyAgICBib29sIGhhc0JveEltYWdlID0gbWFza0JveEltYWdlICYmIG1h
c2tCb3hJbWFnZS0+Y2FuUmVuZGVyKHJlbmRlcmVyKCksIHJlbmRlcmVyKCktPnN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSk7CiAgICAgaWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5p
c0xvYWRlZCgpKSB7CiAgICAgICAgIGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTE0MTMs
NyArMTQxMyw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgLy8gVGhlIHNpbXBsZSBj
YXNlIGlzIHdoZXJlIHdlIGFyZSB0aGUgb25seSBib3ggZm9yIHRoaXMgb2JqZWN0LiAgSW4gdGhv
c2UKICAgICAvLyBjYXNlcyBvbmx5IGEgc2luZ2xlIGNhbGwgdG8gZHJhdyBpcyByZXF1aXJlZC4K
ICAgICBpZiAoIXByZXZMaW5lQm94KCkgJiYgIW5leHRMaW5lQm94KCkpIHsKLSAgICAgICAgYm94
TW9kZWxPYmplY3QoKS0+cGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgTGF5
b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBmcmFtZVJlY3Quc2l6ZSgpKSwgcmVuZGVyZXIo
KS5zdHlsZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgYm94
TW9kZWxPYmplY3QoKS0+cGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgTGF5
b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBmcmFtZVJlY3Quc2l6ZSgpKSwgcmVuZGVyZXIo
KS0+c3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIG1hc2sgaW1hZ2UgdGhhdCBzcGFucyBtdWx0aXBsZSBs
aW5lcy4KICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgX3R4IGFuZCBfdHkgYnkgdGhlIHdp
ZHRoIG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KQEAgLTE0MzEsNyArMTQzMSw3IEBAIHZvaWQgSW5s
aW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzCiAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZv
ck5pbmVQaWVjZUltYWdlU3RyaXAodGhpcywgbWFza05pbmVQaWVjZUltYWdlLCBwYWludFJlY3Qp
OwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5m
by5jb250ZXh0KTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwot
ICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5j
b250ZXh0LCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdo
dCksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7
CisgICAgICAgIGJveE1vZGVsT2JqZWN0KCktPnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZv
LmNvbnRleHQsIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVp
Z2h0KSwgcmVuZGVyZXIoKS0+c3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVP
cCk7CiAgICAgfQogICAgIAogICAgIGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCkBAIC0xNTA4
LDE5ICsxNTA4LDE5IEBAIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJBbm5v
dGF0aW9uQWRqdXN0bWVudChMYXlvdXRVbml0IGFsbG93ZWRQb3NpCiB7CiAgICAgTGF5b3V0VW5p
dCByZXN1bHQgPSAwOwogICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBj
dXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5yZW5k
ZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+cmVuZGVy
ZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8g
UG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KICAgICAg
ICAgCiAgICAgICAgIGlmIChjdXJyLT5pc0lubGluZUZsb3dCb3goKSkKICAgICAgICAgICAgIHJl
c3VsdCA9IG1heChyZXN1bHQsIHRvSW5saW5lRmxvd0JveChjdXJyKS0+Y29tcHV0ZU92ZXJBbm5v
dGF0aW9uQWRqdXN0bWVudChhbGxvd2VkUG9zaXRpb24pKTsKICAgICAgICAgCi0gICAgICAgIGlm
IChjdXJyLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBjdXJyLT5yZW5kZXJlcigpLmlzUnVi
eVJ1bigpICYmIGN1cnItPnJlbmRlcmVyKCkuc3R5bGUoKS0+cnVieVBvc2l0aW9uKCkgPT0gUnVi
eVBvc2l0aW9uQmVmb3JlKSB7Ci0gICAgICAgICAgICBSZW5kZXJSdWJ5UnVuJiBydWJ5UnVuID0g
dG9SZW5kZXJSdWJ5UnVuKGN1cnItPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgUmVuZGVyUnVi
eVRleHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi5ydWJ5VGV4dCgpOworICAgICAgICBpZiAoY3Vyci0+
cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpICYmIGN1cnItPnJlbmRlcmVyKCktPmlzUnVieVJ1bigp
ICYmIGN1cnItPnJlbmRlcmVyKCktPnN0eWxlKCktPnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3Np
dGlvbkJlZm9yZSkgeworICAgICAgICAgICAgUmVuZGVyUnVieVJ1biogcnVieVJ1biA9IHRvUmVu
ZGVyUnVieVJ1bihjdXJyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIFJlbmRlclJ1YnlUZXh0
KiBydWJ5VGV4dCA9IHJ1YnlSdW4tPnJ1YnlUZXh0KCk7CiAgICAgICAgICAgICBpZiAoIXJ1YnlU
ZXh0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAoIXJ1YnlSdW4uc3R5bGUoKS0+aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIXJ1YnlSdW4tPnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICAgICAgICAgIExheW91dFVuaXQgdG9wT2ZGaXJzdFJ1YnlUZXh0TGlu
ZSA9IHJ1YnlUZXh0LT5sb2dpY2FsVG9wKCkgKyAocnVieVRleHQtPmZpcnN0Um9vdEJveCgpID8g
cnVieVRleHQtPmZpcnN0Um9vdEJveCgpLT5saW5lVG9wKCkgOiBMYXlvdXRVbml0KCkpOwogICAg
ICAgICAgICAgICAgIGlmICh0b3BPZkZpcnN0UnVieVRleHRMaW5lID49IDApCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgTGF5b3V0VW5pdCBJbmxp
bmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxs
b3dlZFBvc2kKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyLT5pc0lubGluZVRleHRCb3go
KSkgewotICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gY3Vyci0+cmVuZGVyZXIoKS5z
dHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOworICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
ID0gY3Vyci0+cmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKTsKICAgICAgICAg
ICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uIGVtcGhhc2lzTWFya1Bvc2l0aW9uOwogICAgICAgICAg
ICAgaWYgKHN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUg
JiYgdG9JbmxpbmVUZXh0Qm94KGN1cnIpLT5nZXRFbXBoYXNpc01hcmtQb3NpdGlvbihzdHlsZSwg
ZW1waGFzaXNNYXJrUG9zaXRpb24pICYmIGVtcGhhc2lzTWFya1Bvc2l0aW9uID09IFRleHRFbXBo
YXNpc1Bvc2l0aW9uT3ZlcikgewogICAgICAgICAgICAgICAgIGlmICghc3R5bGUtPmlzRmxpcHBl
ZExpbmVzV3JpdGluZ01vZGUoKSkgewpAQCAtMTU1NiwxOSArMTU1NiwxOSBAQCBMYXlvdXRVbml0
IElubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVu
aXQgYWxsb3dlZFBvcwogewogICAgIExheW91dFVuaXQgcmVzdWx0ID0gMDsKICAgICBmb3IgKElu
bGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxp
bmUoKSkgewotICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRv
bid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAKICAgICAgICAgaWYgKGN1cnItPmlzSW5saW5lRmxv
d0JveCgpKQogICAgICAgICAgICAgcmVzdWx0ID0gbWF4KHJlc3VsdCwgdG9JbmxpbmVGbG93Qm94
KGN1cnIpLT5jb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChhbGxvd2VkUG9zaXRpb24p
KTsKIAotICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgJiYgY3Vyci0+
cmVuZGVyZXIoKS5pc1J1YnlSdW4oKSAmJiBjdXJyLT5yZW5kZXJlcigpLnN0eWxlKCktPnJ1YnlQ
b3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbkFmdGVyKSB7Ci0gICAgICAgICAgICBSZW5kZXJSdWJ5
UnVuJiBydWJ5UnVuID0gdG9SZW5kZXJSdWJ5UnVuKGN1cnItPnJlbmRlcmVyKCkpOwotICAgICAg
ICAgICAgUmVuZGVyUnVieVRleHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi5ydWJ5VGV4dCgpOworICAg
ICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpICYmIGN1cnItPnJlbmRlcmVy
KCktPmlzUnVieVJ1bigpICYmIGN1cnItPnJlbmRlcmVyKCktPnN0eWxlKCktPnJ1YnlQb3NpdGlv
bigpID09IFJ1YnlQb3NpdGlvbkFmdGVyKSB7CisgICAgICAgICAgICBSZW5kZXJSdWJ5UnVuKiBy
dWJ5UnVuID0gdG9SZW5kZXJSdWJ5UnVuKGN1cnItPnJlbmRlcmVyKCkpOworICAgICAgICAgICAg
UmVuZGVyUnVieVRleHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi0+cnVieVRleHQoKTsKICAgICAgICAg
ICAgIGlmICghcnVieVRleHQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ICAgIGlmIChydWJ5UnVuLnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewor
ICAgICAgICAgICAgaWYgKHJ1YnlSdW4tPnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICAgICAgICAgIExheW91dFVuaXQgdG9wT2ZGaXJzdFJ1YnlUZXh0TGlu
ZSA9IHJ1YnlUZXh0LT5sb2dpY2FsVG9wKCkgKyAocnVieVRleHQtPmZpcnN0Um9vdEJveCgpID8g
cnVieVRleHQtPmZpcnN0Um9vdEJveCgpLT5saW5lVG9wKCkgOiBMYXlvdXRVbml0KCkpOwogICAg
ICAgICAgICAgICAgIGlmICh0b3BPZkZpcnN0UnVieVRleHRMaW5lID49IDApCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTU4NCw3ICsxNTg0LDcgQEAgTGF5b3V0VW5pdCBJbmxp
bmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChMYXlvdXRVbml0IGFs
bG93ZWRQb3MKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyLT5pc0lubGluZVRleHRCb3go
KSkgewotICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gY3Vyci0+cmVuZGVyZXIoKS5z
dHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOworICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
ID0gY3Vyci0+cmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKTsKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+dGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25l
ICYmIHN0eWxlLT50ZXh0RW1waGFzaXNQb3NpdGlvbigpID09IFRleHRFbXBoYXNpc1Bvc2l0aW9u
VW5kZXIpIHsKICAgICAgICAgICAgICAgICBpZiAoIXN0eWxlLT5pc0ZsaXBwZWRMaW5lc1dyaXRp
bmdNb2RlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21PZkVtcGhh
c2lzTWFyayA9IGN1cnItPmxvZ2ljYWxCb3R0b20oKSArIHN0eWxlLT5mb250KCkuZW1waGFzaXNN
YXJrSGVpZ2h0KHN0eWxlLT50ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkpOwpAQCAtMTYxNSw3ICsx
NjE1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3Jk
ZXIoVmVjdG9yPElubGluZUJveCo+JiBsZWFmQm94ZXMKICAgICAgICAgbGVhZkJveGVzSW5Mb2dp
Y2FsT3JkZXIuYXBwZW5kKGxlYWYpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxl
KCktPnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXIpCisgICAgaWYgKHJlbmRlcmVyKCktPnN0
eWxlKCktPnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXIpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFJldmVyc2Ugb2YgcmVvcmRlcmluZyBvZiB0aGUgbGluZSAoTDIgYWNjb3JkaW5nIHRv
IEJpZGkgc3BlYyk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRl
eCBkYjZjNTNlLi40ZmExODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmgKQEAgLTQwLDggKzQwLDggQEAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IElubGluZVRleHRC
b3gqLCBwYWlyPFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+LCBHbHlwaE8KIAogY2xhc3Mg
SW5saW5lRmxvd0JveCA6IHB1YmxpYyBJbmxpbmVCb3ggewogcHVibGljOgotICAgIElubGluZUZs
b3dCb3goUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKLSAgICAgICAgOiBJbmxpbmVCb3gocmVuZGVy
ZXIpCisgICAgSW5saW5lRmxvd0JveChSZW5kZXJPYmplY3QqIG9iaikKKyAgICAgICAgOiBJbmxp
bmVCb3gob2JqKQogICAgICAgICAsIG1fZmlyc3RDaGlsZCgwKQogICAgICAgICAsIG1fbGFzdENo
aWxkKDApCiAgICAgICAgICwgbV9wcmV2TGluZUJveCgwKQpAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIGFuIGludmlzaWJsZSBtYXJrZXIgZXhpc3RzLiAgVGhlIHNpZGUgZWZm
ZWN0IG9mIGhhdmluZyBhbiBpbnZpc2libGUgbWFya2VyIGlzIHRoYXQgdGhlIHF1aXJrcyBtb2Rl
IGJlaGF2aW9yIG9mIHNocmlua2luZyBsaW5lcyB3aXRoIG5vCiAgICAgICAgIC8vIHRleHQgY2hp
bGRyZW4gbXVzdCBub3QgYXBwbHkuICBUaGlzIGNoYW5nZSBhbHNvIG1lYW5zIHRoYXQgZ2FwcyB3
aWxsIGV4aXN0IGJldHdlZW4gaW1hZ2UgYnVsbGV0IGxpc3QgaXRlbXMuICBFdmVuIHdoZW4gdGhl
IGxpc3QgYnVsbGV0CiAgICAgICAgIC8vIGlzIGFuIGltYWdlLCB0aGUgbGluZSBpcyBzdGlsbCBj
b25zaWRlcmVkIHRvIGJlIGltbXVuZSBmcm9tIHRoZSBxdWlyay4KLSAgICAgICAgbV9oYXNUZXh0
Q2hpbGRyZW4gPSByZW5kZXJlci5zdHlsZSgpLT5kaXNwbGF5KCkgPT0gTElTVF9JVEVNOworICAg
ICAgICBtX2hhc1RleHRDaGlsZHJlbiA9IG9iai0+c3R5bGUoKS0+ZGlzcGxheSgpID09IExJU1Rf
SVRFTTsKICAgICAgICAgbV9oYXNUZXh0RGVzY2VuZGFudHMgPSBtX2hhc1RleHRDaGlsZHJlbjsK
ICAgICB9CiAKQEAgLTE0MCwxMyArMTQwLDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
ICghaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIHJldHVybiBpc0hvcml6b250YWwoKSA/IHJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVT
dHlsZSgpKS0+Ym9yZGVyTGVmdFdpZHRoKCkgOiByZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5l
U3R5bGUoKSktPmJvcmRlclRvcFdpZHRoKCk7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWwo
KSA/IHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmJvcmRlckxlZnRXaWR0
aCgpIDogcmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Ym9yZGVyVG9wV2lk
dGgoKTsKICAgICB9CiAgICAgaW50IGJvcmRlckxvZ2ljYWxSaWdodCgpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoIWluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKCkpCiAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbCgpID8gcmVuZGVyZXIoKS5zdHlsZShp
c0ZpcnN0TGluZVN0eWxlKCkpLT5ib3JkZXJSaWdodFdpZHRoKCkgOiByZW5kZXJlcigpLnN0eWxl
KGlzRmlyc3RMaW5lU3R5bGUoKSktPmJvcmRlckJvdHRvbVdpZHRoKCk7CisgICAgICAgIHJldHVy
biBpc0hvcml6b250YWwoKSA/IHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSkt
PmJvcmRlclJpZ2h0V2lkdGgoKSA6IHJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUo
KSktPmJvcmRlckJvdHRvbVdpZHRoKCk7CiAgICAgfQogICAgIGludCBwYWRkaW5nTG9naWNhbExl
ZnQoKSBjb25zdAogICAgIHsKQEAgLTIzNCw3ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0
UmVjdCBsb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0KExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tKSBjb25zdAogICAgIHsKICAgICAgICAgTGF5b3V0UmVjdCByZXN1bHQg
PSBsYXlvdXRPdmVyZmxvd1JlY3QobGluZVRvcCwgbGluZUJvdHRvbSk7Ci0gICAgICAgIGlmICgh
cmVuZGVyZXIoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICBpZiAoIXJlbmRl
cmVyKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICByZXN1bHQgPSBy
ZXN1bHQudHJhbnNwb3NlZFJlY3QoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBA
IC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgIExheW91dFJlY3QgbG9naWNhbFZpc3VhbE92
ZXJmbG93UmVjdChMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgY29u
c3QKICAgICB7CiAgICAgICAgIExheW91dFJlY3QgcmVzdWx0ID0gdmlzdWFsT3ZlcmZsb3dSZWN0
KGxpbmVUb3AsIGxpbmVCb3R0b20pOwotICAgICAgICBpZiAoIXJlbmRlcmVyKCkuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgaWYgKCFyZW5kZXJlcigpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKQogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRyYW5zcG9zZWRSZWN0
KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDNhMTkzZTEuLmFhZWI2OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTk5LDIwICs5OSwyMCBAQCBp
bnQgSW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVU
eXBlKSBjb25zdAogewogICAgIGlmICghaXNUZXh0KCkgfHwgIXBhcmVudCgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBpZiAoJnBhcmVudCgpLT5yZW5kZXJlcigpID09IHJlbmRlcmVyKCkucGFy
ZW50KCkpCisgICAgaWYgKHBhcmVudCgpLT5yZW5kZXJlcigpID09IHJlbmRlcmVyKCktPnBhcmVu
dCgpKQogICAgICAgICByZXR1cm4gcGFyZW50KCktPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVU
eXBlKTsKLSAgICByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcigpLnBhcmVu
dCgpKS0+YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGlzRmlyc3RMaW5lU3R5bGUoKSwg
aXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKTsKKyAgICByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5k
ZXJlcigpLT5wYXJlbnQoKSktPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBpc0ZpcnN0
TGluZVN0eWxlKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExp
bmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9CiAKIExheW91dFVuaXQgSW5saW5lVGV4
dEJveDo6bGluZUhlaWdodCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc1RleHQoKSB8fCAhcmVuZGVy
ZXIoKS5wYXJlbnQoKSkKKyAgICBpZiAoIWlzVGV4dCgpIHx8ICFyZW5kZXJlcigpLT5wYXJlbnQo
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHJlbmRlcmVyKCkuaXNCUigpKQotICAgICAg
ICByZXR1cm4gdG9SZW5kZXJCUihyZW5kZXJlcigpKS5saW5lSGVpZ2h0KGlzRmlyc3RMaW5lU3R5
bGUoKSk7Ci0gICAgaWYgKCZwYXJlbnQoKS0+cmVuZGVyZXIoKSA9PSByZW5kZXJlcigpLnBhcmVu
dCgpKQorICAgIGlmIChtX3JlbmRlcmVyLT5pc0JSKCkpCisgICAgICAgIHJldHVybiB0b1JlbmRl
ckJSKG1fcmVuZGVyZXIpLT5saW5lSGVpZ2h0KGlzRmlyc3RMaW5lU3R5bGUoKSk7CisgICAgaWYg
KHBhcmVudCgpLT5yZW5kZXJlcigpID09IHJlbmRlcmVyKCktPnBhcmVudCgpKQogICAgICAgICBy
ZXR1cm4gcGFyZW50KCktPmxpbmVIZWlnaHQoKTsKLSAgICByZXR1cm4gdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdChyZW5kZXJlcigpLnBhcmVudCgpKS0+bGluZUhlaWdodChpc0ZpcnN0TGluZVN0eWxl
KCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0
aW9uT25Db250YWluaW5nTGluZSk7CisgICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
cmVuZGVyZXIoKS0+cGFyZW50KCkpLT5saW5lSGVpZ2h0KGlzRmlyc3RMaW5lU3R5bGUoKSwgaXNI
b3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNv
bnRhaW5pbmdMaW5lKTsKIH0KIAogTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25U
b3AoKQpAQCAtMTM5LDEwICsxMzksMTAgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVk
KGludCBzdGFydFBvcywgaW50IGVuZFBvcykgY29uc3QKIAogUmVuZGVyT2JqZWN0OjpTZWxlY3Rp
b25TdGF0ZSBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiB7Ci0gICAgUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKTsK
KyAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHN0YXRlID0gcmVuZGVyZXIoKS0+c2Vs
ZWN0aW9uU3RhdGUoKTsKICAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25T
dGFydCB8fCBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCB8fCBzdGF0ZSA9PSBS
ZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkJvdGgpIHsKICAgICAgICAgaW50IHN0YXJ0UG9zLCBlbmRQ
b3M7Ci0gICAgICAgIHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhcnRFbmQoc3RhcnRQb3MsIGVuZFBv
cyk7CisgICAgICAgIHJlbmRlcmVyKCktPnNlbGVjdGlvblN0YXJ0RW5kKHN0YXJ0UG9zLCBlbmRQ
b3MpOwogICAgICAgICAvLyBUaGUgcG9zaXRpb24gYWZ0ZXIgYSBoYXJkIGxpbmUgYnJlYWsgaXMg
Y29uc2lkZXJlZCB0byBiZSBwYXN0IGl0cyBlbmQuCiAgICAgICAgIGludCBsYXN0U2VsZWN0YWJs
ZSA9IHN0YXJ0KCkgKyBsZW4oKSAtIChpc0xpbmVCcmVhaygpID8gMSA6IDApOwogCkBAIC0yMDAs
OSArMjAwLDEwIEBAIExheW91dFJlY3QgSW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rpb25SZWN0
KGludCBzdGFydFBvcywgaW50IGVuZFBvcykKIAogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVy
IGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCisgICAgUmVuZGVyVGV4dCogdGV4dE9iaiA9IHRl
eHRSZW5kZXJlcigpOwogICAgIExheW91dFVuaXQgc2VsVG9wID0gc2VsZWN0aW9uVG9wKCk7CiAg
ICAgTGF5b3V0VW5pdCBzZWxIZWlnaHQgPSBzZWxlY3Rpb25IZWlnaHQoKTsKLSAgICBSZW5kZXJT
dHlsZSogc3R5bGVUb1VzZSA9IHRleHRSZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUo
KSk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSB0ZXh0T2JqLT5zdHlsZShpc0ZpcnN0
TGluZVN0eWxlKCkpOwogICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBzdHlsZVRvVXNlLT5mb250KCk7
CiAKICAgICBCdWZmZXJGb3JBcHBlbmRpbmdIeXBoZW4gY2hhcmFjdGVyc1dpdGhIeXBoZW47CkBA
IC0yMzMsNyArMjM0LDcgQEAgTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlv
blJlY3QoaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKQogCiB2b2lkIElubGluZVRleHRCb3g6OmRl
bGV0ZUxpbmUoUmVuZGVyQXJlbmEqIGFyZW5hKQogewotICAgIHRleHRSZW5kZXJlcigpLnJlbW92
ZVRleHRCb3godGhpcyk7CisgICAgdG9SZW5kZXJUZXh0KHJlbmRlcmVyKCkpLT5yZW1vdmVUZXh0
Qm94KHRoaXMpOwogICAgIGRlc3Ryb3koYXJlbmEpOwogfQogCkBAIC0yNDIsNyArMjQzLDcgQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpleHRyYWN0TGluZSgpCiAgICAgaWYgKGV4dHJhY3RlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0ZXh0UmVuZGVyZXIoKS5leHRyYWN0VGV4dEJveCh0aGlz
KTsKKyAgICB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPmV4dHJhY3RUZXh0Qm94KHRoaXMpOwog
fQogCiB2b2lkIElubGluZVRleHRCb3g6OmF0dGFjaExpbmUoKQpAQCAtMjUwLDcgKzI1MSw3IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6YXR0YWNoTGluZSgpCiAgICAgaWYgKCFleHRyYWN0ZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHRleHRSZW5kZXJlcigpLmF0dGFjaFRleHRCb3go
dGhpcyk7CisgICAgdG9SZW5kZXJUZXh0KHJlbmRlcmVyKCkpLT5hdHRhY2hUZXh0Qm94KHRoaXMp
OwogfQogCiBmbG9hdCBJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lz
TFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsb2F0IHZpc2libGVSaWdodEVkZ2UsIGZsb2F0
IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0aCwgYm9vbCYgZm91bmRCb3gpCkBA
IC0zMDQsNyArMzA1LDcgQEAgZmxvYXQgSW5saW5lVGV4dEJveDo6cGxhY2VFbGxpcHNpc0JveChi
b29sIGZsb3dJc0xUUiwgZmxvYXQgdmlzaWJsZUxlZnRFZGdlLCBmbG8KIAogICAgICAgICAvLyBJ
ZiB3ZSBnb3QgaGVyZSB0aGF0IG1lYW5zIHRoYXQgd2Ugd2VyZSBvbmx5IHBhcnRpYWxseSB0cnVu
Y2F0ZWQgYW5kIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwaXhlbCBvZmZzZXQgYXQgd2hpY2gKICAg
ICAgICAgLy8gdG8gcGxhY2UgdGhlIGVsbGlwc2lzLgotICAgICAgICBmbG9hdCB3aWR0aE9mVmlz
aWJsZVRleHQgPSB0ZXh0UmVuZGVyZXIoKS53aWR0aChtX3N0YXJ0LCBvZmZzZXQsIHRleHRQb3Mo
KSwgaXNGaXJzdExpbmVTdHlsZSgpKTsKKyAgICAgICAgZmxvYXQgd2lkdGhPZlZpc2libGVUZXh0
ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKCkpLT53aWR0aChtX3N0YXJ0LCBvZmZzZXQsIHRleHRQ
b3MoKSwgaXNGaXJzdExpbmVTdHlsZSgpKTsKIAogICAgICAgICAvLyBUaGUgZWxsaXBzaXMgbmVl
ZHMgdG8gYmUgcGxhY2VkIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgdmlzaWJsZSBjaGFyYWN0ZXIuCiAg
ICAgICAgIC8vIFdoZXJlICJhZnRlciIgaXMgZGVmaW5lZCBieSB0aGUgZmxvdyBkaXJlY3Rpb25h
bGl0eSwgbm90IHRoZSBpbmxpbmUKQEAgLTM2Niw3ICszNjcsNyBAQCB2b2lkIHVwZGF0ZUdyYXBo
aWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IENvbG9yJiBmaWxsQ29s
b3IsIGNvbgogCiBib29sIElubGluZVRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcmVuZGVyZXIoKS5pc0JSKCkgfHwgKHJlbmRlcmVyKCkuc3R5bGUoKS0+cHJlc2Vy
dmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAmJiAoKnRleHRSZW5kZXJlcigpLnRleHQoKSlbc3Rh
cnQoKV0gPT0gJ1xuJyk7CisgICAgcmV0dXJuIHJlbmRlcmVyKCktPmlzQlIoKSB8fCAocmVuZGVy
ZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAmJiAoKnRleHRS
ZW5kZXJlcigpLT50ZXh0KCkpW3N0YXJ0KCldID09ICdcbicpOwogfQogCiBib29sIElubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxp
bmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8pCkBAIC0zODMsMTAgKzM4NCwxMCBA
QCBib29sIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIEZsb2F0UmVjdCByZWN0KGxvY2F0aW9uSW5j
bHVkaW5nRmxpcHBpbmcoKSwgc2l6ZSgpKTsKICAgICAvLyBNYWtlIHN1cmUgdHJ1bmNhdGVkIHRl
eHQgaXMgaWdub3JlZCB3aGlsZSBoaXR0ZXN0aW5nLgogICAgIGlmIChtX3RydW5jYXRpb24gIT0g
Y05vVHJ1bmNhdGlvbikgewotICAgICAgICBMYXlvdXRVbml0IHdpZHRoT2ZWaXNpYmxlVGV4dCA9
IHRleHRSZW5kZXJlcigpLndpZHRoKG1fc3RhcnQsIG1fdHJ1bmNhdGlvbiwgdGV4dFBvcygpLCBp
c0ZpcnN0TGluZVN0eWxlKCkpOworICAgICAgICBMYXlvdXRVbml0IHdpZHRoT2ZWaXNpYmxlVGV4
dCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+d2lkdGgobV9zdGFydCwgbV90cnVuY2F0aW9u
LCB0ZXh0UG9zKCksIGlzRmlyc3RMaW5lU3R5bGUoKSk7CiAKICAgICAgICAgaWYgKGlzSG9yaXpv
bnRhbCgpKQotICAgICAgICAgICAgcmVuZGVyZXIoKS5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyByZWN0LnNldFdpZHRoKHdpZHRoT2ZWaXNpYmxlVGV4dCkgOiByZWN0LnNoaWZ0
WEVkZ2VUbyhyaWdodCgpIC0gd2lkdGhPZlZpc2libGVUZXh0KTsKKyAgICAgICAgICAgIHJlbmRl
cmVyKCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHJlY3Quc2V0V2lkdGgo
d2lkdGhPZlZpc2libGVUZXh0KSA6IHJlY3Quc2hpZnRYRWRnZVRvKHJpZ2h0KCkgLSB3aWR0aE9m
VmlzaWJsZVRleHQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZWN0LnNldEhlaWdodCh3
aWR0aE9mVmlzaWJsZVRleHQpOwogICAgIH0KQEAgLTM5NCw4ICszOTUsOCBAQCBib29sIElubGlu
ZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZQogICAgIHJlY3QubW92ZUJ5KGFjY3VtdWxhdGVkT2Zmc2V0KTsKIAogICAg
IGlmIChsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMocmVjdCkpIHsKLSAgICAgICAgcmVu
ZGVyZXIoKS51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgZmxpcEZvcldyaXRpbmdNb2RlKGxv
Y2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNl
dCkpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChy
ZW5kZXJlcigpLm5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCisg
ICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBmbGlwRm9yV3Jp
dGluZ01vZGUobG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3Vt
dWxhdGVkT2Zmc2V0KSkpOworICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRU
ZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5l
ciwgcmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDg2LDcgKzQ4Nyw3IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6Z2V0RW1waGFzaXNN
YXJrUG9zaXRpb24oUmVuZGVyU3R5bGUqIHN0eWxlLCBUZXh0RW1waGFzaXNQb3NpCiAgICAgaWYg
KGVtcGhhc2lzUG9zaXRpb24gPT0gVGV4dEVtcGhhc2lzUG9zaXRpb25VbmRlcikKICAgICAgICAg
cmV0dXJuIHRydWU7IC8vIFJ1YnkgdGV4dCBpcyBhbHdheXMgb3Zlciwgc28gaXQgY2Fubm90IHN1
cHByZXNzIGVtcGhhc2lzIG1hcmtzIHVuZGVyLgogCi0gICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5p
bmdCbG9jayA9IHJlbmRlcmVyKCkuY29udGFpbmluZ0Jsb2NrKCk7CisgICAgUmVuZGVyQmxvY2sq
IGNvbnRhaW5pbmdCbG9jayA9IHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpOwogICAgIGlm
ICghY29udGFpbmluZ0Jsb2NrLT5pc1J1YnlCYXNlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOyAv
LyBUaGlzIHRleHQgaXMgbm90IGluc2lkZSBhIHJ1YnkgYmFzZSwgc28gaXQgZG9lcyBub3QgaGF2
ZSBydWJ5IHRleHQgb3ZlciBpdC4KIApAQCAtNTA5LDcgKzUxMCw3IEBAIHN0YXRpYyBpbmxpbmUg
QWZmaW5lVHJhbnNmb3JtIHJvdGF0aW9uKGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgUm90YXRp
b25EaXJlY3RpCiAKIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCAvKmxpbmVUb3Aq
LywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLykKIHsKLSAgICBpZiAoaXNMaW5lQnJlYWsoKSB8
fCAhcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgmcmVuZGVyZXIoKSkgfHwgcmVuZGVy
ZXIoKS5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fAorICAgIGlmIChpc0xpbmVC
cmVhaygpIHx8ICFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8
IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8CiAgICAgICAg
IG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VPdXRsaW5lIHx8ICFtX2xlbikKICAgICAgICAgcmV0dXJuOwogCkBAIC01MjgsNyAr
NTI5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGlmIChsb2dpY2FsU3RhcnQgPj0g
cGFpbnRFbmQgfHwgbG9naWNhbFN0YXJ0ICsgbG9naWNhbEV4dGVudCA8PSBwYWludFN0YXJ0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGlzUHJpbnRpbmcgPSByZW5kZXJlcigpLmRvY3Vt
ZW50KCkucHJpbnRpbmcoKTsKKyAgICBib29sIGlzUHJpbnRpbmcgPSB0ZXh0UmVuZGVyZXIoKS0+
ZG9jdW1lbnQoKS5wcmludGluZygpOwogICAgIAogICAgIC8vIERldGVybWluZSB3aGV0aGVyIG9y
IG5vdCB3ZSdyZSBzZWxlY3RlZC4KICAgICBib29sIGhhdmVTZWxlY3Rpb24gPSAhaXNQcmludGlu
ZyAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVRleHRDbGlwICYmIHNlbGVjdGlvblN0
YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOwpAQCAtNTM3LDcgKzUzOCw3IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fdHJ1
bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpLmNvbnRh
aW5pbmdCbG9jaygpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgIT0gaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLT5jb250YWluaW5n
QmxvY2soKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICE9IGlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkgewogICAgICAgICAgICAgLy8gTWFrZSB0aGUgdmlzaWJsZSBmcmFnbWVu
dCBvZiB0ZXh0IGh1ZyB0aGUgZWRnZSBjbG9zZXN0IHRvIHRoZSByZXN0IG9mIHRoZSBydW4gYnkg
bW92aW5nIHRoZSBvcmlnaW4KICAgICAgICAgICAgIC8vIGF0IHdoaWNoIHdlIHN0YXJ0IGRyYXdp
bmcgdGV4dC4KICAgICAgICAgICAgIC8vIGUuZy4gSW4gdGhlIGNhc2Ugb2YgTFRSIHRleHQgdHJ1
bmNhdGVkIGluIGFuIFJUTCBDb250ZXh0LCB0aGUgY29ycmVjdCBiZWhhdmlvciBpczoKQEAgLTU0
Niw3ICs1NDcsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICAvLyBmYXJ0
aGVyIHRvIHRoZSByaWdodC4KICAgICAgICAgICAgIC8vIE5PVEU6IFdlYktpdCdzIGJlaGF2aW9y
IGRpZmZlcnMgZnJvbSB0aGF0IG9mIElFIHdoaWNoIGFwcGVhcnMgdG8ganVzdCBvdmVybGF5IHRo
ZSBlbGxpcHNpcyBvbiB0b3Agb2YgdGhlCiAgICAgICAgICAgICAvLyB0cnVuY2F0ZWQgc3RyaW5n
IGkuZS4gIHxIZWxsb3xDQkF8IC0+IHwuLi5sb3xDQkF8Ci0gICAgICAgICAgICBMYXlvdXRVbml0
IHdpZHRoT2ZWaXNpYmxlVGV4dCA9IHRleHRSZW5kZXJlcigpLndpZHRoKG1fc3RhcnQsIG1fdHJ1
bmNhdGlvbiwgdGV4dFBvcygpLCBpc0ZpcnN0TGluZVN0eWxlKCkpOworICAgICAgICAgICAgTGF5
b3V0VW5pdCB3aWR0aE9mVmlzaWJsZVRleHQgPSB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPndp
ZHRoKG1fc3RhcnQsIG1fdHJ1bmNhdGlvbiwgdGV4dFBvcygpLCBpc0ZpcnN0TGluZVN0eWxlKCkp
OwogICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aE9mSGlkZGVuVGV4dCA9IG1fbG9naWNhbFdp
ZHRoIC0gd2lkdGhPZlZpc2libGVUZXh0OwogICAgICAgICAgICAgTGF5b3V0U2l6ZSB0cnVuY2F0
aW9uT2Zmc2V0KGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHdpZHRoT2ZIaWRkZW5UZXh0IDog
LXdpZHRoT2ZIaWRkZW5UZXh0LCAwKTsKICAgICAgICAgICAgIGFkanVzdGVkUGFpbnRPZmZzZXQu
bW92ZShpc0hvcml6b250YWwoKSA/IHRydW5jYXRpb25PZmZzZXQgOiB0cnVuY2F0aW9uT2Zmc2V0
LnRyYW5zcG9zZWRTaXplKCkpOwpAQCAtNTU1LDcgKzU1Niw3IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCwKIAogICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
OwogCi0gICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJlcigpLnN0eWxlKGlzRmly
c3RMaW5lU3R5bGUoKSk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJlcigp
LT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgIAogICAgIGFkanVzdGVkUGFpbnRPZmZz
ZXQubW92ZSgwLCBzdHlsZVRvVXNlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gMCA6IC1s
b2dpY2FsSGVpZ2h0KCkpOwogCkBAIC01NjMsMTUgKzU2NCwxNSBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsCiAgICAgYm94T3JpZ2luLm1vdmUoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVz
dGVkUGFpbnRPZmZzZXQueSgpKTsKICAgICBGbG9hdFJlY3QgYm94UmVjdChib3hPcmlnaW4sIExh
eW91dFNpemUobG9naWNhbFdpZHRoKCksIGxvZ2ljYWxIZWlnaHQoKSkpOwogCi0gICAgUmVuZGVy
Q29tYmluZVRleHQqIGNvbWJpbmVkVGV4dCA9IHN0eWxlVG9Vc2UtPmhhc1RleHRDb21iaW5lKCkg
JiYgdGV4dFJlbmRlcmVyKCkuaXNDb21iaW5lVGV4dCgpICYmIHRvUmVuZGVyQ29tYmluZVRleHQo
dGV4dFJlbmRlcmVyKCkpLmlzQ29tYmluZWQoKSA/ICZ0b1JlbmRlckNvbWJpbmVUZXh0KHRleHRS
ZW5kZXJlcigpKSA6IDA7CisgICAgUmVuZGVyQ29tYmluZVRleHQqIGNvbWJpbmVkVGV4dCA9IHN0
eWxlVG9Vc2UtPmhhc1RleHRDb21iaW5lKCkgJiYgdGV4dFJlbmRlcmVyKCktPmlzQ29tYmluZVRl
eHQoKSAmJiB0b1JlbmRlckNvbWJpbmVUZXh0KHRleHRSZW5kZXJlcigpKS0+aXNDb21iaW5lZCgp
ID8gdG9SZW5kZXJDb21iaW5lVGV4dCh0ZXh0UmVuZGVyZXIoKSkgOiAwOwogCiAgICAgYm9vbCBz
aG91bGRSb3RhdGUgPSAhaXNIb3Jpem9udGFsKCkgJiYgIWNvbWJpbmVkVGV4dDsKICAgICBpZiAo
c2hvdWxkUm90YXRlKQogICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24oYm94UmVj
dCwgQ2xvY2t3aXNlKSk7CiAKICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UgaGF2
ZSBjb21wb3NpdGlvbiB1bmRlcmxpbmVzIHRvIGRyYXcuCi0gICAgYm9vbCBjb250YWluc0NvbXBv
c2l0aW9uID0gcmVuZGVyZXIoKS5ub2RlKCkgJiYgcmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRvcigp
LmNvbXBvc2l0aW9uTm9kZSgpID09IHJlbmRlcmVyKCkubm9kZSgpOwotICAgIGJvb2wgdXNlQ3Vz
dG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9zaXRpb24gJiYgcmVuZGVyZXIoKS5mcmFtZSgp
LmVkaXRvcigpLmNvbXBvc2l0aW9uVXNlc0N1c3RvbVVuZGVybGluZXMoKTsKKyAgICBib29sIGNv
bnRhaW5zQ29tcG9zaXRpb24gPSByZW5kZXJlcigpLT5ub2RlKCkgJiYgcmVuZGVyZXIoKS0+ZnJh
bWUoKS5lZGl0b3IoKS5jb21wb3NpdGlvbk5vZGUoKSA9PSByZW5kZXJlcigpLT5ub2RlKCk7Cisg
ICAgYm9vbCB1c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFpbnNDb21wb3NpdGlvbiAmJiByZW5k
ZXJlcigpLT5mcmFtZSgpLmVkaXRvcigpLmNvbXBvc2l0aW9uVXNlc0N1c3RvbVVuZGVybGluZXMo
KTsKIAogICAgIC8vIERldGVybWluZSB0aGUgdGV4dCBjb2xvcnMgYW5kIHNlbGVjdGlvbiBjb2xv
cnMuCiAgICAgQ29sb3IgdGV4dEZpbGxDb2xvcjsKQEAgLTU5MSw3ICs1OTIsNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIGlmIChpc1ByaW50aW5nKSB7CiAgICAgICAgICAgICBp
ZiAoc3R5bGVUb1VzZS0+cHJpbnRDb2xvckFkanVzdCgpID09IFByaW50Q29sb3JBZGp1c3RFY29u
b215KQogICAgICAgICAgICAgICAgIGZvcmNlQmFja2dyb3VuZFRvV2hpdGUgPSB0cnVlOwotICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyKCkuZnJhbWUoKS5zZXR0aW5ncygpLnNob3VsZFByaW50QmFj
a2dyb3VuZHMoKSkKKyAgICAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIoKS0+ZnJhbWUoKS5zZXR0
aW5ncygpLnNob3VsZFByaW50QmFja2dyb3VuZHMoKSkKICAgICAgICAgICAgICAgICBmb3JjZUJh
Y2tncm91bmRUb1doaXRlID0gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtNjIyLDIxICs2MjMsMjEg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlv
blNoYWRvdyA9IHRleHRTaGFkb3c7CiAgICAgaWYgKGhhdmVTZWxlY3Rpb24pIHsKICAgICAgICAg
Ly8gQ2hlY2sgZm9yZWdyb3VuZCBjb2xvciBmaXJzdC4KLSAgICAgICAgQ29sb3IgZm9yZWdyb3Vu
ZCA9IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8gQ29sb3I6OmJsYWNrIDogcmVuZGVyZXIo
KS5zZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9
IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCgpID8gQ29sb3I6OmJsYWNrIDogcmVuZGVyZXIoKS0+
c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFs
aWQoKSAmJiBmb3JlZ3JvdW5kICE9IHNlbGVjdGlvbkZpbGxDb2xvcikgewogICAgICAgICAgICAg
aWYgKCFwYWludFNlbGVjdGVkVGV4dE9ubHkpCiAgICAgICAgICAgICAgICAgcGFpbnRTZWxlY3Rl
ZFRleHRTZXBhcmF0ZWx5ID0gdHJ1ZTsKICAgICAgICAgICAgIHNlbGVjdGlvbkZpbGxDb2xvciA9
IGZvcmVncm91bmQ7CiAgICAgICAgIH0KIAotICAgICAgICBDb2xvciBlbXBoYXNpc01hcmtGb3Jl
Z3JvdW5kID0gcGFpbnRJbmZvLmZvcmNlQmxhY2tUZXh0KCkgPyBDb2xvcjo6YmxhY2sgOiByZW5k
ZXJlcigpLnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCk7CisgICAgICAgIENvbG9yIGVtcGhh
c2lzTWFya0ZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VCbGFja1RleHQoKSA/IENvbG9yOjpi
bGFjayA6IHJlbmRlcmVyKCktPnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCk7CiAgICAgICAg
IGlmIChlbXBoYXNpc01hcmtGb3JlZ3JvdW5kLmlzVmFsaWQoKSAmJiBlbXBoYXNpc01hcmtGb3Jl
Z3JvdW5kICE9IHNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKSB7CiAgICAgICAgICAgICBpZiAo
IXBhaW50U2VsZWN0ZWRUZXh0T25seSkKICAgICAgICAgICAgICAgICBwYWludFNlbGVjdGVkVGV4
dFNlcGFyYXRlbHkgPSB0cnVlOwogICAgICAgICAgICAgc2VsZWN0aW9uRW1waGFzaXNNYXJrQ29s
b3IgPSBlbXBoYXNpc01hcmtGb3JlZ3JvdW5kOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFJl
bmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUo
U0VMRUNUSU9OKSkgeworICAgICAgICBpZiAoUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gcmVu
ZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoU0VMRUNUSU9OKSkgewogICAgICAgICAgICAg
Y29uc3QgU2hhZG93RGF0YSogc2hhZG93ID0gcGFpbnRJbmZvLmZvcmNlQmxhY2tUZXh0KCkgPyAw
IDogcHNldWRvU3R5bGUtPnRleHRTaGFkb3coKTsKICAgICAgICAgICAgIGlmIChzaGFkb3cgIT0g
c2VsZWN0aW9uU2hhZG93KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwYWludFNlbGVjdGVkVGV4
dE9ubHkpCkBAIC02NzksOCArNjgwLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAg
ICAgIGlmIChjb250YWluc0NvbXBvc2l0aW9uICYmICF1c2VDdXN0b21VbmRlcmxpbmVzKQogICAg
ICAgICAgICAgcGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoY29udGV4dCwgYm94T3JpZ2luLCBz
dHlsZVRvVXNlLCBmb250LAotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCkuZnJhbWUoKS5lZGl0
b3IoKS5jb21wb3NpdGlvblN0YXJ0KCksCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS5mcmFt
ZSgpLmVkaXRvcigpLmNvbXBvc2l0aW9uRW5kKCkpOworICAgICAgICAgICAgICAgIHJlbmRlcmVy
KCktPmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25TdGFydCgpLAorICAgICAgICAgICAgICAg
IHJlbmRlcmVyKCktPmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25FbmQoKSk7CiAKICAgICAg
ICAgcGFpbnREb2N1bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBm
b250LCB0cnVlKTsKIApAQCAtNjg4LDEzICs2ODksMTMgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LAogICAgICAgICAgICAgcGFpbnRTZWxlY3Rpb24oY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRv
VXNlLCBmb250LCBzZWxlY3Rpb25GaWxsQ29sb3IpOwogICAgIH0KIAotICAgIGlmIChQYWdlKiBw
YWdlID0gcmVuZGVyZXIoKS5mcmFtZSgpLnBhZ2UoKSkgeworICAgIGlmIChQYWdlKiBwYWdlID0g
cmVuZGVyZXIoKS0+ZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5v
dywgSW5saW5lVGV4dEJveGVzIG5ldmVyIGNhbGwgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3Qo
KSBldmVuIHRob3VnaCB0aGV5IG1pZ2h0CiAgICAgICAgIC8vIGxlZ2l0aW1hdGVseSBiZSB1bnBh
aW50ZWQgaWYgdGhleSBhcmUgd2FpdGluZyBvbiBhIHNsb3ctbG9hZGluZyB3ZWIgZm9udC4gV2Ug
c2hvdWxkIGZpeCB0aGF0LCBhbmQKICAgICAgICAgLy8gd2hlbiB3ZSBkbywgd2Ugd2lsbCBoYXZl
IHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoZSBJbmxpbmVUZXh0Qm94ZXMgZG8gbm90IGFsd2F5
cyBoYXZlIHVuaXF1ZQogICAgICAgICAvLyByZW5kZXJlcnMgYW5kIFBhZ2UgY3VycmVudGx5IHJl
bGllcyBvbiBlYWNoIHVucGFpbnRlZCBvYmplY3QgaGF2aW5nIGEgdW5pcXVlIHJlbmRlcmVyLgog
ICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQotICAg
ICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoJnJlbmRlcmVyKCksIElu
dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSwgbG9naWNhbFdpZHRoKCksIGxvZ2lj
YWxIZWlnaHQoKSkpOworICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3QocmVuZGVyZXIoKSwgSW50UmVjdChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgpLCBsb2dp
Y2FsV2lkdGgoKSwgbG9naWNhbEhlaWdodCgpKSk7CiAgICAgfQogCiAgICAgLy8gMi4gTm93IHBh
aW50IHRoZSBmb3JlZ3JvdW5kLCBpbmNsdWRpbmcgdGV4dCBhbmQgZGVjb3JhdGlvbnMgbGlrZSB1
bmRlcmxpbmUvb3ZlcmxpbmUgKGluIHF1aXJrcyBtb2RlIG9ubHkpLgpAQCAtNzAyLDEyICs3MDMs
MTIgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGludCBtYXhpbXVtTGVuZ3RoOwogICAg
IFN0cmluZyBzdHJpbmc7CiAgICAgaWYgKCFjb21iaW5lZFRleHQpIHsKLSAgICAgICAgc3RyaW5n
ID0gdGV4dFJlbmRlcmVyKCkudGV4dCgpOworICAgICAgICBzdHJpbmcgPSB0ZXh0UmVuZGVyZXIo
KS0+dGV4dCgpOwogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgIT0g
c3RyaW5nLmxlbmd0aCgpIHx8IG1fc3RhcnQpIHsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3N0YXJ0ICsgbGVuZ3Ro
KSA8PSBzdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0
cmluZ1NoYXJpbmdJbXBsKG1fc3RhcnQsIGxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgbWF4
aW11bUxlbmd0aCA9IHRleHRSZW5kZXJlcigpLnRleHRMZW5ndGgoKSAtIG1fc3RhcnQ7CisgICAg
ICAgIG1heGltdW1MZW5ndGggPSB0ZXh0UmVuZGVyZXIoKS0+dGV4dExlbmd0aCgpIC0gbV9zdGFy
dDsKICAgICB9IGVsc2UgewogICAgICAgICBjb21iaW5lZFRleHQtPmdldFN0cmluZ1RvUmVuZGVy
KG1fc3RhcnQsIHN0cmluZywgbGVuZ3RoKTsKICAgICAgICAgbWF4aW11bUxlbmd0aCA9IGxlbmd0
aDsKQEAgLTgwNSw3ICs4MDYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIHBh
aW50RG9jdW1lbnRNYXJrZXJzKGNvbnRleHQsIGJveE9yaWdpbiwgc3R5bGVUb1VzZSwgZm9udCwg
ZmFsc2UpOwogCiAgICAgICAgIGlmICh1c2VDdXN0b21VbmRlcmxpbmVzKSB7Ci0gICAgICAgICAg
ICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzID0gcmVuZGVy
ZXIoKS5mcmFtZSgpLmVkaXRvcigpLmN1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcygpOworICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcyA9
IHJlbmRlcmVyKCktPmZyYW1lKCkuZWRpdG9yKCkuY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVz
KCk7CiAgICAgICAgICAgICBzaXplX3QgbnVtVW5kZXJsaW5lcyA9IHVuZGVybGluZXMuc2l6ZSgp
OwogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5kZXJs
aW5lczsgKytpbmRleCkgewpAQCAtODM2LDE3ICs4MzcsMTUgQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0LAogCiB2b2lkIElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKGludCYgc1Bvcywg
aW50JiBlUG9zKQogewotICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJlciA9IHRoaXMtPnRleHRS
ZW5kZXJlcigpOwotCiAgICAgaW50IHN0YXJ0UG9zLCBlbmRQb3M7Ci0gICAgaWYgKHRleHRSZW5k
ZXJlci5zZWxlY3Rpb25TdGF0ZSgpID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlKSB7
CisgICAgaWYgKHJlbmRlcmVyKCktPnNlbGVjdGlvblN0YXRlKCkgPT0gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25JbnNpZGUpIHsKICAgICAgICAgc3RhcnRQb3MgPSAwOwotICAgICAgICBlbmRQb3Mg
PSB0ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgpOworICAgICAgICBlbmRQb3MgPSB0ZXh0UmVuZGVy
ZXIoKS0+dGV4dExlbmd0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRleHRSZW5kZXJlci5z
ZWxlY3Rpb25TdGFydEVuZChzdGFydFBvcywgZW5kUG9zKTsKLSAgICAgICAgaWYgKHRleHRSZW5k
ZXJlci5zZWxlY3Rpb25TdGF0ZSgpID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCi0g
ICAgICAgICAgICBlbmRQb3MgPSB0ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgpOwotICAgICAgICBl
bHNlIGlmICh0ZXh0UmVuZGVyZXIuc2VsZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvbkVuZCkKKyAgICAgICAgdGV4dFJlbmRlcmVyKCktPnNlbGVjdGlvblN0YXJ0RW5kKHN0
YXJ0UG9zLCBlbmRQb3MpOworICAgICAgICBpZiAocmVuZGVyZXIoKS0+c2VsZWN0aW9uU3RhdGUo
KSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0KQorICAgICAgICAgICAgZW5kUG9zID0g
dGV4dFJlbmRlcmVyKCktPnRleHRMZW5ndGgoKTsKKyAgICAgICAgZWxzZSBpZiAocmVuZGVyZXIo
KS0+c2VsZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCkKICAgICAg
ICAgICAgIHN0YXJ0UG9zID0gMDsKICAgICB9CiAKQEAgLTg3Miw3ICs4NzEsNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRQb2ludCYgYgogICAgIGlmIChzUG9zID49IGVQb3MpCiAgICAgICAgIHJldHVybjsK
IAotICAgIENvbG9yIGMgPSByZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwor
ICAgIENvbG9yIGMgPSByZW5kZXJlcigpLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICBpZiAoIWMuaXNWYWxpZCgpIHx8IGMuYWxwaGEoKSA9PSAwKQogICAgICAgICByZXR1cm47CiAK
QEAgLTg4MSwxNSArODgwLDEzIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAgaWYgKHRl
eHRDb2xvciA9PSBjKQogICAgICAgICBjID0gQ29sb3IoMHhmZiAtIGMucmVkKCksIDB4ZmYgLSBj
LmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKLSAgICBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVy
ZXIgPSB0aGlzLT50ZXh0UmVuZGVyZXIoKTsKLQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRl
eHQsIGMsIGMsIDAsIHN0eWxlLT5jb2xvclNwYWNlKCkpOyAgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0
IGFsbCEKICAgICAKICAgICAvLyBJZiB0aGUgdGV4dCBpcyB0cnVuY2F0ZWQsIGxldCB0aGUgdGhp
bmcgYmVpbmcgcGFpbnRlZCBpbiB0aGUgdHJ1bmNhdGlvbgogICAgIC8vIGRyYXcgaXRzIG93biBo
aWdobGlnaHQuCiAgICAgaW50IGxlbmd0aCA9IG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9u
ID8gbV90cnVuY2F0aW9uIDogbV9sZW47Ci0gICAgU3RyaW5nIHN0cmluZyA9IHRleHRSZW5kZXJl
ci50ZXh0KCk7CisgICAgU3RyaW5nIHN0cmluZyA9IHRleHRSZW5kZXJlcigpLT50ZXh0KCk7CiAK
ICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgp
IHx8IG1fc3RhcnQpIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3RhcnQgKyBsZW5ndGgpIDw9IHN0cmluZy5sZW5ndGgo
KSk7CkBAIC04OTgsMTQgKzg5NSwxNCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2VsZWN0
aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYgogCiAgICAg
QnVmZmVyRm9yQXBwZW5kaW5nSHlwaGVuIGNoYXJhY3RlcnNXaXRoSHlwaGVuOwogICAgIGJvb2wg
cmVzcGVjdEh5cGhlbiA9IGVQb3MgPT0gbGVuZ3RoICYmIGhhc0h5cGhlbigpOwotICAgIFRleHRS
dW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGZvbnQsIHN0cmluZywgdGV4dFJl
bmRlcmVyLnRleHRMZW5ndGgoKSAtIG1fc3RhcnQsIHJlc3BlY3RIeXBoZW4gPyAmY2hhcmFjdGVy
c1dpdGhIeXBoZW4gOiAwKTsKKyAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVu
KHN0eWxlLCBmb250LCBzdHJpbmcsIHRleHRSZW5kZXJlcigpLT50ZXh0TGVuZ3RoKCkgLSBtX3N0
YXJ0LCByZXNwZWN0SHlwaGVuID8gJmNoYXJhY3RlcnNXaXRoSHlwaGVuIDogMCk7CiAgICAgaWYg
KHJlc3BlY3RIeXBoZW4pCiAgICAgICAgIGVQb3MgPSB0ZXh0UnVuLmxlbmd0aCgpOwogCiAgICAg
TGF5b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20gPSByb290KCktPnNlbGVjdGlvbkJvdHRvbSgpOwog
ICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wID0gcm9vdCgpLT5zZWxlY3Rpb25Ub3BBZGp1c3Rl
ZEZvclByZWNlZGluZ0Jsb2NrKCk7CiAKLSAgICBpbnQgZGVsdGFZID0gcm91bmRUb0ludCh0ZXh0
UmVuZGVyZXIuc3R5bGUoKS0+aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9u
Qm90dG9tIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wKTsK
KyAgICBpbnQgZGVsdGFZID0gcm91bmRUb0ludChyZW5kZXJlcigpLT5zdHlsZSgpLT5pc0ZsaXBw
ZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxlY3Rpb25Cb3R0b20gLSBsb2dpY2FsQm90dG9tKCkg
OiBsb2dpY2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3ApOwogICAgIGludCBzZWxIZWlnaHQgPSBtYXgo
MCwgcm91bmRUb0ludChzZWxlY3Rpb25Cb3R0b20gLSBzZWxlY3Rpb25Ub3ApKTsKIAogICAgIEZs
b2F0UG9pbnQgbG9jYWxPcmlnaW4oYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRh
WSk7CkBAIC05MzIsNyArOTI5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0
aW9uQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICAKICAg
ICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgYywgYywgMCwgc3R5bGUtPmNvbG9yU3Bh
Y2UoKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCiAKLSAgICBpbnQgZGVsdGFZID0gcmVu
ZGVyZXIoKS5zdHlsZSgpLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxlY3Rpb25C
b3R0b20oKSAtIGxvZ2ljYWxCb3R0b20oKSA6IGxvZ2ljYWxUb3AoKSAtIHNlbGVjdGlvblRvcCgp
OworICAgIGludCBkZWx0YVkgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5pc0ZsaXBwZWRMaW5lc1dy
aXRpbmdNb2RlKCkgPyBzZWxlY3Rpb25Cb3R0b20oKSAtIGxvZ2ljYWxCb3R0b20oKSA6IGxvZ2lj
YWxUb3AoKSAtIHNlbGVjdGlvblRvcCgpOwogICAgIGludCBzZWxIZWlnaHQgPSBzZWxlY3Rpb25I
ZWlnaHQoKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luKGJveE9yaWdpbi54KCksIGJveE9y
aWdpbi55KCkgLSBkZWx0YVkpOwogICAgIGNvbnRleHQtPmRyYXdIaWdobGlnaHRGb3JUZXh0KGZv
bnQsIGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGZvbnQpLCBsb2NhbE9yaWdpbiwgc2VsSGVpZ2h0
LCBjLCBzdHlsZS0+Y29sb3JTcGFjZSgpLCBzUG9zLCBlUG9zKTsKQEAgLTk0Miw3ICs5MzksNyBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRgogCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q3Vz
dG9tSGlnaGxpZ2h0KGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKQogewotICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigpLmZyYW1lKCkucGFn
ZSgpOworICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigpLT5mcmFtZSgpLnBhZ2UoKTsKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTUwLDcgKzk0Nyw3IEBAIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBjb25zdCBBCiAgICAgRmxvYXRSZWN0IHJvb3RSZWN0KHBhaW50T2Zmc2V0LngoKSAr
IHItPngoKSwgcGFpbnRPZmZzZXQueSgpICsgc2VsZWN0aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0
aCgpLCBzZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgRmxvYXRSZWN0IHRleHRSZWN0KHBhaW50T2Zm
c2V0LngoKSArIHgoKSwgcm9vdFJlY3QueSgpLCBsb2dpY2FsV2lkdGgoKSwgcm9vdFJlY3QuaGVp
Z2h0KCkpOwogCi0gICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGFpbnRDdXN0b21IaWdobGln
aHQocmVuZGVyZXIoKS5ub2RlKCksIHR5cGUsIHRleHRSZWN0LCByb290UmVjdCwgdHJ1ZSwgZmFs
c2UpOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBhaW50Q3VzdG9tSGlnaGxpZ2h0KHJl
bmRlcmVyKCktPm5vZGUoKSwgdHlwZSwgdGV4dFJlY3QsIHJvb3RSZWN0LCB0cnVlLCBmYWxzZSk7
CiB9CiAKICNlbmRpZgpAQCAtMTE0MCwyOSArMTEzNywyOCBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9p
bnQmCiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJlciA9IHRoaXMtPnRleHRSZW5kZXJl
cigpOwogICAgIEZsb2F0UG9pbnQgbG9jYWxPcmlnaW4gPSBib3hPcmlnaW47CiAKICAgICBmbG9h
dCB3aWR0aCA9IG1fbG9naWNhbFdpZHRoOwogICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05vVHJ1
bmNhdGlvbikgewotICAgICAgICB3aWR0aCA9IHRleHRSZW5kZXJlci53aWR0aChtX3N0YXJ0LCBt
X3RydW5jYXRpb24sIHRleHRQb3MoKSwgaXNGaXJzdExpbmVTdHlsZSgpKTsKKyAgICAgICAgd2lk
dGggPSB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPndpZHRoKG1fc3RhcnQsIG1fdHJ1bmNhdGlv
biwgdGV4dFBvcygpLCBpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgICAgICBpZiAoIWlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgIGxvY2FsT3JpZ2luLm1vdmUobV9sb2dpY2Fs
V2lkdGggLSB3aWR0aCwgMCk7CiAgICAgfQogICAgIAogICAgIC8vIEdldCB0aGUgdGV4dCBkZWNv
cmF0aW9uIGNvbG9ycy4KICAgICBDb2xvciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3Vn
aDsKLSAgICB0ZXh0UmVuZGVyZXIuZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoZGVjbywgdW5kZXJs
aW5lLCBvdmVybGluZSwgbGluZXRocm91Z2gsIHRydWUpOworICAgIHJlbmRlcmVyKCktPmdldFRl
eHREZWNvcmF0aW9uQ29sb3JzKGRlY28sIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdo
LCB0cnVlKTsKICAgICBpZiAoaXNGaXJzdExpbmVTdHlsZSgpKQotICAgICAgICB0ZXh0UmVuZGVy
ZXIuZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoZGVjbywgdW5kZXJsaW5lLCBvdmVybGluZSwgbGlu
ZXRocm91Z2gsIHRydWUsIHRydWUpOworICAgICAgICByZW5kZXJlcigpLT5nZXRUZXh0RGVjb3Jh
dGlvbkNvbG9ycyhkZWNvLCB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCwgdHJ1ZSwg
dHJ1ZSk7CiAgICAgCiAgICAgLy8gVXNlIGEgc3BlY2lhbCBmdW5jdGlvbiBmb3IgdW5kZXJsaW5l
cyB0byBnZXQgdGhlIHBvc2l0aW9uaW5nIGV4YWN0bHkgcmlnaHQuCi0gICAgYm9vbCBpc1ByaW50
aW5nID0gdGV4dFJlbmRlcmVyLmRvY3VtZW50KCkucHJpbnRpbmcoKTsKKyAgICBib29sIGlzUHJp
bnRpbmcgPSB0ZXh0UmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS5wcmludGluZygpOwogICAgIGNvbnRl
eHQtPnNldFN0cm9rZVRoaWNrbmVzcyh0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7CiAKICAgICBi
b29sIGxpbmVzQXJlT3BhcXVlID0gIWlzUHJpbnRpbmcgJiYgKCEoZGVjbyAmIFRleHREZWNvcmF0
aW9uVW5kZXJsaW5lKSB8fCB1bmRlcmxpbmUuYWxwaGEoKSA9PSAyNTUpICYmICghKGRlY28gJiBU
ZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB8fCBvdmVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEo
ZGVjbyAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpIHx8IGxpbmV0aHJvdWdoLmFscGhhKCkg
PT0gMjU1KTsKIAotICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gdGV4dFJlbmRlcmVyLnN0
eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBy
ZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgIGludCBiYXNlbGluZSA9
IHN0eWxlVG9Vc2UtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CiAKICAgICBib29sIHNldENsaXAg
PSBmYWxzZTsKQEAgLTExODYsNyArMTE4Miw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRE
ZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAg
ICAgICAgc2V0Q2xpcCA9IHRydWU7CiAgICAgfQogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gdGV4dFJlbmRlcmVyLnN0eWxlKCktPmNvbG9yU3BhY2UoKTsKKyAgICBDb2xvclNwYWNlIGNv
bG9yU3BhY2UgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xvclNwYWNlKCk7CiAgICAgYm9vbCBz
ZXRTaGFkb3cgPSBmYWxzZTsKIAogICAgIGRvIHsKQEAgLTEyOTgsNyArMTI5NCw3IEBAIHN0YXRp
YyBHcmFwaGljc0NvbnRleHQ6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlIGxpbmVTdHlsZUZvck1h
cmtlclR5cGUoRG9jdW1lbnRNCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBEb2N1
bWVudE1hcmtlciogbWFya2VyLCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQs
IGJvb2wgZ3JhbW1hcikKIHsKICAgICAvLyBOZXZlciBwcmludCBzcGVsbGluZy9ncmFtbWFyIG1h
cmtlcnMgKDUzMjc4ODcpCi0gICAgaWYgKHRleHRSZW5kZXJlcigpLmRvY3VtZW50KCkucHJpbnRp
bmcoKSkKKyAgICBpZiAodGV4dFJlbmRlcmVyKCktPmRvY3VtZW50KCkucHJpbnRpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24p
CkBAIC0xMzI1LDcgKzEzMjEsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRN
YXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYXRQb2ludCYgYgogICAgICAgICAg
ICAgZW5kUG9zaXRpb24gPSBtaW48aW50PihlbmRQb3NpdGlvbiwgbV90cnVuY2F0aW9uKTsKIAog
ICAgICAgICAvLyBDYWxjdWxhdGUgc3RhcnQgJiB3aWR0aAotICAgICAgICBpbnQgZGVsdGFZID0g
cmVuZGVyZXIoKS5zdHlsZSgpLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxlY3Rp
b25Cb3R0b20oKSAtIGxvZ2ljYWxCb3R0b20oKSA6IGxvZ2ljYWxUb3AoKSAtIHNlbGVjdGlvblRv
cCgpOworICAgICAgICBpbnQgZGVsdGFZID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVk
TGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkg
OiBsb2dpY2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICAgICAgaW50IHNlbEhlaWdodCA9
IHNlbGVjdGlvbkhlaWdodCgpOwogICAgICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoYm94T3Jp
Z2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSk7CiAgICAgICAgIFRleHRSdW4gcnVuID0g
Y29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCk7CkBAIC0xMzM5LDcgKzEzMzUsNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwg
Y29uc3QgRmxvYXRQb2ludCYgYgogICAgICAgICAvLyBkaXNwbGF5IGEgdG9vbFRpcC4gV2UgZG9u
J3QgZG8gdGhpcyBmb3IgbWlzc3BlbGxpbmcgbWFya2Vycy4KICAgICAgICAgaWYgKGdyYW1tYXIg
fHwgaXNEaWN0YXRpb25NYXJrZXIpIHsKICAgICAgICAgICAgIG1hcmtlclJlY3QubW92ZSgtYm94
T3JpZ2luLngoKSwgLWJveE9yaWdpbi55KCkpOwotICAgICAgICAgICAgbWFya2VyUmVjdCA9IHJl
bmRlcmVyKCkubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobWFya2VyUmVjdCkpLmVuY2xv
c2luZ0JvdW5kaW5nQm94KCk7CisgICAgICAgICAgICBtYXJrZXJSZWN0ID0gcmVuZGVyZXIoKS0+
bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobWFya2VyUmVjdCkpLmVuY2xvc2luZ0JvdW5k
aW5nQm94KCk7CiAgICAgICAgICAgICB0b1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIobWFya2VyKS0+
c2V0UmVuZGVyZWRSZWN0KG1hcmtlclJlY3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM1MSw3
ICsxMzQ3LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VyKEdyYXBo
aWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICAvLyBTbywgd2UgZ2VuZXJh
bGx5IHBsYWNlIHRoZSB1bmRlcmxpbmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGV4dCwgYnV0IGlu
IGxhcmdlciBmb250cyB0aGF0J3Mgbm90IHNvIGdvb2Qgc28KICAgICAvLyB3ZSBwaW4gdG8gdHdv
IHBpeGVscyB1bmRlciB0aGUgYmFzZWxpbmUuCiAgICAgaW50IGxpbmVUaGlja25lc3MgPSBjTWlz
c3BlbGxpbmdMaW5lVGhpY2tuZXNzOwotICAgIGludCBiYXNlbGluZSA9IHJlbmRlcmVyKCkuc3R5
bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKKyAgICBpbnQg
YmFzZWxpbmUgPSByZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250TWV0
cmljcygpLmFzY2VudCgpOwogICAgIGludCBkZXNjZW50ID0gbG9naWNhbEhlaWdodCgpIC0gYmFz
ZWxpbmU7CiAgICAgaW50IHVuZGVybGluZU9mZnNldDsKICAgICBpZiAoZGVzY2VudCA8PSAoMiAr
IGxpbmVUaGlja25lc3MpKSB7CkBAIC0xMzY4LDcgKzEzNjQsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0
UG9pbnQmCiB7CiAgICAgLy8gVXNlIHNhbWUgeSBwb3NpdGlvbmluZyBhbmQgaGVpZ2h0IGFzIGZv
ciBzZWxlY3Rpb24sIHNvIHRoYXQgd2hlbiB0aGUgc2VsZWN0aW9uIGFuZCB0aGlzIGhpZ2hsaWdo
dCBhcmUgb24KICAgICAvLyB0aGUgc2FtZSB3b3JkIHRoZXJlIGFyZSBubyBwaWVjZXMgc3RpY2tp
bmcgb3V0LgotICAgIGludCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCktPmlzRmxpcHBlZExp
bmVzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDog
bG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CisgICAgaW50IGRlbHRhWSA9IHJlbmRlcmVy
KCktPnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRv
bSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CiAg
ICAgaW50IHNlbEhlaWdodCA9IHNlbGVjdGlvbkhlaWdodCgpOwogCiAgICAgaW50IHNQb3MgPSBt
YXgobWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOwpAQCAtMTM3
NywxNCArMTM3MywxNCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2Vy
KEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAKICAgICAvLyBBbHdheXMg
Y29tcHV0ZSBhbmQgc3RvcmUgdGhlIHJlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFya2VyLiBU
aGUgY29tcHV0ZWQgcmVjdCBpcyBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcy4KICAgICBJbnRSZWN0
IG1hcmtlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQo
cnVuLCBJbnRQb2ludCh4KCksIHNlbGVjdGlvblRvcCgpKSwgc2VsSGVpZ2h0LCBzUG9zLCBlUG9z
KSk7Ci0gICAgbWFya2VyUmVjdCA9IHJlbmRlcmVyKCkubG9jYWxUb0Fic29sdXRlUXVhZChGbG9h
dFJlY3QobWFya2VyUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAgbWFya2VyUmVj
dCA9IHJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KG1hcmtlclJlY3Qp
KS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogICAgIHRvUmVuZGVyZWREb2N1bWVudE1hcmtlciht
YXJrZXIpLT5zZXRSZW5kZXJlZFJlY3QobWFya2VyUmVjdCk7CiAgICAgCiAgICAgLy8gT3B0aW9u
YWxseSBoaWdobGlnaHQgdGhlIHRleHQKLSAgICBpZiAocmVuZGVyZXIoKS5mcmFtZSgpLmVkaXRv
cigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgeworICAgIGlmIChyZW5kZXJl
cigpLT5mcmFtZSgpLmVkaXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkg
ewogICAgICAgICBDb2xvciBjb2xvciA9IG1hcmtlci0+YWN0aXZlTWF0Y2goKSA/Ci0gICAgICAg
ICAgICByZW5kZXJlcigpLnRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdo
dENvbG9yKCkgOgotICAgICAgICAgICAgcmVuZGVyZXIoKS50aGVtZSgpLT5wbGF0Zm9ybUluYWN0
aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CisgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDoKKyAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGln
aGxpZ2h0Q29sb3IoKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwdCk7CiAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChwdCwgY29sb3IsIGNvbG9y
LCAwLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsgIC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCiAg
ICAgICAgIHB0LT5jbGlwKEZsb2F0UmVjdChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgpIC0g
ZGVsdGFZLCBtX2xvZ2ljYWxXaWR0aCwgc2VsSGVpZ2h0KSk7CkBAIC0xNDA1LDE2ICsxNDAxLDE2
IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcihE
b2N1bWVudE1hcmtlciogbWFya2VyLCBSZW5kCiAgICAgCiAgICAgLy8gQ29tcHV0ZSBhbmQgc3Rv
cmUgdGhlIHJlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFya2VyLgogICAgIEludFJlY3QgbWFy
a2VyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZm9udC5zZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4s
IHN0YXJ0UG9pbnQsIGgsIHNQb3MsIGVQb3MpKTsKLSAgICBtYXJrZXJSZWN0ID0gcmVuZGVyZXIo
KS5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChtYXJrZXJSZWN0KSkuZW5jbG9zaW5nQm91
bmRpbmdCb3goKTsKKyAgICBtYXJrZXJSZWN0ID0gcmVuZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3QobWFya2VyUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiAgICAg
dG9SZW5kZXJlZERvY3VtZW50TWFya2VyKG1hcmtlciktPnNldFJlbmRlcmVkUmVjdChtYXJrZXJS
ZWN0KTsKIH0KICAgICAKIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcnMo
R3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgYmFja2dyb3VuZCkKIHsKLSAgICBp
ZiAoIXJlbmRlcmVyKCkubm9kZSgpKQorICAgIGlmICghcmVuZGVyZXIoKS0+bm9kZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5tYXJrZXJzRm9yKHJlbmRlcmVyKCkubm9kZSgp
KTsKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gcmVuZGVyZXIoKS0+ZG9j
dW1lbnQoKS5tYXJrZXJzKCkubWFya2Vyc0ZvcihyZW5kZXJlcigpLT5ub2RlKCkpOwogICAgIFZl
Y3RvcjxEb2N1bWVudE1hcmtlcio+Ojpjb25zdF9pdGVyYXRvciBtYXJrZXJJdCA9IG1hcmtlcnMu
YmVnaW4oKTsKIAogICAgIC8vIEdpdmUgYW55IGRvY3VtZW50IG1hcmtlcnMgdGhhdCB0b3VjaCB0
aGlzIHJ1biBhIGNoYW5jZSB0byBkcmF3IGJlZm9yZSB0aGUgdGV4dCBoYXMgYmVlbiBkcmF3bi4K
QEAgLTE0ODUsNyArMTQ4MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlv
blVuZGVybGluZShHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRQCiAgICAgaWYgKHBh
aW50U3RhcnQgPD0gdW5kZXJsaW5lLnN0YXJ0T2Zmc2V0KSB7CiAgICAgICAgIHBhaW50U3RhcnQg
PSB1bmRlcmxpbmUuc3RhcnRPZmZzZXQ7CiAgICAgICAgIHVzZVdob2xlV2lkdGggPSBmYWxzZTsK
LSAgICAgICAgc3RhcnQgPSB0ZXh0UmVuZGVyZXIoKS53aWR0aChtX3N0YXJ0LCBwYWludFN0YXJ0
IC0gbV9zdGFydCwgdGV4dFBvcygpLCBpc0ZpcnN0TGluZVN0eWxlKCkpOworICAgICAgICBzdGFy
dCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+d2lkdGgobV9zdGFydCwgcGFpbnRTdGFydCAt
IG1fc3RhcnQsIHRleHRQb3MoKSwgaXNGaXJzdExpbmVTdHlsZSgpKTsKICAgICB9CiAgICAgaWYg
KHBhaW50RW5kICE9IHVuZGVybGluZS5lbmRPZmZzZXQpIHsgICAgICAvLyBlbmQgcG9pbnRzIGF0
IHRoZSBsYXN0IGNoYXIsIG5vdCBwYXN0IGl0CiAgICAgICAgIHBhaW50RW5kID0gbWluKHBhaW50
RW5kLCAodW5zaWduZWQpdW5kZXJsaW5lLmVuZE9mZnNldCk7CkBAIC0xNDk2LDE0ICsxNDkyLDE0
IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZShHcmFwaGlj
c0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRQCiAgICAgICAgIHVzZVdob2xlV2lkdGggPSBmYWxz
ZTsKICAgICB9CiAgICAgaWYgKCF1c2VXaG9sZVdpZHRoKSB7Ci0gICAgICAgIHdpZHRoID0gdGV4
dFJlbmRlcmVyKCkud2lkdGgocGFpbnRTdGFydCwgcGFpbnRFbmQgLSBwYWludFN0YXJ0LCB0ZXh0
UG9zKCkgKyBzdGFydCwgaXNGaXJzdExpbmVTdHlsZSgpKTsKKyAgICAgICAgd2lkdGggPSB0b1Jl
bmRlclRleHQocmVuZGVyZXIoKSktPndpZHRoKHBhaW50U3RhcnQsIHBhaW50RW5kIC0gcGFpbnRT
dGFydCwgdGV4dFBvcygpICsgc3RhcnQsIGlzRmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgfQogCiAg
ICAgLy8gVGhpY2sgbWFya2VkIHRleHQgdW5kZXJsaW5lcyBhcmUgMnB4IHRoaWNrIGFzIGxvbmcg
YXMgdGhlcmUgaXMgcm9vbSBmb3IgdGhlIDJweCBsaW5lIHVuZGVyIHRoZSBiYXNlbGluZS4KICAg
ICAvLyBBbGwgb3RoZXIgbWFya2VkIHRleHQgdW5kZXJsaW5lcyBhcmUgMXB4IHRoaWNrLgogICAg
IC8vIElmIHRoZXJlJ3Mgbm90IGVub3VnaCBzcGFjZSB0aGUgdW5kZXJsaW5lIHdpbGwgdG91Y2gg
b3Igb3ZlcmxhcCBjaGFyYWN0ZXJzLgogICAgIGludCBsaW5lVGhpY2tuZXNzID0gMTsKLSAgICBp
bnQgYmFzZWxpbmUgPSByZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnRN
ZXRyaWNzKCkuYXNjZW50KCk7CisgICAgaW50IGJhc2VsaW5lID0gcmVuZGVyZXIoKS0+c3R5bGUo
aXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKICAgICBpZiAodW5k
ZXJsaW5lLnRoaWNrICYmIGxvZ2ljYWxIZWlnaHQoKSAtIGJhc2VsaW5lID49IDIpCiAgICAgICAg
IGxpbmVUaGlja25lc3MgPSAyOwogCkBAIC0xNTEyLDkgKzE1MDgsOSBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNv
bnN0IEZsb2F0UAogICAgIHN0YXJ0ICs9IDE7CiAgICAgd2lkdGggLT0gMjsKIAotICAgIGN0eC0+
c2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lLmNvbG9yLCByZW5kZXJlcigpLnN0eWxlKCktPmNvbG9y
U3BhY2UoKSk7CisgICAgY3R4LT5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUuY29sb3IsIHJlbmRl
cmVyKCktPnN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CiAgICAgY3R4LT5zZXRTdHJva2VUaGlja25l
c3MobGluZVRoaWNrbmVzcyk7Ci0gICAgY3R4LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChi
b3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBsb2dpY2FsSGVpZ2h0KCkgLSBs
aW5lVGhpY2tuZXNzKSwgd2lkdGgsIHRleHRSZW5kZXJlcigpLmRvY3VtZW50KCkucHJpbnRpbmco
KSk7CisgICAgY3R4LT5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsg
c3RhcnQsIGJveE9yaWdpbi55KCkgKyBsb2dpY2FsSGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNzKSwg
d2lkdGgsIHRleHRSZW5kZXJlcigpLT5kb2N1bWVudCgpLnByaW50aW5nKCkpOwogfQogCiBpbnQg
SW5saW5lVGV4dEJveDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdApAQCAtMTU0OCw3ICsxNTQ0LDgg
QEAgaW50IElubGluZVRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGxpbmVPZmZzZXQs
IGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMKIAogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVy
IGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCi0gICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4
dFJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKTsKKyAgICBSZW5kZXJUZXh0KiB0
ZXh0ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKCkpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9
IHRleHQtPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgY29uc3QgRm9udCYgZm9udCA9
IHN0eWxlLT5mb250KCk7CiAgICAgcmV0dXJuIGZvbnQub2Zmc2V0Rm9yUG9zaXRpb24oY29uc3Ry
dWN0VGV4dFJ1bihzdHlsZSwgZm9udCksIGxpbmVPZmZzZXQgLSBsb2dpY2FsTGVmdCgpLCBpbmNs
dWRlUGFydGlhbEdseXBocyk7CiB9CkBAIC0xNTYzLDcgKzE1NjAsOCBAQCBmbG9hdCBJbmxpbmVU
ZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25zdAogCiAgICAgRm9udENh
Y2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hlUHVyZ2VQcmV2ZW50ZXI7CiAKLSAgICBSZW5kZXJT
dHlsZSogc3R5bGVUb1VzZSA9IHRleHRSZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUo
KSk7CisgICAgUmVuZGVyVGV4dCogdGV4dCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKTsKKyAg
ICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHRleHQtPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUo
KSk7CiAgICAgQVNTRVJUKHN0eWxlVG9Vc2UpOwogICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBzdHls
ZVRvVXNlLT5mb250KCk7CiAgICAgaW50IGZyb20gPSAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gb2Zmc2V0IC0gbV9zdGFydCA6IDA7CkBAIC0xNjAwLDI0ICsxNTk4LDI2IEBAIFRleHRSdW4g
SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0
IEZvbnQmIGZvbnQsIEJ1CiB7CiAgICAgQVNTRVJUKHN0eWxlKTsKIAotICAgIFJlbmRlclRleHQm
IHRleHRSZW5kZXJlciA9IHRoaXMtPnRleHRSZW5kZXJlcigpOwotICAgIEFTU0VSVCh0ZXh0UmVu
ZGVyZXIudGV4dCgpKTsKKyAgICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0aGlzLT50ZXh0
UmVuZGVyZXIoKTsKKyAgICBBU1NFUlQodGV4dFJlbmRlcmVyKTsKKyAgICBBU1NFUlQodGV4dFJl
bmRlcmVyLT50ZXh0KCkpOwogCi0gICAgU3RyaW5nIHN0cmluZyA9IHRleHRSZW5kZXJlci50ZXh0
KCk7CisgICAgU3RyaW5nIHN0cmluZyA9IHRleHRSZW5kZXJlci0+dGV4dCgpOwogICAgIHVuc2ln
bmVkIHN0YXJ0UG9zID0gc3RhcnQoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBsZW4oKTsKIAog
ICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgIT0gbGVuZ3RoIHx8IHN0YXJ0UG9zKQogICAgICAgICBz
dHJpbmcgPSBzdHJpbmcuc3Vic3RyaW5nU2hhcmluZ0ltcGwoc3RhcnRQb3MsIGxlbmd0aCk7CiAK
LSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCwgc3RyaW5nLCB0ZXh0UmVu
ZGVyZXIudGV4dExlbmd0aCgpIC0gc3RhcnRQb3MsIGNoYXJhY3RlcnNXaXRoSHlwaGVuKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCwgc3RyaW5nLCB0ZXh0UmVuZGVy
ZXItPnRleHRMZW5ndGgoKSAtIHN0YXJ0UG9zLCBjaGFyYWN0ZXJzV2l0aEh5cGhlbik7CiB9CiAK
IFRleHRSdW4gSW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJTdHlsZSogc3R5
bGUsIGNvbnN0IEZvbnQmIGZvbnQsIFN0cmluZyBzdHJpbmcsIGludCBtYXhpbXVtTGVuZ3RoLCBC
dWZmZXJGb3JBcHBlbmRpbmdIeXBoZW4qIGNoYXJhY3RlcnNXaXRoSHlwaGVuKSBjb25zdAogewog
ICAgIEFTU0VSVChzdHlsZSk7CiAKLSAgICBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIgPSB0aGlz
LT50ZXh0UmVuZGVyZXIoKTsKKyAgICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0aGlzLT50
ZXh0UmVuZGVyZXIoKTsKKyAgICBBU1NFUlQodGV4dFJlbmRlcmVyKTsKIAogICAgIGludCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CiAKQEAgLTE2MjgsMTAgKzE2MjgsMTAgQEAgVGV4dFJ1biBJ
bmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
Rm9udCYgZm9udCwgU3QKIAogICAgIEFTU0VSVChtYXhpbXVtTGVuZ3RoID49IGxlbmd0aCk7CiAK
LSAgICBUZXh0UnVuIHJ1bihzdHJpbmcsIHRleHRQb3MoKSwgZXhwYW5zaW9uKCksIGV4cGFuc2lv
bkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLT5ydGxPcmRl
cmluZygpID09IFZpc3VhbE9yZGVyLCAhdGV4dFJlbmRlcmVyLmNhblVzZVNpbXBsZUZvbnRDb2Rl
UGF0aCgpKTsKKyAgICBUZXh0UnVuIHJ1bihzdHJpbmcsIHRleHRQb3MoKSwgZXhwYW5zaW9uKCks
IGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxl
LT5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyLCAhdGV4dFJlbmRlcmVyLT5jYW5Vc2VTaW1w
bGVGb250Q29kZVBhdGgoKSk7CiAgICAgcnVuLnNldFRhYlNpemUoIXN0eWxlLT5jb2xsYXBzZVdo
aXRlU3BhY2UoKSwgc3R5bGUtPnRhYlNpemUoKSk7CiAgICAgaWYgKHRleHRSdW5OZWVkc1JlbmRl
cmluZ0NvbnRleHQoZm9udCkpCi0gICAgICAgIHJ1bi5zZXRSZW5kZXJpbmdDb250ZXh0KFNWR1Rl
eHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoJnRleHRSZW5kZXJlcikpOworICAgICAgICBy
dW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
KHRleHRSZW5kZXJlcikpOwogCiAgICAgLy8gUHJvcGFnYXRlIHRoZSBtYXhpbXVtIGxlbmd0aCBv
ZiB0aGUgY2hhcmFjdGVycyBidWZmZXIgdG8gdGhlIFRleHRSdW4sIGV2ZW4gd2hlbiB3ZSdyZSBv
bmx5IHByb2Nlc3NpbmcgYSBzdWJzdHJpbmcuCiAgICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgo
bWF4aW11bUxlbmd0aCk7CkBAIC0xNjQ4LDE1ICsxNjQ4LDE1IEBAIGNvbnN0IGNoYXIqIElubGlu
ZVRleHRCb3g6OmJveE5hbWUoKSBjb25zdAogCiB2b2lkIElubGluZVRleHRCb3g6OnNob3dCb3go
aW50IHByaW50ZWRDaGFyYWN0ZXJzKSBjb25zdAogewotICAgIGNvbnN0IFJlbmRlclRleHQmIHRl
eHRSZW5kZXJlciA9IHRoaXMtPnRleHRSZW5kZXJlcigpOwotICAgIFN0cmluZyB2YWx1ZSA9IHRl
eHRSZW5kZXJlci50ZXh0KCk7CisgICAgY29uc3QgUmVuZGVyVGV4dCogb2JqID0gdG9SZW5kZXJU
ZXh0KHJlbmRlcmVyKCkpOworICAgIFN0cmluZyB2YWx1ZSA9IG9iai0+dGV4dCgpOwogICAgIHZh
bHVlID0gdmFsdWUuc3Vic3RyaW5nKHN0YXJ0KCksIGxlbigpKTsKICAgICB2YWx1ZS5yZXBsYWNl
V2l0aExpdGVyYWwoJ1xcJywgIlxcXFwiKTsKICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwo
J1xuJywgIlxcbiIpOwogICAgIHByaW50ZWRDaGFyYWN0ZXJzICs9IGZwcmludGYoc3RkZXJyLCAi
JXNcdCVwIiwgYm94TmFtZSgpLCB0aGlzKTsKICAgICBmb3IgKDsgcHJpbnRlZENoYXJhY3RlcnMg
PCBzaG93VHJlZUNoYXJhY3Rlck9mZnNldDsgcHJpbnRlZENoYXJhY3RlcnMrKykKICAgICAgICAg
ZnB1dGMoJyAnLCBzdGRlcnIpOwotICAgIHByaW50ZWRDaGFyYWN0ZXJzID0gZnByaW50ZihzdGRl
cnIsICJcdCVzICVwIiwgdGV4dFJlbmRlcmVyLnJlbmRlck5hbWUoKSwgJnRleHRSZW5kZXJlcik7
CisgICAgcHJpbnRlZENoYXJhY3RlcnMgPSBmcHJpbnRmKHN0ZGVyciwgIlx0JXMgJXAiLCBvYmot
PnJlbmRlck5hbWUoKSwgb2JqKTsKICAgICBjb25zdCBpbnQgcmVuZGVyZXJDaGFyYWN0ZXJPZmZz
ZXQgPSAyNDsKICAgICBmb3IgKDsgcHJpbnRlZENoYXJhY3RlcnMgPCByZW5kZXJlckNoYXJhY3Rl
ck9mZnNldDsgcHJpbnRlZENoYXJhY3RlcnMrKykKICAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggYmQ3OGJhNy4u
M2Y3MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC00
Nyw4ICs0Nyw4IEBAIENvbG9yIGNvcnJlY3RlZFRleHRDb2xvcihDb2xvciB0ZXh0Q29sb3IsIENv
bG9yIGJhY2tncm91bmRDb2xvcik7CiAKIGNsYXNzIElubGluZVRleHRCb3ggOiBwdWJsaWMgSW5s
aW5lQm94IHsKIHB1YmxpYzoKLSAgICBJbmxpbmVUZXh0Qm94KFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIpCi0gICAgICAgIDogSW5saW5lQm94KHJlbmRlcmVyKQorICAgIElubGluZVRleHRCb3goUmVu
ZGVyT2JqZWN0KiBvYmopCisgICAgICAgIDogSW5saW5lQm94KG9iaikKICAgICAgICAgLCBtX3By
ZXZUZXh0Qm94KDApCiAgICAgICAgICwgbV9uZXh0VGV4dEJveCgwKQogICAgICAgICAsIG1fc3Rh
cnQoMCkKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRv
bSkgT1ZFUlJJREU7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIoKSBj
b25zdDsKKyAgICBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIoKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZShSZW5kZXJBcmVuYSopIE9WRVJSSURFIEZJTkFM
OwpAQCAtMjEyLDcgKzIxMiw3IEBAIGlubGluZSBjb25zdCBJbmxpbmVUZXh0Qm94KiB0b0lubGlu
ZVRleHRCb3goY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3gpCiAvLyBUaGlzIHdpbGwgY2F0Y2gg
YW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCiB2b2lkIHRvSW5saW5lVGV4dEJveChj
b25zdCBJbmxpbmVUZXh0Qm94Kik7CiAKLWlubGluZSBSZW5kZXJUZXh0JiBJbmxpbmVUZXh0Qm94
Ojp0ZXh0UmVuZGVyZXIoKSBjb25zdAoraW5saW5lIFJlbmRlclRleHQqIElubGluZVRleHRCb3g6
OnRleHRSZW5kZXJlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRvUmVuZGVyVGV4dChyZW5kZXJl
cigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKaW5kZXggOTJhYTM0Yi4uZGM0
ZDgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKQEAgLTYwLDIwICs2MCwyMSBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgaW50IG1fbGluZUhlaWdodDsKIH07CiAKLWlubGluZSBS
ZW5kZXJCUiYgdG9SZW5kZXJCUihSZW5kZXJPYmplY3QmIG9iamVjdCkKKworaW5saW5lIFJlbmRl
ckJSKiB0b1JlbmRlckJSKFJlbmRlck9iamVjdCogb2JqZWN0KQogeyAKLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNCUigpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVuZGVyQlImPihvYmplY3QpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFvYmplY3QgfHwgb2JqZWN0LT5pc0JSKCkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxSZW5kZXJCUio+KG9iamVjdCk7CiB9CiAKLWlubGluZSBjb25zdCBSZW5kZXJCUiYgdG9SZW5k
ZXJCUihjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNCUigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgUmVuZGVyQlImPihvYmplY3QpOworaW5saW5lIGNvbnN0IFJlbmRlckJSKiB0b1JlbmRl
ckJSKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQoreyAKKyAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighb2JqZWN0IHx8IG9iamVjdC0+aXNCUigpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyQlIqPihvYmplY3QpOwogfQogCiAvLyBUaGlzIHdpbGwg
Y2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCi12b2lkIHRvUmVuZGVyQlIo
Y29uc3QgUmVuZGVyQlImKTsKK3ZvaWQgdG9SZW5kZXJCUihjb25zdCBSZW5kZXJCUiopOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IDEwN2ZiMDQuLmU1MzlmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcApAQCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRl
bGV0ZUxpbmVCb3hUcmVlKCkKICAgICAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0
aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgICAgICBGbG9hdGlu
Z09iamVjdFNldEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogICAgICAg
ICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEFTU0VSVCghKCgqaXQpLT5v
cmlnaW5hdGluZ0xpbmUoKSkgfHwgJigqaXQpLT5vcmlnaW5hdGluZ0xpbmUoKS0+cmVuZGVyZXIo
KSA9PSB0aGlzKTsKKyAgICAgICAgICAgIEFTU0VSVCghKCgqaXQpLT5vcmlnaW5hdGluZ0xpbmUo
KSkgfHwgKCppdCktPm9yaWdpbmF0aW5nTGluZSgpLT5yZW5kZXJlcigpID09IHRoaXMpOwogICAg
ICAgICAgICAgKCppdCktPnNldE9yaWdpbmF0aW5nTGluZSgwKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRlbGV0ZUxpbmVCb3hUcmVl
KCkKIAogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQog
ewotICAgIHJldHVybiBuZXcgKHJlbmRlckFyZW5hKCkpIFJvb3RJbmxpbmVCb3goKnRoaXMpOwor
ICAgIHJldHVybiBuZXcgKHJlbmRlckFyZW5hKCkpIFJvb3RJbmxpbmVCb3godGhpcyk7CiB9CiAK
IFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94
KCkKQEAgLTQxMjQsNyArNDEyNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5n
T2JqZWN0KFJlbmRlckJveCogbykKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKHItPm9yaWdpbmF0aW5nTGluZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2Vs
Zk5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgmci0+b3Jp
Z2luYXRpbmdMaW5lKCktPnJlbmRlcmVyKCkgPT0gdGhpcyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoci0+b3JpZ2luYXRpbmdMaW5lKCktPnJlbmRlcmVyKCkgPT0gdGhpcyk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByLT5vcmlnaW5hdGluZ0xpbmUoKS0+bWFya0RpcnR5KCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC00ODExLDcg
KzQ4MTEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjbGVhckZsb2F0cygpCiAKICAgICAgICAgICAg
ICAgICAgICAgZmxvYXRNYXAucmVtb3ZlKGYtPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAob2xkRmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGluZSgpICYmICFzZWxmTmVl
ZHNMYXlvdXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCZvbGRGbG9hdGlu
Z09iamVjdC0+b3JpZ2luYXRpbmdMaW5lKCktPnJlbmRlcmVyKCkgPT0gdGhpcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQob2xkRmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGlu
ZSgpLT5yZW5kZXJlcigpID09IHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgb2xkRmxv
YXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGluZSgpLT5tYXJrRGlydHkoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2xkRmxvYXRpbmdPYmplY3Q7
CkBAIC01MjQzLDggKzUyNDMsOSBAQCBib29sIFJlbmRlckJsb2NrOjpoaXRUZXN0RmxvYXRzKGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZExvY2F0aW9uID0gYWNjdW11
bGF0ZWRPZmZzZXQ7Ci0gICAgaWYgKGlzUmVuZGVyVmlldygpKQotICAgICAgICBhZGp1c3RlZExv
Y2F0aW9uICs9IHRvTGF5b3V0U2l6ZSh0b1JlbmRlclZpZXcoKnRoaXMpLmZyYW1lVmlldygpLnNj
cm9sbFBvc2l0aW9uKCkpOworICAgIGlmIChpc1JlbmRlclZpZXcoKSkgeworICAgICAgICBhZGp1
c3RlZExvY2F0aW9uICs9IHRvTGF5b3V0U2l6ZSh0b1JlbmRlclZpZXcodGhpcyktPmZyYW1lVmll
dygpLnNjcm9sbFBvc2l0aW9uKCkpOworICAgIH0KIAogICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0
U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICBG
bG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGJlZ2luID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4o
KTsKQEAgLTUzODMsMTQgKzUzODQsMTQgQEAgUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9u
Rm9yQm94KElubGluZUJveCAqYm94LCBib29sIHN0YXJ0KSBjb25zdAogICAgIGlmICghYm94KQog
ICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIAotICAgIGlmICghYm94LT5yZW5kZXJlcigpLm5v
blBzZXVkb05vZGUoKSkKKyAgICBpZiAoIWJveC0+cmVuZGVyZXIoKS0+bm9uUHNldWRvTm9kZSgp
KQogICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vblBzZXVkb05v
ZGUoKSwgc3RhcnQgPyBjYXJldE1pbk9mZnNldCgpIDogY2FyZXRNYXhPZmZzZXQoKSk7CiAKICAg
ICBpZiAoIWJveC0+aXNJbmxpbmVUZXh0Qm94KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24oYm94LT5yZW5kZXJlcigpLm5vblBzZXVkb05vZGUoKSwgc3RhcnQg
PyBib3gtPnJlbmRlcmVyKCkuY2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+cmVuZGVyZXIoKS5jYXJl
dE1heE9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihib3gtPnJlbmRlcmVyKCktPm5vblBzZXVkb05vZGUoKSwgc3RhcnQgPyBib3gtPnJlbmRlcmVy
KCktPmNhcmV0TWluT2Zmc2V0KCkgOiBib3gtPnJlbmRlcmVyKCktPmNhcmV0TWF4T2Zmc2V0KCkp
OwogCiAgICAgSW5saW5lVGV4dEJveCogdGV4dEJveCA9IHRvSW5saW5lVGV4dEJveChib3gpOwot
ICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oYm94LT5yZW5kZXJlcigpLm5v
blBzZXVkb05vZGUoKSwgc3RhcnQgPyB0ZXh0Qm94LT5zdGFydCgpIDogdGV4dEJveC0+c3RhcnQo
KSArIHRleHRCb3gtPmxlbigpKTsKKyAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKGJveC0+cmVuZGVyZXIoKS0+bm9uUHNldWRvTm9kZSgpLCBzdGFydCA/IHRleHRCb3gtPnN0
YXJ0KCkgOiB0ZXh0Qm94LT5zdGFydCgpICsgdGV4dEJveC0+bGVuKCkpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNFZGl0aW5nQm91bmRhcnkoUmVuZGVyT2JqZWN0KiBhbmNlc3RvciwgUmVu
ZGVyT2JqZWN0KiBjaGlsZCkKQEAgLTU1MDUsOSArNTUwNiw5IEBAIFZpc2libGVQb3NpdGlvbiBS
ZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlv
dXRQb2luCiAgICAgICAgIExheW91dFBvaW50IHBvaW50KHBvaW50SW5Mb2dpY2FsQ29udGVudHMu
eCgpLCBjbG9zZXN0Qm94LT5yb290KCktPmJsb2NrRGlyZWN0aW9uUG9pbnRJbkxpbmUoKSk7CiAg
ICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgIHBvaW50
ID0gcG9pbnQudHJhbnNwb3NlZFBvaW50KCk7Ci0gICAgICAgIGlmIChjbG9zZXN0Qm94LT5yZW5k
ZXJlcigpLmlzUmVwbGFjZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50
UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKHRoaXMsICZ0b1JlbmRlckJveChjbG9zZXN0Qm94
LT5yZW5kZXJlcigpKSwgcG9pbnQpOwotICAgICAgICByZXR1cm4gY2xvc2VzdEJveC0+cmVuZGVy
ZXIoKS5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICAgICAgaWYgKGNsb3Nlc3RCb3gtPnJl
bmRlcmVyKCktPmlzUmVwbGFjZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBv
aW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKHRoaXMsIHRvUmVuZGVyQm94KGNsb3Nlc3RC
b3gtPnJlbmRlcmVyKCkpLCBwb2ludCk7CisgICAgICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5k
ZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKICAgICB9CiAKICAgICBpZiAobGFzdFJv
b3RCb3hXaXRoQ2hpbGRyZW4pIHsKQEAgLTY0MjgsNyArNjQyOSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHQtPnN0
eWxlKCktPmhhc1RleHRDb21iaW5lKCkgJiYgdC0+aXNDb21iaW5lVGV4dCgpKQotICAgICAgICAg
ICAgICAgICAgICB0b1JlbmRlckNvbWJpbmVUZXh0KCp0KS5jb21iaW5lVGV4dCgpOworICAgICAg
ICAgICAgICAgICAgICB0b1JlbmRlckNvbWJpbmVUZXh0KHQpLT5jb21iaW5lVGV4dCgpOwogCiAg
ICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYSBicmVha2FibGUgY2hhcmFj
dGVyLiAgUGFzcyBpbgogICAgICAgICAgICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHdlIHNob3Vs
ZCBpZ25vcmUgYW55IHNwYWNlcyBhdCB0aGUgZnJvbnQKQEAgLTc0ODEsNyArNzQ4Miw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMs
IGNvbnN0IExheW91dFBvaW50JiBhCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nLiBU
aGUgcHJpbmNpcGFsIHJlbmRlcmVyIG1heSBub3QgYmUgdGhlIGNvbnRpbnVhdGlvbiBwcmVjZWRp
bmcgdGhpcyBibG9jay4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIGJsb2Nr
LWZsb3dzIHRoYXQgYXJlIGhvcml6b250YWwuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc4MQotICAgICAgICBib29sIHByZXZJbmxpbmVIYXNM
aW5lQm94ID0gdG9SZW5kZXJJbmxpbmUoaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5ub2Rl
KCktPnJlbmRlcmVyKCkpLT5maXJzdExpbmVCb3goKTsKKyAgICAgICAgYm9vbCBwcmV2SW5saW5l
SGFzTGluZUJveCA9IHRvUmVuZGVySW5saW5lKGlubGluZUVsZW1lbnRDb250aW51YXRpb24oKS0+
bm9kZSgpLT5yZW5kZXJlcigpKS0+Zmlyc3RMaW5lQm94KCk7IAogICAgICAgICBmbG9hdCB0b3BN
YXJnaW4gPSBwcmV2SW5saW5lSGFzTGluZUJveCA/IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIDog
TGF5b3V0VW5pdCgpOwogICAgICAgICBmbG9hdCBib3R0b21NYXJnaW4gPSBuZXh0SW5saW5lSGFz
TGluZUJveCA/IGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkgOiBMYXlvdXRVbml0KCk7CiAgICAgICAg
IExheW91dFJlY3QgcmVjdChhZGRpdGlvbmFsT2Zmc2V0LngoKSwgYWRkaXRpb25hbE9mZnNldC55
KCkgLSB0b3BNYXJnaW4sIHdpZHRoKCksIGhlaWdodCgpICsgdG9wTWFyZ2luICsgYm90dG9tTWFy
Z2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggMjEzNDBkNy4u
MDNjZjNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTEzNTks
MTggKzEzNTksNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfY2FuUHJvcGFnYXRlRmxv
YXRJbnRvU2libGluZzsKIH07CiAKLWlubGluZSBSZW5kZXJCbG9jayYgdG9SZW5kZXJCbG9jayhS
ZW5kZXJPYmplY3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihvYmplY3QuaXNSZW5kZXJCbG9jaygpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVu
ZGVyQmxvY2smPihvYmplY3QpOwotfQotCi1pbmxpbmUgY29uc3QgUmVuZGVyQmxvY2smIHRvUmVu
ZGVyQmxvY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17Ci0gICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzUmVuZGVyQmxvY2soKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckJsb2NrJj4ob2JqZWN0KTsKLX0KLQogaW5saW5lIFJl
bmRlckJsb2NrKiB0b1JlbmRlckJsb2NrKFJlbmRlck9iamVjdCogb2JqZWN0KQogeyAKICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5k
ZXJCbG9jaygpKTsKQEAgLTEzODUsNyArMTM3Myw2IEBAIGlubGluZSBjb25zdCBSZW5kZXJCbG9j
ayogdG9SZW5kZXJCbG9jayhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIAogLy8gVGhpcyB3
aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b1JlbmRl
ckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKik7Ci12b2lkIHRvUmVuZGVyQmxvY2soY29uc3QgUmVu
ZGVyQmxvY2smKTsKIAogI2lmbmRlZiBOREVCVUcKIC8vIFRoZXNlIHN0cnVjdHVyZXMgYXJlIHVz
ZWQgYnkgUE9ESW50ZXJ2YWxUcmVlIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IGZl
ZTg3NGUuLmY1NGMxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC02NzksNyArNjc5LDcgQEAgUm9vdElubGluZUJveCog
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5z
LCBjb25zdAogICAgICAgICBpZiAoIWJveCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGlmICghcm9vdEhhc1NlbGVjdGVkQ2hpbGRyZW4gJiYgYm94LT5yZW5kZXJlcigpLnNlbGVj
dGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKQorICAgICAgICBpZiAo
IXJvb3RIYXNTZWxlY3RlZENoaWxkcmVuICYmIGJveC0+cmVuZGVyZXIoKS0+c2VsZWN0aW9uU3Rh
dGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpCiAgICAgICAgICAgICByb290SGFz
U2VsZWN0ZWRDaGlsZHJlbiA9IHRydWU7CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBwYXJl
bnQgYm94IHlldCwgb3IgaWYgdGhlIHJ1biBpcyBub3Qgc2ltcGx5IGEgc2libGluZywKQEAgLTY5
MSw3ICs2OTEsNyBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZShC
aWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0CiAjZWxzZQogICAgICAgICBib29s
IHJ1blN0YXJ0c1NlZ21lbnQgPSBmYWxzZTsKICNlbmRpZgotICAgICAgICBpZiAoIXBhcmVudEJv
eCB8fCAmcGFyZW50Qm94LT5yZW5kZXJlcigpICE9IHItPm1fb2JqZWN0LT5wYXJlbnQoKSB8fCBy
dW5TdGFydHNTZWdtZW50KQorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJl
bmRlcmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgpIHx8IHJ1blN0YXJ0c1NlZ21lbnQpCiAg
ICAgICAgICAgICAvLyBDcmVhdGUgbmV3IGlubGluZSBib3hlcyBhbGwgdGhlIHdheSBiYWNrIHRv
IHRoZSBhcHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnQuCiAgICAgICAgICAgICBwYXJlbnRCb3gg
PSBjcmVhdGVMaW5lQm94ZXMoci0+bV9vYmplY3QtPnBhcmVudCgpLCBsaW5lSW5mbywgYm94LCBy
dW5TdGFydHNTZWdtZW50KTsKICAgICAgICAgZWxzZSB7CkBAIC0xNTk5LDkgKzE1OTksOSBAQCB2
b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzKExpbmVMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGJvb2wgaGFzSW5saQogICAgICAgICAvLyBhZGp1c3QgdGhlIGhlaWdodCBhY2Nv
cmRpbmdseS4KICAgICAgICAgLy8gQSBsaW5lIGJyZWFrIGNhbiBiZSBlaXRoZXIgdGhlIGZpcnN0
IG9yIHRoZSBsYXN0IG9iamVjdCBvbiBhIGxpbmUsIGRlcGVuZGluZyBvbiBpdHMgZGlyZWN0aW9u
LgogICAgICAgICBpZiAoSW5saW5lQm94KiBsYXN0TGVhZkNoaWxkID0gbGFzdFJvb3RCb3goKS0+
bGFzdExlYWZDaGlsZCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIGxhc3RPYmplY3Qg
PSAmbGFzdExlYWZDaGlsZC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCog
bGFzdE9iamVjdCA9IGxhc3RMZWFmQ2hpbGQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAo
IWxhc3RPYmplY3QtPmlzQlIoKSkKLSAgICAgICAgICAgICAgICBsYXN0T2JqZWN0ID0gJmxhc3RS
b290Qm94KCktPmZpcnN0TGVhZkNoaWxkKCktPnJlbmRlcmVyKCk7CisgICAgICAgICAgICAgICAg
bGFzdE9iamVjdCA9IGxhc3RSb290Qm94KCktPmZpcnN0TGVhZkNoaWxkKCktPnJlbmRlcmVyKCk7
CiAgICAgICAgICAgICBpZiAobGFzdE9iamVjdC0+aXNCUigpKSB7CiAgICAgICAgICAgICAgICAg
RUNsZWFyIGNsZWFyID0gbGFzdE9iamVjdC0+c3R5bGUoKS0+Y2xlYXIoKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2xlYXIgIT0gQ05PTkUpCkBAIC0yMDYwLDcgKzIwNjAsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkp
IHsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9v
dEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91
dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9t
TGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJv
eCogdHJhaWxpbmdGbG9hdHNMaW5lQm94ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBUcmFpbGluZ0Zs
b2F0c1Jvb3RJbmxpbmVCb3goKnRoaXMpOworICAgICAgICAgICAgVHJhaWxpbmdGbG9hdHNSb290
SW5saW5lQm94KiB0cmFpbGluZ0Zsb2F0c0xpbmVCb3ggPSBuZXcgKHJlbmRlckFyZW5hKCkpIFRy
YWlsaW5nRmxvYXRzUm9vdElubGluZUJveCh0aGlzKTsKICAgICAgICAgICAgIG1fbGluZUJveGVz
LmFwcGVuZExpbmVCb3godHJhaWxpbmdGbG9hdHNMaW5lQm94KTsKICAgICAgICAgICAgIHRyYWls
aW5nRmxvYXRzTGluZUJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICAgICAgICAgIEdseXBoT3Zl
cmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwIHRleHRCb3hEYXRhTWFwOwpAQCAtMjYwMCw5ICsyNjAw
LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFj
ZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmUKICAgICAgICAgICAgIG1fYmxvY2stPnNldExv
Z2ljYWxIZWlnaHQob2xkTG9naWNhbEhlaWdodCArIG1hcmdpbk9mZnNldCk7CiAgICAgICAgICAg
ICBtX2Jsb2NrLT5wb3NpdGlvbk5ld0Zsb2F0T25MaW5lKG1fYmxvY2stPmluc2VydEZsb2F0aW5n
T2JqZWN0KHRvUmVuZGVyQm94KG9iamVjdCkpLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBs
aW5lSW5mbywgd2lkdGgpOwogICAgICAgICAgICAgbV9ibG9jay0+c2V0TG9naWNhbEhlaWdodChv
bGRMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgfSBlbHNlIGlmIChvYmplY3QtPmlzVGV4dCgpICYm
IG9iamVjdC0+c3R5bGUoKS0+aGFzVGV4dENvbWJpbmUoKSAmJiBvYmplY3QtPmlzQ29tYmluZVRl
eHQoKSAmJiAhdG9SZW5kZXJDb21iaW5lVGV4dCgqb2JqZWN0KS5pc0NvbWJpbmVkKCkpIHsKLSAg
ICAgICAgICAgIHRvUmVuZGVyQ29tYmluZVRleHQoKm9iamVjdCkuY29tYmluZVRleHQoKTsKLSAg
ICAgICAgICAgIGlmICh0b1JlbmRlckNvbWJpbmVUZXh0KCpvYmplY3QpLmlzQ29tYmluZWQoKSkK
KyAgICAgICAgfSBlbHNlIGlmIChvYmplY3QtPmlzVGV4dCgpICYmIG9iamVjdC0+c3R5bGUoKS0+
aGFzVGV4dENvbWJpbmUoKSAmJiBvYmplY3QtPmlzQ29tYmluZVRleHQoKSAmJiAhdG9SZW5kZXJD
b21iaW5lVGV4dChvYmplY3QpLT5pc0NvbWJpbmVkKCkpIHsKKyAgICAgICAgICAgIHRvUmVuZGVy
Q29tYmluZVRleHQob2JqZWN0KS0+Y29tYmluZVRleHQoKTsKKyAgICAgICAgICAgIGlmICh0b1Jl
bmRlckNvbWJpbmVUZXh0KG9iamVjdCktPmlzQ29tYmluZWQoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICByZXNvbHZlci5pbmNyZW1lbnQoKTsKQEAgLTI4
NTgsOSArMjg1OCw5IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6
bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sCiAjZW5kaWYKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIGl0ZXJhdG9ySXNCZXlvbmRFbmRPZlJlbmRlckNvbWJpbmVUZXh0KGNv
bnN0IElubGluZUl0ZXJhdG9yJiBpdGVyLCBSZW5kZXJDb21iaW5lVGV4dCYgcmVuZGVyZXIpCitz
dGF0aWMgaW5saW5lIGJvb2wgaXRlcmF0b3JJc0JleW9uZEVuZE9mUmVuZGVyQ29tYmluZVRleHQo
Y29uc3QgSW5saW5lSXRlcmF0b3ImIGl0ZXIsIFJlbmRlckNvbWJpbmVUZXh0KiByZW5kZXJlcikK
IHsKLSAgICByZXR1cm4gaXRlci5tX29iaiA9PSAmcmVuZGVyZXIgJiYgaXRlci5tX3BvcyA+PSBy
ZW5kZXJlci50ZXh0TGVuZ3RoKCk7CisgICAgcmV0dXJuIGl0ZXIubV9vYmogPT0gcmVuZGVyZXIg
JiYgaXRlci5tX3BvcyA+PSByZW5kZXJlci0+dGV4dExlbmd0aCgpOwogfQogCiBzdGF0aWMgaW5s
aW5lIHZvaWQgY29tbWl0TGluZUJyZWFrQXRDdXJyZW50V2lkdGgoTGluZVdpZHRoJiB3aWR0aCwg
SW5saW5lSXRlcmF0b3ImIGxCcmVhaywgUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9m
ZnNldCA9IDAsIGludCBuZXh0QnJlYWsgPSAtMSkKQEAgLTMxMTQsNyArMzExNCw3IEBAIElubGlu
ZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXJJ
c1dTID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgaWdub3JpbmdTcGFjZXMgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodG9SZW5kZXJMaXN0TWFya2Vy
KCpjdXJyZW50Lm1fb2JqKS5pc0luc2lkZSgpKQorICAgICAgICAgICAgICAgIGlmICh0b1JlbmRl
ckxpc3RNYXJrZXIoY3VycmVudC5tX29iaiktPmlzSW5zaWRlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgocmVwbGFjZWRMb2dpY2FsV2lkdGgpOwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0
aChyZXBsYWNlZExvZ2ljYWxXaWR0aCk7CkBAIC0zMTM3LDkgKzMxMzcsOSBAQCBJbmxpbmVJdGVy
YXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRTZWdtZW50QnJlYWsoSW5saW5lQmlk
aVJlc29sdmVyJiByZQogICAgICAgICAgICAgaWYgKGF1dG9XcmFwICYmICFSZW5kZXJTdHlsZTo6
YXV0b1dyYXAobGFzdFdTKSAmJiBpZ25vcmluZ1NwYWNlcykKICAgICAgICAgICAgICAgICBjb21t
aXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aCh3aWR0aCwgbEJyZWFrLCBjdXJyZW50Lm1fb2JqKTsK
IAotICAgICAgICAgICAgaWYgKHQtPnN0eWxlKCktPmhhc1RleHRDb21iaW5lKCkgJiYgY3VycmVu
dC5tX29iai0+aXNDb21iaW5lVGV4dCgpICYmICF0b1JlbmRlckNvbWJpbmVUZXh0KCpjdXJyZW50
Lm1fb2JqKS5pc0NvbWJpbmVkKCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJDb21iaW5lVGV4
dCYgY29tYmluZVJlbmRlcmVyID0gdG9SZW5kZXJDb21iaW5lVGV4dCgqY3VycmVudC5tX29iaik7
Ci0gICAgICAgICAgICAgICAgY29tYmluZVJlbmRlcmVyLmNvbWJpbmVUZXh0KCk7CisgICAgICAg
ICAgICBpZiAodC0+c3R5bGUoKS0+aGFzVGV4dENvbWJpbmUoKSAmJiBjdXJyZW50Lm1fb2JqLT5p
c0NvbWJpbmVUZXh0KCkgJiYgIXRvUmVuZGVyQ29tYmluZVRleHQoY3VycmVudC5tX29iaiktPmlz
Q29tYmluZWQoKSkgeworICAgICAgICAgICAgICAgIFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5l
UmVuZGVyZXIgPSB0b1JlbmRlckNvbWJpbmVUZXh0KGN1cnJlbnQubV9vYmopOworICAgICAgICAg
ICAgICAgIGNvbWJpbmVSZW5kZXJlci0+Y29tYmluZVRleHQoKTsKICAgICAgICAgICAgICAgICAv
LyBUaGUgbGVuZ3RoIG9mIHRoZSByZW5kZXJlcidzIHRleHQgbWF5IGhhdmUgY2hhbmdlZC4gSW5j
cmVtZW50IHN0YWxlIGl0ZXJhdG9yIHBvc2l0aW9ucwogICAgICAgICAgICAgICAgIGlmIChpdGVy
YXRvcklzQmV5b25kRW5kT2ZSZW5kZXJDb21iaW5lVGV4dChsQnJlYWssIGNvbWJpbmVSZW5kZXJl
cikpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXJhdG9ySXNCZXlvbmRFbmRPZlJl
bmRlckNvbWJpbmVUZXh0KHJlc29sdmVyLnBvc2l0aW9uKCksIGNvbWJpbmVSZW5kZXJlcikpOwpA
QCAtMzQ3Niw3ICszNDc2LDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVh
a2VyOjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmUKIAogICAgICAgICBp
ZiAoIWN1cnJlbnQubV9vYmotPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewog
ICAgICAgICAgICAgbGFzdCA9IGN1cnJlbnQubV9vYmo7Ci0gICAgICAgICAgICBpZiAobGFzdC0+
aXNSZXBsYWNlZCgpICYmIGF1dG9XcmFwICYmICghbGFzdC0+aXNJbWFnZSgpIHx8IGFsbG93SW1h
Z2VzVG9CcmVhaykgJiYgKCFsYXN0LT5pc0xpc3RNYXJrZXIoKSB8fCB0b1JlbmRlckxpc3RNYXJr
ZXIoKmxhc3QpLmlzSW5zaWRlKCkpKQorICAgICAgICAgICAgaWYgKGxhc3QtPmlzUmVwbGFjZWQo
KSAmJiBhdXRvV3JhcCAmJiAoIWxhc3QtPmlzSW1hZ2UoKSB8fCBhbGxvd0ltYWdlc1RvQnJlYWsp
ICYmICghbGFzdC0+aXNMaXN0TWFya2VyKCkgfHwgdG9SZW5kZXJMaXN0TWFya2VyKGxhc3QpLT5p
c0luc2lkZSgpKSkKICAgICAgICAgICAgICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0
aCh3aWR0aCwgbEJyZWFrLCBuZXh0KTsKICAgICAgICAgfQogCkBAIC0zNzA2LDcgKzM3MDYsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGlu
ZUdyaWRCb3goMCk7CiAKLSAgICBSb290SW5saW5lQm94KiBsaW5lR3JpZEJveCA9IG5ldyAocmVu
ZGVyQXJlbmEoKSkgUm9vdElubGluZUJveCgqdGhpcyk7CisgICAgUm9vdElubGluZUJveCogbGlu
ZUdyaWRCb3ggPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJvb3RJbmxpbmVCb3godGhpcyk7CiAgICAg
bGluZUdyaWRCb3gtPnNldEhhc1RleHRDaGlsZHJlbigpOyAvLyBOZWVkZWQgdG8gbWFrZSB0aGUg
bGluZSBhc2NlbnQvZGVzY2VudCBhY3R1YWxseSBiZSBob25vcmVkIGluIHF1aXJrcyBtb2RlLgog
ICAgIGxpbmVHcmlkQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwogICAgIEdseXBoT3ZlcmZsb3dBbmRG
YWxsYmFja0ZvbnRzTWFwIHRleHRCb3hEYXRhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBkZGM5ZGE4Li42OTYxNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMTUzOSw4ICsxNTM5LDggQEAgYm9vbCBSZW5kZXJCb3g6OnJl
cGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxs
TGF5ZXIKICAgICAgICAgICAgICAgICBpZiAoZHJhd2luZ1Jvb3RCYWNrZ3JvdW5kKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGxheWVyUmVuZGVyZXIgPSAmdmlldygpOwogCi0gICAgICAgICAgICAg
ICAgICAgIExheW91dFVuaXQgcncgPSB0b1JlbmRlclZpZXcoKmxheWVyUmVuZGVyZXIpLmZyYW1l
VmlldygpLmNvbnRlbnRzV2lkdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBy
aCA9IHRvUmVuZGVyVmlldygqbGF5ZXJSZW5kZXJlcikuZnJhbWVWaWV3KCkuY29udGVudHNIZWln
aHQoKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydyA9IHRvUmVuZGVyVmlldyhs
YXllclJlbmRlcmVyKS0+ZnJhbWVWaWV3KCkuY29udGVudHNXaWR0aCgpOworICAgICAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IHJoID0gdG9SZW5kZXJWaWV3KGxheWVyUmVuZGVyZXIpLT5mcmFt
ZVZpZXcoKS5jb250ZW50c0hlaWdodCgpOwogCiAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVy
UmVjdCA9IExheW91dFJlY3QoLWxheWVyUmVuZGVyZXItPm1hcmdpbkxlZnQoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIC1sYXllclJlbmRlcmVyLT5tYXJnaW5Ub3AoKSwKQEAgLTE4MzksMTIg
KzE4MzksNyBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbgogCiAgICAgbW9kZSAmPSB+QXBwbHlD
b250YWluZXJGbGlwOwogCi0gICAgLy8gRm9yIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgaW5z
aWRlIG91dC1vZi1mbG93IG5hbWVkIGZsb3dzLCB3ZSBkbyBub3Qgd2FudCB0bwotICAgIC8vIG1h
cCB0aGVpciBwb3NpdGlvbiBmdXJ0aGVyIHRvIHJlZ2lvbnMgYmFzZWQgb24gdGhlaXIgY29vcmRp
bmF0ZXMgaW5zaWRlIHRoZSBuYW1lZCBmbG93cy4KLSAgICBpZiAoIW8tPmlzT3V0T2ZGbG93UmVu
ZGVyRmxvd1RocmVhZCgpIHx8ICFmaXhlZFBvc2l0aW9uZWRXaXRoTmFtZWRGbG93Q29udGFpbmlu
Z0Jsb2NrKCkpCi0gICAgICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5l
ciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKLSAgICBlbHNlCi0gICAgICAgIG8t
Pm1hcExvY2FsVG9Db250YWluZXIodG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KG8pLCB0cmFuc2Zv
cm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOworICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVw
YWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KIAogY29u
c3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmIGdlb21ldHJ5TWFwKSBjb25zdApAQCAtMTkzOCw3ICsxOTMzLDcgQEAgTGF5b3V0U2l6ZSBS
ZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlv
dXRQb2ludCYgcG8KIAogSW5saW5lQm94KiBSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJveCgpCiB7
Ci0gICAgcmV0dXJuIG5ldyAocmVuZGVyQXJlbmEoKSkgSW5saW5lQm94KCp0aGlzKTsKKyAgICBy
ZXR1cm4gbmV3IChyZW5kZXJBcmVuYSgpKSBJbmxpbmVCb3godGhpcyk7CiB9CiAKIHZvaWQgUmVu
ZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCkBAIC0xOTYyLDcgKzE5NTcs
NyBAQCB2b2lkIFJlbmRlckJveDo6cG9zaXRpb25MaW5lQm94KElubGluZUJveCogYm94KQogICAg
ICAgICAgICAgLy8gb3VyIG9iamVjdCB3YXMgaW5saW5lIG9yaWdpbmFsbHksIHNpbmNlIG90aGVy
d2lzZSBpdCB3b3VsZCBoYXZlIGVuZGVkIHVwIHVuZGVybmVhdGgKICAgICAgICAgICAgIC8vIHRo
ZSBpbmxpbmVzLgogICAgICAgICAgICAgUm9vdElubGluZUJveCogcm9vdCA9IGJveC0+cm9vdCgp
OwotICAgICAgICAgICAgcm9vdC0+YmxvY2soKS5zZXRTdGF0aWNJbmxpbmVQb3NpdGlvbkZvckNo
aWxkKHRoaXMsIHJvb3QtPmxpbmVUb3BXaXRoTGVhZGluZygpLCByb3VuZGVkTGF5b3V0VW5pdChi
b3gtPmxvZ2ljYWxMZWZ0KCkpKTsKKyAgICAgICAgICAgIHJvb3QtPmJsb2NrKCktPnNldFN0YXRp
Y0lubGluZVBvc2l0aW9uRm9yQ2hpbGQodGhpcywgcm9vdC0+bGluZVRvcFdpdGhMZWFkaW5nKCks
IHJvdW5kZWRMYXlvdXRVbml0KGJveC0+bG9naWNhbExlZnQoKSkpOwogICAgICAgICAgICAgaWYg
KHN0eWxlKCktPmhhc1N0YXRpY0lubGluZVBvc2l0aW9uKGJveC0+aXNIb3Jpem9udGFsKCkpKQog
ICAgICAgICAgICAgICAgIHNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsg
Ly8gSnVzdCBnbyBhaGVhZCBhbmQgbWFyayB0aGUgcG9zaXRpb25lZCBvYmplY3QgYXMgbmVlZGlu
ZyBsYXlvdXQsIHNvIGl0IHdpbGwgdXBkYXRlIGl0cyBwb3NpdGlvbiBwcm9wZXJseS4KICAgICAg
ICAgfSBlbHNlIHsKQEAgLTI5NzIsOSArMjk2Nyw2IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpj
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1v
CiAgICAgICAgIGlmICghZmxvd1RocmVhZCkKICAgICAgICAgICAgIHJldHVybiB0b1JlbmRlckJv
eChjb250YWluaW5nQmxvY2spLT5jbGllbnRMb2dpY2FsV2lkdGgoKTsKIAotICAgICAgICBpZiAo
Y29udGFpbmluZ0Jsb2NrLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpICYmIHN0eWxlKCktPnBv
c2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBjb250YWluaW5n
QmxvY2stPnZpZXcoKS5jbGllbnRMb2dpY2FsV2lkdGgoKTsKLQogICAgICAgICBjb25zdCBSZW5k
ZXJCbG9jayogY2IgPSB0b1JlbmRlckJsb2NrKGNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgIFJl
bmRlckJveFJlZ2lvbkluZm8qIGJveEluZm8gPSAwOwogICAgICAgICBpZiAoIXJlZ2lvbikgewpA
QCAtMzAyOSwxMSArMzAyMSw4IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxv
Y2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNCiAgICAgICAgIGNv
bnN0IFJlbmRlckJsb2NrKiBjYiA9IHRvUmVuZGVyQmxvY2soY29udGFpbmluZ0Jsb2NrKTsKICAg
ICAgICAgTGF5b3V0VW5pdCByZXN1bHQgPSBjYi0+Y2xpZW50TG9naWNhbEhlaWdodCgpOwogICAg
ICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdC
bG9jaygpOwotICAgICAgICBpZiAoZmxvd1RocmVhZCAmJiBjb250YWluaW5nQmxvY2stPmlzUmVu
ZGVyRmxvd1RocmVhZCgpICYmIGZsb3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PT0gY29udGFpbmluZ0Jsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpICYmIHN0
eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICByZXR1
cm4gY29udGFpbmluZ0Jsb2NrLT52aWV3KCkuY2xpZW50TG9naWNhbEhlaWdodCgpOworICAgICAg
ICBpZiAoZmxvd1RocmVhZCAmJiBjb250YWluaW5nQmxvY2stPmlzUmVuZGVyRmxvd1RocmVhZCgp
ICYmIGZsb3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gY29udGFpbmluZ0Js
b2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRvUmVu
ZGVyRmxvd1RocmVhZChjb250YWluaW5nQmxvY2spLT5jb250ZW50TG9naWNhbEhlaWdodE9mRmly
c3RSZWdpb24oKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMWQyMGU4Ny4uMGUz
NjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNzA2LDE4ICs3MDYs
NiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfaGFkT3ZlcmZsb3dDbGlwOwogfTsKIAot
aW5saW5lIFJlbmRlckJveCYgdG9SZW5kZXJCb3goUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17Ci0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzQm94KCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJCb3gmPihvYmplY3QpOwotfQotCi1pbmxpbmUgY29u
c3QgUmVuZGVyQm94JiB0b1JlbmRlckJveChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCkKLXsK
LSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNCb3goKSk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckJveCY+KG9iamVjdCk7Ci19Ci0KIGlu
bGluZSBSZW5kZXJCb3gqIHRvUmVuZGVyQm94KFJlbmRlck9iamVjdCogb2JqZWN0KQogeyAKICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2JqZWN0IHx8IG9iamVjdC0+aXNC
b3goKSk7CkBAIC03MzIsNyArNzIwLDYgQEAgaW5saW5lIGNvbnN0IFJlbmRlckJveCogdG9SZW5k
ZXJCb3goY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAKIC8vIFRoaXMgd2lsbCBjYXRjaCBh
bnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KIHZvaWQgdG9SZW5kZXJCb3goY29uc3Qg
UmVuZGVyQm94Kik7Ci12b2lkIHRvUmVuZGVyQm94KGNvbnN0IFJlbmRlckJveCYpOwogCiBpbmxp
bmUgUmVuZGVyQm94KiBSZW5kZXJCb3g6OnByZXZpb3VzU2libGluZ0JveCgpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApp
bmRleCA2NWRhYzdiLi5jMzQwMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTUzMSwxMCArNTMxLDEwIEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVTdGlja3lQb3NpdGlvbkNvbnN0cmFpbnRzKFN0aWNr
eVBvc2l0aW9uVmlld3BvCiAKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gdGhp
cy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0NsaXBwaW5n
TGF5ZXIgPSBsYXllcigpLT5lbmNsb3NpbmdPdmVyZmxvd0NsaXBMYXllcihFeGNsdWRlU2VsZik7
Ci0gICAgUmVuZGVyQm94JiBlbmNsb3NpbmdDbGlwcGluZ0JveCA9IGVuY2xvc2luZ0NsaXBwaW5n
TGF5ZXIgPyB0b1JlbmRlckJveChlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5yZW5kZXJlcigpKSA6
IHZpZXcoKTsKKyAgICBSZW5kZXJCb3gqIGVuY2xvc2luZ0NsaXBwaW5nQm94ID0gZW5jbG9zaW5n
Q2xpcHBpbmdMYXllciA/IHRvUmVuZGVyQm94KCZlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5yZW5k
ZXJlcigpKSA6ICZ2aWV3KCk7CiAKICAgICBMYXlvdXRSZWN0IGNvbnRhaW5lckNvbnRlbnRSZWN0
OwotICAgIGlmICghZW5jbG9zaW5nQ2xpcHBpbmdMYXllciB8fCAoY29udGFpbmluZ0Jsb2NrICE9
ICZlbmNsb3NpbmdDbGlwcGluZ0JveCkpCisgICAgaWYgKCFlbmNsb3NpbmdDbGlwcGluZ0xheWVy
IHx8IChjb250YWluaW5nQmxvY2sgIT0gZW5jbG9zaW5nQ2xpcHBpbmdCb3gpKQogICAgICAgICBj
b250YWluZXJDb250ZW50UmVjdCA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGVudEJveFJlY3QoKTsK
ICAgICBlbHNlIHsKICAgICAgICAgY29udGFpbmVyQ29udGVudFJlY3QgPSBjb250YWluaW5nQmxv
Y2stPmxheW91dE92ZXJmbG93UmVjdCgpOwpAQCAtNTU2LDEyICs1NTYsMTIgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMoU3RpY2t5
UG9zaXRpb25WaWV3cG8KICAgICBjb250YWluZXJDb250ZW50UmVjdC5jb250cmFjdChtaW5NYXJn
aW4pOwogCiAgICAgLy8gRmluYWxseSBjb21wdXRlIGNvbnRhaW5lciByZWN0IHJlbGF0aXZlIHRv
IHRoZSBzY3JvbGxpbmcgYW5jZXN0b3IuCi0gICAgRmxvYXRSZWN0IGNvbnRhaW5lclJlY3RSZWxh
dGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IgPSBjb250YWluaW5nQmxvY2stPmxvY2FsVG9Db250YWlu
ZXJRdWFkKEZsb2F0UmVjdChjb250YWluZXJDb250ZW50UmVjdCksICZlbmNsb3NpbmdDbGlwcGlu
Z0JveCkuYm91bmRpbmdCb3goKTsKKyAgICBGbG9hdFJlY3QgY29udGFpbmVyUmVjdFJlbGF0aXZl
VG9TY3JvbGxpbmdBbmNlc3RvciA9IGNvbnRhaW5pbmdCbG9jay0+bG9jYWxUb0NvbnRhaW5lclF1
YWQoRmxvYXRSZWN0KGNvbnRhaW5lckNvbnRlbnRSZWN0KSwgZW5jbG9zaW5nQ2xpcHBpbmdCb3gp
LmJvdW5kaW5nQm94KCk7CiAgICAgaWYgKGVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIpIHsKICAgICAg
ICAgRmxvYXRQb2ludCBjb250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3Rv
ciA9IGNvbnRhaW5lclJlY3RSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IubG9jYXRpb24oKSAt
Ci0gICAgICAgICAgICBGbG9hdFNpemUoZW5jbG9zaW5nQ2xpcHBpbmdCb3guYm9yZGVyTGVmdCgp
ICsgZW5jbG9zaW5nQ2xpcHBpbmdCb3gucGFkZGluZ0xlZnQoKSwKLSAgICAgICAgICAgIGVuY2xv
c2luZ0NsaXBwaW5nQm94LmJvcmRlclRvcCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdCb3gucGFkZGlu
Z1RvcCgpKTsKLSAgICAgICAgaWYgKCZlbmNsb3NpbmdDbGlwcGluZ0JveCAhPSBjb250YWluaW5n
QmxvY2spCisgICAgICAgICAgICBGbG9hdFNpemUoZW5jbG9zaW5nQ2xpcHBpbmdCb3gtPmJvcmRl
ckxlZnQoKSArIGVuY2xvc2luZ0NsaXBwaW5nQm94LT5wYWRkaW5nTGVmdCgpLAorICAgICAgICAg
ICAgZW5jbG9zaW5nQ2xpcHBpbmdCb3gtPmJvcmRlclRvcCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdC
b3gtPnBhZGRpbmdUb3AoKSk7CisgICAgICAgIGlmIChlbmNsb3NpbmdDbGlwcGluZ0JveCAhPSBj
b250YWluaW5nQmxvY2spCiAgICAgICAgICAgICBjb250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9T
Y3JvbGxpbmdBbmNlc3RvciArPSBlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxPZmZzZXQo
KTsKICAgICAgICAgY29udGFpbmVyUmVjdFJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3Rvci5zZXRM
b2NhdGlvbihjb250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3Rvcik7CiAg
ICAgfQpAQCAtNTc1LDExICs1NzUsMTEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29t
cHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMoU3RpY2t5UG9zaXRpb25WaWV3cG8KIAogICAg
IC8vIEZJWE1FOiBzdWNrcyB0byBjYWxsIGxvY2FsVG9Db250YWluZXJRdWFkIGFnYWluLCBidXQg
d2UgY2FuJ3QganVzdCBvZmZzZXQgZnJvbSB0aGUgcHJldmlvdXNseSBjb21wdXRlZCByZWN0IGlm
IHRoZXJlIGFyZSB0cmFuc2Zvcm1zLgogICAgIC8vIE1hcCB0byB0aGUgdmlldyB0byBhdm9pZCBp
bmNsdWRpbmcgcGFnZSBzY2FsZSBmYWN0b3IuCi0gICAgRmxvYXRQb2ludCBzdGlja3lMb2NhdGlv
blJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciA9IGZsaXBwZWRTdGlja3lCb3hSZWN0LmxvY2F0
aW9uKCkgKyBjb250YWluaW5nQmxvY2stPmxvY2FsVG9Db250YWluZXJRdWFkKEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGNvbnRhaW5pbmdCbG9jay0+c2l6ZSgpKSwgJmVuY2xvc2luZ0NsaXBwaW5n
Qm94KS5ib3VuZGluZ0JveCgpLmxvY2F0aW9uKCk7CisgICAgRmxvYXRQb2ludCBzdGlja3lMb2Nh
dGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciA9IGZsaXBwZWRTdGlja3lCb3hSZWN0Lmxv
Y2F0aW9uKCkgKyBjb250YWluaW5nQmxvY2stPmxvY2FsVG9Db250YWluZXJRdWFkKEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGNvbnRhaW5pbmdCbG9jay0+c2l6ZSgpKSwgZW5jbG9zaW5nQ2xpcHBp
bmdCb3gpLmJvdW5kaW5nQm94KCkubG9jYXRpb24oKTsKICAgICBpZiAoZW5jbG9zaW5nQ2xpcHBp
bmdMYXllcikgewotICAgICAgICBzdGlja3lMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNl
c3RvciAtPSBGbG9hdFNpemUoZW5jbG9zaW5nQ2xpcHBpbmdCb3guYm9yZGVyTGVmdCgpICsgZW5j
bG9zaW5nQ2xpcHBpbmdCb3gucGFkZGluZ0xlZnQoKSwKLSAgICAgICAgICAgIGVuY2xvc2luZ0Ns
aXBwaW5nQm94LmJvcmRlclRvcCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdCb3gucGFkZGluZ1RvcCgp
KTsKLSAgICAgICAgaWYgKCZlbmNsb3NpbmdDbGlwcGluZ0JveCAhPSBjb250YWluaW5nQmxvY2sp
CisgICAgICAgIHN0aWNreUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yIC09IEZs
b2F0U2l6ZShlbmNsb3NpbmdDbGlwcGluZ0JveC0+Ym9yZGVyTGVmdCgpICsgZW5jbG9zaW5nQ2xp
cHBpbmdCb3gtPnBhZGRpbmdMZWZ0KCksCisgICAgICAgICAgICBlbmNsb3NpbmdDbGlwcGluZ0Jv
eC0+Ym9yZGVyVG9wKCkgKyBlbmNsb3NpbmdDbGlwcGluZ0JveC0+cGFkZGluZ1RvcCgpKTsKKyAg
ICAgICAgaWYgKGVuY2xvc2luZ0NsaXBwaW5nQm94ICE9IGNvbnRhaW5pbmdCbG9jaykKICAgICAg
ICAgICAgIHN0aWNreUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yICs9IGVuY2xv
c2luZ0NsaXBwaW5nTGF5ZXItPnNjcm9sbE9mZnNldCgpOwogICAgIH0KICAgICAvLyBGSVhNRTog
Rm9yIG5vdywgYXNzdW1lIHRoYXQgfHRoaXN8IGlzIG5vdCB0cmFuc2Zvcm1lZC4KQEAgLTYxNCw5
ICs2MTQsOSBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlv
bk9mZnNldCgpIGNvbnN0CiAgICAgQVNTRVJUKGhhc0xheWVyKCkpOwogICAgIFJlbmRlckxheWVy
KiBlbmNsb3NpbmdDbGlwcGluZ0xheWVyID0gbGF5ZXIoKS0+ZW5jbG9zaW5nT3ZlcmZsb3dDbGlw
TGF5ZXIoRXhjbHVkZVNlbGYpOwogICAgIGlmIChlbmNsb3NpbmdDbGlwcGluZ0xheWVyKSB7Ci0g
ICAgICAgIFJlbmRlckJveCYgZW5jbG9zaW5nQ2xpcHBpbmdCb3ggPSB0b1JlbmRlckJveChlbmNs
b3NpbmdDbGlwcGluZ0xheWVyLT5yZW5kZXJlcigpKTsKLSAgICAgICAgTGF5b3V0UmVjdCBjbGlw
UmVjdCA9IGVuY2xvc2luZ0NsaXBwaW5nQm94Lm92ZXJmbG93Q2xpcFJlY3QoTGF5b3V0UG9pbnQo
KSwgMCk7IC8vIEZJWE1FOiBtYWtlIHRoaXMgd29yayBpbiByZWdpb25zLgotICAgICAgICBjb25z
dHJhaW5pbmdSZWN0ID0gZW5jbG9zaW5nQ2xpcHBpbmdCb3gubG9jYWxUb0NvbnRhaW5lclF1YWQo
RmxvYXRSZWN0KGNsaXBSZWN0KSwgJnZpZXcoKSkuYm91bmRpbmdCb3goKTsKKyAgICAgICAgUmVu
ZGVyQm94KiBlbmNsb3NpbmdDbGlwcGluZ0JveCA9IHRvUmVuZGVyQm94KCZlbmNsb3NpbmdDbGlw
cGluZ0xheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGVu
Y2xvc2luZ0NsaXBwaW5nQm94LT5vdmVyZmxvd0NsaXBSZWN0KExheW91dFBvaW50KCksIDApOyAv
LyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgaW4gcmVnaW9ucy4KKyAgICAgICAgY29uc3RyYWluaW5n
UmVjdCA9IGVuY2xvc2luZ0NsaXBwaW5nQm94LT5sb2NhbFRvQ29udGFpbmVyUXVhZChGbG9hdFJl
Y3QoY2xpcFJlY3QpLCAmdmlldygpKS5ib3VuZGluZ0JveCgpOwogCiAgICAgICAgIEZsb2F0UG9p
bnQgc2Nyb2xsT2Zmc2V0ID0gRmxvYXRQb2ludCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+
c2Nyb2xsT2Zmc2V0KCk7CiAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3Quc2V0TG9jYXRpb24oc2Ny
b2xsT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKaW5kZXggMzdjMDFkNi4uZDAwNDAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTMzOSwxOCArMzM5LDYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiB9OwogCi1pbmxpbmUgUmVuZGVyQm94TW9kZWxP
YmplY3QmIHRvUmVuZGVyQm94TW9kZWxPYmplY3QoUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17Ci0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzQm94TW9kZWxPYmpl
Y3QoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0Jj4ob2Jq
ZWN0KTsKLX0KLQotaW5saW5lIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0KQotewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc0JveE1vZGVsT2JqZWN0KCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCY+KG9iamVjdCk7
Ci19Ci0KIGlubGluZSBSZW5kZXJCb3hNb2RlbE9iamVjdCogdG9SZW5kZXJCb3hNb2RlbE9iamVj
dChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsgCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIW9iamVjdCB8fCBvYmplY3QtPmlzQm94TW9kZWxPYmplY3QoKSk7CkBAIC0zNjUs
NyArMzUzLDYgQEAgaW5saW5lIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KGNvbnN0IFJlbmRlck9iamVjdCogb2IKIAogLy8gVGhpcyB3aWxsIGNhdGNo
IGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0Kik7Ci12b2lkIHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5o
CmluZGV4IDQyMzEzZTkuLmFiNzc1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb21iaW5lVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb21iaW5lVGV4dC5oCkBAIC00OSwxOSArNDksMjAgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fbmVlZHNGb250VXBkYXRlIDogMTsKIH07CiAKLWlubGluZSBSZW5kZXJDb21iaW5lVGV4dCYg
dG9SZW5kZXJDb21iaW5lVGV4dChSZW5kZXJPYmplY3QmIG9iamVjdCkKK2lubGluZSBSZW5kZXJD
b21iaW5lVGV4dCogdG9SZW5kZXJDb21iaW5lVGV4dChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsg
Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzQ29tYmluZVRl
eHQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckNvbWJpbmVUZXh0Jj4ob2JqZWN0
KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2JqZWN0IHx8IG9iamVj
dC0+aXNDb21iaW5lVGV4dCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyQ29tYmlu
ZVRleHQqPihvYmplY3QpOwogfQogCi1pbmxpbmUgY29uc3QgUmVuZGVyQ29tYmluZVRleHQmIHRv
UmVuZGVyQ29tYmluZVRleHQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCitpbmxpbmUgY29u
c3QgUmVuZGVyQ29tYmluZVRleHQqIHRvUmVuZGVyQ29tYmluZVRleHQoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCiB7IAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9i
amVjdC5pc0NvbWJpbmVUZXh0KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5k
ZXJDb21iaW5lVGV4dCY+KG9iamVjdCk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIW9iamVjdCB8fCBvYmplY3QtPmlzQ29tYmluZVRleHQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFJlbmRlckNvbWJpbmVUZXh0Kj4ob2JqZWN0KTsKIH0KIAotdm9pZCB0
b1JlbmRlckNvbWJpbmVUZXh0KGNvbnN0IFJlbmRlckNvbWJpbmVUZXh0Jik7CisvLyBUaGlzIHdp
bGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVy
Q29tYmluZVRleHQoY29uc3QgUmVuZGVyQ29tYmluZVRleHQqKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDc3MGI1ZDguLmRhNWYzYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3guY3BwCkBAIC0xMDQ3LDcgKzEwNDcsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbAog
ICAgICAgICAvLyBHZXQgZWxsaXBzaXMgd2lkdGgsIGFuZCBpZiB0aGUgbGFzdCBjaGlsZCBpcyBh
biBhbmNob3IsIGl0IHdpbGwgZ28gYWZ0ZXIgdGhlIGVsbGlwc2lzLCBzbyBhZGQgaW4gYSBzcGFj
ZSBhbmQgdGhlIGFuY2hvciB3aWR0aCB0b28KICAgICAgICAgTGF5b3V0VW5pdCB0b3RhbFdpZHRo
OwogICAgICAgICBJbmxpbmVCb3gqIGFuY2hvckJveCA9IGxhc3RMaW5lLT5sYXN0Q2hpbGQoKTsK
LSAgICAgICAgaWYgKGFuY2hvckJveCAmJiBhbmNob3JCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKS0+
aXNMaW5rKCkpCisgICAgICAgIGlmIChhbmNob3JCb3ggJiYgYW5jaG9yQm94LT5yZW5kZXJlcigp
LT5zdHlsZSgpLT5pc0xpbmsoKSkKICAgICAgICAgICAgIHRvdGFsV2lkdGggPSBhbmNob3JCb3gt
PmxvZ2ljYWxXaWR0aCgpICsgZm9udC53aWR0aChjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQs
IGVsbGlwc2lzQW5kU3BhY2UsIDIsIHN0eWxlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBhbmNob3JCb3ggPSAwOwpAQCAtMTA1NSwyNiArMTA1NSwyNiBAQCB2b2lkIFJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVy
YXRvciwgYm9vbAogICAgICAgICB9CiAKICAgICAgICAgLy8gU2VlIGlmIHRoaXMgd2lkdGggY2Fu
IGJlIGFjY29tbW9kYXRlZCBvbiB0aGUgbGFzdCB2aXNpYmxlIGxpbmUKLSAgICAgICAgUmVuZGVy
QmxvY2smIGRlc3RCbG9jayA9IHRvUmVuZGVyQmxvY2sobGFzdFZpc2libGVMaW5lLT5yZW5kZXJl
cigpKTsKLSAgICAgICAgUmVuZGVyQmxvY2smIHNyY0Jsb2NrID0gdG9SZW5kZXJCbG9jayhsYXN0
TGluZS0+cmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRlckJsb2NrKiBkZXN0QmxvY2sgPSB0b1Jl
bmRlckJsb2NrKGxhc3RWaXNpYmxlTGluZS0+cmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRlckJs
b2NrKiBzcmNCbG9jayA9IHRvUmVuZGVyQmxvY2sobGFzdExpbmUtPnJlbmRlcmVyKCkpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBEaXJlY3Rpb25zIG9mIHNyYy9kZXN0QmxvY2sgY291bGQgYmUgZGlm
ZmVyZW50IGZyb20gb3VyIGRpcmVjdGlvbiBhbmQgZnJvbSBvbmUgYW5vdGhlci4KLSAgICAgICAg
aWYgKCFzcmNCbG9jay5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAg
IGlmICghc3JjQmxvY2stPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGJvb2wgbGVmdFRvUmlnaHQgPSBkZXN0QmxvY2su
c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgICAgICBib29sIGxlZnRUb1Jp
Z2h0ID0gZGVzdEJsb2NrLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAg
ICAgIGlmICghbGVmdFRvUmlnaHQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBM
YXlvdXRVbml0IGJsb2NrUmlnaHRFZGdlID0gZGVzdEJsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUobGFzdFZpc2libGVMaW5lLT55KCksIGZhbHNlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBi
bG9ja1JpZ2h0RWRnZSA9IGRlc3RCbG9jay0+bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsYXN0
VmlzaWJsZUxpbmUtPnkoKSwgZmFsc2UpOwogICAgICAgICBpZiAoIWxhc3RWaXNpYmxlTGluZS0+
bGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMobGVmdFRvUmlnaHQsIGJsb2NrUmlnaHRFZGdlLCBs
YXN0VmlzaWJsZUxpbmUtPngoKSArIGxhc3RWaXNpYmxlTGluZS0+bG9naWNhbFdpZHRoKCksIHRv
dGFsV2lkdGgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gTGV0IHRoZSB0
cnVuY2F0aW9uIGNvZGUga2ljayBpbi4KICAgICAgICAgLy8gRklYTUU6IHRoZSB0ZXh0IGFsaWdu
bWVudCBzaG91bGQgYmUgcmVjb21wdXRlZCBhZnRlciB0aGUgd2lkdGggY2hhbmdlcyBkdWUgdG8g
dHJ1bmNhdGlvbi4KLSAgICAgICAgTGF5b3V0VW5pdCBibG9ja0xlZnRFZGdlID0gZGVzdEJsb2Nr
LmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsYXN0VmlzaWJsZUxpbmUtPnkoKSwgZmFsc2UpOwor
ICAgICAgICBMYXlvdXRVbml0IGJsb2NrTGVmdEVkZ2UgPSBkZXN0QmxvY2stPmxvZ2ljYWxMZWZ0
T2Zmc2V0Rm9yTGluZShsYXN0VmlzaWJsZUxpbmUtPnkoKSwgZmFsc2UpOwogICAgICAgICBsYXN0
VmlzaWJsZUxpbmUtPnBsYWNlRWxsaXBzaXMoYW5jaG9yQm94ID8gZWxsaXBzaXNBbmRTcGFjZVN0
ciA6IGVsbGlwc2lzU3RyLCBsZWZ0VG9SaWdodCwgYmxvY2tMZWZ0RWRnZSwgYmxvY2tSaWdodEVk
Z2UsIHRvdGFsV2lkdGgsIGFuY2hvckJveCk7Ci0gICAgICAgIGRlc3RCbG9jay5zZXRIYXNNYXJr
dXBUcnVuY2F0aW9uKHRydWUpOworICAgICAgICBkZXN0QmxvY2stPnNldEhhc01hcmt1cFRydW5j
YXRpb24odHJ1ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggYzdlMzIzMy4uMThmMGFkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtNTU3LDIyICs1NTcsMjIg
QEAgTGF5b3V0UG9pbnQgUmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZl
VG9PZmZzZXRQYXJlbnQoY29uc3QgUmVuZGUKICAgICAgICAgaWYgKHdhc0NvbXB1dGVkUmVsYXRp
dmVUb090aGVyUmVnaW9uKSB7CiAgICAgICAgICAgICBpZiAoYm94TW9kZWxPYmplY3QuaXNCb3go
KSkgewogICAgICAgICAgICAgICAgIC8vIFVzZSBib3JkZXJCb3hSZWN0SW5SZWdpb24gdG8gYWNj
b3VudCBmb3IgdmFyaWF0aW9ucyBzdWNoIGFzIHBlcmNlbnRhZ2UgbWFyZ2lucy4KLSAgICAgICAg
ICAgICAgICBMYXlvdXRSZWN0IGJvcmRlckJveFJlY3QgPSB0b1JlbmRlckJveChib3hNb2RlbE9i
amVjdCkuYm9yZGVyQm94UmVjdEluUmVnaW9uKHN0YXJ0UmVnaW9uLCBSZW5kZXJCb3g6OkRvTm90
Q2FjaGVSZW5kZXJCb3hSZWdpb25JbmZvKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJv
cmRlckJveFJlY3QgPSB0b1JlbmRlckJveCgmYm94TW9kZWxPYmplY3QpLT5ib3JkZXJCb3hSZWN0
SW5SZWdpb24oc3RhcnRSZWdpb24sIFJlbmRlckJveDo6RG9Ob3RDYWNoZVJlbmRlckJveFJlZ2lv
bkluZm8pOwogICAgICAgICAgICAgICAgIHJlZmVyZW5jZVBvaW50Lm1vdmUoYm9yZGVyQm94UmVj
dC5sb2NhdGlvbigpLngoKSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIC8vIEdldCB0aGUgbG9naWNhbCB0b3AgY29vcmRpbmF0ZSBvZiB0aGUgY3VycmVudCBv
YmplY3QuCiAgICAgICAgICAgICBMYXlvdXRVbml0IHRvcCA9IDA7CiAgICAgICAgICAgICBpZiAo
Ym94TW9kZWxPYmplY3QuaXNSZW5kZXJCbG9jaygpKQotICAgICAgICAgICAgICAgIHRvcCA9IHRv
UmVuZGVyQmxvY2soYm94TW9kZWxPYmplY3QpLm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UoKTsKKyAgICAgICAgICAgICAgICB0b3AgPSB0b1JlbmRlckJsb2NrKCZib3hNb2RlbE9iamVj
dCktPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIGlmIChib3hNb2RlbE9iamVjdC5jb250YWluaW5nQmxvY2soKSkK
ICAgICAgICAgICAgICAgICAgICAgdG9wID0gYm94TW9kZWxPYmplY3QuY29udGFpbmluZ0Jsb2Nr
KCktPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBpZiAoYm94TW9kZWxPYmplY3QuaXNCb3goKSkKLSAgICAgICAgICAg
ICAgICAgICAgdG9wICs9IHRvUmVuZGVyQm94KGJveE1vZGVsT2JqZWN0KS50b3BMZWZ0TG9jYXRp
b24oKS55KCk7CisgICAgICAgICAgICAgICAgICAgIHRvcCArPSB0b1JlbmRlckJveCgmYm94TW9k
ZWxPYmplY3QpLT50b3BMZWZ0TG9jYXRpb24oKS55KCk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoYm94TW9kZWxPYmplY3QuaXNSZW5kZXJJbmxpbmUoKSkKLSAgICAgICAgICAgICAgICAgICAg
dG9wIC09IHRvUmVuZGVySW5saW5lKGJveE1vZGVsT2JqZWN0KS5ib3JkZXJUb3AoKTsKKyAgICAg
ICAgICAgICAgICAgICAgdG9wIC09IHRvUmVuZGVySW5saW5lKCZib3hNb2RlbE9iamVjdCktPmJv
cmRlclRvcCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGxvZ2ljYWwgdG9wIG9mIHRoZSByZWdpb24gdGhpcyBvYmplY3Qgc3RhcnRzIGluCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCA2NjhlZjU1
Li43ZTJiZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmgKQEAgLTMyNywxOCArMzI3LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9sYXllcnNUb1Jl
Z2lvbk1hcHBpbmdzRGlydHkgOiAxOwogfTsKIAotaW5saW5lIFJlbmRlckZsb3dUaHJlYWQmIHRv
UmVuZGVyRmxvd1RocmVhZChSZW5kZXJPYmplY3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNSZW5kZXJGbG93VGhyZWFkKCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJGbG93VGhyZWFkJj4ob2JqZWN0KTsKLX0KLQotaW5s
aW5lIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQmIHRvUmVuZGVyRmxvd1RocmVhZChjb25zdCBSZW5k
ZXJPYmplY3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihvYmplY3QuaXNSZW5kZXJGbG93VGhyZWFkKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBSZW5kZXJGbG93VGhyZWFkJj4ob2JqZWN0KTsKLX0KLQogaW5saW5lIFJlbmRlckZsb3dU
aHJlYWQqIHRvUmVuZGVyRmxvd1RocmVhZChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5k
ZXJGbG93VGhyZWFkKCkpOwpAQCAtMzUzLDcgKzM0MSw2IEBAIGlubGluZSBjb25zdCBSZW5kZXJG
bG93VGhyZWFkKiB0b1JlbmRlckZsb3dUaHJlYWQoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3Qp
CiAKIC8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4K
IHZvaWQgdG9SZW5kZXJGbG93VGhyZWFkKGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqKTsKLXZvaWQg
dG9SZW5kZXJGbG93VGhyZWFkKGNvbnN0IFJlbmRlckZsb3dUaHJlYWQmKTsKIAogY2xhc3MgQ3Vy
cmVudFJlbmRlckZsb3dUaHJlYWRNYWludGFpbmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDdXJyZW50UmVuZGVyRmxvd1RocmVhZE1haW50YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGM0ZGM1NWEuLmNmNDRkZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTc2Niw3ICs3NjYsNyBAQCBzaXplX3QgUmVu
ZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uLCBHcgogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgb3RoZXIgdmFsdWVzIGZvciBn
cmlkLXtyb3csY29sdW1ufSBsaWtlIHJhbmdlcyBvciBsaW5lIG5hbWVzLgogICAgIHN3aXRjaCAo
cG9zaXRpb24udHlwZSgpKSB7Ci0gICAgY2FzZSBFeHBsaWNpdFBvc2l0aW9uOiB7CisgICAgY2Fz
ZSBJbnRlZ2VyUG9zaXRpb246IHsKICAgICAgICAgQVNTRVJUKHBvc2l0aW9uLmludGVnZXJQb3Np
dGlvbigpKTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzUG9zaXRpdmUoKSkKICAgICAgICAgICAg
IHJldHVybiBhZGp1c3RHcmlkUG9zaXRpb25Gb3JTaWRlKHBvc2l0aW9uLmludGVnZXJQb3NpdGlv
bigpIC0gMSwgc2lkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4
IGVmOWM0ZjkuLjU3OGJlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
CkBAIC0xMTYsMTggKzExNiw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlcklt
YWdlU2NhbGVPYnNlcnZlcjsKIH07CiAKLWlubGluZSBSZW5kZXJJbWFnZSYgdG9SZW5kZXJJbWFn
ZShSZW5kZXJPYmplY3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihvYmplY3QuaXNSZW5kZXJJbWFnZSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
UmVuZGVySW1hZ2UmPihvYmplY3QpOwotfQotCi1pbmxpbmUgY29uc3QgUmVuZGVySW1hZ2UmIHRv
UmVuZGVySW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzUmVuZGVySW1hZ2UoKSk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckltYWdlJj4ob2JqZWN0KTsKLX0KLQogaW5saW5l
IFJlbmRlckltYWdlKiB0b1JlbmRlckltYWdlKFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFvYmplY3QgfHwgb2JqZWN0LT5pc1Jl
bmRlckltYWdlKCkpOwpAQCAtMTQyLDcgKzEzMCw2IEBAIGlubGluZSBjb25zdCBSZW5kZXJJbWFn
ZSogdG9SZW5kZXJJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIAogLy8gVGhpcyB3
aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b1JlbmRl
ckltYWdlKGNvbnN0IFJlbmRlckltYWdlKik7Ci12b2lkIHRvUmVuZGVySW1hZ2UoY29uc3QgUmVu
ZGVySW1hZ2UmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGUyMDQ5OGEuLmUxYWUwNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC01NjUsNyArNTY1LDcgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OmdlbmVyYXRlQ3VsbGVkTGluZUJveFJlY3RzKEdlbmVyYXRvckNv
bnRleHQmIHlpZWxkLCBjb25zdCBSZW4KICAgICAgICAgICAgIFJlbmRlckJveCogY3VyckJveCA9
IHRvUmVuZGVyQm94KGN1cnIpOwogICAgICAgICAgICAgaWYgKGN1cnJCb3gtPmlubGluZUJveFdy
YXBwZXIoKSkgewogICAgICAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBjdXJy
Qm94LT5pbmxpbmVCb3hXcmFwcGVyKCktPnJvb3QoKTsKLSAgICAgICAgICAgICAgICBpbnQgbG9n
aWNhbFRvcCA9IHJvb3RCb3gtPmxvZ2ljYWxUb3AoKSArIChyb290Qm94LT5yZW5kZXJlcigpLnN0
eWxlKHJvb3RCb3gtPmlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnQoKS5mb250TWV0cmljcygpLmFz
Y2VudCgpIC0gY29udGFpbmVyLT5zdHlsZShyb290Qm94LT5pc0ZpcnN0TGluZVN0eWxlKCkpLT5m
b250KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CisgICAgICAgICAgICAgICAgaW50IGxvZ2lj
YWxUb3AgPSByb290Qm94LT5sb2dpY2FsVG9wKCkgKyAocm9vdEJveC0+cmVuZGVyZXIoKS0+c3R5
bGUocm9vdEJveC0+aXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkgLSBjb250YWluZXItPnN0eWxlKHJvb3RCb3gtPmlzRmlyc3RMaW5lU3R5bGUoKSktPmZv
bnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICAgICAgICAgICAgICBpbnQgbG9naWNh
bEhlaWdodCA9IGNvbnRhaW5lci0+c3R5bGUocm9vdEJveC0+aXNGaXJzdExpbmVTdHlsZSgpKS0+
Zm9udCgpLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzSG9y
aXpvbnRhbCkKICAgICAgICAgICAgICAgICAgICAgeWllbGQoRmxvYXRSZWN0KGN1cnJCb3gtPmlu
bGluZUJveFdyYXBwZXIoKS0+eCgpIC0gY3VyckJveC0+bWFyZ2luTGVmdCgpLCBsb2dpY2FsVG9w
LCBjdXJyQm94LT53aWR0aCgpICsgY3VyckJveC0+bWFyZ2luV2lkdGgoKSwgbG9naWNhbEhlaWdo
dCkpOwpAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpnZW5lcmF0ZUN1bGxl
ZExpbmVCb3hSZWN0cyhHZW5lcmF0b3JDb250ZXh0JiB5aWVsZCwgY29uc3QgUmVuCiAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGNoaWxkTGlu
ZSA9IGN1cnJJbmxpbmUtPmZpcnN0TGluZUJveCgpOyBjaGlsZExpbmU7IGNoaWxkTGluZSA9IGNo
aWxkTGluZS0+bmV4dExpbmVCb3goKSkgewogICAgICAgICAgICAgICAgICAgICBSb290SW5saW5l
Qm94KiByb290Qm94ID0gY2hpbGRMaW5lLT5yb290KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlu
dCBsb2dpY2FsVG9wID0gcm9vdEJveC0+bG9naWNhbFRvcCgpICsgKHJvb3RCb3gtPnJlbmRlcmVy
KCkuc3R5bGUocm9vdEJveC0+aXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkgLSBjb250YWluZXItPnN0eWxlKHJvb3RCb3gtPmlzRmlyc3RMaW5lU3R5bGUo
KSktPmZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
aW50IGxvZ2ljYWxUb3AgPSByb290Qm94LT5sb2dpY2FsVG9wKCkgKyAocm9vdEJveC0+cmVuZGVy
ZXIoKS0+c3R5bGUocm9vdEJveC0+aXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgLSBjb250YWluZXItPnN0eWxlKHJvb3RCb3gtPmlzRmlyc3RMaW5lU3R5
bGUoKSktPmZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaW50IGxvZ2ljYWxIZWlnaHQgPSBjb250YWluZXItPnN0eWxlKHJvb3RCb3gtPmlzRmlyc3RM
aW5lU3R5bGUoKSktPmZvbnQoKS5mb250TWV0cmljcygpLmhlaWdodCgpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQo
RmxvYXRSZWN0KGNoaWxkTGluZS0+eCgpIC0gY2hpbGRMaW5lLT5tYXJnaW5Mb2dpY2FsTGVmdCgp
LApAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpnZW5lcmF0ZUN1bGxlZExp
bmVCb3hSZWN0cyhHZW5lcmF0b3JDb250ZXh0JiB5aWVsZCwgY29uc3QgUmVuCiAgICAgICAgICAg
ICBSZW5kZXJUZXh0KiBjdXJyVGV4dCA9IHRvUmVuZGVyVGV4dChjdXJyKTsKICAgICAgICAgICAg
IGZvciAoSW5saW5lVGV4dEJveCogY2hpbGRUZXh0ID0gY3VyclRleHQtPmZpcnN0VGV4dEJveCgp
OyBjaGlsZFRleHQ7IGNoaWxkVGV4dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkgewogICAg
ICAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBjaGlsZFRleHQtPnJvb3QoKTsK
LSAgICAgICAgICAgICAgICBpbnQgbG9naWNhbFRvcCA9IHJvb3RCb3gtPmxvZ2ljYWxUb3AoKSAr
IChyb290Qm94LT5yZW5kZXJlcigpLnN0eWxlKHJvb3RCb3gtPmlzRmlyc3RMaW5lU3R5bGUoKSkt
PmZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpIC0gY29udGFpbmVyLT5zdHlsZShyb290Qm94
LT5pc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7Cisg
ICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxUb3AgPSByb290Qm94LT5sb2dpY2FsVG9wKCkgKyAo
cm9vdEJveC0+cmVuZGVyZXIoKS0+c3R5bGUocm9vdEJveC0+aXNGaXJzdExpbmVTdHlsZSgpKS0+
Zm9udCgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSBjb250YWluZXItPnN0eWxlKHJvb3RCb3gt
PmlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnQoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAg
ICAgICAgICAgICAgICBpbnQgbG9naWNhbEhlaWdodCA9IGNvbnRhaW5lci0+c3R5bGUocm9vdEJv
eC0+aXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udCgpLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CiAg
ICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkKICAgICAgICAgICAgICAgICAgICAgeWll
bGQoRmxvYXRSZWN0KGNoaWxkVGV4dC0+eCgpLCBsb2dpY2FsVG9wLCBjaGlsZFRleHQtPmxvZ2lj
YWxXaWR0aCgpLCBsb2dpY2FsSGVpZ2h0KSk7CkBAIC0xMzA5LDcgKzEzMDksNyBAQCB2b2lkIFJl
bmRlcklubGluZTo6ZGVsZXRlTGluZUJveFRyZWUoKQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJ
bmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKSAKIHsKLSAgICByZXR1cm4gbmV3IChyZW5kZXJB
cmVuYSgpKSBJbmxpbmVGbG93Qm94KCp0aGlzKTsKKyAgICByZXR1cm4gbmV3IChyZW5kZXJBcmVu
YSgpKSBJbmxpbmVGbG93Qm94KHRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxp
bmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oCmluZGV4IDNjNDU1YzQuLjU0MGU5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE4OCwxOCArMTg4LDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fYWx3YXlzQ3JlYXRlTGluZUJveGVzIDogMTsKIH07CiAKLWlubGluZSBSZW5kZXJJ
bmxpbmUmIHRvUmVuZGVySW5saW5lKFJlbmRlck9iamVjdCYgb2JqZWN0KQotewotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc1JlbmRlcklubGluZSgpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVySW5saW5lJj4ob2JqZWN0KTsKLX0KLQotaW5saW5l
IGNvbnN0IFJlbmRlcklubGluZSYgdG9SZW5kZXJJbmxpbmUoY29uc3QgUmVuZGVyT2JqZWN0JiBv
YmplY3QpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0Lmlz
UmVuZGVySW5saW5lKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJJbmxp
bmUmPihvYmplY3QpOwotfQotCiBpbmxpbmUgUmVuZGVySW5saW5lKiB0b1JlbmRlcklubGluZShS
ZW5kZXJPYmplY3QqIG9iamVjdCkKIHsgCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oIW9iamVjdCB8fCBvYmplY3QtPmlzUmVuZGVySW5saW5lKCkpOwpAQCAtMjE0LDcgKzIw
Miw2IEBAIGlubGluZSBjb25zdCBSZW5kZXJJbmxpbmUqIHRvUmVuZGVySW5saW5lKGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0KQogCiAvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFu
IHVubmVjZXNzYXJ5IGNhc3QuCiB2b2lkIHRvUmVuZGVySW5saW5lKGNvbnN0IFJlbmRlcklubGlu
ZSopOwotdm9pZCB0b1JlbmRlcklubGluZShjb25zdCBSZW5kZXJJbmxpbmUmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCA1YmFjMjUwLi5mNTZhMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24u
aCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNp
bmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTgx
LDcgKzgwLDYgQEAKICNpbmNsdWRlICJSZW5kZXJHZW9tZXRyeU1hcC5oIgogI2luY2x1ZGUgIlJl
bmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlck1hcnF1ZWUuaCIKLSNpbmNsdWRlICJSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJSZXBsaWNhLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFy
LmgiCkBAIC0xMjE2LDggKzEyMTQsOCBAQCBib29sIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBv
c2l0aW9uKCkKICAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50OwogICAgIExheW91dFNpemUgaW5s
aW5lQm91bmRpbmdCb3hPZmZzZXQ7IC8vIFdlIGRvbid0IHB1dCB0aGlzIGludG8gdGhlIFJlbmRl
ckxheWVyIHgveSBmb3IgaW5saW5lcywgc28gd2UgbmVlZCB0byBzdWJ0cmFjdCBpdCBvdXQgd2hl
biBkb25lLgogICAgIGlmIChyZW5kZXJlcigpLmlzSW5saW5lKCkgJiYgcmVuZGVyZXIoKS5pc1Jl
bmRlcklubGluZSgpKSB7Ci0gICAgICAgIFJlbmRlcklubGluZSYgaW5saW5lRmxvdyA9IHRvUmVu
ZGVySW5saW5lKHJlbmRlcmVyKCkpOwotICAgICAgICBJbnRSZWN0IGxpbmVCb3ggPSBpbmxpbmVG
bG93LmxpbmVzQm91bmRpbmdCb3goKTsKKyAgICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVGbG93
ID0gdG9SZW5kZXJJbmxpbmUoJnJlbmRlcmVyKCkpOworICAgICAgICBJbnRSZWN0IGxpbmVCb3gg
PSBpbmxpbmVGbG93LT5saW5lc0JvdW5kaW5nQm94KCk7CiAgICAgICAgIHNldFNpemUobGluZUJv
eC5zaXplKCkpOwogICAgICAgICBpbmxpbmVCb3VuZGluZ0JveE9mZnNldCA9IHRvU2l6ZShsaW5l
Qm94LmxvY2F0aW9uKCkpOwogICAgICAgICBsb2NhbFBvaW50ICs9IGlubGluZUJvdW5kaW5nQm94
T2Zmc2V0OwpAQCAtMTI1Niw3ICsxMjU0LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5
ZXJQb3NpdGlvbigpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChyZW5kZXJlcigp
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCku
aXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYgcG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIoKS5pc1Jl
bmRlcklubGluZSgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IHRvUmVuZGVy
SW5saW5lKHBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCkpLm9mZnNldEZvckluRmxvd1Bvc2l0
aW9uZWRJbmxpbmUoJnRvUmVuZGVyQm94KHJlbmRlcmVyKCkpKTsKKyAgICAgICAgICAgIExheW91
dFNpemUgb2Zmc2V0ID0gdG9SZW5kZXJJbmxpbmUoJnBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVy
KCkpLT5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5lKHRvUmVuZGVyQm94KCZyZW5kZXJl
cigpKSk7CiAgICAgICAgICAgICBsb2NhbFBvaW50ICs9IG9mZnNldDsKICAgICAgICAgfQogICAg
IH0gZWxzZSBpZiAocGFyZW50KCkpIHsKQEAgLTEyNjgsNyArMTI2Niw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogICAgIAogICAgIGJvb2wgcG9zaXRpb25Pck9m
ZnNldENoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS5pc0luRmxvd1Bvc2l0aW9u
ZWQoKSkgewotICAgICAgICBMYXlvdXRTaXplIG5ld09mZnNldCA9IHRvUmVuZGVyQm94TW9kZWxP
YmplY3QocmVuZGVyZXIoKSkub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKTsKKyAgICAgICAgTGF5
b3V0U2l6ZSBuZXdPZmZzZXQgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KCZyZW5kZXJlcigpKS0+
b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKTsKICAgICAgICAgcG9zaXRpb25Pck9mZnNldENoYW5n
ZWQgPSBuZXdPZmZzZXQgIT0gbV9vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbjsKICAgICAgICAgbV9v
ZmZzZXRGb3JJbkZsb3dQb3NpdGlvbiA9IG5ld09mZnNldDsKICAgICAgICAgbG9jYWxQb2ludC5t
b3ZlKG1fb2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24pOwpAQCAtMTI5NCw3ICsxMjkyLDcgQEAgVHJh
bnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAKICAgICAvLyBNYXli
ZSBmZXRjaCB0aGUgcGVyc3BlY3RpdmUgZnJvbSB0aGUgYmFja2luZz8KLSAgICBjb25zdCBJbnRS
ZWN0IGJvcmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLnBpeGVsU25hcHBlZEJvcmRl
ckJveFJlY3QoKTsKKyAgICBjb25zdCBJbnRSZWN0IGJvcmRlckJveCA9IHRvUmVuZGVyQm94KCZy
ZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpOwogICAgIGNvbnN0IGZsb2F0
IGJveFdpZHRoID0gYm9yZGVyQm94LndpZHRoKCk7CiAgICAgY29uc3QgZmxvYXQgYm94SGVpZ2h0
ID0gYm9yZGVyQm94LmhlaWdodCgpOwogCkBAIC0xMzE5LDcgKzEzMTcsNyBAQCBGbG9hdFBvaW50
IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFyZW5kZXJl
cigpLmhhc1RyYW5zZm9ybSgpKQogICAgICAgICByZXR1cm4gRmxvYXRQb2ludCgpOwogCi0gICAg
Y29uc3QgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS5ib3Jk
ZXJCb3hSZWN0KCk7CisgICAgY29uc3QgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJv
eCgmcmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUg
PSByZW5kZXJlcigpLnN0eWxlKCk7CiAKICAgICByZXR1cm4gRmxvYXRQb2ludChmbG9hdFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm9yZGVyQm94LndpZHRoKCkp
LApAQCAtMTM3NSw3ICsxMzczLDcgQEAgc3RhdGljIFJlbmRlckxheWVyKiBwYXJlbnRMYXllckNy
b3NzRnJhbWUoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQogUmVuZGVyTGF5ZXIqIFJlbmRlckxh
eWVyOjplbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdAogewogICAgIGZvciAoUmVuZGVy
TGF5ZXIqIG5leHRMYXllciA9IHBhcmVudExheWVyQ3Jvc3NGcmFtZSh0aGlzKTsgbmV4dExheWVy
OyBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNyb3NzRnJhbWUobmV4dExheWVyKSkgewotICAgICAg
ICBpZiAobmV4dExheWVyLT5yZW5kZXJlcigpLmlzQm94KCkgJiYgdG9SZW5kZXJCb3gobmV4dExh
eWVyLT5yZW5kZXJlcigpKS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAg
ICAgICAgaWYgKG5leHRMYXllci0+cmVuZGVyZXIoKS5pc0JveCgpICYmIHRvUmVuZGVyQm94KCZu
ZXh0TGF5ZXItPnJlbmRlcmVyKCkpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KSkKICAgICAgICAgICAgIHJldHVybiBuZXh0TGF5ZXI7CiAgICAgfQogCkBAIC0xNTE1LDcgKzE1
MTMsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5n
SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiAgICAgfQogICAgIAogICAgIGlmIChwYXJl
bnRMYXllci0+aXNSb290TGF5ZXIoKSkgewotICAgICAgICB0b1JlbmRlclZpZXcocGFyZW50TGF5
ZXItPnJlbmRlcmVyKCkpLnJlcGFpbnRWaWV3UmVjdGFuZ2xlKHBhcmVudExheWVyUmVjdCwgaW1t
ZWRpYXRlKTsKKyAgICAgICAgUmVuZGVyVmlldyogdmlldyA9IHRvUmVuZGVyVmlldygmcGFyZW50
TGF5ZXItPnJlbmRlcmVyKCkpOworICAgICAgICB2aWV3LT5yZXBhaW50Vmlld1JlY3RhbmdsZShw
YXJlbnRMYXllclJlY3QsIGltbWVkaWF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CkBAIC0xNjY5LDggKzE2NjgsOCBAQCBzdGF0aWMgTGF5b3V0UmVjdCB0cmFuc3BhcmVuY3lDbGlw
Qm94KGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZQogICAgICAgICAv
LyBXZSBoYXZlIHRvIGJyZWFrIHVwIHRoZSB0cmFuc2Zvcm1lZCBleHRlbnQgYWNyb3NzIG91ciBj
b2x1bW5zLgogICAgICAgICAvLyBTcGxpdCBvdXIgYm94IHVwIGludG8gdGhlIGFjdHVhbCBmcmFn
bWVudCBib3hlcyB0aGF0IHJlbmRlciBpbiB0aGUgY29sdW1ucy9wYWdlcyBhbmQgdW5pdGUgdGhv
c2UgdG9nZXRoZXIgdG8KICAgICAgICAgLy8gZ2V0IG91ciB0cnVlIGJvdW5kaW5nIGJveC4KLSAg
ICAgICAgUmVuZGVyRmxvd1RocmVhZCYgZW5jbG9zaW5nRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxv
d1RocmVhZChwYWdpbmF0aW9uTGF5ZXItPnJlbmRlcmVyKCkpOwotICAgICAgICByZXN1bHQgPSBl
bmNsb3NpbmdGbG93VGhyZWFkLmZyYWdtZW50c0JvdW5kaW5nQm94KHJlc3VsdCk7CisgICAgICAg
IFJlbmRlckZsb3dUaHJlYWQqIGVuY2xvc2luZ0Zsb3dUaHJlYWQgPSB0b1JlbmRlckZsb3dUaHJl
YWQoJnBhZ2luYXRpb25MYXllci0+cmVuZGVyZXIoKSk7CisgICAgICAgIHJlc3VsdCA9IGVuY2xv
c2luZ0Zsb3dUaHJlYWQtPmZyYWdtZW50c0JvdW5kaW5nQm94KHJlc3VsdCk7CiAgICAgICAgIAog
ICAgICAgICBMYXlvdXRQb2ludCByb290TGF5ZXJEZWx0YTsKICAgICAgICAgcGFnaW5hdGlvbkxh
eWVyLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIHJvb3RMYXllckRlbHRhKTsKQEAg
LTE5NTMsMjUgKzE5NTIsNyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IFJlbmRlckxheWVyKiBhY2N1
bXVsYXRlT2Zmc2V0VG93YXJkc0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheQogICAgICAgICAgICAg
cmV0dXJuIGFuY2VzdG9yTGF5ZXI7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAocG9zaXRp
b24gPT0gRml4ZWRQb3NpdGlvbiAmJiBmaXhlZEZsb3dUaHJlYWRDb250YWluZXIpIHsKLSAgICAg
ICAgQVNTRVJUKGFuY2VzdG9yTGF5ZXIpOwotICAgICAgICBpZiAoYW5jZXN0b3JMYXllci0+aXNP
dXRPZkZsb3dSZW5kZXJGbG93VGhyZWFkKCkpIHsKLSAgICAgICAgICAgIGxvY2F0aW9uICs9IHRv
U2l6ZShsYXllci0+bG9jYXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gYW5jZXN0b3JMYXll
cjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhbmNlc3RvckxheWVyID09IHJlbmRlcmVyLnZp
ZXcoKS5sYXllcigpKSB7Ci0gICAgICAgICAgICAvLyBBZGQgbG9jYXRpb24gaW4gZmxvdyB0aHJl
YWQgY29vcmRpbmF0ZXMuCi0gICAgICAgICAgICBsb2NhdGlvbiArPSB0b1NpemUobGF5ZXItPmxv
Y2F0aW9uKCkpOwotCi0gICAgICAgICAgICAvLyBBZGQgZmxvdyB0aHJlYWQgb2Zmc2V0IGluIHZp
ZXcgY29vcmRpbmF0ZXMgc2luY2UgdGhlIHZpZXcgbWF5IGJlIHNjcm9sbGVkLgotICAgICAgICAg
ICAgRmxvYXRQb2ludCBhYnNQb3MgPSByZW5kZXJlci52aWV3KCkubG9jYWxUb0Fic29sdXRlKEZs
b2F0UG9pbnQoKSwgSXNGaXhlZCk7Ci0gICAgICAgICAgICBsb2NhdGlvbiArPSBMYXlvdXRTaXpl
KGFic1Bvcy54KCksIGFic1Bvcy55KCkpOwotICAgICAgICAgICAgcmV0dXJuIGFuY2VzdG9yTGF5
ZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICAKICAgICBSZW5kZXJMYXllciogcGFyZW50TGF5
ZXI7CiAgICAgaWYgKHBvc2l0aW9uID09IEFic29sdXRlUG9zaXRpb24gfHwgcG9zaXRpb24gPT0g
Rml4ZWRQb3NpdGlvbikgewogICAgICAgICAvLyBEbyB3aGF0IGVuY2xvc2luZ1Bvc2l0aW9uZWRB
bmNlc3RvcigpIGRvZXMsIGJ1dCBjaGVjayBmb3IgYW5jZXN0b3JMYXllciBhbG9uZyB0aGUgd2F5
LgpAQCAtMjg4Myw3ICsyODY0LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2Nyb2xsc092ZXJmbG93
KCkgY29uc3QKICAgICBpZiAoIXJlbmRlcmVyKCkuaXNCb3goKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLnNjcm9sbHNPdmVyZmxv
dygpOworICAgIHJldHVybiB0b1JlbmRlckJveCgmcmVuZGVyZXIoKSktPnNjcm9sbHNPdmVyZmxv
dygpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJv
b2wgaGFzU2Nyb2xsYmFyKQpAQCAtMzEzOSw3ICszMTIwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCkKICAgICAgICAgICAgICAgICBtX2luT3ZlcmZs
b3dSZWxheW91dCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS5zZXROZWVkc0xh
eW91dCh0cnVlLCBNYXJrT25seVRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlcigp
LmlzUmVuZGVyQmxvY2soKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayYgYmxv
Y2sgPSB0b1JlbmRlckJsb2NrKHJlbmRlcmVyKCkpOworICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJCbG9jayYgYmxvY2sgPSAqdG9SZW5kZXJCbG9jaygmcmVuZGVyZXIoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJsb2NrLnNjcm9sbGJhcnNDaGFuZ2VkKGF1dG9Ib3Jpem9udGFsU2Nyb2xsQmFy
Q2hhbmdlZCwgYXV0b1ZlcnRpY2FsU2Nyb2xsQmFyQ2hhbmdlZCk7CiAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrLmxheW91dEJsb2NrKHRydWUpOwogICAgICAgICAgICAgICAgIH0gZWxzZQpAQCAt
Mzc5MCwzOSArMzc3MSw2IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXI6OmFwcGx5Rmls
dGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciogZmlsdGVyUGFpCiB9CiAjZW5kaWYKIAot
Ly8gSGVscGVyIGZvciB0aGUgc29ydGluZyBvZiBsYXllcnMgYnkgei1pbmRleC4KLXN0YXRpYyBp
bmxpbmUgYm9vbCBjb21wYXJlWkluZGV4KFJlbmRlckxheWVyKiBmaXJzdCwgUmVuZGVyTGF5ZXIq
IHNlY29uZCkKLXsKLSAgICByZXR1cm4gZmlyc3QtPnpJbmRleCgpIDwgc2Vjb25kLT56SW5kZXgo
KTsKLX0KLQotLy8gUGFpbnQgdGhlIGxheWVycyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpeGVkIHBv
c2l0aW9uZWQgZWxlbWVudHMgaW4gbmFtZWQgZmxvd3MuCi0vLyBUaGVzZSBsYXllcnMgc2hvdWxk
IG5vdCBiZSBwYWludGVkIGluIGEgc2ltaWxhciB3YXkgYXMgdGhlIG90aGVyIGVsZW1lbnRzIGNv
bGxlY3RlZCBpbgotLy8gbmFtZWQgZmxvd3MgLSByZWdpb25zIC0+IG5hbWVkIGZsb3dzIC0gc2lu
Y2Ugd2UgZG8gbm90IHdhbnQgdGhlbSB0byBiZSBjbGlwcGVkIHRvIHRoZQotLy8gcmVnaW9ucyB2
aWV3cG9ydC4KLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3Mo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKLXsKLSAgICBpZiAoIWlzUm9vdExh
eWVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEdldCB0aGUgbmFtZWQgZmxvd3MgZm9y
IHRoZSB2aWV3Ci0gICAgaWYgKCFyZW5kZXJlcigpLnZpZXcoKS5oYXNSZW5kZXJOYW1lZEZsb3dU
aHJlYWRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIENvbGxlY3QgdGhlIGZpeGVkIGxh
eWVycyBpbiBhIGxpc3QgdG8gYmUgcGFpbnRlZAotICAgIFZlY3RvcjxSZW5kZXJMYXllcio+IGZp
eGVkTGF5ZXJzOwotICAgIHJlbmRlcmVyKCkudmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCku
Y29sbGVjdEZpeGVkUG9zaXRpb25lZExheWVycyhmaXhlZExheWVycyk7Ci0KLSAgICAvLyBTb3J0
IHRoZSBmaXhlZCBsYXllcnMgbGlzdAotICAgIHN0ZDo6c3RhYmxlX3NvcnQoZml4ZWRMYXllcnMu
YmVnaW4oKSwgZml4ZWRMYXllcnMuZW5kKCksIGNvbXBhcmVaSW5kZXgpOwotCi0gICAgLy8gUGFp
bnQgdGhlIGxheWVycwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZml4ZWRMYXllcnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGZpeGVkTGF5ZXIgPSBmaXhlZExheWVy
cy5hdChpKTsKLSAgICAgICAgZml4ZWRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGlu
Z0luZm8sIHBhaW50RmxhZ3MpOwotICAgIH0KLX0KLQogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAg
QVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2Nl
bmRhbnQoKSk7CkBAIC0zODUyLDEyICszODAwLDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkK
ICAgICAvLyBFbnN1cmUgb3VyIGxpc3RzIGFyZSB1cC10by1kYXRlLgogICAgIHVwZGF0ZUxheWVy
TGlzdHNJZk5lZWRlZCgpOwogCi0gICAgLy8gRG8gbm90IHBhaW50IHRoZSBmaXhlZCBwb3NpdGlv
bmVkIGxheWVycyBpZiB0aGUgcGFpbnQgcm9vdCBpcyB0aGUgbmFtZWQgZmxvdywKLSAgICAvLyBp
ZiB0aGUgcGFpbnQgb3JpZ2luYXRlcyBhdCByZWdpb24gbGV2ZWwuCi0gICAgaWYgKHBhaW50aW5n
SW5mby5yb290TGF5ZXItPmlzT3V0T2ZGbG93UmVuZGVyRmxvd1RocmVhZCgpCi0gICAgICAgICYm
IHJlbmRlcmVyKCkuZml4ZWRQb3NpdGlvbmVkV2l0aE5hbWVkRmxvd0NvbnRhaW5pbmdCbG9jaygp
KQotICAgICAgICByZXR1cm47Ci0KICAgICBMYXlvdXRQb2ludCBvZmZzZXRGcm9tUm9vdDsKICAg
ICBjb252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBvZmZzZXRGcm9t
Um9vdCk7CiAKQEAgLTM5NDksOSArMzg5MSw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAg
ICAgCiAgICAgICAgIC8vIE5vdyB3YWxrIHRoZSBzb3J0ZWQgbGlzdCBvZiBjaGlsZHJlbiB3aXRo
IHBvc2l0aXZlIHotaW5kaWNlcy4KICAgICAgICAgcGFpbnRMaXN0KHBvc1pPcmRlckxpc3QoKSwg
Y29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7Ci0KLSAgICAgICAg
Ly8gUGFpbnQgdGhlIGZpeGVkIGVsZW1lbnRzIGZyb20gZmxvdyB0aHJlYWRzCi0gICAgICAgIHBh
aW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxv
Y2FsUGFpbnRGbGFncyk7CiAgICAgfQogCiAgICAgaWYgKGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xs
YmFycykKQEAgLTQwMjUsNyArMzk2NCw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0CiAgICAg
ICAgIFJlbmRlckxheWVyKiBjaGlsZExheWVyID0gbGlzdC0+YXQoaSk7CiAgICAgICAgIGlmIChj
aGlsZExheWVyLT5pc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotCiAgICAgICAgIGlmICghY2hpbGRMYXllci0+aXNQYWdpbmF0ZWQoKSkKICAgICAg
ICAgICAgIGNoaWxkTGF5ZXItPnBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWlu
dEZsYWdzKTsKICAgICAgICAgZWxzZQpAQCAtNDA3Miw4ICs0MDEwLDggQEAgdm9pZCBSZW5kZXJM
YXllcjo6Y29sbGVjdEZyYWdtZW50cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zdCBS
ZW5kZXJMYXllcioKIAogICAgIC8vIFRlbGwgdGhlIGZsb3cgdGhyZWFkIHRvIGNvbGxlY3QgdGhl
IGZyYWdtZW50cy4gV2UgcGFzcyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgbWluaW1h
bCBudW1iZXIgb2YgZnJhZ21lbnRzIGJhc2VkIG9mZiB0aGUgcGFnZXMvY29sdW1ucwogICAgIC8v
IHRoYXQgaW50ZXJzZWN0IHRoZSBhY3R1YWwgZGlydHlSZWN0IGFzIHdlbGwgYXMgdGhlIHBhZ2Vz
L2NvbHVtbnMgdGhhdCBpbnRlcnNlY3Qgb3VyIGxheWVyJ3MgYm91bmRpbmcgYm94LgotICAgIFJl
bmRlckZsb3dUaHJlYWQmIGVuY2xvc2luZ0Zsb3dUaHJlYWQgPSB0b1JlbmRlckZsb3dUaHJlYWQo
ZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCktPnJlbmRlcmVyKCkpOwotICAgIGVuY2xvc2luZ0Zs
b3dUaHJlYWQuY29sbGVjdExheWVyRnJhZ21lbnRzKGZyYWdtZW50cywgbGF5ZXJCb3VuZGluZ0Jv
eEluRmxvd1RocmVhZCwgZGlydHlSZWN0SW5GbG93VGhyZWFkKTsKKyAgICBSZW5kZXJGbG93VGhy
ZWFkKiBlbmNsb3NpbmdGbG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKCZlbmNsb3NpbmdQ
YWdpbmF0aW9uTGF5ZXIoKS0+cmVuZGVyZXIoKSk7CisgICAgZW5jbG9zaW5nRmxvd1RocmVhZC0+
Y29sbGVjdExheWVyRnJhZ21lbnRzKGZyYWdtZW50cywgbGF5ZXJCb3VuZGluZ0JveEluRmxvd1Ro
cmVhZCwgZGlydHlSZWN0SW5GbG93VGhyZWFkKTsKICAgICAKICAgICBpZiAoZnJhZ21lbnRzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxMywyOSArNDI1MSwyOSBAQCB2b2lkIFJl
bmRlckxheWVyOjpwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5
ZXIsIEdyYXBoaWNzQ29udAogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0Nv
bHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywKICAgICBQYWludExheWVyRmxh
Z3MgcGFpbnRGbGFncywgY29uc3QgVmVjdG9yPFJlbmRlckxheWVyKj4mIGNvbHVtbkxheWVycywg
c2l6ZV90IGNvbEluZGV4KQogewotICAgIFJlbmRlckJsb2NrJiBjb2x1bW5CbG9jayA9IHRvUmVu
ZGVyQmxvY2soY29sdW1uTGF5ZXJzW2NvbEluZGV4XS0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVy
QmxvY2sqIGNvbHVtbkJsb2NrID0gdG9SZW5kZXJCbG9jaygmY29sdW1uTGF5ZXJzW2NvbEluZGV4
XS0+cmVuZGVyZXIoKSk7CiAKLSAgICBBU1NFUlQoY29sdW1uQmxvY2suaGFzQ29sdW1ucygpKTsK
LSAgICBpZiAoIWNvbHVtbkJsb2NrLmhhc0NvbHVtbnMoKSkKKyAgICBBU1NFUlQoY29sdW1uQmxv
Y2sgJiYgY29sdW1uQmxvY2stPmhhc0NvbHVtbnMoKSk7CisgICAgaWYgKCFjb2x1bW5CbG9jayB8
fCAhY29sdW1uQmxvY2stPmhhc0NvbHVtbnMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IExheW91dFBvaW50IGxheWVyT2Zmc2V0OwogICAgIC8vIEZJWE1FOiBJdCBsb29rcyBzdXNwaWNp
b3VzIHRvIGNhbGwgY29udmVydFRvTGF5ZXJDb29yZHMgaGVyZQogICAgIC8vIGFzIGNhblVzZUNv
bnZlcnRUb0xheWVyQ29vcmRzIGlzIHRydWUgZm9yIHRoaXMgbGF5ZXIuCi0gICAgY29sdW1uQmxv
Y2subGF5ZXIoKS0+Y29udmVydFRvTGF5ZXJDb29yZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwg
bGF5ZXJPZmZzZXQpOworICAgIGNvbHVtbkJsb2NrLT5sYXllcigpLT5jb252ZXJ0VG9MYXllckNv
b3JkcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBsYXllck9mZnNldCk7CiAgICAgCi0gICAgYm9v
bCBpc0hvcml6b250YWwgPSBjb2x1bW5CbG9jay5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpOworICAgIGJvb2wgaXNIb3Jpem9udGFsID0gY29sdW1uQmxvY2stPnN0eWxlKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAKLSAgICBDb2x1bW5JbmZvKiBjb2xJbmZvID0gY29s
dW1uQmxvY2suY29sdW1uSW5mbygpOwotICAgIHVuc2lnbmVkIGNvbENvdW50ID0gY29sdW1uQmxv
Y2suY29sdW1uQ291bnQoY29sSW5mbyk7Ci0gICAgTGF5b3V0VW5pdCBjdXJyTG9naWNhbFRvcE9m
ZnNldCA9IGNvbHVtbkJsb2NrLmluaXRpYWxCbG9ja09mZnNldEZvclBhaW50aW5nKCk7Ci0gICAg
TGF5b3V0VW5pdCBibG9ja0RlbHRhID0gY29sdW1uQmxvY2suYmxvY2tEZWx0YUZvclBhaW50aW5n
TmV4dENvbHVtbigpOworICAgIENvbHVtbkluZm8qIGNvbEluZm8gPSBjb2x1bW5CbG9jay0+Y29s
dW1uSW5mbygpOworICAgIHVuc2lnbmVkIGNvbENvdW50ID0gY29sdW1uQmxvY2stPmNvbHVtbkNv
dW50KGNvbEluZm8pOworICAgIExheW91dFVuaXQgY3VyckxvZ2ljYWxUb3BPZmZzZXQgPSBjb2x1
bW5CbG9jay0+aW5pdGlhbEJsb2NrT2Zmc2V0Rm9yUGFpbnRpbmcoKTsKKyAgICBMYXlvdXRVbml0
IGJsb2NrRGVsdGEgPSBjb2x1bW5CbG9jay0+YmxvY2tEZWx0YUZvclBhaW50aW5nTmV4dENvbHVt
bigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2xDb3VudDsgaSsrKSB7CiAgICAg
ICAgIC8vIEZvciBlYWNoIHJlY3QsIHdlIGNsaXAgdG8gdGhlIHJlY3QsIGFuZCB0aGVuIHdlIGFk
anVzdCBvdXIgY29vcmRzLgotICAgICAgICBMYXlvdXRSZWN0IGNvbFJlY3QgPSBjb2x1bW5CbG9j
ay5jb2x1bW5SZWN0QXQoY29sSW5mbywgaSk7Ci0gICAgICAgIGNvbHVtbkJsb2NrLmZsaXBGb3JX
cml0aW5nTW9kZShjb2xSZWN0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBjb2xSZWN0ID0gY29sdW1u
QmxvY2stPmNvbHVtblJlY3RBdChjb2xJbmZvLCBpKTsKKyAgICAgICAgY29sdW1uQmxvY2stPmZs
aXBGb3JXcml0aW5nTW9kZShjb2xSZWN0KTsKIAotICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxM
ZWZ0T2Zmc2V0ID0gKGlzSG9yaXpvbnRhbCA/IGNvbFJlY3QueCgpIDogY29sUmVjdC55KCkpIC0g
Y29sdW1uQmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KCk7CisgICAgICAgIExheW91
dFVuaXQgbG9naWNhbExlZnRPZmZzZXQgPSAoaXNIb3Jpem9udGFsID8gY29sUmVjdC54KCkgOiBj
b2xSZWN0LnkoKSkgLSBjb2x1bW5CbG9jay0+bG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KCk7
CiAgICAgICAgIExheW91dFNpemUgb2Zmc2V0ID0gaXNIb3Jpem9udGFsID8gTGF5b3V0U2l6ZShs
b2dpY2FsTGVmdE9mZnNldCwgY3VyckxvZ2ljYWxUb3BPZmZzZXQpIDogTGF5b3V0U2l6ZShjdXJy
TG9naWNhbFRvcE9mZnNldCwgbG9naWNhbExlZnRPZmZzZXQpOwogICAgICAgICBjb2xSZWN0Lm1v
dmVCeShsYXllck9mZnNldCk7CiAgICAgICAgIApAQCAtNDQwNyw3ICs0MzQ1LDcgQEAgYm9vbCBS
ZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJgogCiAgICAgcmVuZGVyZXIoKS5kb2N1bWVudCgpLnVwZGF0ZUxheW91
dCgpOwogICAgIAotICAgIExheW91dFJlY3QgaGl0VGVzdEFyZWEgPSBpc091dE9mRmxvd1JlbmRl
ckZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcigpKS5ib3JkZXJCb3hS
ZWN0KCkgOiByZW5kZXJlcigpLnZpZXcoKS5kb2N1bWVudFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0
IGhpdFRlc3RBcmVhID0gaXNPdXRPZkZsb3dSZW5kZXJGbG93VGhyZWFkKCkgPyB0b1JlbmRlckZs
b3dUaHJlYWQoJnJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkgOiByZW5kZXJlcigpLnZpZXco
KS5kb2N1bWVudFJlY3QoKTsKICAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSkKICAg
ICAgICAgaGl0VGVzdEFyZWEuaW50ZXJzZWN0KGZyYW1lVmlzaWJsZVJlY3QocmVuZGVyZXIoKSkp
OwogCkBAIC00NDE3LDcgKzQzNTUsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mCiAgICAgICAg
IC8vIHJldHVybiBvdXJzZWx2ZXMuIFdlIGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVl
IGdldHRpbmcgZGVsaXZlcmVkIGFmdGVyIGEgZHJhZyBoYXMgCiAgICAgICAgIC8vIGV4aXRlZCB0
aGUgV2ViVmlldywgYW5kIHNvIGhpdCB0ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIgaGl0cyB0aGUg
Y29udGVudCBkb2N1bWVudC4KICAgICAgICAgaWYgKCFyZXF1ZXN0LmlzQ2hpbGRGcmFtZUhpdFRl
c3QoKSAmJiAocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNSb290
TGF5ZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyZXIoKS51cGRhdGVIaXRUZXN0UmVzdWx0KHJl
c3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLmZsaXBGb3JXcml0aW5nTW9kZShoaXRUZXN0
TG9jYXRpb24ucG9pbnQoKSkpOworICAgICAgICAgICAgcmVuZGVyZXIoKS51cGRhdGVIaXRUZXN0
UmVzdWx0KHJlc3VsdCwgdG9SZW5kZXJWaWV3KCZyZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRpbmdN
b2RlKGhpdFRlc3RMb2NhdGlvbi5wb2ludCgpKSk7CiAgICAgICAgICAgICBpbnNpZGVMYXllciA9
IHRoaXM7CiAgICAgICAgIH0KICAgICB9CkBAIC00NTE1LDUzICs0NDUzLDYgQEAgc3RhdGljIGJv
b2wgaXNIaXRDYW5kaWRhdGUoY29uc3QgUmVuZGVyTGF5ZXIqIGhpdExheWVyLCBib29sIGNhbkRl
cHRoU29ydCwgZG91YmwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVuZGVyTGF5ZXIqIFJlbmRl
ckxheWVyOjpoaXRUZXN0Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoUmVuZGVyTGF5ZXIqIC8qcm9v
dExheWVyKi8sCi0gICAgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwKLSAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBoaXRUZXN0TG9jYXRpb24sCi0gICAgY29uc3QgSGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlKiB0cmFuc2Zvcm1TdGF0ZSwgCi0gICAgZG91YmxlKiB6T2Zmc2V0Rm9yRGVzY2Vu
ZGFudHMsIGRvdWJsZSogek9mZnNldCwKLSAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3Rh
dGUqIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUsCi0gICAgYm9vbCBkZXB0aFNvcnREZXNjZW5k
YW50cykKLXsKLSAgICBpZiAoIWlzUm9vdExheWVyKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gR2V0IHRoZSBuYW1lZCBmbG93cyBmb3IgdGhlIHZpZXcKLSAgICBpZiAoIXJlbmRlcmVy
KCkudmlldygpLmhhc1JlbmRlck5hbWVkRmxvd1RocmVhZHMoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBWZWN0b3I8UmVuZGVyTGF5ZXIqPiBmaXhlZExheWVyczsKLSAgICByZW5kZXJlcigp
LnZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmNvbGxlY3RGaXhlZFBvc2l0aW9uZWRMYXll
cnMoZml4ZWRMYXllcnMpOwotCi0gICAgLy8gU29ydCB0aGUgZml4ZWQgbGF5ZXJzIGxpc3QKLSAg
ICBzdGQ6OnN0YWJsZV9zb3J0KGZpeGVkTGF5ZXJzLmJlZ2luKCksIGZpeGVkTGF5ZXJzLmVuZCgp
LCBjb21wYXJlWkluZGV4KTsKLQotICAgIC8vIEhpdCB0ZXN0IHRoZSBsYXllcnMKLSAgICBSZW5k
ZXJMYXllciogcmVzdWx0TGF5ZXIgPSAwOwotICAgIGZvciAoaW50IGkgPSBmaXhlZExheWVycy5z
aXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBSZW5kZXJMYXllciogZml4ZWRMYXll
ciA9IGZpeGVkTGF5ZXJzLmF0KGkpOwotCi0gICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3Vs
dChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCkpOwotICAgICAgICBSZW5kZXJMYXllciogaGl0TGF5
ZXIgPSBmaXhlZExheWVyLT5oaXRUZXN0TGF5ZXIoZml4ZWRMYXllci0+cmVuZGVyZXIoKS5mbG93
VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCktPmxheWVyKCksIDAsIHJlcXVlc3QsIHRlbXBSZXN1bHQs
Ci0gICAgICAgICAgICBoaXRUZXN0UmVjdCwgaGl0VGVzdExvY2F0aW9uLCBmYWxzZSwgdHJhbnNm
b3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7Ci0KLSAgICAgICAgLy8gSWYgaXQgYSBy
ZWN0LWJhc2VkIHRlc3QsIHdlIGNhbiBzYWZlbHkgYXBwZW5kIHRoZSB0ZW1wb3JhcnkgcmVzdWx0
IHNpbmNlIGl0IG1pZ2h0IGhhZCBoaXQKLSAgICAgICAgLy8gbm9kZXMgYnV0IG5vdCBuZWNlc3Nl
cmlseSBoYWQgaGl0TGF5ZXIgc2V0LgotICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVz
dCgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0ZW1wUmVzdWx0KTsKLQotICAgICAgICBp
ZiAoaXNIaXRDYW5kaWRhdGUoaGl0TGF5ZXIsIGRlcHRoU29ydERlc2NlbmRhbnRzLCB6T2Zmc2V0
LCB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlKSkgewotICAgICAgICAgICAgcmVzdWx0TGF5ZXIg
PSBoaXRMYXllcjsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlbXBSZXN1bHQ7Ci0gICAgICAgICAgICBpZiAoIWRl
cHRoU29ydERlc2NlbmRhbnRzKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdExheWVyOwotfQotCiAvLyBoaXRUZXN0TG9jYXRpb24g
YW5kIGhpdFRlc3RSZWN0IGFyZSByZWxhdGl2ZSB0byByb290TGF5ZXIuCiAvLyBBICdmbGF0dGVu
aW5nJyBsYXllciBpcyBvbmUgcHJlc2VydmVzM0QoKSA9PSBmYWxzZS4KIC8vIHRyYW5zZm9ybVN0
YXRlLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gaG9sZHMgdGhlIHRyYW5zZm9ybSBmcm9tIHRoZSBj
b250YWluaW5nIGZsYXR0ZW5pbmcgbGF5ZXIuCkBAIC00NTc3LDEwICs0NDY4LDYgQEAgUmVuZGVy
TGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwg
UmVuZGVyTGF5ZXIqIGNvbnQKICAgICBpZiAoIWlzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiAhaGFz
U2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Ly8gUHJldmVudCBoaXR0aW5nIHRoZSBmaXhlZCBsYXllcnMgaW5zaWRlIHRoZSBmbG93IHRocmVh
ZCB3aGVuIGhpdHRpbmcgdGhyb3VnaCByZWdpb25zLgotICAgIGlmIChyZW5kZXJlcigpLmZpeGVk
UG9zaXRpb25lZFdpdGhOYW1lZEZsb3dDb250YWluaW5nQmxvY2soKSAmJiBoaXRUZXN0TG9jYXRp
b24ucmVnaW9uKCkpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAgLy8gVGhlIG5hdHVyYWwgdGhp
bmcgd291bGQgYmUgdG8ga2VlcCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUgb24gdGhlIHN0YWNr
LCBidXQgaXQncyBiaWcsIHNvIHdlIGhlYXAtYWxsb2NhdGUuCiAKICAgICAvLyBBcHBseSBhIHRy
YW5zZm9ybSBpZiB3ZSBoYXZlIG9uZS4KQEAgLTQ2NTYsMTcgKzQ1NDMsOCBAQCBSZW5kZXJMYXll
ciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5k
ZXJMYXllciogY29udAogICAgIC8vIFRoaXMgdmFyaWFibGUgdHJhY2tzIHdoaWNoIGxheWVyIHRo
ZSBtb3VzZSBlbmRzIHVwIGJlaW5nIGluc2lkZS4KICAgICBSZW5kZXJMYXllciogY2FuZGlkYXRl
TGF5ZXIgPSAwOwogCi0gICAgLy8gQ2hlY2sgdGhlIGZpeGVkIHBvc2l0aW9uZWQgbGF5ZXJzIHdp
dGhpbiBmbG93IHRocmVhZHMgdGhhdCBhcmUgcG9zaXRpb25lZCBieSB0aGUgdmlldy4KLSAgICBS
ZW5kZXJMYXllciogaGl0TGF5ZXIgPSBoaXRUZXN0Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3Mocm9v
dExheWVyLCByZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RSZWN0LCBoaXRUZXN0TG9jYXRpb24sCi0g
ICAgICAgIGxvY2FsVHJhbnNmb3JtU3RhdGUuZ2V0KCksIHpPZmZzZXRGb3JEZXNjZW5kYW50c1B0
ciwgek9mZnNldCwgdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZS5nZXQoKSwgZGVwdGhTb3J0RGVz
Y2VuZGFudHMpOwotICAgIGlmIChoaXRMYXllcikgewotICAgICAgICBpZiAoIWRlcHRoU29ydERl
c2NlbmRhbnRzKQotICAgICAgICAgICAgcmV0dXJuIGhpdExheWVyOwotICAgICAgICBjYW5kaWRh
dGVMYXllciA9IGhpdExheWVyOwotICAgIH0KLQogICAgIC8vIEJlZ2luIGJ5IHdhbGtpbmcgb3Vy
IGxpc3Qgb2YgcG9zaXRpdmUgbGF5ZXJzIGZyb20gaGlnaGVzdCB6LWluZGV4IGRvd24gdG8gdGhl
IGxvd2VzdCB6LWluZGV4LgotICAgIGhpdExheWVyID0gaGl0VGVzdExpc3QocG9zWk9yZGVyTGlz
dCgpLCByb290TGF5ZXIsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRlc3RMb2Nh
dGlvbiwKKyAgICBSZW5kZXJMYXllciogaGl0TGF5ZXIgPSBoaXRUZXN0TGlzdChwb3NaT3JkZXJM
aXN0KCksIHJvb3RMYXllciwgcmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdExv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsVHJh
bnNmb3JtU3RhdGUuZ2V0KCksIHpPZmZzZXRGb3JEZXNjZW5kYW50c1B0ciwgek9mZnNldCwgdW5m
bGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZS5nZXQoKSwgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwogICAg
IGlmIChoaXRMYXllcikgewogICAgICAgICBpZiAoIWRlcHRoU29ydERlc2NlbmRhbnRzKQpAQCAt
NDkzNCwyOCArNDgxMiwyOCBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGls
ZExheWVyQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYg
aGl0VGVzdFJlY3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVzdExvY2F0aW9uLCBjb25z
dCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHRyYW5zZm9ybVN0YXRlLCBkb3VibGUqIHpPZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiYgY29sdW1uTGF5ZXJzLCBzaXplX3QgY29sdW1uSW5k
ZXgpCiB7Ci0gICAgUmVuZGVyQmxvY2smIGNvbHVtbkJsb2NrID0gdG9SZW5kZXJCbG9jayhjb2x1
bW5MYXllcnNbY29sdW1uSW5kZXhdLT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJCbG9jayogY29s
dW1uQmxvY2sgPSB0b1JlbmRlckJsb2NrKCZjb2x1bW5MYXllcnNbY29sdW1uSW5kZXhdLT5yZW5k
ZXJlcigpKTsKIAotICAgIEFTU0VSVChjb2x1bW5CbG9jay5oYXNDb2x1bW5zKCkpOwotICAgIGlm
ICghY29sdW1uQmxvY2suaGFzQ29sdW1ucygpKQorICAgIEFTU0VSVChjb2x1bW5CbG9jayAmJiBj
b2x1bW5CbG9jay0+aGFzQ29sdW1ucygpKTsKKyAgICBpZiAoIWNvbHVtbkJsb2NrIHx8ICFjb2x1
bW5CbG9jay0+aGFzQ29sdW1ucygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIExheW91dFBv
aW50IGxheWVyT2Zmc2V0OwotICAgIGNvbHVtbkJsb2NrLmxheWVyKCktPmNvbnZlcnRUb0xheWVy
Q29vcmRzKHJvb3RMYXllciwgbGF5ZXJPZmZzZXQpOworICAgIGNvbHVtbkJsb2NrLT5sYXllcigp
LT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIGxheWVyT2Zmc2V0KTsKIAotICAgIENv
bHVtbkluZm8qIGNvbEluZm8gPSBjb2x1bW5CbG9jay5jb2x1bW5JbmZvKCk7Ci0gICAgaW50IGNv
bENvdW50ID0gY29sdW1uQmxvY2suY29sdW1uQ291bnQoY29sSW5mbyk7CisgICAgQ29sdW1uSW5m
byogY29sSW5mbyA9IGNvbHVtbkJsb2NrLT5jb2x1bW5JbmZvKCk7CisgICAgaW50IGNvbENvdW50
ID0gY29sdW1uQmxvY2stPmNvbHVtbkNvdW50KGNvbEluZm8pOwogCiAgICAgLy8gV2UgaGF2ZSB0
byBnbyBiYWNrd2FyZHMgZnJvbSB0aGUgbGFzdCBjb2x1bW4gdG8gdGhlIGZpcnN0LgotICAgIGJv
b2wgaXNIb3Jpem9udGFsID0gY29sdW1uQmxvY2suc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKTsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gY29sdW1uQmxvY2subG9naWNh
bExlZnRPZmZzZXRGb3JDb250ZW50KCk7Ci0gICAgTGF5b3V0VW5pdCBjdXJyTG9naWNhbFRvcE9m
ZnNldCA9IGNvbHVtbkJsb2NrLmluaXRpYWxCbG9ja09mZnNldEZvclBhaW50aW5nKCk7Ci0gICAg
TGF5b3V0VW5pdCBibG9ja0RlbHRhID0gY29sdW1uQmxvY2suYmxvY2tEZWx0YUZvclBhaW50aW5n
TmV4dENvbHVtbigpOworICAgIGJvb2wgaXNIb3Jpem9udGFsID0gY29sdW1uQmxvY2stPnN0eWxl
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dCA9IGNvbHVtbkJsb2NrLT5sb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQoKTsKKyAgICBMYXlv
dXRVbml0IGN1cnJMb2dpY2FsVG9wT2Zmc2V0ID0gY29sdW1uQmxvY2stPmluaXRpYWxCbG9ja09m
ZnNldEZvclBhaW50aW5nKCk7CisgICAgTGF5b3V0VW5pdCBibG9ja0RlbHRhID0gY29sdW1uQmxv
Y2stPmJsb2NrRGVsdGFGb3JQYWludGluZ05leHRDb2x1bW4oKTsKICAgICBjdXJyTG9naWNhbFRv
cE9mZnNldCArPSBjb2xDb3VudCAqIGJsb2NrRGVsdGE7CiAgICAgZm9yIChpbnQgaSA9IGNvbENv
dW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgLy8gRm9yIGVhY2ggcmVjdCwgd2UgY2xp
cCB0byB0aGUgcmVjdCwgYW5kIHRoZW4gd2UgYWRqdXN0IG91ciBjb29yZHMuCi0gICAgICAgIExh
eW91dFJlY3QgY29sUmVjdCA9IGNvbHVtbkJsb2NrLmNvbHVtblJlY3RBdChjb2xJbmZvLCBpKTsK
LSAgICAgICAgY29sdW1uQmxvY2suZmxpcEZvcldyaXRpbmdNb2RlKGNvbFJlY3QpOworICAgICAg
ICBMYXlvdXRSZWN0IGNvbFJlY3QgPSBjb2x1bW5CbG9jay0+Y29sdW1uUmVjdEF0KGNvbEluZm8s
IGkpOworICAgICAgICBjb2x1bW5CbG9jay0+ZmxpcEZvcldyaXRpbmdNb2RlKGNvbFJlY3QpOwog
ICAgICAgICBMYXlvdXRVbml0IGN1cnJMb2dpY2FsTGVmdE9mZnNldCA9IChpc0hvcml6b250YWwg
PyBjb2xSZWN0LngoKSA6IGNvbFJlY3QueSgpKSAtIGxvZ2ljYWxMZWZ0OwogICAgICAgICBjdXJy
TG9naWNhbFRvcE9mZnNldCAtPSBibG9ja0RlbHRhOwogCkBAIC01MTA0LDcgKzQ5ODIsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4
dCYgY2xpcFJlY3RzQ29udGV4dCwgQwogICAgICAgICAgICAgb2Zmc2V0IC09IHJlbmRlcmVyKCku
dmlldygpLmZyYW1lVmlldygpLnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpKSB7Ci0gICAgICAg
ICAgICBDbGlwUmVjdCBuZXdPdmVyZmxvd0NsaXAgPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS5v
dmVyZmxvd0NsaXBSZWN0Rm9yQ2hpbGRMYXllcnMob2Zmc2V0LCBjbGlwUmVjdHNDb250ZXh0LnJl
Z2lvbiwgY2xpcFJlY3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSk7Cisg
ICAgICAgICAgICBDbGlwUmVjdCBuZXdPdmVyZmxvd0NsaXAgPSB0b1JlbmRlckJveCgmcmVuZGVy
ZXIoKSktPm92ZXJmbG93Q2xpcFJlY3RGb3JDaGlsZExheWVycyhvZmZzZXQsIGNsaXBSZWN0c0Nv
bnRleHQucmVnaW9uLCBjbGlwUmVjdHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZh
bmN5KTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCktPmhhc0JvcmRlclJhZGl1
cygpKQogICAgICAgICAgICAgICAgIG5ld092ZXJmbG93Q2xpcC5zZXRIYXNSYWRpdXModHJ1ZSk7
CiAgICAgICAgICAgICBjbGlwUmVjdHMuc2V0T3ZlcmZsb3dDbGlwUmVjdChpbnRlcnNlY3Rpb24o
bmV3T3ZlcmZsb3dDbGlwLCBjbGlwUmVjdHMub3ZlcmZsb3dDbGlwUmVjdCgpKSk7CkBAIC01MTEy
LDcgKzQ5OTAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3Qg
Q2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4dCwgQwogICAgICAgICAgICAgICAgIGNs
aXBSZWN0cy5zZXRQb3NDbGlwUmVjdChpbnRlcnNlY3Rpb24obmV3T3ZlcmZsb3dDbGlwLCBjbGlw
UmVjdHMucG9zQ2xpcFJlY3QoKSkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZW5kZXJlcigp
Lmhhc0NsaXAoKSkgewotICAgICAgICAgICAgTGF5b3V0UmVjdCBuZXdQb3NDbGlwID0gdG9SZW5k
ZXJCb3gocmVuZGVyZXIoKSkuY2xpcFJlY3Qob2Zmc2V0LCBjbGlwUmVjdHNDb250ZXh0LnJlZ2lv
bik7CisgICAgICAgICAgICBMYXlvdXRSZWN0IG5ld1Bvc0NsaXAgPSB0b1JlbmRlckJveCgmcmVu
ZGVyZXIoKSktPmNsaXBSZWN0KG9mZnNldCwgY2xpcFJlY3RzQ29udGV4dC5yZWdpb24pOwogICAg
ICAgICAgICAgY2xpcFJlY3RzLnNldFBvc0NsaXBSZWN0KGludGVyc2VjdGlvbihuZXdQb3NDbGlw
LCBjbGlwUmVjdHMucG9zQ2xpcFJlY3QoKSkpOwogICAgICAgICAgICAgY2xpcFJlY3RzLnNldE92
ZXJmbG93Q2xpcFJlY3QoaW50ZXJzZWN0aW9uKG5ld1Bvc0NsaXAsIGNsaXBSZWN0cy5vdmVyZmxv
d0NsaXBSZWN0KCkpKTsKICAgICAgICAgICAgIGNsaXBSZWN0cy5zZXRGaXhlZENsaXBSZWN0KGlu
dGVyc2VjdGlvbihuZXdQb3NDbGlwLCBjbGlwUmVjdHMuZml4ZWRDbGlwUmVjdCgpKSk7CkBAIC01
MTg1LDI4ICs1MDYzLDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNvbnN0
IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIGNvbnN0CiAgICAgICAgIG9mZnNl
dCA9ICpvZmZzZXRGcm9tUm9vdDsKICAgICBlbHNlCiAgICAgICAgIGNvbnZlcnRUb0xheWVyQ29v
cmRzKGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyLCBvZmZzZXQpOwotCi0gICAgLy8gSWYgdGhl
IHZpZXcgaXMgc2Nyb2xsZWQsIHRoZSBmbG93IHRocmVhZCBpcyBub3Qgc2Nyb2xsZWQgd2l0aCBp
dCBhbmQgd2Ugc2hvdWxkCi0gICAgLy8gdGFrZSB0aGUgc2Nyb2xsIG9mZnNldCBpbnRvIGFjY291
bnQuCi0gICAgaWYgKGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyLT5pc091dE9mRmxvd1JlbmRl
ckZsb3dUaHJlYWQoKSAmJiAhY2xpcFJlY3RzQ29udGV4dC5yZWdpb24pIHsKLSAgICAgICAgRmxv
YXRQb2ludCBhYnNQb3MgPSByZW5kZXJlcigpLnZpZXcoKS5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQ
b2ludCgpLCBJc0ZpeGVkKTsKLSAgICAgICAgb2Zmc2V0ICs9IExheW91dFNpemUoYWJzUG9zLngo
KSwgYWJzUG9zLnkoKSk7Ci0gICAgfQotCiAgICAgbGF5ZXJCb3VuZHMgPSBMYXlvdXRSZWN0KG9m
ZnNldCwgc2l6ZSgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgY2xpcCByZWN0cyB0aGF0IHdpbGwg
YmUgcGFzc2VkIHRvIGNoaWxkIGxheWVycy4KICAgICBpZiAocmVuZGVyZXIoKS5oYXNDbGlwT3JP
dmVyZmxvd0NsaXAoKSkgewogICAgICAgICAvLyBUaGlzIGxheWVyIGVzdGFibGlzaGVzIGEgY2xp
cCBvZiBzb21lIGtpbmQuCiAgICAgICAgIGlmIChyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
ICYmICh0aGlzICE9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyIHx8IGNsaXBSZWN0c0NvbnRl
eHQucmVzcGVjdE92ZXJmbG93Q2xpcCA9PSBSZXNwZWN0T3ZlcmZsb3dDbGlwKSkgewotICAgICAg
ICAgICAgZm9yZWdyb3VuZFJlY3QuaW50ZXJzZWN0KHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLm92
ZXJmbG93Q2xpcFJlY3Qob2Zmc2V0LCBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbiwgY2xpcFJlY3Rz
Q29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSkpOworICAgICAgICAgICAgZm9y
ZWdyb3VuZFJlY3QuaW50ZXJzZWN0KHRvUmVuZGVyQm94KCZyZW5kZXJlcigpKS0+b3ZlcmZsb3dD
bGlwUmVjdChvZmZzZXQsIGNsaXBSZWN0c0NvbnRleHQucmVnaW9uLCBjbGlwUmVjdHNDb250ZXh0
Lm92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5KSk7CiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIoKS5zdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgICAgICAgICBmb3JlZ3Jv
dW5kUmVjdC5zZXRIYXNSYWRpdXModHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocmVu
ZGVyZXIoKS5oYXNDbGlwKCkpIHsKICAgICAgICAgICAgIC8vIENsaXAgYXBwbGllcyB0byAqdXMq
IGFzIHdlbGwsIHNvIGdvIGFoZWFkIGFuZCB1cGRhdGUgdGhlIGRhbWFnZVJlY3QuCi0gICAgICAg
ICAgICBMYXlvdXRSZWN0IG5ld1Bvc0NsaXAgPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS5jbGlw
UmVjdChvZmZzZXQsIGNsaXBSZWN0c0NvbnRleHQucmVnaW9uKTsKKyAgICAgICAgICAgIExheW91
dFJlY3QgbmV3UG9zQ2xpcCA9IHRvUmVuZGVyQm94KCZyZW5kZXJlcigpKS0+Y2xpcFJlY3Qob2Zm
c2V0LCBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbik7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVj
dC5pbnRlcnNlY3QobmV3UG9zQ2xpcCk7CiAgICAgICAgICAgICBmb3JlZ3JvdW5kUmVjdC5pbnRl
cnNlY3QobmV3UG9zQ2xpcCk7CiAgICAgICAgICAgICBvdXRsaW5lUmVjdC5pbnRlcnNlY3QobmV3
UG9zQ2xpcCk7CkBAIC01MzAyLDkgKzUxNzIsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXBhaW50
QmxvY2tTZWxlY3Rpb25HYXBzKCkKICAgICBMYXlvdXRSZWN0IHJlY3QgPSBtX2Jsb2NrU2VsZWN0
aW9uR2Fwc0JvdW5kczsKICAgICByZWN0Lm1vdmUoLXNjcm9sbGVkQ29udGVudE9mZnNldCgpKTsK
ICAgICBpZiAocmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSAmJiAhdXNlc0NvbXBvc2l0ZWRT
Y3JvbGxpbmcoKSkKLSAgICAgICAgcmVjdC5pbnRlcnNlY3QodG9SZW5kZXJCb3gocmVuZGVyZXIo
KSkub3ZlcmZsb3dDbGlwUmVjdChMYXlvdXRQb2ludCgpLCAwKSk7IC8vIEZJWE1FOiBSZWdpb25z
IG5vdCBhY2NvdW50ZWQgZm9yLgorICAgICAgICByZWN0LmludGVyc2VjdCh0b1JlbmRlckJveCgm
cmVuZGVyZXIoKSktPm92ZXJmbG93Q2xpcFJlY3QoTGF5b3V0UG9pbnQoKSwgMCkpOyAvLyBGSVhN
RTogUmVnaW9ucyBub3QgYWNjb3VudGVkIGZvci4KICAgICBpZiAocmVuZGVyZXIoKS5oYXNDbGlw
KCkpCi0gICAgICAgIHJlY3QuaW50ZXJzZWN0KHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLmNsaXBS
ZWN0KExheW91dFBvaW50KCksIDApKTsgLy8gRklYTUU6IFJlZ2lvbnMgbm90IGFjY291bnRlZCBm
b3IuCisgICAgICAgIHJlY3QuaW50ZXJzZWN0KHRvUmVuZGVyQm94KCZyZW5kZXJlcigpKS0+Y2xp
cFJlY3QoTGF5b3V0UG9pbnQoKSwgMCkpOyAvLyBGSVhNRTogUmVnaW9ucyBub3QgYWNjb3VudGVk
IGZvci4KICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZW5kZXJlcigpLnJlcGFp
bnRSZWN0YW5nbGUocmVjdCk7CiB9CkBAIC01MzQ0LDcgKzUyMTQsNyBAQCBMYXlvdXRSZWN0IFJl
bmRlckxheWVyOjpsb2NhbEJvdW5kaW5nQm94KENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MgZmxh
Z3MpIGNvbnN0CiAgICAgLy8gZmxvYXRzLgogICAgIExheW91dFJlY3QgcmVzdWx0OwogICAgIGlm
IChyZW5kZXJlcigpLmlzSW5saW5lKCkgJiYgcmVuZGVyZXIoKS5pc1JlbmRlcklubGluZSgpKQot
ICAgICAgICByZXN1bHQgPSB0b1JlbmRlcklubGluZShyZW5kZXJlcigpKS5saW5lc1Zpc3VhbE92
ZXJmbG93Qm91bmRpbmdCb3goKTsKKyAgICAgICAgcmVzdWx0ID0gdG9SZW5kZXJJbmxpbmUoJnJl
bmRlcmVyKCkpLT5saW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKTsKICAgICBlbHNlIGlm
IChyZW5kZXJlcigpLmlzVGFibGVSb3coKSkgewogICAgICAgICAvLyBPdXIgYm91bmRpbmcgYm94
IGlzIGp1c3QgdGhlIHVuaW9uIG9mIGFsbCBvZiBvdXIgY2VsbHMnIGJvcmRlci9vdmVyZmxvdyBy
ZWN0cy4KICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIoKS5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CkBAIC01Mzkw
LDggKzUyNjAsOCBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpib3VuZGluZ0JveChjb25zdCBS
ZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgQ2FsY3VsYXRlTAogICAgICAgICBjb252ZXJ0VG9M
YXllckNvb3JkcyhlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSwgb2Zmc2V0V2l0aGluUGFnaW5h
dGlvbkxheWVyKTsgICAgICAgIAogICAgICAgICByZXN1bHQubW92ZUJ5KG9mZnNldFdpdGhpblBh
Z2luYXRpb25MYXllcik7CiAKLSAgICAgICAgUmVuZGVyRmxvd1RocmVhZCYgZW5jbG9zaW5nRmxv
d1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+
cmVuZGVyZXIoKSk7Ci0gICAgICAgIHJlc3VsdCA9IGVuY2xvc2luZ0Zsb3dUaHJlYWQuZnJhZ21l
bnRzQm91bmRpbmdCb3gocmVzdWx0KTsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZW5jbG9z
aW5nRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZCgmZW5jbG9zaW5nUGFnaW5hdGlvbkxh
eWVyKCktPnJlbmRlcmVyKCkpOworICAgICAgICByZXN1bHQgPSBlbmNsb3NpbmdGbG93VGhyZWFk
LT5mcmFnbWVudHNCb3VuZGluZ0JveChyZXN1bHQpOwogICAgICAgICAKICAgICAgICAgTGF5b3V0
UG9pbnQgZGVsdGE7CiAgICAgICAgIGlmIChvZmZzZXRGcm9tUm9vdCkKQEAgLTU0MzQsNyArNTMw
NCw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0
IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjCiAgICAgTGF5b3V0UmVjdCBib3VuZGluZ0Jv
eFJlY3QgPSBsb2NhbEJvdW5kaW5nQm94KGZsYWdzKTsKIAogICAgIGlmIChyZW5kZXJlcigpLmlz
Qm94KCkpCi0gICAgICAgIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLmZsaXBGb3JXcml0aW5nTW9k
ZShib3VuZGluZ0JveFJlY3QpOworICAgICAgICB0b1JlbmRlckJveCgmcmVuZGVyZXIoKSktPmZs
aXBGb3JXcml0aW5nTW9kZShib3VuZGluZ0JveFJlY3QpOwogICAgIGVsc2UKICAgICAgICAgcmVu
ZGVyZXIoKS5jb250YWluaW5nQmxvY2soKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGJvdW5kaW5nQm94
UmVjdCk7CiAKQEAgLTU3MTYsNiArNTU4NiwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRQYXJl
bnQoUmVuZGVyTGF5ZXIqIHBhcmVudCkKICNlbmRpZgogfQogCisvLyBIZWxwZXIgZm9yIHRoZSBz
b3J0aW5nIG9mIGxheWVycyBieSB6LWluZGV4Lgorc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVa
SW5kZXgoUmVuZGVyTGF5ZXIqIGZpcnN0LCBSZW5kZXJMYXllciogc2Vjb25kKQoreworICAgIHJl
dHVybiBmaXJzdC0+ekluZGV4KCkgPCBzZWNvbmQtPnpJbmRleCgpOworfQorCiB2b2lkIFJlbmRl
ckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKCkKIHsKICAgICBBU1NFUlQobV9sYXllckxpc3RNdXRh
dGlvbkFsbG93ZWQpOwpAQCAtNTczMCw3ICs1NjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZGly
dHlaT3JkZXJMaXN0cygpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlm
ICghcmVuZGVyZXIoKS5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAgICAgaWYgKHJl
bmRlcmVyKCkuaXNPdXRPZkZsb3dSZW5kZXJGbG93VGhyZWFkKCkpCi0gICAgICAgICAgICB0b1Jl
bmRlckZsb3dUaHJlYWQocmVuZGVyZXIoKSkuc2V0TmVlZHNMYXllclRvUmVnaW9uTWFwcGluZ3NV
cGRhdGUoKTsKKyAgICAgICAgICAgIHRvUmVuZGVyRmxvd1RocmVhZCgmcmVuZGVyZXIoKSktPnNl
dE5lZWRzTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzVXBkYXRlKCk7CiAgICAgICAgIGNvbXBvc2l0b3Io
KS5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CiAgICAgICAgIGlmIChhY2NlbGVy
YXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkpCiAgICAgICAgICAgICBj
b21wb3NpdG9yKCkuc2V0U2hvdWxkUmVldmFsdWF0ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlvdXQoKTsK
QEAgLTU3NTYsNyArNTYzMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5Tm9ybWFsRmxvd0xp
c3QoKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoIXJlbmRlcmVy
KCkuZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpLmlz
T3V0T2ZGbG93UmVuZGVyRmxvd1RocmVhZCgpKQotICAgICAgICAgICAgdG9SZW5kZXJGbG93VGhy
ZWFkKHJlbmRlcmVyKCkpLnNldE5lZWRzTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzVXBkYXRlKCk7Cisg
ICAgICAgICAgICB0b1JlbmRlckZsb3dUaHJlYWQoJnJlbmRlcmVyKCkpLT5zZXROZWVkc0xheWVy
VG9SZWdpb25NYXBwaW5nc1VwZGF0ZSgpOwogICAgICAgICBjb21wb3NpdG9yKCkuc2V0Q29tcG9z
aXRpbmdMYXllcnNOZWVkUmVidWlsZCgpOwogICAgICAgICBpZiAoYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQogICAgICAgICAgICAgY29tcG9zaXRvcigp
LnNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0KCk7CkBAIC02NDU1LDcg
KzYzMzEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdFJl
bmRlcmVyKCkKIAogICAgIC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBp
dCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28gdGhy
b3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBw
bHkgYW55dGhpbmcuCi0gICAgaWYgKCFmaWx0ZXJJbmZvLT5yZW5kZXJlcigpLT5idWlsZCgmcmVu
ZGVyZXIoKSwgY29tcHV0ZUZpbHRlck9wZXJhdGlvbnMocmVuZGVyZXIoKS5zdHlsZSgpKSwgRmls
dGVyUHJvcGVydHkpKQorICAgIGlmICghZmlsdGVySW5mby0+cmVuZGVyZXIoKS0+YnVpbGQoJnJl
bmRlcmVyKCksIGNvbXB1dGVGaWx0ZXJPcGVyYXRpb25zKHJlbmRlcmVyKCkuc3R5bGUoKSkpKQog
ICAgICAgICBmaWx0ZXJJbmZvLT5zZXRSZW5kZXJlcigwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA3NTA4NTU5Li5jMDc5NGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzI0LDcgKzMyNCw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0OwogCiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9Ci0gICAgUmVuZGVyQm94KiByZW5k
ZXJCb3goKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLmlzQm94KCkgPyAmdG9SZW5kZXJCb3go
cmVuZGVyZXIoKSkgOiAwOyB9CisgICAgUmVuZGVyQm94KiByZW5kZXJCb3goKSBjb25zdCB7IHJl
dHVybiByZW5kZXJlcigpLmlzQm94KCkgPyB0b1JlbmRlckJveCgmcmVuZGVyZXIoKSkgOiAwOyB9
CiAgICAgUmVuZGVyTGF5ZXIqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAg
ICAgUmVuZGVyTGF5ZXIqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlv
dXM7IH0KICAgICBSZW5kZXJMYXllciogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25l
eHQ7IH0KQEAgLTkwOSw3ICs5MDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Rmlyc3RDaGls
ZChSZW5kZXJMYXllciogZmlyc3QpIHsgbV9maXJzdCA9IGZpcnN0OyB9CiAgICAgdm9pZCBzZXRM
YXN0Q2hpbGQoUmVuZGVyTGF5ZXIqIGxhc3QpIHsgbV9sYXN0ID0gbGFzdDsgfQogCi0gICAgTGF5
b3V0UG9pbnQgcmVuZGVyQm94TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLmlz
Qm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcigpKS5sb2NhdGlvbigpIDogTGF5b3V0UG9pbnQo
KTsgfQorICAgIExheW91dFBvaW50IHJlbmRlckJveExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
cmVuZGVyZXIoKS5pc0JveCgpID8gdG9SZW5kZXJCb3goJnJlbmRlcmVyKCkpLT5sb2NhdGlvbigp
IDogTGF5b3V0UG9pbnQoKTsgfQogCiAgICAgdm9pZCBjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVk
ZUhpZGRlbkxheWVycywgQ29sbGVjdExheWVyc0JlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4gPiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+Jik7CiAKQEAgLTk0NCw3
ICs5NDQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwot
ICAgIHZvaWQgcGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CiAgICAgdm9pZCBwYWlu
dExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKICAgICB2b2lkIHBhaW50TGF5ZXJCeUFw
cGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRQb2ludCYgdHJhbnNsYXRpb25PZmZzZXQg
PSBMYXlvdXRQb2ludCgpKTsKICAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CkBAIC05
ODUsMTQgKzk4NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHRyYW5zZm9ybVN0YXRl
LCBkb3VibGUqIHpPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiYgY29sdW1uTGF5ZXJzLCBzaXplX3QgY29s
dW1uSW5kZXgpOwogCi0gICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RGaXhlZExheWVyc0luTmFtZWRG
bG93cyhSZW5kZXJMYXllciogcm9vdExheWVyLAotICAgICAgICBjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLAotICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVj
dCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwKLSAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlKiwKLSAgICAgICAgZG91YmxlKiB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMsIGRvdWJs
ZSogek9mZnNldCwKLSAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZs
YXR0ZW5lZFRyYW5zZm9ybVN0YXRlLAotICAgICAgICBib29sIGRlcHRoU29ydERlc2NlbmRhbnRz
KTsKLQogICAgIFBhc3NSZWZQdHI8SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlPiBjcmVhdGVMb2Nh
bFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250
YWluZXJMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0
JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIGNvbnRhaW5lclRyYW5z
Zm9ybVN0YXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCA5NzU5MWQ2Li4zOThhZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNzgsNyArNzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgYm9vbCBo
YXNCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRlclN0eWxlKik7Ci1z
dGF0aWMgSW50UmVjdCBjbGlwQm94KFJlbmRlckJveCYgcmVuZGVyZXIpOworc3RhdGljIEludFJl
Y3QgY2xpcEJveChSZW5kZXJCb3gqIHJlbmRlcmVyKTsKIAogc3RhdGljIGlubGluZSBib29sIGlz
QWNjZWxlcmF0ZWRDYW52YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKQEAgLTM1OSw3ICsz
NTksNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKICAgICAvLyBiYWtlZCBpbnRvIGl0LCBhbmQgd2UgZG9uJ3Qgd2Fu
dCB0aGF0LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CiAgICAgaWYgKG1fb3duaW5nTGF5
ZXItPmhhc1RyYW5zZm9ybSgpKSB7Ci0gICAgICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0LCB0
b1JlbmRlckJveChyZW5kZXJlcigpKS5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuc2l6ZSgp
LCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CisgICAgICAgIHN0eWxlLT5h
cHBseVRyYW5zZm9ybSh0LCB0b1JlbmRlckJveCgmcmVuZGVyZXIoKSktPnBpeGVsU25hcHBlZEJv
cmRlckJveFJlY3QoKS5zaXplKCksIFJlbmRlclN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2lu
KTsKICAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUodCwgY29tcG9zaXRvcigpLmNhblJlbmRl
cjNEVHJhbnNmb3JtcygpKTsKICAgICB9CiAgICAgCkBAIC01NzQsMTQgKzU3NCwxNCBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKQog
ICAgIHJldHVybiBsYXllckNvbmZpZ0NoYW5nZWQ7CiB9CiAKLXN0YXRpYyBJbnRSZWN0IGNsaXBC
b3goUmVuZGVyQm94JiByZW5kZXJlcikKK3N0YXRpYyBJbnRSZWN0IGNsaXBCb3goUmVuZGVyQm94
KiByZW5kZXJlcikKIHsKICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IFBhaW50SW5mbzo6aW5maW5p
dGVSZWN0KCk7Ci0gICAgaWYgKHJlbmRlcmVyLmhhc092ZXJmbG93Q2xpcCgpKQotICAgICAgICBy
ZXN1bHQgPSByZW5kZXJlci5vdmVyZmxvd0NsaXBSZWN0KExheW91dFBvaW50KCksIDApOyAvLyBG
SVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KKyAgICBpZiAocmVuZGVyZXItPmhhc092
ZXJmbG93Q2xpcCgpKQorICAgICAgICByZXN1bHQgPSByZW5kZXJlci0+b3ZlcmZsb3dDbGlwUmVj
dChMYXlvdXRQb2ludCgpLCAwKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMu
CiAKLSAgICBpZiAocmVuZGVyZXIuaGFzQ2xpcCgpKQotICAgICAgICByZXN1bHQuaW50ZXJzZWN0
KHJlbmRlcmVyLmNsaXBSZWN0KExheW91dFBvaW50KCksIDApKTsgLy8gRklYTUU6IEluY29ycmVj
dCBmb3IgQ1NTIHJlZ2lvbnMuCisgICAgaWYgKHJlbmRlcmVyLT5oYXNDbGlwKCkpCisgICAgICAg
IHJlc3VsdC5pbnRlcnNlY3QocmVuZGVyZXItPmNsaXBSZWN0KExheW91dFBvaW50KCksIDApKTsg
Ly8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiAKICAgICByZXR1cm4gcGl4ZWxT
bmFwcGVkSW50UmVjdChyZXN1bHQpOwogfQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgIGlmIChjb21w
QW5jZXN0b3IgJiYgY29tcEFuY2VzdG9yLT5iYWNraW5nKCktPmhhc0NsaXBwaW5nTGF5ZXIoKSkg
ewogICAgICAgICAvLyBJZiB0aGUgY29tcG9zaXRpbmcgYW5jZXN0b3IgaGFzIGEgbGF5ZXIgdG8g
Y2xpcCBjaGlsZHJlbiwgd2UgcGFyZW50IGluIHRoYXQsIGFuZCB0aGVyZWZvcmUKICAgICAgICAg
Ly8gcG9zaXRpb24gcmVsYXRpdmUgdG8gaXQuCi0gICAgICAgIEludFJlY3QgY2xpcHBpbmdCb3gg
PSBjbGlwQm94KHRvUmVuZGVyQm94KGNvbXBBbmNlc3Rvci0+cmVuZGVyZXIoKSkpOworICAgICAg
ICBJbnRSZWN0IGNsaXBwaW5nQm94ID0gY2xpcEJveCh0b1JlbmRlckJveCgmY29tcEFuY2VzdG9y
LT5yZW5kZXJlcigpKSk7CiAgICAgICAgIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IGNs
aXBwaW5nQm94LmxvY2F0aW9uKCk7CiAgICAgfSBlbHNlIGlmIChjb21wQW5jZXN0b3IpCiAgICAg
ICAgIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3Vu
ZHMubG9jYXRpb24oKTsKQEAgLTY1Nyw5ICs2NTcsOSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAgICAgZ3JhcGhpY3NMYXllclBh
cmVudExvY2F0aW9uID0gcmVuZGVyZXIoKS52aWV3KCkuZG9jdW1lbnRSZWN0KCkubG9jYXRpb24o
KTsKIAogICAgIGlmIChjb21wQW5jZXN0b3IgJiYgY29tcEFuY2VzdG9yLT5uZWVkc0NvbXBvc2l0
ZWRTY3JvbGxpbmcoKSkgewotICAgICAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IHRvUmVuZGVy
Qm94KGNvbXBBbmNlc3Rvci0+cmVuZGVyZXIoKSk7CisgICAgICAgIFJlbmRlckJveCogcmVuZGVy
Qm94ID0gdG9SZW5kZXJCb3goJmNvbXBBbmNlc3Rvci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIElu
dFNpemUgc2Nyb2xsT2Zmc2V0ID0gY29tcEFuY2VzdG9yLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQo
KTsKLSAgICAgICAgSW50UG9pbnQgc2Nyb2xsT3JpZ2luKHJlbmRlckJveC5ib3JkZXJMZWZ0KCks
IHJlbmRlckJveC5ib3JkZXJUb3AoKSk7CisgICAgICAgIEludFBvaW50IHNjcm9sbE9yaWdpbihy
ZW5kZXJCb3gtPmJvcmRlckxlZnQoKSwgcmVuZGVyQm94LT5ib3JkZXJUb3AoKSk7CiAgICAgICAg
IGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IHNjcm9sbE9yaWdpbiAtIHNjcm9sbE9mZnNl
dDsKICAgICB9CiAgICAgCkBAIC03MDMsNyArNzAzLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxh
eWVyIHRoYXQgY2xpcHMgY2hpbGRyZW4sIHBvc2l0aW9uIGl0LgogICAgIEludFJlY3QgY2xpcHBp
bmdCb3g7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIGNsaXBMYXllciA9IGNsaXBwaW5nTGF5ZXIo
KSkgewotICAgICAgICBjbGlwcGluZ0JveCA9IGNsaXBCb3godG9SZW5kZXJCb3gocmVuZGVyZXIo
KSkpOworICAgICAgICBjbGlwcGluZ0JveCA9IGNsaXBCb3godG9SZW5kZXJCb3goJnJlbmRlcmVy
KCkpKTsKICAgICAgICAgY2xpcExheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KGNsaXBwaW5n
Qm94LmxvY2F0aW9uKCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpKTsKICAg
ICAgICAgY2xpcExheWVyLT5zZXRTaXplKGNsaXBwaW5nQm94LnNpemUoKSk7CiAgICAgICAgIGNs
aXBMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKHRvSW50U2l6ZShjbGlwcGluZ0JveC5sb2Nh
dGlvbigpKSk7CkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgfQogICAgIAogICAgIGlmIChtX293bmlu
Z0xheWVyLT5oYXNUcmFuc2Zvcm0oKSkgewotICAgICAgICBjb25zdCBJbnRSZWN0IGJvcmRlckJv
eCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKTsK
KyAgICAgICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJveCgmcmVuZGVyZXIo
KSktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKTsKIAogICAgICAgICAvLyBHZXQgbGF5b3V0
IGJvdW5kcyBpbiB0aGUgY29vcmRzIG9mIGNvbXBBbmNlc3RvciB0byBtYXRjaCByZWxhdGl2ZUNv
bXBvc2l0aW5nQm91bmRzLgogICAgICAgICBJbnRSZWN0IGxheWVyQm91bmRzKGRlbHRhLCBib3Jk
ZXJCb3guc2l6ZSgpKTsKQEAgLTc5Nyw4ICs3OTcsOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKIAogICAgIGlmIChtX3Njcm9sbGluZ0xh
eWVyKSB7CiAgICAgICAgIEFTU0VSVChtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXIpOwotICAgICAg
ICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpOwotICAgICAg
ICBJbnRSZWN0IHBhZGRpbmdCb3gocmVuZGVyQm94LmJvcmRlckxlZnQoKSwgcmVuZGVyQm94LmJv
cmRlclRvcCgpLCByZW5kZXJCb3gud2lkdGgoKSAtIHJlbmRlckJveC5ib3JkZXJMZWZ0KCkgLSBy
ZW5kZXJCb3guYm9yZGVyUmlnaHQoKSwgcmVuZGVyQm94LmhlaWdodCgpIC0gcmVuZGVyQm94LmJv
cmRlclRvcCgpIC0gcmVuZGVyQm94LmJvcmRlckJvdHRvbSgpKTsKKyAgICAgICAgUmVuZGVyQm94
KiByZW5kZXJCb3ggPSB0b1JlbmRlckJveCgmcmVuZGVyZXIoKSk7CisgICAgICAgIEludFJlY3Qg
cGFkZGluZ0JveChyZW5kZXJCb3gtPmJvcmRlckxlZnQoKSwgcmVuZGVyQm94LT5ib3JkZXJUb3Ao
KSwgcmVuZGVyQm94LT53aWR0aCgpIC0gcmVuZGVyQm94LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJC
b3gtPmJvcmRlclJpZ2h0KCksIHJlbmRlckJveC0+aGVpZ2h0KCkgLSByZW5kZXJCb3gtPmJvcmRl
clRvcCgpIC0gcmVuZGVyQm94LT5ib3JkZXJCb3R0b20oKSk7CiAgICAgICAgIEludFNpemUgc2Ny
b2xsT2Zmc2V0ID0gbV9vd25pbmdMYXllci0+c2Nyb2xsT2Zmc2V0KCk7CiAKICAgICAgICAgbV9z
Y3JvbGxpbmdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChwYWRkaW5nQm94LmxvY2F0aW9u
KCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpKTsKQEAgLTkyNSwxNSArOTI1
LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUludGVybmFsSGllcmFyY2h5KCkK
IAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlc2V0Q29udGVudHNSZWN0KCkKIHsKLSAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRl
bnRzQm94KCkpKTsKLSAgICAKLSAgICBMYXlvdXRSZWN0IGNvbnRlbnRzQ2xpcHBpbmdSZWN0Owot
ICAgIGlmIChyZW5kZXJlcigpLmlzQm94KCkpCi0gICAgICAgIGNvbnRlbnRzQ2xpcHBpbmdSZWN0
ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuY29udGVudEJveFJlY3QoKTsKLQotICAgIGNvbnRl
bnRzQ2xpcHBpbmdSZWN0Lm1vdmUoY29udGVudE9mZnNldEluQ29tcG9zdGluZ0xheWVyKCkpOwot
ICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QocGl4ZWxTbmFwcGVk
SW50UmVjdChjb250ZW50c0NsaXBwaW5nUmVjdCkpOwotCisgICAgSW50UmVjdCByZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChjb250ZW50c0JveCgpKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNl
dENvbnRlbnRzUmVjdChyZWN0KTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVGls
ZVNpemUoSW50U2l6ZSgpKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVGlsZVBo
YXNlKEludFBvaW50KCkpOwogfQpAQCAtMTA4NSwxMSArMTA3OCw4IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHNMYXllcnMoY29uc3QgSW50U2l6ZSYg
b2Zmc2V0RnJvCiAgICAgICAgIGlmIChoQmFyKSB7CiAgICAgICAgICAgICBsYXllci0+c2V0UG9z
aXRpb24oaEJhci0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKSAtIG9mZnNldEZyb21Sb290IC0gb2Zm
c2V0RnJvbVJlbmRlcmVyKTsKICAgICAgICAgICAgIGxheWVyLT5zZXRTaXplKGhCYXItPmZyYW1l
UmVjdCgpLnNpemUoKSk7Ci0gICAgICAgICAgICBpZiAobGF5ZXItPmhhc0NvbnRlbnRzTGF5ZXIo
KSkgewotICAgICAgICAgICAgICAgIEludFJlY3QgYmFyUmVjdCA9IEludFJlY3QoSW50UG9pbnQo
KSwgaEJhci0+ZnJhbWVSZWN0KCkuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBsYXllci0+c2V0
Q29udGVudHNSZWN0KGJhclJlY3QpOwotICAgICAgICAgICAgICAgIGxheWVyLT5zZXRDb250ZW50
c0NsaXBwaW5nUmVjdChiYXJSZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChs
YXllci0+aGFzQ29udGVudHNMYXllcigpKQorICAgICAgICAgICAgICAgIGxheWVyLT5zZXRDb250
ZW50c1JlY3QoSW50UmVjdChJbnRQb2ludCgpLCBoQmFyLT5mcmFtZVJlY3QoKS5zaXplKCkpKTsK
ICAgICAgICAgfQogICAgICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGhCYXIgJiYgIWxheWVy
LT5oYXNDb250ZW50c0xheWVyKCkpOwogICAgIH0KQEAgLTEwOTksMTEgKzEwODksOCBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKGNvbnN0
IEludFNpemUmIG9mZnNldEZybwogICAgICAgICBpZiAodkJhcikgewogICAgICAgICAgICAgbGF5
ZXItPnNldFBvc2l0aW9uKHZCYXItPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXRGcm9t
Um9vdCAtIG9mZnNldEZyb21SZW5kZXJlcik7CiAgICAgICAgICAgICBsYXllci0+c2V0U2l6ZSh2
QmFyLT5mcmFtZVJlY3QoKS5zaXplKCkpOwotICAgICAgICAgICAgaWYgKGxheWVyLT5oYXNDb250
ZW50c0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IGJhclJlY3QgPSBJbnRSZWN0
KEludFBvaW50KCksIHZCYXItPmZyYW1lUmVjdCgpLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAg
bGF5ZXItPnNldENvbnRlbnRzUmVjdChiYXJSZWN0KTsKLSAgICAgICAgICAgICAgICBsYXllci0+
c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoYmFyUmVjdCk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAobGF5ZXItPmhhc0NvbnRlbnRzTGF5ZXIoKSkKKyAgICAgICAgICAgICAgICBsYXll
ci0+c2V0Q29udGVudHNSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgdkJhci0+ZnJhbWVSZWN0KCku
c2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgbGF5ZXItPnNldERyYXdzQ29udGVudCh2QmFy
ICYmICFsYXllci0+aGFzQ29udGVudHNMYXllcigpKTsKICAgICB9CkBAIC0xMzk2LDkgKzEzODMs
NyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRGlyZWN0bHlDb21wb3NpdGVkQmFj
a2dyb3VuZENvbG9yKGJvb2wgaXNTaW1wbGVDbwogCiAgICAgLy8gQW4gdW5zZXQgKGludmFsaWQp
IGNvbG9yIHdpbGwgcmVtb3ZlIHRoZSBzb2xpZCBjb2xvci4KICAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgSW50UmVjdCBj
b250ZW50c1JlY3QgPSBiYWNrZ3JvdW5kQm94KCk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1JlY3QoY29udGVudHNSZWN0KTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRl
bnRzQ2xpcHBpbmdSZWN0KGNvbnRlbnRzUmVjdCk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1JlY3QoYmFja2dyb3VuZEJveCgpKTsKICAgICBkaWRVcGRhdGVDb250ZW50c1JlY3Qg
PSB0cnVlOwogfQogCkBAIC0xNDU0LDExICsxNDM5LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1hZ2UoYm9vbCBpc1NpbXBs
ZUNvCiAgICAgSW50U2l6ZSB0aWxlU2l6ZTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBz
dHlsZS0+YmFja2dyb3VuZExheWVycygpLT5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgp
OwotICAgIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLmdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZElt
YWdlKCZtX293bmluZ0xheWVyLT5yZW5kZXJlcigpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXpl
KTsKKyAgICB0b1JlbmRlckJveCgmcmVuZGVyZXIoKSktPmdldEdlb21ldHJ5Rm9yQmFja2dyb3Vu
ZEltYWdlKCZtX293bmluZ0xheWVyLT5yZW5kZXJlcigpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVT
aXplKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVGlsZVNpemUodGlsZVNpemUp
OwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlUGhhc2UocGhhc2UpOwogICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KGRlc3RSZWN0KTsKLSAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KGRlc3RSZWN0KTsKICAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZS5nZXQoKSk7CiAgICAgZGlkVXBkYXRl
Q29udGVudHNSZWN0ID0gdHJ1ZTsKIH0KQEAgLTE2NjEsNyArMTY0NSw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjpjb250YWluc1BhaW50ZWRDb250ZW50KGJvb2wgaXNTaW1wbGVDb250YWlu
ZXIpIGNvbnN0CiAgICAgLy8gRklYTUU6IHdlIGNvdWxkIG9wdGltaXplIGNhc2VzIHdoZXJlIHRo
ZSBpbWFnZSwgdmlkZW8gb3IgY2FudmFzIGlzIGtub3duIHRvIGZpbGwgdGhlIGJvcmRlciBib3gg
ZW50aXJlbHksCiAgICAgLy8gYW5kIHNldCBiYWNrZ3JvdW5kIGNvbG9yIG9uIHRoZSBsYXllciBp
biB0aGF0IGNhc2UsIGluc3RlYWQgb2YgYWxsb2NhdGluZyBiYWNraW5nIHN0b3JlIGFuZCBwYWlu
dGluZy4KICNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKHJlbmRlcmVyKCkuaXNWaWRlbygpICYm
IHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIoKSkuc2hvdWxkRGlzcGxheVZpZGVvKCkpCisgICAgaWYg
KHJlbmRlcmVyKCkuaXNWaWRlbygpICYmIHRvUmVuZGVyVmlkZW8oJnJlbmRlcmVyKCkpLT5zaG91
bGREaXNwbGF5VmlkZW8oKSkKICAgICAgICAgcmV0dXJuIG1fb3duaW5nTGF5ZXItPmhhc0JveERl
Y29yYXRpb25zT3JCYWNrZ3JvdW5kKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpICYmIFVT
RShDQSkKQEAgLTE2ODAsMTIgKzE2NjQsMTIgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6Omlz
RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoKSBjb25zdAogICAgIGlmICghcmVuZGVyZXIoKS5pc0lt
YWdlKCkgfHwgbV9vd25pbmdMYXllci0+aGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmQoKSB8
fCByZW5kZXJlcigpLmhhc0NsaXAoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVu
ZGVySW1hZ2UmIGltYWdlUmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOwotICAg
IGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlbmRlcmVyLmNhY2hlZEltYWdl
KCkpIHsKKyAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9IHRvUmVuZGVySW1hZ2UoJnJl
bmRlcmVyKCkpOworICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlbmRl
cmVyLT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UtPmhhc0ltYWdl
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgSW1hZ2UqIGltYWdlID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoJmltYWdlUmVuZGVyZXIpOworICAgICAgICBJ
bWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVy
KTsKICAgICAgICAgaWYgKCFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xNzI1LDEzICsxNzA5LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogewogICAgIEFTU0VSVChy
ZW5kZXJlcigpLmlzSW1hZ2UoKSk7Ci0gICAgUmVuZGVySW1hZ2UmIGltYWdlUmVuZGVyZXIgPSB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpOworICAgIFJlbmRlckltYWdlKiBpbWFnZVJlbmRlcmVy
ID0gdG9SZW5kZXJJbWFnZSgmcmVuZGVyZXIoKSk7CiAKLSAgICBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UgPSBpbWFnZVJlbmRlcmVyLmNhY2hlZEltYWdlKCk7CisgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hl
ZEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFn
ZS0+aW1hZ2VGb3JSZW5kZXJlcigmaW1hZ2VSZW5kZXJlcik7CisgICAgSW1hZ2UqIGltYWdlID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlcik7CiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzQxLDExICsxNzI1LDYgQEAgdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogCiAgICAgLy8gVGhpcyBpcyBh
IG5vLW9wIGlmIHRoZSBsYXllciBkb2Vzbid0IGhhdmUgYW4gaW5uZXIgbGF5ZXIgZm9yIHRoZSBp
bWFnZS4KICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzUmVjdChwaXhlbFNuYXBwZWRJ
bnRSZWN0KGNvbnRlbnRzQm94KCkpKTsKLQotICAgIExheW91dFJlY3QgY29udGVudHNDbGlwcGlu
Z1JlY3QgPSBpbWFnZVJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCk7Ci0gICAgY29udGVudHNDbGlw
cGluZ1JlY3QubW92ZShjb250ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7Ci0gICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0
KGNvbnRlbnRzQ2xpcHBpbmdSZWN0KSk7Ci0KICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRl
bnRzVG9JbWFnZShpbWFnZSk7CiAgICAgYm9vbCBpc1NpbXBsZUNvbnRhaW5lciA9IGZhbHNlOwog
ICAgIHVwZGF0ZURyYXdzQ29udGVudChpc1NpbXBsZUNvbnRhaW5lcik7CkBAIC0xNzkzLDMyICsx
NzcyLDI4IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250ZW50c0JveCgpIGNv
bnN0CiAgICAgaWYgKCFyZW5kZXJlcigpLmlzQm94KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRS
ZWN0KCk7CiAKLSAgICBSZW5kZXJCb3gmIHJlbmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVy
KCkpOwogICAgIExheW91dFJlY3QgY29udGVudHNSZWN0OwogI2lmIEVOQUJMRShWSURFTykKLSAg
ICBpZiAocmVuZGVyQm94LmlzVmlkZW8oKSkKLSAgICAgICAgY29udGVudHNSZWN0ID0gdG9SZW5k
ZXJWaWRlbyhyZW5kZXJCb3gpLnZpZGVvQm94KCk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgaWYg
KHJlbmRlckJveC5pc1JlbmRlclJlcGxhY2VkKCkpIHsKLSAgICAgICAgUmVuZGVyUmVwbGFjZWQm
IHJlbmRlclJlcGxhY2VkID0gKnRvUmVuZGVyUmVwbGFjZWQoJnJlbmRlckJveCk7Ci0gICAgICAg
IGNvbnRlbnRzUmVjdCA9IHJlbmRlclJlcGxhY2VkLnJlcGxhY2VkQ29udGVudFJlY3QocmVuZGVy
Qm94LmludHJpbnNpY1NpemUoKSk7CisgICAgaWYgKHJlbmRlcmVyKCkuaXNWaWRlbygpKSB7Cisg
ICAgICAgIFJlbmRlclZpZGVvKiB2aWRlb1JlbmRlcmVyID0gdG9SZW5kZXJWaWRlbygmcmVuZGVy
ZXIoKSk7CisgICAgICAgIGNvbnRlbnRzUmVjdCA9IHZpZGVvUmVuZGVyZXItPnZpZGVvQm94KCk7
CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnRlbnRzUmVjdCA9IHJlbmRlckJveC5jb250ZW50Qm94
UmVjdCgpOworI2VuZGlmCisgICAgICAgIGNvbnRlbnRzUmVjdCA9IHRvUmVuZGVyQm94KCZyZW5k
ZXJlcigpKS0+Y29udGVudEJveFJlY3QoKTsKIAogICAgIGNvbnRlbnRzUmVjdC5tb3ZlKGNvbnRl
bnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpKTsKICAgICByZXR1cm4gY29udGVudHNSZWN0Owog
fQogCi1zdGF0aWMgTGF5b3V0UmVjdCBiYWNrZ3JvdW5kUmVjdEZvckJveChjb25zdCBSZW5kZXJC
b3gmIGJveCkKK3N0YXRpYyBMYXlvdXRSZWN0IGJhY2tncm91bmRSZWN0Rm9yQm94KGNvbnN0IFJl
bmRlckJveCogYm94KQogewotICAgIHN3aXRjaCAoYm94LnN0eWxlKCktPmJhY2tncm91bmRDbGlw
KCkpIHsKKyAgICBzd2l0Y2ggKGJveC0+c3R5bGUoKS0+YmFja2dyb3VuZENsaXAoKSkgewogICAg
IGNhc2UgQm9yZGVyRmlsbEJveDoKLSAgICAgICAgcmV0dXJuIGJveC5ib3JkZXJCb3hSZWN0KCk7
CisgICAgICAgIHJldHVybiBib3gtPmJvcmRlckJveFJlY3QoKTsKICAgICBjYXNlIFBhZGRpbmdG
aWxsQm94OgotICAgICAgICByZXR1cm4gYm94LnBhZGRpbmdCb3hSZWN0KCk7CisgICAgICAgIHJl
dHVybiBib3gtPnBhZGRpbmdCb3hSZWN0KCk7CiAgICAgY2FzZSBDb250ZW50RmlsbEJveDoKLSAg
ICAgICAgcmV0dXJuIGJveC5jb250ZW50Qm94UmVjdCgpOworICAgICAgICByZXR1cm4gYm94LT5j
b250ZW50Qm94UmVjdCgpOwogICAgIGNhc2UgVGV4dEZpbGxCb3g6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTE4MzIsNyArMTgwNyw3IEBAIEludFJlY3QgUmVuZGVyTGF5ZXJCYWNraW5nOjpi
YWNrZ3JvdW5kQm94KCkgY29uc3QKICAgICBpZiAoIXJlbmRlcmVyKCkuaXNCb3goKSkKICAgICAg
ICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIExheW91dFJlY3QgYmFja2dyb3VuZEJveCA9IGJh
Y2tncm91bmRSZWN0Rm9yQm94KHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpKTsKKyAgICBMYXlvdXRS
ZWN0IGJhY2tncm91bmRCb3ggPSBiYWNrZ3JvdW5kUmVjdEZvckJveCh0b1JlbmRlckJveCgmcmVu
ZGVyZXIoKSkpOwogICAgIGJhY2tncm91bmRCb3gubW92ZShjb250ZW50T2Zmc2V0SW5Db21wb3N0
aW5nTGF5ZXIoKSk7CiAgICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoYmFja2dyb3VuZEJv
eCk7CiB9CkBAIC0yMTM1LDcgKzIxMTAsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiogYW5pbQogCiAg
ICAgYm9vbCBkaWRBbmltYXRlID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKGhhc1RyYW5zZm9ybSAm
JiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRvUmVuZGVy
Qm94KHJlbmRlcmVyKCkpLnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXplKCksIGFuaW0s
IGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQorICAgIGlmIChoYXNUcmFu
c2Zvcm0gJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCB0
b1JlbmRlckJveCgmcmVuZGVyZXIoKSktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5zaXpl
KCksIGFuaW0sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQogICAgICAg
ICBkaWRBbmltYXRlID0gdHJ1ZTsKIAogICAgIGlmIChoYXNPcGFjaXR5ICYmIG1fZ3JhcGhpY3NM
YXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgYW5pbSwga2V5ZnJh
bWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCkBAIC0yMTg2LDcgKzIxNjEsNyBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJh
bnNmb3JtVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogICAgICAgICAg
ICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZTo6Y3JlYXRl
KDAsIGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rv
ci5pbnNlcnQoVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU6OmNyZWF0ZSgxLCB0b1N0eWxlLT50cmFu
c2Zvcm0oKSkpOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9u
KHRyYW5zZm9ybVZlY3RvciwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkucGl4ZWxTbmFwcGVkQm9y
ZGVyQm94UmVjdCgpLnNpemUoKSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0
aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRp
bWVPZmZzZXQpKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRp
b24odHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveCgmcmVuZGVyZXIoKSktPnBpeGVsU25hcHBl
ZEJvcmRlckJveFJlY3QoKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFu
aW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
LCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBj
b3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNv
IHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9y
bSh0b1N0eWxlKTsKICAgICAgICAgICAgICAgICBkaWRBbmltYXRlID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXgg
Y2I3NDY0MC4uMDY5NWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTczNSw3ICs3MzUsOCBAQCBib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0
aW5nQ2hhbmdlUgogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAobGF5ZXJDaGFuZ2VkICYmIGxh
eWVyLT5yZW5kZXJlcigpLmlzVmlkZW8oKSkgewogICAgICAgICAvLyBJZiBpdCdzIGEgdmlkZW8s
IGdpdmUgdGhlIG1lZGlhIHBsYXllciBhIGNoYW5jZSB0byBob29rIHVwIHRvIHRoZSBsYXllci4K
LSAgICAgICAgdG9SZW5kZXJWaWRlbyhsYXllci0+cmVuZGVyZXIoKSkuYWNjZWxlcmF0ZWRSZW5k
ZXJpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICAgICAgUmVuZGVyVmlkZW8qIHZpZGVvID0gdG9SZW5k
ZXJWaWRlbygmbGF5ZXItPnJlbmRlcmVyKCkpOworICAgICAgICB2aWRlby0+YWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTE2NywxMiArMTE2
OCwxMiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVtb3ZlQ29tcG9zaXRlZENoaWxk
cmVuKFJlbmRlckxheWVyKiBsYXllcikKIH0KIAogI2lmIEVOQUJMRShWSURFTykKLWJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjYW5BY2NlbGVyYXRlVmlkZW9SZW5kZXJpbmcoUmVuZGVyVmlk
ZW8mIHZpZGVvKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNhbkFjY2VsZXJh
dGVWaWRlb1JlbmRlcmluZyhSZW5kZXJWaWRlbyogbykgY29uc3QKIHsKICAgICBpZiAoIW1faGFz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIHZpZGVvLnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKTsKKyAgICByZXR1cm4gby0+
c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpOwogfQogI2VuZGlmCiAKQEAgLTEzODksOCAr
MTM5MCw2IEBAIFN0cmluZyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4dChM
YXllclRyZWVGbGFncyBmbGFncykKICAgICAgICAgbGF5ZXJUcmVlQmVoYXZpb3IgfD0gTGF5ZXJU
cmVlQXNUZXh0SW5jbHVkZVJlcGFpbnRSZWN0czsKICAgICBpZiAoZmxhZ3MgJiBMYXllclRyZWVG
bGFnc0luY2x1ZGVQYWludGluZ1BoYXNlcykKICAgICAgICAgbGF5ZXJUcmVlQmVoYXZpb3IgfD0g
TGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVBhaW50aW5nUGhhc2VzOwotICAgIGlmIChmbGFncyAmIExh
eWVyVHJlZUZsYWdzSW5jbHVkZUNvbnRlbnRMYXllcnMpCi0gICAgICAgIGxheWVyVHJlZUJlaGF2
aW9yIHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVDb250ZW50TGF5ZXJzOwogCiAgICAgLy8gV2Ug
c2tpcCBkdW1waW5nIHRoZSBzY3JvbGwgYW5kIGNsaXAgbGF5ZXJzIHRvIGtlZXAgbGF5ZXJUcmVl
QXNUZXh0IG91dHB1dAogICAgIC8vIHNpbWlsYXIgYmV0d2VlbiBwbGF0Zm9ybXMuCkBAIC0xNDQz
LDEwICsxNDQyLDYgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhcmVudEZyYW1lQ29u
dGVudExheWVycyhSZW5kZXJQYXJ0KiByZW5kZXJlcikKIC8vIFRoaXMganVzdCB1cGRhdGVzIGxh
eWVyIGdlb21ldHJ5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIGhpZXJhcmNoeS4KIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5kZXJMYXllciogbGF5
ZXIsIGludCBkZXB0aCkKIHsKLSAgICAvLyBGSVhNRTogZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50
cyBpbnNpZGUgYSBuYW1lZCBmbG93IGFyZSBub3QgY29tcG9zaXRlZCB5ZXQuCi0gICAgaWYgKGxh
eWVyLT5pc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogbGF5ZXJCYWNraW5nID0gbGF5ZXItPmJhY2tpbmco
KSkgewogICAgICAgICAvLyBUaGUgY29tcG9zaXRpbmcgc3RhdGUgb2YgYWxsIG91ciBjaGlsZHJl
biBoYXMgYmVlbiB1cGRhdGVkIGFscmVhZHksIHNvIG5vdwogICAgICAgICAvLyB3ZSBjYW4gY29t
cHV0ZSBhbmQgY2FjaGUgdGhlIGNvbXBvc2l0ZWQgYm91bmRzIGZvciB0aGlzIGxheWVyLgpAQCAt
MjA3Nyw4ICsyMDcyLDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JWaWRlbyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKSB7
Ci0gICAgICAgIFJlbmRlclZpZGVvJiB2aWRlbyA9IHRvUmVuZGVyVmlkZW8oKnJlbmRlcmVyKTsK
LSAgICAgICAgcmV0dXJuICh2aWRlby5yZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgfHwg
dmlkZW8uc2hvdWxkRGlzcGxheVZpZGVvKCkpICYmIGNhbkFjY2VsZXJhdGVWaWRlb1JlbmRlcmlu
Zyh2aWRlbyk7CisgICAgICAgIFJlbmRlclZpZGVvKiB2aWRlbyA9IHRvUmVuZGVyVmlkZW8ocmVu
ZGVyZXIpOworICAgICAgICByZXR1cm4gdmlkZW8tPnNob3VsZERpc3BsYXlWaWRlbygpICYmIGNh
bkFjY2VsZXJhdGVWaWRlb1JlbmRlcmluZyh2aWRlbyk7CiAgICAgfQogI2lmIEVOQUJMRShQTFVH
SU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1JlbmRlclBhcnQo
KSkgewpAQCAtMzEyMSwxNSArMzExNiwxNSBAQCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlU3RpY2t5Vmlld3BvcnRDbwogCiAg
ICAgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmll
d3BvcnRDb25zdHJhaW5lZFZpc2libGVDb250ZW50UmVjdCgpOwogCi0gICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QmIHJlbmRlcmVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChsYXllci0+cmVuZGVy
ZXIoKSk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdCgmbGF5ZXItPnJlbmRlcmVyKCkpOwogCiAgICAgU3RpY2t5UG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzOwotICAgIHJlbmRlcmVyLmNvbXB1dGVTdGlja3lQ
b3NpdGlvbkNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCB2aWV3cG9ydFJlY3QpOworICAgIHJlbmRl
cmVyLT5jb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyhjb25zdHJhaW50cywgdmlld3Bv
cnRSZWN0KTsKIAogICAgIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIgPSBsYXllci0+YmFj
a2luZygpLT5ncmFwaGljc0xheWVyKCk7CiAKICAgICBjb25zdHJhaW50cy5zZXRMYXllclBvc2l0
aW9uQXRMYXN0TGF5b3V0KGdyYXBoaWNzTGF5ZXItPnBvc2l0aW9uKCkpOwotICAgIGNvbnN0cmFp
bnRzLnNldFN0aWNreU9mZnNldEF0TGFzdExheW91dChyZW5kZXJlci5zdGlja3lQb3NpdGlvbk9m
ZnNldCgpKTsKKyAgICBjb25zdHJhaW50cy5zZXRTdGlja3lPZmZzZXRBdExhc3RMYXlvdXQocmVu
ZGVyZXItPnN0aWNreVBvc2l0aW9uT2Zmc2V0KCkpOwogCiAgICAgcmV0dXJuIGNvbnN0cmFpbnRz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5oCmluZGV4IGMxNjhlYmYuLjA2NWMwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTIxNCw3ICsyMTQsNyBAQCBwdWJsaWM6
CiAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIC8vIFVzZSBieSBSZW5kZXJWaWRlbyB0byBh
c2sgaWYgaXQgc2hvdWxkIHRyeSB0byB1c2UgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuCi0gICAg
Ym9vbCBjYW5BY2NlbGVyYXRlVmlkZW9SZW5kZXJpbmcoUmVuZGVyVmlkZW8mKSBjb25zdDsKKyAg
ICBib29sIGNhbkFjY2VsZXJhdGVWaWRlb1JlbmRlcmluZyhSZW5kZXJWaWRlbyopIGNvbnN0Owog
I2VuZGlmCiAKICAgICAvLyBXYWxrIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGxheWVycyB3aXRoIDNk
IHRyYW5zZm9ybXMuIFVzZWZ1bCBpbiBjYXNlIHlvdSBuZWVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggNTI3Y2I3OS4uODM2NzUyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTEx
NSw4ICsxMTE1LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpsb2NhbFNlbGVjdGlv
blJlY3QoKQogICAgIGlmICghYm94KQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdChMYXlvdXRQ
b2ludCgpLCBzaXplKCkpOwogICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSBtX2lubGluZUJveFdy
YXBwZXItPnJvb3QoKTsKLSAgICBMYXlvdXRVbml0IG5ld0xvZ2ljYWxUb3AgPSByb290LT5ibG9j
aygpLnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBtX2lubGluZUJveFdy
YXBwZXItPmxvZ2ljYWxCb3R0b20oKSAtIHJvb3QtPnNlbGVjdGlvbkJvdHRvbSgpIDogcm9vdC0+
c2VsZWN0aW9uVG9wKCkgLSBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxUb3AoKTsKLSAgICBp
ZiAocm9vdC0+YmxvY2soKS5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAg
IExheW91dFVuaXQgbmV3TG9naWNhbFRvcCA9IHJvb3QtPmJsb2NrKCktPnN0eWxlKCktPmlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxCb3R0
b20oKSAtIHJvb3QtPnNlbGVjdGlvbkJvdHRvbSgpIDogcm9vdC0+c2VsZWN0aW9uVG9wKCkgLSBt
X2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxUb3AoKTsKKyAgICBpZiAocm9vdC0+YmxvY2soKS0+
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuIExheW91
dFJlY3QoMCwgbmV3TG9naWNhbFRvcCwgd2lkdGgoKSwgcm9vdC0+c2VsZWN0aW9uSGVpZ2h0KCkp
OwogICAgIHJldHVybiBMYXlvdXRSZWN0KG5ld0xvZ2ljYWxUb3AsIDAsIHJvb3QtPnNlbGVjdGlv
bkhlaWdodCgpLCBoZWlnaHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuaAppbmRleCA2NGQ4NTQ5Li4xMjU1NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTg2LDE5ICs4NiwyMCBAQCBwcml2YXRl
OgogICAgIFJlbmRlckxpc3RJdGVtKiBtX2xpc3RJdGVtOwogfTsKIAotaW5saW5lIFJlbmRlckxp
c3RNYXJrZXImIHRvUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJPYmplY3QmIG9iamVjdCkKK2lubGlu
ZSBSZW5kZXJMaXN0TWFya2VyKiB0b1JlbmRlckxpc3RNYXJrZXIoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzTGlz
dE1hcmtlcigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTGlzdE1hcmtlciY+KG9i
amVjdCk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW9iamVjdCB8fCBv
YmplY3QtPmlzTGlzdE1hcmtlcigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTGlz
dE1hcmtlcio+KG9iamVjdCk7CiB9CiAKLWlubGluZSBjb25zdCBSZW5kZXJMaXN0TWFya2VyJiB0
b1JlbmRlckxpc3RNYXJrZXIoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCitpbmxpbmUgY29u
c3QgUmVuZGVyTGlzdE1hcmtlciogdG9SZW5kZXJMaXN0TWFya2VyKGNvbnN0IFJlbmRlck9iamVj
dCogb2JqZWN0KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVj
dC5pc0xpc3RNYXJrZXIoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckxp
c3RNYXJrZXImPihvYmplY3QpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFvYmplY3QgfHwgb2JqZWN0LT5pc0xpc3RNYXJrZXIoKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IFJlbmRlckxpc3RNYXJrZXIqPihvYmplY3QpOwogfQogCi12b2lkIHRvUmVuZGVy
TGlzdE1hcmtlcihjb25zdCBSZW5kZXJMaXN0TWFya2VyJik7CisvLyBUaGlzIHdpbGwgY2F0Y2gg
YW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVyTGlzdE1hcmtl
cihjb25zdCBSZW5kZXJMaXN0TWFya2VyKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBjOGZlYzRhLi45
NTFmODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAt
NjI0LDI3ICs2MjQsNiBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0OjplbmNs
b3NpbmdCb3hNb2RlbE9iamVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgUmVu
ZGVyT2JqZWN0OjpmaXhlZFBvc2l0aW9uZWRXaXRoTmFtZWRGbG93Q29udGFpbmluZ0Jsb2NrKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gKChmbG93VGhyZWFkU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6
Okluc2lkZU91dE9mRmxvd1RocmVhZCkKLSAgICAgICAgJiYgKHN0eWxlKCktPnBvc2l0aW9uKCkg
PT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgJiYgKGNvbnRhaW5pbmdCbG9jaygpLT5pc091dE9m
Rmxvd1JlbmRlckZsb3dUaHJlYWQoKSkpOwotfQotCi1zdGF0aWMgYm9vbCBoYXNGaXhlZFBvc0lu
TmFtZWRGbG93Q29udGFpbmluZ0Jsb2NrKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17
Ci0gICAgQVNTRVJUKHJlbmRlcmVyLT5mbG93VGhyZWFkU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6
Ok5vdEluc2lkZUZsb3dUaHJlYWQpOwotCi0gICAgUmVuZGVyT2JqZWN0KiBjdXJyID0gY29uc3Rf
Y2FzdDxSZW5kZXJPYmplY3QqPihyZW5kZXJlcik7Ci0gICAgd2hpbGUgKGN1cnIpIHsKLSAgICAg
ICAgaWYgKGN1cnItPmZpeGVkUG9zaXRpb25lZFdpdGhOYW1lZEZsb3dDb250YWluaW5nQmxvY2so
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjdXJyID0gY3Vyci0+Y29udGFp
bmluZ0Jsb2NrKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBSZW5kZXJGbG93
VGhyZWFkKiBSZW5kZXJPYmplY3Q6OmxvY2F0ZUZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSBj
b25zdAogewogICAgIEFTU0VSVChmbG93VGhyZWFkU3RhdGUoKSAhPSBOb3RJbnNpZGVGbG93VGhy
ZWFkKTsKQEAgLTEzMjYsMTAgKzEzMDUsNiBAQCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBSZW5k
ZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdAogICAgIC8vIHJlcGFpbnRpbmcg
dG8gZG8gaW5kaXZpZHVhbCByZWdpb24gcmVwYWludHMuCiAgICAgUmVuZGVyRmxvd1RocmVhZCog
cGFyZW50UmVuZGVyRmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAg
ICBpZiAocGFyZW50UmVuZGVyRmxvd1RocmVhZCkgewotICAgICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBoYXMgYSBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQgd2l0aCBuYW1lZCBmbG93IGFzIENCIGFs
b25nIHRoZSBDQiBjaGFpbgotICAgICAgICAvLyB0aGVuIHRoZSByZXBhaW50IGNvbnRhaW5lciBp
cyBub3QgdGhlIGZsb3cgdGhyZWFkLgotICAgICAgICBpZiAoaGFzRml4ZWRQb3NJbk5hbWVkRmxv
d0NvbnRhaW5pbmdCbG9jayh0aGlzKSkKLSAgICAgICAgICAgIHJldHVybiByZXBhaW50Q29udGFp
bmVyOwogICAgICAgICAvLyBUaGUgYW5jZXN0b3IgZG9jdW1lbnQgd2lsbCBkbyB0aGUgcmVwYXJl
bnRpbmcgd2hlbiB0aGUgcmVwYWludCBwcm9wYWdhdGVzIGZ1cnRoZXIgdXAuCiAgICAgICAgIC8v
IFdlJ3JlIGp1c3QgYSBzZWFtbGVzcyBjaGlsZCBkb2N1bWVudCwgYW5kIHdlIGRvbid0IG5lZWQg
dG8gZG8gdGhlIGhhY2tpbmcuCiAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJGbG93VGhyZWFkICYm
ICZwYXJlbnRSZW5kZXJGbG93VGhyZWFkLT5kb2N1bWVudCgpICE9ICZkb2N1bWVudCgpKQpAQCAt
MTM3OSw3ICsxMzU0LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRVc2luZ0NvbnRhaW5l
cihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q28KICAgICB9CiAjZWxzZQog
ICAgIGlmIChyZXBhaW50Q29udGFpbmVyLT5pc1JlbmRlclZpZXcoKSkKLSAgICAgICAgdG9SZW5k
ZXJWaWV3KCpyZXBhaW50Q29udGFpbmVyKS5yZXBhaW50Vmlld1JlY3RhbmdsZShyLCBpbW1lZGlh
dGUpOworICAgICAgICB0b1JlbmRlclZpZXcocmVwYWludENvbnRhaW5lciktPnJlcGFpbnRWaWV3
UmVjdGFuZ2xlKHIsIGltbWVkaWF0ZSk7CiAjZW5kaWYKIH0KIApAQCAtMjMzMSw3ICsyMzA2LDcg
QEAgYm9vbCBSZW5kZXJPYmplY3Q6OmlzUm9vdGVkKFJlbmRlclZpZXcqKiB2aWV3KSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodmlldykKLSAgICAgICAgKnZpZXcgPSAm
Y29uc3RfY2FzdDxSZW5kZXJWaWV3Jj4odG9SZW5kZXJWaWV3KCpvKSk7CisgICAgICAgICp2aWV3
ID0gY29uc3RfY2FzdDxSZW5kZXJWaWV3Kj4odG9SZW5kZXJWaWV3KG8pKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjc2NSw3ICsyNzQwLDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6Om5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFQK
IHZvaWQgUmVuZGVyT2JqZWN0OjpzY2hlZHVsZVJlbGF5b3V0KCkKIHsKICAgICBpZiAoaXNSZW5k
ZXJWaWV3KCkpCi0gICAgICAgIHRvUmVuZGVyVmlldygqdGhpcykuZnJhbWVWaWV3KCkuc2NoZWR1
bGVSZWxheW91dCgpOworICAgICAgICB0b1JlbmRlclZpZXcodGhpcyktPmZyYW1lVmlldygpLnNj
aGVkdWxlUmVsYXlvdXQoKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGlzUm9vdGVkKCkpCiAg
ICAgICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuc2NoZWR1bGVSZWxheW91dE9mU3VidHJlZSh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAzZTZlMmEz
Li5mOWI4ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0y
MTEsNyArMjExLDYgQEAgcHVibGljOgogICAgIFJlbmRlckJveCogZW5jbG9zaW5nQm94KCkgY29u
c3Q7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KCkg
Y29uc3Q7CiAKLSAgICBib29sIGZpeGVkUG9zaXRpb25lZFdpdGhOYW1lZEZsb3dDb250YWluaW5n
QmxvY2soKSBjb25zdDsKICAgICAvLyBGdW5jdGlvbiB0byByZXR1cm4gb3VyIGVuY2xvc2luZyBm
bG93IHRocmVhZCBpZiB3ZSBhcmUgY29udGFpbmVkIGluc2lkZSBvbmUuIFRoaXMKICAgICAvLyBm
dW5jdGlvbiBmb2xsb3dzIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluLgogICAgIFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZGYwNzcyOC4uZGZjMmNiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC01Mzks
OCArNTM5LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6bG9jYWxTZWxlY3Rpb25SZWN0
KGJvb2wgY2hlY2tXaGV0aGVyU2VsZWN0ZWQpIGNvbnN0CiAgICAgICAgIHJldHVybiBMYXlvdXRS
ZWN0KExheW91dFBvaW50KCksIHNpemUoKSk7CiAgICAgCiAgICAgUm9vdElubGluZUJveCogcm9v
dCA9IG1faW5saW5lQm94V3JhcHBlci0+cm9vdCgpOwotICAgIExheW91dFVuaXQgbmV3TG9naWNh
bFRvcCA9IHJvb3QtPmJsb2NrKCkuc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
KSA/IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbEJvdHRvbSgpIC0gcm9vdC0+c2VsZWN0aW9u
Qm90dG9tKCkgOiByb290LT5zZWxlY3Rpb25Ub3AoKSAtIG1faW5saW5lQm94V3JhcHBlci0+bG9n
aWNhbFRvcCgpOwotICAgIGlmIChyb290LT5ibG9jaygpLnN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCisgICAgTGF5b3V0VW5pdCBuZXdMb2dpY2FsVG9wID0gcm9vdC0+YmxvY2so
KS0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IG1faW5saW5lQm94V3Jh
cHBlci0+bG9naWNhbEJvdHRvbSgpIC0gcm9vdC0+c2VsZWN0aW9uQm90dG9tKCkgOiByb290LT5z
ZWxlY3Rpb25Ub3AoKSAtIG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbFRvcCgpOworICAgIGlm
IChyb290LT5ibG9jaygpLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAg
ICAgICByZXR1cm4gTGF5b3V0UmVjdCgwLCBuZXdMb2dpY2FsVG9wLCB3aWR0aCgpLCByb290LT5z
ZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgcmV0dXJuIExheW91dFJlY3QobmV3TG9naWNhbFRvcCwg
MCwgcm9vdC0+c2VsZWN0aW9uSGVpZ2h0KCksIGhlaWdodCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCmluZGV4IDA2MjNiOWUuLmFkYzJmMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIFJlbmRlclJ1YnlSdW4qIFJlbmRlclJ1YnlCYXNlOjpydWJ5UnVuKCkgY29uc3QK
ICAgICBBU1NFUlQocGFyZW50KCkpOwogICAgIEFTU0VSVChwYXJlbnQoKS0+aXNSdWJ5UnVuKCkp
OwogCi0gICAgcmV0dXJuICZ0b1JlbmRlclJ1YnlSdW4oKnBhcmVudCgpKTsKKyAgICByZXR1cm4g
dG9SZW5kZXJSdWJ5UnVuKHBhcmVudCgpKTsKIH0KIAogRVRleHRBbGlnbiBSZW5kZXJSdWJ5QmFz
ZTo6dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCmluZGV4IDk4YTBkOGYu
LmJiYWU3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaApAQCAt
NzgsMTggKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJB
bm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIHsgfQogfTsKIAotaW5saW5lIFJlbmRlclJ1YnlS
dW4mIHRvUmVuZGVyUnVieVJ1bihSZW5kZXJPYmplY3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNSdWJ5UnVuKCkpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxSZW5kZXJSdWJ5UnVuJj4ob2JqZWN0KTsKLX0KLQotaW5saW5lIGNvbnN0
IFJlbmRlclJ1YnlSdW4mIHRvUmVuZGVyUnVieVJ1bihjb25zdCBSZW5kZXJPYmplY3QmIG9iamVj
dCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNSdWJ5
UnVuKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJSdWJ5UnVuJj4ob2Jq
ZWN0KTsKLX0KLQogaW5saW5lIFJlbmRlclJ1YnlSdW4qIHRvUmVuZGVyUnVieVJ1bihSZW5kZXJP
YmplY3QqIG9iamVjdCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigh
b2JqZWN0IHx8IG9iamVjdC0+aXNSdWJ5UnVuKCkpOwpAQCAtMTAzLDcgKzkxLDYgQEAgaW5saW5l
IGNvbnN0IFJlbmRlclJ1YnlSdW4qIHRvUmVuZGVyUnVieVJ1bihjb25zdCBSZW5kZXJPYmplY3Qq
IG9iamVjdCkKIH0KIAogdm9pZCB0b1JlbmRlclJ1YnlSdW4oY29uc3QgUmVuZGVyUnVieVJ1biop
Owotdm9pZCB0b1JlbmRlclJ1YnlSdW4oY29uc3QgUmVuZGVyUnVieVJ1biYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApp
bmRleCAxNWVlN2RmLi5kZGQwYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCkBAIC01MzMsMTIgKzUzMywxMyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGNyZWF0
ZVZpc2libGVQb3NpdGlvbkZvckJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZgogICAg
ICAgICBhZmZpbml0eSA9IG9mZnNldCA+IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSA/IFZQX1VQU1RS
RUFNX0lGX1BPU1NJQkxFIDogRE9XTlNUUkVBTTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHJldHVybiBib3gtPnJlbmRlcmVyKCkuY3JlYXRlVmlzaWJsZVBvc2l0aW9uKG9mZnNldCwgYWZm
aW5pdHkpOworICAgIHJldHVybiBib3gtPnJlbmRlcmVyKCktPmNyZWF0ZVZpc2libGVQb3NpdGlv
bihvZmZzZXQsIGFmZmluaXR5KTsKIH0KIAogc3RhdGljIFZpc2libGVQb3NpdGlvbiBjcmVhdGVW
aXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGkoY29uc3QgSW5saW5lVGV4
dEJveCogYm94LCBpbnQgb2Zmc2V0LCBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSBzaG91bGRB
ZmZpbml0eUJlRG93bnN0cmVhbSkKIHsKICAgICBBU1NFUlQoYm94KTsKKyAgICBBU1NFUlQoYm94
LT5yZW5kZXJlcigpKTsKICAgICBBU1NFUlQob2Zmc2V0ID49IDApOwogCiAgICAgaWYgKG9mZnNl
dCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSA8IGJveC0+bGVuKCkpCkBAIC01NTAs
NyArNTUxLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb25B
ZnRlckFkanVzdGluZ09mZnNldEZvckJpRGkoY29uc3QgSW4KIAogICAgICAgICBjb25zdCBJbmxp
bmVCb3gqIHByZXZCb3ggPSBib3gtPnByZXZMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwog
ICAgICAgICBpZiAoKHByZXZCb3ggJiYgcHJldkJveC0+YmlkaUxldmVsKCkgPT0gYm94LT5iaWRp
TGV2ZWwoKSkKLSAgICAgICAgICAgIHx8IGJveC0+cmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2so
KS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gYm94LT5kaXJlY3Rpb24oKSkgLy8gRklYTUU6IGxl
ZnQgb24gMTJDQkEKKyAgICAgICAgICAgIHx8IGJveC0+cmVuZGVyZXIoKS0+Y29udGFpbmluZ0Js
b2NrKCktPnN0eWxlKCktPmRpcmVjdGlvbigpID09IGJveC0+ZGlyZWN0aW9uKCkpIC8vIEZJWE1F
OiBsZWZ0IG9uIDEyQ0JBCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
Rm9yQm94KGJveCwgYm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVE
b3duc3RyZWFtKTsKIAogICAgICAgICBpZiAocHJldkJveCAmJiBwcmV2Qm94LT5iaWRpTGV2ZWwo
KSA+IGJveC0+YmlkaUxldmVsKCkpIHsKQEAgLTU4MCw3ICs1ODEsNyBAQCBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlE
aShjb25zdCBJbgogCiAgICAgY29uc3QgSW5saW5lQm94KiBuZXh0Qm94ID0gYm94LT5uZXh0TGVh
ZkNoaWxkSWdub3JpbmdMaW5lQnJlYWsoKTsKICAgICBpZiAoKG5leHRCb3ggJiYgbmV4dEJveC0+
YmlkaUxldmVsKCkgPT0gYm94LT5iaWRpTGV2ZWwoKSkKLSAgICAgICAgfHwgYm94LT5yZW5kZXJl
cigpLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBib3gtPmRpcmVj
dGlvbigpKQorICAgICAgICB8fCBib3gtPnJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpLT5z
dHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBib3gtPmRpcmVjdGlvbigpKQogICAgICAgICByZXR1cm4g
Y3JlYXRlVmlzaWJsZVBvc2l0aW9uRm9yQm94KGJveCwgYm94LT5jYXJldFJpZ2h0bW9zdE9mZnNl
dCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CiAKICAgICAvLyBvZmZzZXQgaXMgb24g
dGhlIHJpZ2h0IGVkZ2UKQEAgLTcyMSw5ICs3MjIsOSBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6
OmxvY2FsQ2FyZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCBpbnQgY2FyZXRPZmZzZXQsIExh
eQogQUxXQVlTX0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShjb25zdCBG
b250JiBmLCBpbnQgc3RhcnQsIGludCBsZW4sIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3QgU2lt
cGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxv
dykgY29uc3QKIHsKICAgICBpZiAoc3R5bGUoKS0+aGFzVGV4dENvbWJpbmUoKSAmJiBpc0NvbWJp
bmVUZXh0KCkpIHsKLSAgICAgICAgY29uc3QgUmVuZGVyQ29tYmluZVRleHQmIGNvbWJpbmVUZXh0
ID0gdG9SZW5kZXJDb21iaW5lVGV4dCgqdGhpcyk7Ci0gICAgICAgIGlmIChjb21iaW5lVGV4dC5p
c0NvbWJpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gY29tYmluZVRleHQuY29tYmluZWRUZXh0
V2lkdGgoZik7CisgICAgICAgIGNvbnN0IFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5lVGV4dCA9
IHRvUmVuZGVyQ29tYmluZVRleHQodGhpcyk7CisgICAgICAgIGlmIChjb21iaW5lVGV4dC0+aXND
b21iaW5lZCgpKQorICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVUZXh0LT5jb21iaW5lZFRleHRX
aWR0aChmKTsKICAgICB9CiAKICAgICBpZiAoZi5pc0ZpeGVkUGl0Y2goKSAmJiAhZi5pc1NtYWxs
Q2FwcygpICYmIG1faXNBbGxBU0NJSSAmJiAoIWdseXBoT3ZlcmZsb3cgfHwgIWdseXBoT3ZlcmZs
b3ctPmNvbXB1dGVCb3VuZHMpKSB7CkBAIC0xNDkzLDcgKzE0OTQsNyBAQCB2b2lkIFJlbmRlclRl
eHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKIAogSW5saW5lVGV4dEJveCogUmVu
ZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJuIG5ldyAocmVuZGVyQXJlbmEo
KSkgSW5saW5lVGV4dEJveCgqdGhpcyk7CisgICAgcmV0dXJuIG5ldyAocmVuZGVyQXJlbmEoKSkg
SW5saW5lVGV4dEJveCh0aGlzKTsKIH0KIAogSW5saW5lVGV4dEJveCogUmVuZGVyVGV4dDo6Y3Jl
YXRlSW5saW5lVGV4dEJveCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRl
eCBlMThjMWExLi5hOWEyMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
QEAgLTE5OCwxOCArMTk4LDYgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVUZXh0Qm94KiBtX2xhc3RU
ZXh0Qm94OwogfTsKIAotaW5saW5lIFJlbmRlclRleHQmIHRvUmVuZGVyVGV4dChSZW5kZXJPYmpl
Y3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmpl
Y3QuaXNUZXh0KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Jj4ob2JqZWN0
KTsKLX0KLQotaW5saW5lIGNvbnN0IFJlbmRlclRleHQmIHRvUmVuZGVyVGV4dChjb25zdCBSZW5k
ZXJPYmplY3QmIG9iamVjdCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihvYmplY3QuaXNUZXh0KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJU
ZXh0Jj4ob2JqZWN0KTsKLX0KLQogaW5saW5lIFJlbmRlclRleHQqIHRvUmVuZGVyVGV4dChSZW5k
ZXJPYmplY3QqIG9iamVjdCkKIHsgCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIW9iamVjdCB8fCBvYmplY3QtPmlzVGV4dCgpKTsKQEAgLTIyNCw3ICsyMTIsNiBAQCBpbmxp
bmUgY29uc3QgUmVuZGVyVGV4dCogdG9SZW5kZXJUZXh0KGNvbnN0IFJlbmRlck9iamVjdCogb2Jq
ZWN0KQogCiAvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNh
c3QuCiB2b2lkIHRvUmVuZGVyVGV4dChjb25zdCBSZW5kZXJUZXh0Kik7Ci12b2lkIHRvUmVuZGVy
VGV4dChjb25zdCBSZW5kZXJUZXh0Jik7CiAKICNpZmRlZiBOREVCVUcKIGlubGluZSB2b2lkIFJl
bmRlclRleHQ6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGY0NTY4MmMuLmE5NmNjNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTI0Nywx
NCArMjQ3LDE0IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICBpZiAoby5pc1RleHQoKSkg
ewogICAgICAgICAvLyBGSVhNRTogV291bGQgYmUgYmV0dGVyIHRvIGR1bXAgdGhlIGJvdW5kaW5n
IGJveCB4IGFuZCB5IHJhdGhlciB0aGFuIHRoZSBmaXJzdCBydW4ncyB4IGFuZCB5LCBidXQgdGhh
dCB3b3VsZCBpbnZvbHZlIHVwZGF0aW5nCiAgICAgICAgIC8vIG1hbnkgdGVzdCByZXN1bHRzLgot
ICAgICAgICBjb25zdCBSZW5kZXJUZXh0JiB0ZXh0ID0gdG9SZW5kZXJUZXh0KG8pOworICAgICAg
ICBjb25zdCBSZW5kZXJUZXh0JiB0ZXh0ID0gKnRvUmVuZGVyVGV4dCgmbyk7CiAgICAgICAgIElu
dFJlY3QgbGluZXNCb3ggPSB0ZXh0LmxpbmVzQm91bmRpbmdCb3goKTsKICAgICAgICAgciA9IElu
dFJlY3QodGV4dC5maXJzdFJ1blgoKSwgdGV4dC5maXJzdFJ1blkoKSwgbGluZXNCb3gud2lkdGgo
KSwgbGluZXNCb3guaGVpZ2h0KCkpOwogICAgICAgICBpZiAoYWRqdXN0Rm9yVGFibGVDZWxscyAm
JiAhdGV4dC5maXJzdFRleHRCb3goKSkKICAgICAgICAgICAgIGFkanVzdEZvclRhYmxlQ2VsbHMg
PSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKG8uaXNSZW5kZXJJbmxpbmUoKSkgewogICAgICAgICAv
LyBGSVhNRTogV291bGQgYmUgYmV0dGVyIG5vdCB0byBqdXN0IGR1bXAgMCwgMCBhcyB0aGUgeCBh
bmQgeSBoZXJlLgotICAgICAgICBjb25zdCBSZW5kZXJJbmxpbmUmIGlubGluZUZsb3cgPSB0b1Jl
bmRlcklubGluZShvKTsKKyAgICAgICAgY29uc3QgUmVuZGVySW5saW5lJiBpbmxpbmVGbG93ID0g
KnRvUmVuZGVySW5saW5lKCZvKTsKICAgICAgICAgciA9IEludFJlY3QoMCwgMCwgaW5saW5lRmxv
dy5saW5lc0JvdW5kaW5nQm94KCkud2lkdGgoKSwgaW5saW5lRmxvdy5saW5lc0JvdW5kaW5nQm94
KCkuaGVpZ2h0KCkpOwogICAgICAgICBhZGp1c3RGb3JUYWJsZUNlbGxzID0gZmFsc2U7CiAgICAg
fSBlbHNlIGlmIChvLmlzVGFibGVDZWxsKCkpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFJl
bmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBS
ZW5kZXJPYmplY3QmIG8sCiAgICAgICAgIGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCA9ICp0
b1JlbmRlclRhYmxlQ2VsbCgmbyk7CiAgICAgICAgIHIgPSBMYXlvdXRSZWN0KGNlbGwueCgpLCBj
ZWxsLnkoKSArIGNlbGwuaW50cmluc2ljUGFkZGluZ0JlZm9yZSgpLCBjZWxsLndpZHRoKCksIGNl
bGwuaGVpZ2h0KCkgLSBjZWxsLmludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSAtIGNlbGwuaW50cmlu
c2ljUGFkZGluZ0FmdGVyKCkpOwogICAgIH0gZWxzZSBpZiAoby5pc0JveCgpKQotICAgICAgICBy
ID0gdG9SZW5kZXJCb3gobykuZnJhbWVSZWN0KCk7CisgICAgICAgIHIgPSB0b1JlbmRlckJveCgm
byktPmZyYW1lUmVjdCgpOwogCiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBpbiBvcmRlciB0byBl
bnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGxheW91dCB0ZXN0IHJlc3VsdHMuCiAg
ICAgaWYgKGFkanVzdEZvclRhYmxlQ2VsbHMpCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBSZW5k
ZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLAogICAgICAgICBpZiAoIW8uaXNCb3hNb2RlbE9iamVjdCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBib3gg
PSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG8pOworICAgICAgICBjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgYm94ID0gKnRvUmVuZGVyQm94TW9kZWxPYmplY3QoJm8pOwogICAgICAgICBpZiAo
Ym94LmJvcmRlclRvcCgpIHx8IGJveC5ib3JkZXJSaWdodCgpIHx8IGJveC5ib3JkZXJCb3R0b20o
KSB8fCBib3guYm9yZGVyTGVmdCgpKSB7CiAgICAgICAgICAgICB0cyA8PCAiIFtib3JkZXI6IjsK
IApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJP
YmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICNlbmRpZgogCiAg
ICAgaWYgKG8uaXNMaXN0TWFya2VyKCkpIHsKLSAgICAgICAgU3RyaW5nIHRleHQgPSB0b1JlbmRl
ckxpc3RNYXJrZXIobykudGV4dCgpOworICAgICAgICBTdHJpbmcgdGV4dCA9IHRvUmVuZGVyTGlz
dE1hcmtlcigmbyktPnRleHQoKTsKICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgIT0gMSkKICAgICAgICAgICAgICAgICB0ZXh0ID0g
cXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKHRleHQpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZv
aWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgaW50IGluZGVu
dCwgUmVuZGVyQXNUZXh0QmVoYXZpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG8u
aXNTVkdJbmxpbmVUZXh0KCkpIHsKLSAgICAgICAgd3JpdGVTVkdJbmxpbmVUZXh0KHRzLCB0b1Jl
bmRlclNWR0lubGluZVRleHQobyksIGluZGVudCk7CisgICAgICAgIHdyaXRlU1ZHSW5saW5lVGV4
dCh0cywgKnRvUmVuZGVyU1ZHSW5saW5lVGV4dCgmbyksIGluZGVudCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKG8uaXNTVkdJbWFnZSgpKSB7CkBAIC01NzIsNyArNTcyLDcgQEAg
dm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBpbnQgaW5k
ZW50LCBSZW5kZXJBc1RleHRCZWhhdmkKICAgICB0cyA8PCAiXG4iOwogCiAgICAgaWYgKG8uaXNU
ZXh0KCkgJiYgIW8uaXNCUigpKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclRleHQmIHRleHQgPSB0
b1JlbmRlclRleHQobyk7CisgICAgICAgIGNvbnN0IFJlbmRlclRleHQmIHRleHQgPSAqdG9SZW5k
ZXJUZXh0KCZvKTsKICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSB0ZXh0LmZpcnN0
VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICAgICAg
d3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAgICAgICAgICAgd3JpdGVUZXh0UnVuKHRz
LCB0ZXh0LCAqYm94KTsKQEAgLTY5MCwxMyArNjkwLDEzIEBAIHN0YXRpYyB2b2lkIHdyaXRlUmVu
ZGVyUmVnaW9uTGlzdChjb25zdCBSZW5kZXJSZWdpb25MaXN0JiBmbG93VGhyZWFkUmVnaW9uTGlz
dCwKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlUmVuZGVyTmFtZWRGbG93VGhyZWFkcyhU
ZXh0U3RyZWFtJiB0cywgUmVuZGVyVmlldyYgcmVuZGVyVmlldywgY29uc3QgUmVuZGVyTGF5ZXIq
IHJvb3RMYXllciwKK3N0YXRpYyB2b2lkIHdyaXRlUmVuZGVyTmFtZWRGbG93VGhyZWFkcyhUZXh0
U3RyZWFtJiB0cywgUmVuZGVyVmlldyogcmVuZGVyVmlldywgY29uc3QgUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHBhaW50
UmVjdCwgaW50IGluZGVudCwgUmVuZGVyQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAg
aWYgKCFyZW5kZXJWaWV3Lmhhc1JlbmRlck5hbWVkRmxvd1RocmVhZHMoKSkKKyAgICBpZiAoIXJl
bmRlclZpZXctPmhhc1JlbmRlck5hbWVkRmxvd1RocmVhZHMoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCogbGlzdCA9IHJlbmRlclZpZXcu
Zmxvd1RocmVhZENvbnRyb2xsZXIoKS5yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KCk7CisgICAg
Y29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCogbGlzdCA9IHJlbmRlclZpZXctPmZsb3dU
aHJlYWRDb250cm9sbGVyKCkucmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCgpOwogCiAgICAgd3Jp
dGVJbmRlbnQodHMsIGluZGVudCk7CiAgICAgdHMgPDwgIkZsb3cgVGhyZWFkc1xuIjsKQEAgLTc5
OSw4ICs3OTksMTAgQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAKICAgICAvLyBBbHRv
dWdoIHRoZSBSZW5kZXJGbG93VGhyZWFkIHJlcXVpcmVzIGEgbGF5ZXIsIGl0IGlzIG5vdCBjb2xs
ZWN0ZWQgYnkgaXRzIHBhcmVudCwKICAgICAvLyBzbyB3ZSBoYXZlIHRvIHRyZWF0IGl0IGFzIGEg
c3BlY2lhbCBjYXNlLgotICAgIGlmIChsLT5yZW5kZXJlcigpLmlzUmVuZGVyVmlldygpKQotICAg
ICAgICB3cml0ZVJlbmRlck5hbWVkRmxvd1RocmVhZHModHMsIHRvUmVuZGVyVmlldyhsLT5yZW5k
ZXJlcigpKSwgcm9vdExheWVyLCBwYWludERpcnR5UmVjdCwgaW5kZW50LCBiZWhhdmlvcik7Cisg
ICAgaWYgKGwtPnJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkpIHsKKyAgICAgICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9IHRvUmVuZGVyVmlldygmbC0+cmVuZGVyZXIoKSk7CisgICAgICAgIHdy
aXRlUmVuZGVyTmFtZWRGbG93VGhyZWFkcyh0cywgcmVuZGVyVmlldywgcm9vdExheWVyLCBwYWlu
dERpcnR5UmVjdCwgaW5kZW50LCBiZWhhdmlvcik7CisgICAgfQogfQogCiBzdGF0aWMgU3RyaW5n
IG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5jcHAKaW5kZXggOWI5YjM5ZTMuLmVhNzdmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMjQ2LDcgKzI0Niw2IEBAIHZvaWQgUmVuZGVyVmlkZW86
OnVwZGF0ZVBsYXllcigpCiAgICAgbWVkaWFQbGF5ZXItPnNldEZyYW1lVmlldygmdmlldygpLmZy
YW1lVmlldygpKTsKICAgICBtZWRpYVBsYXllci0+c2V0U2l6ZShJbnRTaXplKHZpZGVvQm91bmRz
LndpZHRoKCksIHZpZGVvQm91bmRzLmhlaWdodCgpKSk7CiAgICAgbWVkaWFQbGF5ZXItPnNldFZp
c2libGUodHJ1ZSk7Ci0gICAgbWVkaWFQbGF5ZXItPnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0
aW8oc3R5bGUoKS0+b2JqZWN0Rml0KCkgIT0gT2JqZWN0Rml0RmlsbCk7CiB9CiAKIExheW91dFVu
aXQgUmVuZGVyVmlkZW86OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRl
UHJlZmVycmVkIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CkBAIC0yODIsMTIgKzI4MSw2
IEBAIHZvaWQgUmVuZGVyVmlkZW86OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkK
IH0KICNlbmRpZiAgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi1ib29sIFJlbmRl
clZpZGVvOjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QKLXsKLSAgICBNZWRp
YVBsYXllciogcGxheWVyID0gbWVkaWFFbGVtZW50KCktPnBsYXllcigpOwotICAgIHJldHVybiBw
bGF5ZXIgJiYgcGxheWVyLT5yZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCk7Ci19Ci0KICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiBzdGF0aWMgY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRl
cmVyUGxhY2Vob2xkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggMWE5MTI4Yi4uZjIxNzIwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTQ5LDggKzQ5LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKTsKICNlbmRpZgog
Ci0gICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3Q7Ci0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRGlzcGxheVZpZGVvKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05
MCwxOSArODgsMTQgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRTaXplIG1fY2FjaGVkSW1hZ2VTaXpl
OwogfTsKIAotaW5saW5lIFJlbmRlclZpZGVvJiB0b1JlbmRlclZpZGVvKFJlbmRlck9iamVjdCYg
b2JqZWN0KQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5p
c1ZpZGVvKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJWaWRlbyY+KG9iamVjdCk7
Ci19Ci0KLWlubGluZSBjb25zdCBSZW5kZXJWaWRlbyYgdG9SZW5kZXJWaWRlbyhjb25zdCBSZW5k
ZXJPYmplY3QmIG9iamVjdCkKK2lubGluZSBSZW5kZXJWaWRlbyogdG9SZW5kZXJWaWRlbyhSZW5k
ZXJPYmplY3QqIG9iamVjdCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihvYmplY3QuaXNWaWRlbygpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVy
VmlkZW8mPihvYmplY3QpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFv
YmplY3QgfHwgb2JqZWN0LT5pc1ZpZGVvKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5k
ZXJWaWRlbyo+KG9iamVjdCk7CiB9CiAKLXZvaWQgdG9SZW5kZXJWaWRlbyhjb25zdCBSZW5kZXJW
aWRlbyYpOworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBj
YXN0Lgordm9pZCB0b1JlbmRlclZpZGVvKGNvbnN0IFJlbmRlclZpZGVvKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXgg
NzlmMTI2Mi4uZjcyYWY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBA
IC0zNDgsMTkgKzM0OCwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZWxlY3Rpb25XYXNDYXJl
dDsKIH07CiAKLWlubGluZSBSZW5kZXJWaWV3JiB0b1JlbmRlclZpZXcoUmVuZGVyT2JqZWN0JiBv
YmplY3QpCitpbmxpbmUgUmVuZGVyVmlldyogdG9SZW5kZXJWaWV3KFJlbmRlck9iamVjdCogb2Jq
ZWN0KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc1Jl
bmRlclZpZXcoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclZpZXcmPihvYmplY3Qp
OworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFvYmplY3QgfHwgb2JqZWN0
LT5pc1JlbmRlclZpZXcoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclZpZXcqPihv
YmplY3QpOwogfQogCi1pbmxpbmUgY29uc3QgUmVuZGVyVmlldyYgdG9SZW5kZXJWaWV3KGNvbnN0
IFJlbmRlck9iamVjdCYgb2JqZWN0KQoraW5saW5lIGNvbnN0IFJlbmRlclZpZXcqIHRvUmVuZGVy
Vmlldyhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNSZW5kZXJWaWV3KCkpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBSZW5kZXJWaWV3Jj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5kZXJWaWV3KCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJWaWV3Kj4ob2JqZWN0KTsKIH0KIAotdm9p
ZCB0b1JlbmRlclZpZXcoY29uc3QgUmVuZGVyVmlldyYpOworLy8gVGhpcyB3aWxsIGNhdGNoIGFu
eW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b1JlbmRlclZpZXcoY29uc3Qg
UmVuZGVyVmlldyopOwogCiAvLyBTdGFjay1iYXNlZCBjbGFzcyB0byBhc3Npc3Qgd2l0aCBMYXlv
dXRTdGF0ZSBwdXNoL3BvcAogY2xhc3MgTGF5b3V0U3RhdGVNYWludGFpbmVyIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggOWY0ZmM3OS4uNWRlMGE5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTMzLDcgKzMz
LDYgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0UHJv
dGVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXJCYWNraW5nLmgiCkBAIC0xNTQsNyArMTUzLDcgQEAgYm9vbCBSZW5kZXJXaWRnZXQ6OnNl
dFdpZGdldEdlb21ldHJ5KGNvbnN0IExheW91dFJlY3QmIGZyYW1lKQogICAgIG1fY2xpcFJlY3Qg
PSBjbGlwUmVjdDsKIAogICAgIFJlbmRlcldpZGdldFByb3RlY3RvciBwcm90ZWN0b3IodGhpcyk7
Ci0gICAgUmVmPE5vZGU+IHByb3RlY3ROb2RlKCpub2RlKCkpOworICAgIFJlZlB0cjxOb2RlPiBw
cm90ZWN0ZWROb2RlKG5vZGUoKSk7CiAgICAgbV93aWRnZXQtPnNldEZyYW1lUmVjdChuZXdGcmFt
ZSk7CiAKICAgICBpZiAoY2xpcENoYW5nZWQgJiYgIWJvdW5kc0NoYW5nZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggMzA4ODNlMy4uMDQ2N2I4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoUm9vdElubGluZUJveCkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNSb290SW5saW5lQm94KSwgUm9vdElubAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29u
c3QgUm9vdElubGluZUJveCosIEVsbGlwc2lzQm94Kj4gRWxsaXBzaXNCb3hNYXA7CiBzdGF0aWMg
RWxsaXBzaXNCb3hNYXAqIGdFbGxpcHNpc0JveE1hcCA9IDA7CiAKLVJvb3RJbmxpbmVCb3g6OlJv
b3RJbmxpbmVCb3goUmVuZGVyQmxvY2smIGJsb2NrKQorUm9vdElubGluZUJveDo6Um9vdElubGlu
ZUJveChSZW5kZXJCbG9jayogYmxvY2spCiAgICAgOiBJbmxpbmVGbG93Qm94KGJsb2NrKQogICAg
ICwgbV9saW5lQnJlYWtQb3MoMCkKICAgICAsIG1fbGluZUJyZWFrT2JqKDApCkBAIC02Miw3ICs2
Miw3IEBAIFJvb3RJbmxpbmVCb3g6OlJvb3RJbmxpbmVCb3goUmVuZGVyQmxvY2smIGJsb2NrKQog
ICAgICwgbV9saW5lVG9wV2l0aExlYWRpbmcoMCkKICAgICAsIG1fbGluZUJvdHRvbVdpdGhMZWFk
aW5nKDApCiB7Ci0gICAgc2V0SXNIb3Jpem9udGFsKGJsb2NrLmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpOworICAgIHNldElzSG9yaXpvbnRhbChibG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSk7CiB9CiAKIApAQCAtODQsMTMgKzg0LDEzIEBAIHZvaWQgUm9vdElubGluZUJveDo6ZGV0
YWNoRWxsaXBzaXNCb3goUmVuZGVyQXJlbmEqIGFyZW5hKQogCiBSZW5kZXJMaW5lQm94TGlzdCog
Um9vdElubGluZUJveDo6cmVuZGVyZXJMaW5lQm94ZXMoKSBjb25zdAogewotICAgIHJldHVybiBi
bG9jaygpLmxpbmVCb3hlcygpOworICAgIHJldHVybiBibG9jaygpLT5saW5lQm94ZXMoKTsKIH0K
IAogdm9pZCBSb290SW5saW5lQm94OjpjbGVhclRydW5jYXRpb24oKQogewogICAgIGlmIChoYXNF
bGxpcHNpc0JveCgpKSB7Ci0gICAgICAgIGRldGFjaEVsbGlwc2lzQm94KHJlbmRlcmVyKCkucmVu
ZGVyQXJlbmEoKSk7CisgICAgICAgIGRldGFjaEVsbGlwc2lzQm94KHJlbmRlcmVyKCktPnJlbmRl
ckFyZW5hKCkpOwogICAgICAgICBJbmxpbmVGbG93Qm94OjpjbGVhclRydW5jYXRpb24oKTsKICAg
ICB9CiB9CkBAIC0xMzMsNyArMTMzLDcgQEAgZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxp
cHNpcyhjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIG1hcmt1cEJveCkKIHsKICAg
ICAvLyBDcmVhdGUgYW4gZWxsaXBzaXMgYm94LgotICAgIEVsbGlwc2lzQm94KiBlbGxpcHNpc0Jv
eCA9IG5ldyAocmVuZGVyZXIoKS5yZW5kZXJBcmVuYSgpKSBFbGxpcHNpc0JveChyZW5kZXJlcigp
LCBlbGxpcHNpc1N0ciwgdGhpcywKKyAgICBFbGxpcHNpc0JveCogZWxsaXBzaXNCb3ggPSBuZXcg
KHJlbmRlcmVyKCktPnJlbmRlckFyZW5hKCkpIEVsbGlwc2lzQm94KHJlbmRlcmVyKCksIGVsbGlw
c2lzU3RyLCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGxpcHNpc1dpZHRoIC0gKG1hcmt1cEJveCA/IG1hcmt1cEJv
eC0+bG9naWNhbFdpZHRoKCkgOiAwKSwgbG9naWNhbEhlaWdodCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5KCksICFwcmV2
Um9vdEJveCgpLCBpc0hvcml6b250YWwoKSwgbWFya3VwQm94KTsKICAgICAKQEAgLTE3MCw3ICsx
NzAsNyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBm
bG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9jawogCiB2b2lkIFJvb3RJbmxpbmVCb3g6OnBh
aW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIGNv
bnN0CiB7Ci0gICAgaWYgKGhhc0VsbGlwc2lzQm94KCkgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50
V2l0aGluUm9vdCgmcmVuZGVyZXIoKSkgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLT52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRQorICAgIGlmIChoYXNFbGxpcHNpc0JveCgpICYmIHBhaW50SW5mby5zaG91
bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlz
aWJpbGl0eSgpID09IFZJU0lCTEUKICAgICAgICAgICAgICYmIHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgZWxsaXBzaXNCb3goKS0+cGFpbnQocGFpbnRJ
bmZvLCBwYWludE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSk7CiB9CkBAIC0xNzksMzAgKzE3
OSwzMCBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogCiB2b2lkIFJvb3RJbmxpbmVCb3g6OmFk
ZEhpZ2hsaWdodE92ZXJmbG93KCkKIHsKLSAgICBQYWdlKiBwYWdlID0gcmVuZGVyZXIoKS5mcmFt
ZSgpLnBhZ2UoKTsKKyAgICBQYWdlKiBwYWdlID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBIaWdobGlnaHQgYWN0
cyBhcyBhIHNlbGVjdGlvbiBpbmZsYXRpb24uCiAgICAgRmxvYXRSZWN0IHJvb3RSZWN0KDAsIHNl
bGVjdGlvblRvcCgpLCBsb2dpY2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0KCkpOwotICAgIElu
dFJlY3QgaW5mbGF0ZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCkubm9kZSgpLCByZW5kZXJlcigpLnN0
eWxlKCktPmhpZ2hsaWdodCgpLCByb290UmVjdCkpOworICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5jdXN0b21IaWdobGln
aHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGlnaGxpZ2h0
KCksIHJvb3RSZWN0KSk7CiAgICAgc2V0T3ZlcmZsb3dGcm9tTG9naWNhbFJlY3RzKGluZmxhdGVk
UmVjdCwgaW5mbGF0ZWRSZWN0LCBsaW5lVG9wKCksIGxpbmVCb3R0b20oKSk7CiB9CiAKIHZvaWQg
Um9vdElubGluZUJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBoaWdo
bGlnaHRUeXBlKQogewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgm
cmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCisgICAgaWYgKCFw
YWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkt
PnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGFnZSogcGFnZSA9
IHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCk7CisgICAgUGFnZSogcGFnZSA9IHJlbmRlcmVyKCkt
PmZyYW1lKCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gR2V0IHRoZSBpbmZsYXRlZCByZWN0IHNvIHRoYXQgd2UgY2FuIHByb3Blcmx5IGhpdCB0ZXN0
LgogICAgIEZsb2F0UmVjdCByb290UmVjdChwYWludE9mZnNldC54KCkgKyB4KCksIHBhaW50T2Zm
c2V0LnkoKSArIHNlbGVjdGlvblRvcCgpLCBsb2dpY2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0
KCkpOwotICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3QgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCkubm9kZSgpLCBoaWdobGlnaHRUeXBlLCBy
b290UmVjdCk7CisgICAgRmxvYXRSZWN0IGluZmxhdGVkUmVjdCA9IHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLmN1c3RvbUhpZ2hsaWdodFJlY3QocmVuZGVyZXIoKS0+bm9kZSgpLCBoaWdobGlnaHRU
eXBlLCByb290UmVjdCk7CiAgICAgaWYgKGluZmxhdGVkUmVjdC5pbnRlcnNlY3RzKHBhaW50SW5m
by5yZWN0KSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGFpbnRDdXN0b21IaWdo
bGlnaHQocmVuZGVyZXIoKS5ub2RlKCksIGhpZ2hsaWdodFR5cGUsIHJvb3RSZWN0LCByb290UmVj
dCwgZmFsc2UsIHRydWUpOworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wYWludEN1
c3RvbUhpZ2hsaWdodChyZW5kZXJlcigpLT5ub2RlKCksIGhpZ2hsaWdodFR5cGUsIHJvb3RSZWN0
LCByb290UmVjdCwgZmFsc2UsIHRydWUpOwogfQogCiAjZW5kaWYKQEAgLTIxMiw3ICsyMTIsNyBA
QCB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgSW5saW5lRmxvd0JveDo6cGFpbnQocGFpbnRJ
bmZvLCBwYWludE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSk7CiAgICAgcGFpbnRFbGxpcHNp
c0JveChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tKTsKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJlcigpLnN0
eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBy
ZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgIGlmIChzdHlsZVRvVXNl
LT5oaWdobGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCwgc3R5bGVUb1VzZS0+aGlnaGxpZ2h0KCkpOwogI2VuZGlmCkBAIC0yMjIsNyArMjIy
LDcgQEAgYm9vbCBSb290SW5saW5lQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKIHsKICAgICBpZiAoaGFzRWxsaXBzaXNCb3go
KSAmJiB2aXNpYmxlVG9IaXRUZXN0aW5nKCkpIHsKICAgICAgICAgaWYgKGVsbGlwc2lzQm94KCkt
Pm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11
bGF0ZWRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pKSB7Ci0gICAgICAgICAgICByZW5kZXJl
cigpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50
KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKKyAgICAgICAgICAgIHJlbmRl
cmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBv
aW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQzLDEwICsyNDMsMTAgQEAgdm9pZCBS
b290SW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpCiAKIHZvaWQg
Um9vdElubGluZUJveDo6Y2hpbGRSZW1vdmVkKElubGluZUJveCogYm94KQogewotICAgIGlmICgm
Ym94LT5yZW5kZXJlcigpID09IG1fbGluZUJyZWFrT2JqKQorICAgIGlmIChib3gtPnJlbmRlcmVy
KCkgPT0gbV9saW5lQnJlYWtPYmopCiAgICAgICAgIHNldExpbmVCcmVha0luZm8oMCwgMCwgQmlk
aVN0YXR1cygpKTsKIAotICAgIGZvciAoUm9vdElubGluZUJveCogcHJldiA9IHByZXZSb290Qm94
KCk7IHByZXYgJiYgcHJldi0+bGluZUJyZWFrT2JqKCkgPT0gJmJveC0+cmVuZGVyZXIoKTsgcHJl
diA9IHByZXYtPnByZXZSb290Qm94KCkpIHsKKyAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIHByZXYg
PSBwcmV2Um9vdEJveCgpOyBwcmV2ICYmIHByZXYtPmxpbmVCcmVha09iaigpID09IGJveC0+cmVu
ZGVyZXIoKTsgcHJldiA9IHByZXYtPnByZXZSb290Qm94KCkpIHsKICAgICAgICAgcHJldi0+c2V0
TGluZUJyZWFrSW5mbygwLCAwLCBCaWRpU3RhdHVzKCkpOwogICAgICAgICBwcmV2LT5tYXJrRGly
dHkoKTsKICAgICB9CkBAIC0yNTgsNyArMjU4LDcgQEAgUmVuZGVyUmVnaW9uKiBSb290SW5saW5l
Qm94Ojpjb250YWluaW5nUmVnaW9uKCkgY29uc3QKIAogI2lmbmRlZiBOREVCVUcKICAgICBpZiAo
cmVnaW9uKSB7Ci0gICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBibG9jaygp
LmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCog
Zmxvd1RocmVhZCA9IGJsb2NrKCktPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICAg
ICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IGZsb3dUaHJlYWQtPnJlbmRl
clJlZ2lvbkxpc3QoKTsKICAgICAgICAgQVNTRVJUKHJlZ2lvbkxpc3QuY29udGFpbnMocmVnaW9u
KSk7CiAgICAgfQpAQCAtMjcwLDcgKzI3MCw3IEBAIFJlbmRlclJlZ2lvbiogUm9vdElubGluZUJv
eDo6Y29udGFpbmluZ1JlZ2lvbigpIGNvbnN0CiB2b2lkIFJvb3RJbmxpbmVCb3g6OnNldENvbnRh
aW5pbmdSZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgQVNTRVJUKCFpc0RpcnR5
KCkpOwotICAgIEFTU0VSVChibG9jaygpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSk7Cisg
ICAgQVNTRVJUKGJsb2NrKCktPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSk7CiAgICAgTGlu
ZUZyYWdtZW50YXRpb25EYXRhKiBmcmFnbWVudGF0aW9uRGF0YSAgPSBlbnN1cmVMaW5lRnJhZ21l
bnRhdGlvbkRhdGEoKTsKICAgICBmcmFnbWVudGF0aW9uRGF0YS0+bV9jb250YWluaW5nUmVnaW9u
ID0gcmVnaW9uOwogfQpAQCAtMjkxLDcgKzI5MSw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJv
eDo6YWxpZ25Cb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCBoZWlnaHRPZkJsb2NrLCBH
CiAgICAgYm9vbCBzZXRNYXhEZXNjZW50ID0gZmFsc2U7CiAKICAgICAvLyBGaWd1cmUgb3V0IGlm
IHdlJ3JlIGluIG5vLXF1aXJrcyBtb2RlLgotICAgIGJvb2wgbm9RdWlya3NNb2RlID0gcmVuZGVy
ZXIoKS5kb2N1bWVudCgpLmluTm9RdWlya3NNb2RlKCk7CisgICAgYm9vbCBub1F1aXJrc01vZGUg
PSByZW5kZXJlcigpLT5kb2N1bWVudCgpLmluTm9RdWlya3NNb2RlKCk7CiAKICAgICBtX2Jhc2Vs
aW5lVHlwZSA9IHJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZSh0ZXh0Qm94RGF0YU1hcCkgPyBJ
ZGVvZ3JhcGhpY0Jhc2VsaW5lIDogQWxwaGFiZXRpY0Jhc2VsaW5lOwogCkBAIC0zMTcsNyArMzE3
LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjphbGlnbkJveGVzSW5CbG9ja0RpcmVjdGlv
bihMYXlvdXRVbml0IGhlaWdodE9mQmxvY2ssIEcKICAgICBtYXhIZWlnaHQgPSBtYXg8TGF5b3V0
VW5pdD4oMCwgbWF4SGVpZ2h0KTsgLy8gRklYTUU6IElzIHRoaXMgcmVhbGx5IG5lY2Vzc2FyeT8K
IAogICAgIHNldExpbmVUb3BCb3R0b21Qb3NpdGlvbnMobGluZVRvcCwgbGluZUJvdHRvbSwgaGVp
Z2h0T2ZCbG9jaywgaGVpZ2h0T2ZCbG9jayArIG1heEhlaWdodCk7Ci0gICAgc2V0UGFnaW5hdGVk
TGluZVdpZHRoKGJsb2NrKCkuYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudChoZWlnaHRP
ZkJsb2NrKSk7CisgICAgc2V0UGFnaW5hdGVkTGluZVdpZHRoKGJsb2NrKCktPmF2YWlsYWJsZUxv
Z2ljYWxXaWR0aEZvckNvbnRlbnQoaGVpZ2h0T2ZCbG9jaykpOwogCiAgICAgTGF5b3V0VW5pdCBh
bm5vdGF0aW9uc0FkanVzdG1lbnQgPSBiZWZvcmVBbm5vdGF0aW9uc0FkanVzdG1lbnQoKTsKICAg
ICBpZiAoYW5ub3RhdGlvbnNBZGp1c3RtZW50KSB7CkBAIC0zNDksNyArMzQ5LDcgQEAgTGF5b3V0
VW5pdCBSb290SW5saW5lQm94OjpiZWZvcmVBbm5vdGF0aW9uc0FkanVzdG1lbnQoKSBjb25zdAog
ewogICAgIExheW91dFVuaXQgcmVzdWx0ID0gMDsKIAotICAgIGlmICghcmVuZGVyZXIoKS5zdHls
ZSgpLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpIHsKKyAgICBpZiAoIXJlbmRlcmVyKCkt
PnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAvLyBBbm5v
dGF0aW9ucyB1bmRlciB0aGUgcHJldmlvdXMgbGluZSBtYXkgcHVzaCB1cyBkb3duLgogICAgICAg
ICBpZiAocHJldlJvb3RCb3goKSAmJiBwcmV2Um9vdEJveCgpLT5oYXNBbm5vdGF0aW9uc0FmdGVy
KCkpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmV2Um9vdEJveCgpLT5jb21wdXRlVW5kZXJBbm5v
dGF0aW9uQWRqdXN0bWVudChsaW5lVG9wKCkpOwpAQCAtMzU4LDEyICszNTgsMTIgQEAgTGF5b3V0
VW5pdCBSb290SW5saW5lQm94OjpiZWZvcmVBbm5vdGF0aW9uc0FkanVzdG1lbnQoKSBjb25zdAog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAvLyBBbm5vdGF0aW9ucyBvdmVy
IHRoaXMgbGluZSBtYXkgcHVzaCB1cyBmdXJ0aGVyIGRvd24uCi0gICAgICAgIExheW91dFVuaXQg
aGlnaGVzdEFsbG93ZWRQb3NpdGlvbiA9IHByZXZSb290Qm94KCkgPyBtaW4ocHJldlJvb3RCb3go
KS0+bGluZUJvdHRvbSgpLCBsaW5lVG9wKCkpICsgcmVzdWx0IDogc3RhdGljX2Nhc3Q8TGF5b3V0
VW5pdD4oYmxvY2soKS5ib3JkZXJCZWZvcmUoKSk7CisgICAgICAgIExheW91dFVuaXQgaGlnaGVz
dEFsbG93ZWRQb3NpdGlvbiA9IHByZXZSb290Qm94KCkgPyBtaW4ocHJldlJvb3RCb3goKS0+bGlu
ZUJvdHRvbSgpLCBsaW5lVG9wKCkpICsgcmVzdWx0IDogc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4o
YmxvY2soKS0+Ym9yZGVyQmVmb3JlKCkpOwogICAgICAgICByZXN1bHQgPSBjb21wdXRlT3ZlckFu
bm90YXRpb25BZGp1c3RtZW50KGhpZ2hlc3RBbGxvd2VkUG9zaXRpb24pOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEFubm90YXRpb25zIHVuZGVyIHRoaXMgbGluZSBtYXkgcHVzaCB1cyB1cC4K
ICAgICAgICAgaWYgKGhhc0Fubm90YXRpb25zQmVmb3JlKCkpCi0gICAgICAgICAgICByZXN1bHQg
PSBjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChwcmV2Um9vdEJveCgpID8gcHJldlJv
b3RCb3goKS0+bGluZUJvdHRvbSgpIDogc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oYmxvY2soKS5i
b3JkZXJCZWZvcmUoKSkpOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZVVuZGVyQW5ub3Rh
dGlvbkFkanVzdG1lbnQocHJldlJvb3RCb3goKSA/IHByZXZSb290Qm94KCktPmxpbmVCb3R0b20o
KSA6IHN0YXRpY19jYXN0PExheW91dFVuaXQ+KGJsb2NrKCktPmJvcmRlckJlZm9yZSgpKSk7CiAK
ICAgICAgICAgaWYgKCFwcmV2Um9vdEJveCgpIHx8ICFwcmV2Um9vdEJveCgpLT5oYXNBbm5vdGF0
aW9uc0FmdGVyKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzgwLDE0ICszODAs
MTQgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpsaW5lU25hcEFkanVzdG1lbnQoTGF5b3V0
VW5pdCBkZWx0YSkgY29uc3QKIHsKICAgICAvLyBJZiBvdXIgYmxvY2sgZG9lc24ndCBoYXZlIHNu
YXBwaW5nIHR1cm5lZCBvbiwgZG8gbm90aGluZy4KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGJv
dW5kcyBzbmFwcGluZy4KLSAgICBpZiAoYmxvY2soKS5zdHlsZSgpLT5saW5lU25hcCgpID09IExp
bmVTbmFwTm9uZSkKKyAgICBpZiAoYmxvY2soKS0+c3R5bGUoKS0+bGluZVNuYXAoKSA9PSBMaW5l
U25hcE5vbmUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gR2V0IHRoZSBjdXJyZW50IGxp
bmUgZ3JpZCBhbmQgb2Zmc2V0LgotICAgIExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IGJsb2Nr
KCkudmlldygpLmxheW91dFN0YXRlKCk7CisgICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlID0g
YmxvY2soKS0+dmlldygpLmxheW91dFN0YXRlKCk7CiAgICAgUmVuZGVyQmxvY2sqIGxpbmVHcmlk
ID0gbGF5b3V0U3RhdGUtPmxpbmVHcmlkKCk7CiAgICAgTGF5b3V0U2l6ZSBsaW5lR3JpZE9mZnNl
dCA9IGxheW91dFN0YXRlLT5saW5lR3JpZE9mZnNldCgpOwotICAgIGlmICghbGluZUdyaWQgfHwg
bGluZUdyaWQtPnN0eWxlKCktPndyaXRpbmdNb2RlKCkgIT0gYmxvY2soKS5zdHlsZSgpLT53cml0
aW5nTW9kZSgpKQorICAgIGlmICghbGluZUdyaWQgfHwgbGluZUdyaWQtPnN0eWxlKCktPndyaXRp
bmdNb2RlKCkgIT0gYmxvY2soKS0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICAvLyBHZXQgdGhlIGh5cG90aGV0aWNhbCBsaW5lIGJveCB1c2VkIHRvIGVz
dGFibGlzaCB0aGUgZ3JpZC4KQEAgLTM5Niw3ICszOTYsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxp
bmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudChMYXlvdXRVbml0IGRlbHRhKSBjb25zdAogICAgICAg
ICByZXR1cm4gMDsKICAgICAKICAgICBMYXlvdXRVbml0IGxpbmVHcmlkQmxvY2tPZmZzZXQgPSBs
aW5lR3JpZC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGxpbmVHcmlkT2Zmc2V0LmhlaWdo
dCgpIDogbGluZUdyaWRPZmZzZXQud2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0
ID0gYmxvY2soKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbGF5b3V0U3RhdGUtPmxheW91
dE9mZnNldCgpLmhlaWdodCgpIDogbGF5b3V0U3RhdGUtPmxheW91dE9mZnNldCgpLndpZHRoKCk7
CisgICAgTGF5b3V0VW5pdCBibG9ja09mZnNldCA9IGJsb2NrKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBsYXlvdXRTdGF0ZS0+bGF5b3V0T2Zmc2V0KCkuaGVpZ2h0KCkgOiBsYXlvdXRT
dGF0ZS0+bGF5b3V0T2Zmc2V0KCkud2lkdGgoKTsKIAogICAgIC8vIE5vdyBkZXRlcm1pbmUgb3Vy
IHBvc2l0aW9uIG9uIHRoZSBncmlkLiBPdXIgYmFzZWxpbmUgbmVlZHMgdG8gYmUgYWRqdXN0ZWQg
dG8gdGhlIG5lYXJlc3QgYmFzZWxpbmUgbXVsdGlwbGUKICAgICAvLyBhcyBlc3RhYmxpc2hlZCBi
eSB0aGUgbGluZSBib3guCkBAIC00MTMsNyArNDEzLDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5l
Qm94OjpsaW5lU25hcEFkanVzdG1lbnQoTGF5b3V0VW5pdCBkZWx0YSkgY29uc3QKICAgICBMYXlv
dXRVbml0IGZpcnN0QmFzZWxpbmVQb3NpdGlvbiA9IGZpcnN0VGV4dFRvcCArIGxpbmVHcmlkRm9u
dEFzY2VudDsKIAogICAgIExheW91dFVuaXQgY3VycmVudFRleHRUb3AgPSBibG9ja09mZnNldCAr
IGxvZ2ljYWxUb3AoKSArIGRlbHRhOwotICAgIExheW91dFVuaXQgY3VycmVudEZvbnRBc2NlbnQg
PSBibG9jaygpLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsK
KyAgICBMYXlvdXRVbml0IGN1cnJlbnRGb250QXNjZW50ID0gYmxvY2soKS0+c3R5bGUoKS0+Zm9u
dE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgIExheW91dFVuaXQgY3VycmVu
dEJhc2VsaW5lUG9zaXRpb24gPSBjdXJyZW50VGV4dFRvcCArIGN1cnJlbnRGb250QXNjZW50Owog
CiAgICAgTGF5b3V0VW5pdCBsaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4gPSBpc0hvcml6b250YWwo
KSA/IGxheW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS5oZWlnaHQoKSA6IGxh
eW91dFN0YXRlLT5saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oKS53aWR0aCgpOwpAQCAtNDIyLDEy
ICs0MjIsMTIgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpsaW5lU25hcEFkanVzdG1lbnQo
TGF5b3V0VW5pdCBkZWx0YSkgY29uc3QKICAgICAvLyBGSVhNRTogSWYgdGhlIGdyaWQgaXMgYW4g
YW5jZXN0b3Igb2YgdGhlIHBhZ2luYXRpb24gZXN0YWJsaXNoZXIsIHRoZW4gdGhpcyBpcyBpbmNv
cnJlY3QuCiAgICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbFRvcCA9IDA7CiAgICAgaWYgKGxheW91
dFN0YXRlLT5pc1BhZ2luYXRlZCgpICYmIGxheW91dFN0YXRlLT5wYWdlTG9naWNhbEhlaWdodCgp
KSB7Ci0gICAgICAgIHBhZ2VMb2dpY2FsVG9wID0gYmxvY2soKS5wYWdlTG9naWNhbFRvcEZvck9m
ZnNldChsaW5lVG9wV2l0aExlYWRpbmcoKSArIGRlbHRhKTsKKyAgICAgICAgcGFnZUxvZ2ljYWxU
b3AgPSBibG9jaygpLT5wYWdlTG9naWNhbFRvcEZvck9mZnNldChsaW5lVG9wV2l0aExlYWRpbmco
KSArIGRlbHRhKTsKICAgICAgICAgaWYgKHBhZ2VMb2dpY2FsVG9wID4gZmlyc3RMaW5lVG9wV2l0
aExlYWRpbmcpCiAgICAgICAgICAgICBmaXJzdFRleHRUb3AgPSBwYWdlTG9naWNhbFRvcCArIGxp
bmVHcmlkQm94LT5sb2dpY2FsVG9wKCkgLSBsaW5lR3JpZC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9y
ZSgpICsgbGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luOwogICAgIH0KIAotICAgIGlmIChibG9jaygp
LnN0eWxlKCktPmxpbmVTbmFwKCkgPT0gTGluZVNuYXBDb250YWluKSB7CisgICAgaWYgKGJsb2Nr
KCktPnN0eWxlKCktPmxpbmVTbmFwKCkgPT0gTGluZVNuYXBDb250YWluKSB7CiAgICAgICAgIC8v
IENvbXB1dGUgdGhlIGRlc2lyZWQgb2Zmc2V0IGZyb20gdGhlIHRleHQtdG9wIG9mIGEgZ3JpZCBs
aW5lLgogICAgICAgICAvLyBMb29rIGF0IG91ciBoZWlnaHQgKGxvZ2ljYWxIZWlnaHQoKSkuCiAg
ICAgICAgIC8vIExvb2sgYXQgdGhlIHRvdGFsIGF2YWlsYWJsZSBoZWlnaHQuIEl0J3MgZ29pbmcg
dG8gYmUgKHRleHRCb3R0b20gLSB0ZXh0VG9wKSArIChuLTEpKihtdWx0aXBsZSB3aXRoIGxlYWRp
bmcpCkBAIC00NTksNyArNDU5LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpsaW5lU25h
cEFkanVzdG1lbnQoTGF5b3V0VW5pdCBkZWx0YSkgY29uc3QKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAKICAgICAvLyBXZSBtYXkgZW5kIHVwIHNoaWZ0ZWQgdG8gYSBuZXcgcGFnZS4gV2Ug
bmVlZCB0byBkbyBhIHJlLXNuYXAgd2hlbiB0aGF0IGhhcHBlbnMuCi0gICAgTGF5b3V0VW5pdCBu
ZXdQYWdlTG9naWNhbFRvcCA9IGJsb2NrKCkucGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQobGluZUJv
dHRvbVdpdGhMZWFkaW5nKCkgKyByZXN1bHQpOworICAgIExheW91dFVuaXQgbmV3UGFnZUxvZ2lj
YWxUb3AgPSBibG9jaygpLT5wYWdlTG9naWNhbFRvcEZvck9mZnNldChsaW5lQm90dG9tV2l0aExl
YWRpbmcoKSArIHJlc3VsdCk7CiAgICAgaWYgKG5ld1BhZ2VMb2dpY2FsVG9wID09IHBhZ2VMb2dp
Y2FsVG9wKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIApAQCAtNDczLDE4ICs0NzMsMTgg
QEAgR2FwUmVjdHMgUm9vdElubGluZUJveDo6bGluZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayog
cm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2kKICAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIGxpbmVTdGF0ZSA9IHNlbGVjdGlvblN0YXRlKCk7CiAKICAgICBib29sIGxlZnRHYXAsIHJp
Z2h0R2FwOwotICAgIGJsb2NrKCkuZ2V0U2VsZWN0aW9uR2FwSW5mbyhsaW5lU3RhdGUsIGxlZnRH
YXAsIHJpZ2h0R2FwKTsKKyAgICBibG9jaygpLT5nZXRTZWxlY3Rpb25HYXBJbmZvKGxpbmVTdGF0
ZSwgbGVmdEdhcCwgcmlnaHRHYXApOwogCiAgICAgR2FwUmVjdHMgcmVzdWx0OwogCiAgICAgSW5s
aW5lQm94KiBmaXJzdEJveCA9IGZpcnN0U2VsZWN0ZWRCb3goKTsKICAgICBJbmxpbmVCb3gqIGxh
c3RCb3ggPSBsYXN0U2VsZWN0ZWRCb3goKTsKICAgICBpZiAobGVmdEdhcCkgewotICAgICAgICBy
ZXN1bHQudW5pdGVMZWZ0KGJsb2NrKCkubG9naWNhbExlZnRTZWxlY3Rpb25HYXAocm9vdEJsb2Nr
LCByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBvZmZzZXRGcm9tUm9vdEJsb2NrLCAmZmlyc3RC
b3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLCBmaXJzdEJveC0+bG9naWNhbExlZnQoKSwKKyAgICAg
ICAgcmVzdWx0LnVuaXRlTGVmdChibG9jaygpLT5sb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChyb290
QmxvY2ssIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIG9mZnNldEZyb21Sb290QmxvY2ssIGZp
cnN0Qm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKSwgZmlyc3RCb3gtPmxvZ2ljYWxMZWZ0KCksCiAg
ICAgICAgICAgICBzZWxUb3AsIHNlbEhlaWdodCwgY2FjaGUsIHBhaW50SW5mbykpOwogICAgIH0K
ICAgICBpZiAocmlnaHRHYXApIHsKLSAgICAgICAgcmVzdWx0LnVuaXRlUmlnaHQoYmxvY2soKS5s
b2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAocm9vdEJsb2NrLCByb290QmxvY2tQaHlzaWNhbFBvc2l0
aW9uLCBvZmZzZXRGcm9tUm9vdEJsb2NrLCAmbGFzdEJveC0+cGFyZW50KCktPnJlbmRlcmVyKCks
IGxhc3RCb3gtPmxvZ2ljYWxSaWdodCgpLAorICAgICAgICByZXN1bHQudW5pdGVSaWdodChibG9j
aygpLT5sb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAocm9vdEJsb2NrLCByb290QmxvY2tQaHlzaWNh
bFBvc2l0aW9uLCBvZmZzZXRGcm9tUm9vdEJsb2NrLCBsYXN0Qm94LT5wYXJlbnQoKS0+cmVuZGVy
ZXIoKSwgbGFzdEJveC0+bG9naWNhbFJpZ2h0KCksCiAgICAgICAgICAgICBzZWxUb3AsIHNlbEhl
aWdodCwgY2FjaGUsIHBhaW50SW5mbykpOwogICAgIH0KIApAQCAtNTAyLDExICs1MDIsMTEgQEAg
R2FwUmVjdHMgUm9vdElubGluZUJveDo6bGluZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayogcm9v
dEJsb2NrLCBjb25zdCBMYXlvdXRQb2kKICAgICAgICAgZm9yIChJbmxpbmVCb3gqIGJveCA9IGZp
cnN0Qm94LT5uZXh0TGVhZkNoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZkNoaWxkKCkp
IHsKICAgICAgICAgICAgIGlmIChib3gtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBsb2dpY2FsUmVj
dChsYXN0TG9naWNhbExlZnQsIHNlbFRvcCwgYm94LT5sb2dpY2FsTGVmdCgpIC0gbGFzdExvZ2lj
YWxMZWZ0LCBzZWxIZWlnaHQpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxSZWN0Lm1vdmUocmVu
ZGVyZXIoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RnJvbVJvb3RCbG9jayA6
IExheW91dFNpemUob2Zmc2V0RnJvbVJvb3RCbG9jay5oZWlnaHQoKSwgb2Zmc2V0RnJvbVJvb3RC
bG9jay53aWR0aCgpKSk7CisgICAgICAgICAgICAgICAgbG9naWNhbFJlY3QubW92ZShyZW5kZXJl
cigpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RnJvbVJvb3RCbG9jayA6IExh
eW91dFNpemUob2Zmc2V0RnJvbVJvb3RCbG9jay5oZWlnaHQoKSwgb2Zmc2V0RnJvbVJvb3RCbG9j
ay53aWR0aCgpKSk7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJs
b2NrLT5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24s
IGxvZ2ljYWxSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoaXNQcmV2aW91c0JveFNlbGVjdGVk
ICYmIGdhcFJlY3Qud2lkdGgoKSA+IDAgJiYgZ2FwUmVjdC5oZWlnaHQoKSA+IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHBhaW50SW5mbyAmJiBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigp
LnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5y
ZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5k
ZXJlcigpLnN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChw
YWludEluZm8gJiYgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRl
eHQtPmZpbGxSZWN0KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCktPnNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5j
b2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIG1h
eSBiZSBub24tY29udGlndW91cywgc2VlIGNvbW1lbnQgYWJvdmUuCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC51bml0ZUNlbnRlcihnYXBSZWN0KTsKICAgICAgICAgICAgICAgICB9CkBAIC01
NzAsMjAgKzU3MCwyMCBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcCgp
IGNvbnN0CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3AgPSBtX2xpbmVUb3A7CiAKICAgICBp
ZiAobV9oYXNBbm5vdGF0aW9uc0JlZm9yZSkKLSAgICAgICAgc2VsZWN0aW9uVG9wIC09ICFyZW5k
ZXJlcigpLnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IGNvbXB1dGVPdmVy
QW5ub3RhdGlvbkFkanVzdG1lbnQobV9saW5lVG9wKSA6IGNvbXB1dGVVbmRlckFubm90YXRpb25B
ZGp1c3RtZW50KG1fbGluZVRvcCk7CisgICAgICAgIHNlbGVjdGlvblRvcCAtPSAhcmVuZGVyZXIo
KS0+c3R5bGUoKS0+aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID8gY29tcHV0ZU92ZXJBbm5v
dGF0aW9uQWRqdXN0bWVudChtX2xpbmVUb3ApIDogY29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVz
dG1lbnQobV9saW5lVG9wKTsKIAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCktPmlzRmxpcHBl
ZExpbmVzV3JpdGluZ01vZGUoKSkKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlw
cGVkTGluZXNXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gc2VsZWN0aW9uVG9wOwogCi0g
ICAgTGF5b3V0VW5pdCBwcmV2Qm90dG9tID0gcHJldlJvb3RCb3goKSA/IHByZXZSb290Qm94KCkt
PnNlbGVjdGlvbkJvdHRvbSgpIDogYmxvY2soKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7Ci0g
ICAgaWYgKHByZXZCb3R0b20gPCBzZWxlY3Rpb25Ub3AgJiYgYmxvY2soKS5jb250YWluc0Zsb2F0
cygpKSB7CisgICAgTGF5b3V0VW5pdCBwcmV2Qm90dG9tID0gcHJldlJvb3RCb3goKSA/IHByZXZS
b290Qm94KCktPnNlbGVjdGlvbkJvdHRvbSgpIDogYmxvY2soKS0+Ym9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpOworICAgIGlmIChwcmV2Qm90dG9tIDwgc2VsZWN0aW9uVG9wICYmIGJsb2NrKCktPmNv
bnRhaW5zRmxvYXRzKCkpIHsKICAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBhY3R1YWxseSBiZWVu
IG1vdmVkIGZ1cnRoZXIgZG93biwgcHJvYmFibHkgZnJvbSBhIGxhcmdlIGxpbmUtaGVpZ2h0LCBi
dXQgcG9zc2libHkgYmVjYXVzZSB0aGUKICAgICAgICAgLy8gbGluZSB3YXMgZm9yY2VkIHRvIGNs
ZWFyIGZsb2F0cy4gIElmIHNvLCBsZXQncyBjaGVjayB0aGUgb2Zmc2V0cywgYW5kIG9ubHkgYmUg
d2lsbGluZyB0byB1c2UgdGhlIHByZXZpb3VzCiAgICAgICAgIC8vIGxpbmUncyBib3R0b20gaWYg
dGhlIG9mZnNldHMgYXJlIGdyZWF0ZXIgb24gYm90aCBzaWRlcy4KLSAgICAgICAgTGF5b3V0VW5p
dCBwcmV2TGVmdCA9IGJsb2NrKCkubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHByZXZCb3R0b20s
IGZhbHNlKTsKLSAgICAgICAgTGF5b3V0VW5pdCBwcmV2UmlnaHQgPSBibG9jaygpLmxvZ2ljYWxS
aWdodE9mZnNldEZvckxpbmUocHJldkJvdHRvbSwgZmFsc2UpOwotICAgICAgICBMYXlvdXRVbml0
IG5ld0xlZnQgPSBibG9jaygpLmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25Ub3As
IGZhbHNlKTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXdSaWdodCA9IGJsb2NrKCkubG9naWNhbFJp
Z2h0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25Ub3AsIGZhbHNlKTsKKyAgICAgICAgTGF5b3V0VW5p
dCBwcmV2TGVmdCA9IGJsb2NrKCktPmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShwcmV2Qm90dG9t
LCBmYWxzZSk7CisgICAgICAgIExheW91dFVuaXQgcHJldlJpZ2h0ID0gYmxvY2soKS0+bG9naWNh
bFJpZ2h0T2Zmc2V0Rm9yTGluZShwcmV2Qm90dG9tLCBmYWxzZSk7CisgICAgICAgIExheW91dFVu
aXQgbmV3TGVmdCA9IGJsb2NrKCktPmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25U
b3AsIGZhbHNlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXdSaWdodCA9IGJsb2NrKCktPmxvZ2lj
YWxSaWdodE9mZnNldEZvckxpbmUoc2VsZWN0aW9uVG9wLCBmYWxzZSk7CiAgICAgICAgIGlmIChw
cmV2TGVmdCA+IG5ld0xlZnQgfHwgcHJldlJpZ2h0IDwgbmV3UmlnaHQpCiAgICAgICAgICAgICBy
ZXR1cm4gc2VsZWN0aW9uVG9wOwogICAgIH0KQEAgLTU5NSwxMiArNTk1LDEyIEBAIExheW91dFVu
aXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygp
IGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCB0b3AgPSBzZWxlY3Rpb25Ub3AoKTsKIAotICAgIFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgYmxvY2tTZWxlY3Rpb25TdGF0ZSA9IHJvb3QoKS0+
YmxvY2soKS5zZWxlY3Rpb25TdGF0ZSgpOworICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3Rh
dGUgYmxvY2tTZWxlY3Rpb25TdGF0ZSA9IHJvb3QoKS0+YmxvY2soKS0+c2VsZWN0aW9uU3RhdGUo
KTsKICAgICBpZiAoYmxvY2tTZWxlY3Rpb25TdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlv
bkluc2lkZSAmJiBibG9ja1NlbGVjdGlvblN0YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
RW5kKQogICAgICAgICByZXR1cm4gdG9wOwogCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXRUb0Jsb2Nr
QmVmb3JlOwotICAgIGlmIChSZW5kZXJCbG9jayogYmxvY2sgPSByb290KCktPmJsb2NrKCkuYmxv
Y2tCZWZvcmVXaXRoaW5TZWxlY3Rpb25Sb290KG9mZnNldFRvQmxvY2tCZWZvcmUpKSB7CisgICAg
aWYgKFJlbmRlckJsb2NrKiBibG9jayA9IHJvb3QoKS0+YmxvY2soKS0+YmxvY2tCZWZvcmVXaXRo
aW5TZWxlY3Rpb25Sb290KG9mZnNldFRvQmxvY2tCZWZvcmUpKSB7CiAgICAgICAgIGlmIChSb290
SW5saW5lQm94KiBsYXN0TGluZSA9IGJsb2NrLT5sYXN0Um9vdEJveCgpKSB7CiAgICAgICAgICAg
ICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUgPSBs
YXN0TGluZS0+c2VsZWN0aW9uU3RhdGUoKTsKICAgICAgICAgICAgIGlmIChsYXN0TGluZVNlbGVj
dGlvblN0YXRlICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uSW5zaWRlICYmIGxhc3RMaW5lU2Vs
ZWN0aW9uU3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKQEAgLTYxOSwyMCAr
NjE5LDIwIEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uQm90dG9tKCkgY29u
c3QKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkJvdHRvbSA9IG1fbGluZUJvdHRvbTsKIAogICAg
IGlmIChtX2hhc0Fubm90YXRpb25zQWZ0ZXIpCi0gICAgICAgIHNlbGVjdGlvbkJvdHRvbSArPSAh
cmVuZGVyZXIoKS5zdHlsZSgpLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBjb21wdXRl
VW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChtX2xpbmVCb3R0b20pIDogY29tcHV0ZU92ZXJBbm5v
dGF0aW9uQWRqdXN0bWVudChtX2xpbmVCb3R0b20pOworICAgICAgICBzZWxlY3Rpb25Cb3R0b20g
Kz0gIXJlbmRlcmVyKCktPnN0eWxlKCktPmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IGNv
bXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KG1fbGluZUJvdHRvbSkgOiBjb21wdXRlT3Zl
ckFubm90YXRpb25BZGp1c3RtZW50KG1fbGluZUJvdHRvbSk7CiAKLSAgICBpZiAoIXJlbmRlcmVy
KCkuc3R5bGUoKS0+aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpIHx8ICFuZXh0Um9vdEJveCgp
KQorICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSgpIHx8ICFuZXh0Um9vdEJveCgpKQogICAgICAgICByZXR1cm4gc2VsZWN0aW9uQm90dG9tOwog
CiAgICAgTGF5b3V0VW5pdCBuZXh0VG9wID0gbmV4dFJvb3RCb3goKS0+c2VsZWN0aW9uVG9wKCk7
Ci0gICAgaWYgKG5leHRUb3AgPiBzZWxlY3Rpb25Cb3R0b20gJiYgYmxvY2soKS5jb250YWluc0Zs
b2F0cygpKSB7CisgICAgaWYgKG5leHRUb3AgPiBzZWxlY3Rpb25Cb3R0b20gJiYgYmxvY2soKS0+
Y29udGFpbnNGbG9hdHMoKSkgewogICAgICAgICAvLyBUaGUgbmV4dCBsaW5lIGhhcyBhY3R1YWxs
eSBiZWVuIG1vdmVkIGZ1cnRoZXIgb3ZlciwgcHJvYmFibHkgZnJvbSBhIGxhcmdlIGxpbmUtaGVp
Z2h0LCBidXQgcG9zc2libHkgYmVjYXVzZSB0aGUKICAgICAgICAgLy8gbGluZSB3YXMgZm9yY2Vk
IHRvIGNsZWFyIGZsb2F0cy4gIElmIHNvLCBsZXQncyBjaGVjayB0aGUgb2Zmc2V0cywgYW5kIG9u
bHkgYmUgd2lsbGluZyB0byB1c2UgdGhlIG5leHQKICAgICAgICAgLy8gbGluZSdzIHRvcCBpZiB0
aGUgb2Zmc2V0cyBhcmUgZ3JlYXRlciBvbiBib3RoIHNpZGVzLgotICAgICAgICBMYXlvdXRVbml0
IG5leHRMZWZ0ID0gYmxvY2soKS5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobmV4dFRvcCwgZmFs
c2UpOwotICAgICAgICBMYXlvdXRVbml0IG5leHRSaWdodCA9IGJsb2NrKCkubG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShuZXh0VG9wLCBmYWxzZSk7Ci0gICAgICAgIExheW91dFVuaXQgbmV3TGVm
dCA9IGJsb2NrKCkubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHNlbGVjdGlvbkJvdHRvbSwgZmFs
c2UpOwotICAgICAgICBMYXlvdXRVbml0IG5ld1JpZ2h0ID0gYmxvY2soKS5sb2dpY2FsUmlnaHRP
ZmZzZXRGb3JMaW5lKHNlbGVjdGlvbkJvdHRvbSwgZmFsc2UpOworICAgICAgICBMYXlvdXRVbml0
IG5leHRMZWZ0ID0gYmxvY2soKS0+bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKG5leHRUb3AsIGZh
bHNlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXh0UmlnaHQgPSBibG9jaygpLT5sb2dpY2FsUmln
aHRPZmZzZXRGb3JMaW5lKG5leHRUb3AsIGZhbHNlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBuZXdM
ZWZ0ID0gYmxvY2soKS0+bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHNlbGVjdGlvbkJvdHRvbSwg
ZmFsc2UpOworICAgICAgICBMYXlvdXRVbml0IG5ld1JpZ2h0ID0gYmxvY2soKS0+bG9naWNhbFJp
Z2h0T2Zmc2V0Rm9yTGluZShzZWxlY3Rpb25Cb3R0b20sIGZhbHNlKTsKICAgICAgICAgaWYgKG5l
eHRMZWZ0ID4gbmV3TGVmdCB8fCBuZXh0UmlnaHQgPCBuZXdSaWdodCkKICAgICAgICAgICAgIHJl
dHVybiBzZWxlY3Rpb25Cb3R0b207CiAgICAgfQpAQCAtNjQyLDIyICs2NDIsMjIgQEAgTGF5b3V0
VW5pdCBSb290SW5saW5lQm94OjpzZWxlY3Rpb25Cb3R0b20oKSBjb25zdAogCiBpbnQgUm9vdElu
bGluZUJveDo6YmxvY2tEaXJlY3Rpb25Qb2ludEluTGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICFibG9jaygpLnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBtYXgobGlu
ZVRvcCgpLCBzZWxlY3Rpb25Ub3AoKSkgOiBtaW4obGluZUJvdHRvbSgpLCBzZWxlY3Rpb25Cb3R0
b20oKSk7CisgICAgcmV0dXJuICFibG9jaygpLT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0
aW5nTW9kZSgpID8gbWF4KGxpbmVUb3AoKSwgc2VsZWN0aW9uVG9wKCkpIDogbWluKGxpbmVCb3R0
b20oKSwgc2VsZWN0aW9uQm90dG9tKCkpOwogfQogCi1SZW5kZXJCbG9jayYgUm9vdElubGluZUJv
eDo6YmxvY2soKSBjb25zdAorUmVuZGVyQmxvY2sqIFJvb3RJbmxpbmVCb3g6OmJsb2NrKCkgY29u
c3QKIHsKICAgICByZXR1cm4gdG9SZW5kZXJCbG9jayhyZW5kZXJlcigpKTsKIH0KIAogc3RhdGlj
IGJvb2wgaXNFZGl0YWJsZUxlYWYoSW5saW5lQm94KiBsZWFmKQogewotICAgIHJldHVybiBsZWFm
ICYmIGxlYWYtPnJlbmRlcmVyKCkubm9kZSgpICYmIGxlYWYtPnJlbmRlcmVyKCkubm9kZSgpLT5y
ZW5kZXJlcklzRWRpdGFibGUoKTsKKyAgICByZXR1cm4gbGVhZiAmJiBsZWFmLT5yZW5kZXJlcigp
ICYmIGxlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSAmJiBsZWFmLT5yZW5kZXJlcigpLT5ub2RlKCkt
PnJlbmRlcmVySXNFZGl0YWJsZSgpOwogfQogCiBJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6OmNs
b3Nlc3RMZWFmQ2hpbGRGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnRJbkNvbnRlbnRzLCBi
b29sIG9ubHlFZGl0YWJsZUxlYXZlcykKIHsKLSAgICByZXR1cm4gY2xvc2VzdExlYWZDaGlsZEZv
ckxvZ2ljYWxMZWZ0UG9zaXRpb24oYmxvY2soKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
cG9pbnRJbkNvbnRlbnRzLngoKSA6IHBvaW50SW5Db250ZW50cy55KCksIG9ubHlFZGl0YWJsZUxl
YXZlcyk7CisgICAgcmV0dXJuIGNsb3Nlc3RMZWFmQ2hpbGRGb3JMb2dpY2FsTGVmdFBvc2l0aW9u
KGJsb2NrKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwb2ludEluQ29udGVudHMueCgp
IDogcG9pbnRJbkNvbnRlbnRzLnkoKSwgb25seUVkaXRhYmxlTGVhdmVzKTsKIH0KIAogSW5saW5l
Qm94KiBSb290SW5saW5lQm94OjpjbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNhbExlZnRQb3NpdGlv
bihpbnQgbGVmdFBvc2l0aW9uLCBib29sIG9ubHlFZGl0YWJsZUxlYXZlcykKQEAgLTY3NiwxOSAr
Njc2LDE5IEBAIElubGluZUJveCogUm9vdElubGluZUJveDo6Y2xvc2VzdExlYWZDaGlsZEZvckxv
Z2ljYWxMZWZ0UG9zaXRpb24oaW50IGxlZnRQb3NpdGlvCiAgICAgICAgIHJldHVybiBmaXJzdExl
YWY7CiAKICAgICAvLyBBdm9pZCByZXR1cm5pbmcgYSBsaXN0IG1hcmtlciB3aGVuIHBvc3NpYmxl
LgotICAgIGlmIChsZWZ0UG9zaXRpb24gPD0gZmlyc3RMZWFmLT5sb2dpY2FsTGVmdCgpICYmICFm
aXJzdExlYWYtPnJlbmRlcmVyKCkuaXNMaXN0TWFya2VyKCkgJiYgKCFvbmx5RWRpdGFibGVMZWF2
ZXMgfHwgaXNFZGl0YWJsZUxlYWYoZmlyc3RMZWFmKSkpCisgICAgaWYgKGxlZnRQb3NpdGlvbiA8
PSBmaXJzdExlYWYtPmxvZ2ljYWxMZWZ0KCkgJiYgIWZpcnN0TGVhZi0+cmVuZGVyZXIoKS0+aXNM
aXN0TWFya2VyKCkgJiYgKCFvbmx5RWRpdGFibGVMZWF2ZXMgfHwgaXNFZGl0YWJsZUxlYWYoZmly
c3RMZWFmKSkpCiAgICAgICAgIC8vIFRoZSBsZWZ0UG9zaXRpb24gY29vcmRpbmF0ZSBpcyBsZXNz
IG9yIGVxdWFsIHRvIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3RMZWFmLgogICAgICAgICAvLyBSZXR1
cm4gaXQuCiAgICAgICAgIHJldHVybiBmaXJzdExlYWY7CiAKLSAgICBpZiAobGVmdFBvc2l0aW9u
ID49IGxhc3RMZWFmLT5sb2dpY2FsUmlnaHQoKSAmJiAhbGFzdExlYWYtPnJlbmRlcmVyKCkuaXNM
aXN0TWFya2VyKCkgJiYgKCFvbmx5RWRpdGFibGVMZWF2ZXMgfHwgaXNFZGl0YWJsZUxlYWYobGFz
dExlYWYpKSkKKyAgICBpZiAobGVmdFBvc2l0aW9uID49IGxhc3RMZWFmLT5sb2dpY2FsUmlnaHQo
KSAmJiAhbGFzdExlYWYtPnJlbmRlcmVyKCktPmlzTGlzdE1hcmtlcigpICYmICghb25seUVkaXRh
YmxlTGVhdmVzIHx8IGlzRWRpdGFibGVMZWFmKGxhc3RMZWFmKSkpCiAgICAgICAgIC8vIFRoZSBs
ZWZ0UG9zaXRpb24gY29vcmRpbmF0ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHJpZ2h0IGVkZ2Ug
b2YgdGhlIGxhc3RMZWFmLgogICAgICAgICAvLyBSZXR1cm4gaXQuCiAgICAgICAgIHJldHVybiBs
YXN0TGVhZjsKIAogICAgIElubGluZUJveCogY2xvc2VzdExlYWYgPSAwOwogICAgIGZvciAoSW5s
aW5lQm94KiBsZWFmID0gZmlyc3RMZWFmOyBsZWFmOyBsZWFmID0gbGVhZi0+bmV4dExlYWZDaGls
ZElnbm9yaW5nTGluZUJyZWFrKCkpIHsKLSAgICAgICAgaWYgKCFsZWFmLT5yZW5kZXJlcigpLmlz
TGlzdE1hcmtlcigpICYmICghb25seUVkaXRhYmxlTGVhdmVzIHx8IGlzRWRpdGFibGVMZWFmKGxl
YWYpKSkgeworICAgICAgICBpZiAoIWxlYWYtPnJlbmRlcmVyKCktPmlzTGlzdE1hcmtlcigpICYm
ICghb25seUVkaXRhYmxlTGVhdmVzIHx8IGlzRWRpdGFibGVMZWFmKGxlYWYpKSkgewogICAgICAg
ICAgICAgY2xvc2VzdExlYWYgPSBsZWFmOwogICAgICAgICAgICAgaWYgKGxlZnRQb3NpdGlvbiA8
IGxlYWYtPmxvZ2ljYWxSaWdodCgpKQogICAgICAgICAgICAgICAgIC8vIFRoZSB4IGNvb3JkaW5h
dGUgaXMgbGVzcyB0aGFuIHRoZSByaWdodCBlZGdlIG9mIHRoZSBib3guCkBAIC03MjQsMTcgKzcy
NCwxNyBAQCBFbGxpcHNpc0JveCogUm9vdElubGluZUJveDo6ZWxsaXBzaXNCb3goKSBjb25zdAog
CiB2b2lkIFJvb3RJbmxpbmVCb3g6OnJlbW92ZUxpbmVCb3hGcm9tUmVuZGVyT2JqZWN0KCkKIHsK
LSAgICBibG9jaygpLmxpbmVCb3hlcygpLT5yZW1vdmVMaW5lQm94KHRoaXMpOworICAgIGJsb2Nr
KCktPmxpbmVCb3hlcygpLT5yZW1vdmVMaW5lQm94KHRoaXMpOwogfQogCiB2b2lkIFJvb3RJbmxp
bmVCb3g6OmV4dHJhY3RMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpCiB7Ci0gICAgYmxvY2soKS5s
aW5lQm94ZXMoKS0+ZXh0cmFjdExpbmVCb3godGhpcyk7CisgICAgYmxvY2soKS0+bGluZUJveGVz
KCktPmV4dHJhY3RMaW5lQm94KHRoaXMpOwogfQogCiB2b2lkIFJvb3RJbmxpbmVCb3g6OmF0dGFj
aExpbmVCb3hUb1JlbmRlck9iamVjdCgpCiB7Ci0gICAgYmxvY2soKS5saW5lQm94ZXMoKS0+YXR0
YWNoTGluZUJveCh0aGlzKTsKKyAgICBibG9jaygpLT5saW5lQm94ZXMoKS0+YXR0YWNoTGluZUJv
eCh0aGlzKTsKIH0KIAogTGF5b3V0UmVjdCBSb290SW5saW5lQm94OjpwYWRkZWRMYXlvdXRPdmVy
Zmxvd1JlY3QoTGF5b3V0VW5pdCBlbmRQYWRkaW5nKSBjb25zdApAQCAtNzc4LDggKzc3OCw4IEBA
IHZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveChJbmxpbmVCb3gqIGJv
eCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiCiAKICAgICAvLyBSZXBsYWNlZCBib3hlcyB3aWxsIHJl
dHVybiAwIGZvciB0aGUgbGluZS1oZWlnaHQgaWYgbGluZS1ib3gtY29udGFpbiBzYXlzIHRoZXkg
YXJlCiAgICAgLy8gbm90IHRvIGJlIGluY2x1ZGVkLgotICAgIGlmIChib3gtPnJlbmRlcmVyKCku
aXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5l
U3R5bGUoKSktPmxpbmVCb3hDb250YWluKCkgJiBMaW5lQm94Q29udGFpblJlcGxhY2VkKSB7Cisg
ICAgaWYgKGJveC0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpKSB7CisgICAgICAgIGlmIChyZW5k
ZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5saW5lQm94Q29udGFpbigpICYgTGlu
ZUJveENvbnRhaW5SZXBsYWNlZCkgewogICAgICAgICAgICAgYXNjZW50ID0gYm94LT5iYXNlbGlu
ZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSgpKTsKICAgICAgICAgICAgIGRlc2NlbnQgPSBib3gtPmxp
bmVIZWlnaHQoKSAtIGFzY2VudDsKICAgICAgICAgICAgIApAQCAtODA0LDggKzgwNCw4IEBAIHZv
aWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveChJbmxpbmVCb3gqIGJveCwg
R2x5cGhPdmVyZmxvd0FuZEZhbGxiCiAgICAgYm9vbCBzZXRVc2VkRm9udCA9IGZhbHNlOwogICAg
IGJvb2wgc2V0VXNlZEZvbnRXaXRoTGVhZGluZyA9IGZhbHNlOwogCi0gICAgaWYgKHVzZWRGb250
cyAmJiAhdXNlZEZvbnRzLT5pc0VtcHR5KCkgJiYgKGluY2x1ZGVGb250IHx8IChib3gtPnJlbmRl
cmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+bGluZUhlaWdodCgpLmlzTmVnYXRpdmUo
KSAmJiBpbmNsdWRlTGVhZGluZykpKSB7Ci0gICAgICAgIHVzZWRGb250cy0+YXBwZW5kKGJveC0+
cmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250KCkucHJpbWFyeUZvbnQo
KSk7CisgICAgaWYgKHVzZWRGb250cyAmJiAhdXNlZEZvbnRzLT5pc0VtcHR5KCkgJiYgKGluY2x1
ZGVGb250IHx8IChib3gtPnJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmxp
bmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgJiYgaW5jbHVkZUxlYWRpbmcpKSkgeworICAgICAgICB1
c2VkRm9udHMtPmFwcGVuZChib3gtPnJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUo
KSktPmZvbnQoKS5wcmltYXJ5Rm9udCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB1c2VkRm9udHMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBGb250TWV0cmlj
cyYgZm9udE1ldHJpY3MgPSB1c2VkRm9udHMtPmF0KGkpLT5mb250TWV0cmljcygpOwogICAgICAg
ICAgICAgaW50IHVzZWRGb250QXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlw
ZSgpKTsKQEAgLTg0Myw4ICs4NDMsOCBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERl
c2NlbnRGb3JCb3goSW5saW5lQm94KiBib3gsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYgogICAgIH0K
ICAgICAKICAgICBpZiAoaW5jbHVkZUZvbnRGb3JCb3goYm94KSAmJiAhc2V0VXNlZEZvbnQpIHsK
LSAgICAgICAgaW50IGZvbnRBc2NlbnQgPSBib3gtPnJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExp
bmVTdHlsZSgpKS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwotICAgICAg
ICBpbnQgZm9udERlc2NlbnQgPSBib3gtPnJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHls
ZSgpKS0+Zm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICAgICAgaW50
IGZvbnRBc2NlbnQgPSBib3gtPnJlbmRlcmVyKCktPnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSkt
PmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAgICAgICAgaW50IGZvbnRE
ZXNjZW50ID0gYm94LT5yZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250
TWV0cmljcygpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwogICAgICAgICBzZXRBc2NlbnRBbmRE
ZXNjZW50KGFzY2VudCwgZGVzY2VudCwgZm9udEFzY2VudCwgZm9udERlc2NlbnQsIGFzY2VudERl
c2NlbnRTZXQpOwogICAgICAgICBhZmZlY3RzQXNjZW50ID0gZm9udEFzY2VudCAtIGJveC0+bG9n
aWNhbFRvcCgpID4gMDsKICAgICAgICAgYWZmZWN0c0Rlc2NlbnQgPSBmb250RGVzY2VudCArIGJv
eC0+bG9naWNhbFRvcCgpID4gMDsgCkBAIC04NTQsMTQgKzg1NCwxNCBAQCB2b2lkIFJvb3RJbmxp
bmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3goSW5saW5lQm94KiBib3gsIEdseXBoT3ZlcmZs
b3dBbmRGYWxsYgogICAgICAgICBzZXRBc2NlbnRBbmREZXNjZW50KGFzY2VudCwgZGVzY2VudCwg
Z2x5cGhPdmVyZmxvdy0+dG9wLCBnbHlwaE92ZXJmbG93LT5ib3R0b20sIGFzY2VudERlc2NlbnRT
ZXQpOwogICAgICAgICBhZmZlY3RzQXNjZW50ID0gZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94LT5s
b2dpY2FsVG9wKCkgPiAwOwogICAgICAgICBhZmZlY3RzRGVzY2VudCA9IGdseXBoT3ZlcmZsb3ct
PmJvdHRvbSArIGJveC0+bG9naWNhbFRvcCgpID4gMDsgCi0gICAgICAgIGdseXBoT3ZlcmZsb3ct
PnRvcCA9IG1pbihnbHlwaE92ZXJmbG93LT50b3AsIG1heCgwLCBnbHlwaE92ZXJmbG93LT50b3Ag
LSBib3gtPnJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJpY3Mo
KS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7Ci0gICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRv
bSA9IG1pbihnbHlwaE92ZXJmbG93LT5ib3R0b20sIG1heCgwLCBnbHlwaE92ZXJmbG93LT5ib3R0
b20gLSBib3gtPnJlbmRlcmVyKCkuc3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJp
Y3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT50
b3AgPSBtaW4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBtYXgoMCwgZ2x5cGhPdmVyZmxvdy0+dG9wIC0g
Ym94LT5yZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250TWV0cmljcygp
LmFzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9t
ID0gbWluKGdseXBoT3ZlcmZsb3ctPmJvdHRvbSwgbWF4KDAsIGdseXBoT3ZlcmZsb3ctPmJvdHRv
bSAtIGJveC0+cmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKS0+Zm9udE1ldHJp
Y3MoKS5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKSkpOwogICAgIH0KIAogICAgIGlmIChpbmNsdWRl
TWFyZ2luRm9yQm94KGJveCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnRXaXRoTWFyZ2lu
ID0gYm94LT5yZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnRNZXRyaWNz
KCkuYXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50V2l0
aE1hcmdpbiA9IGJveC0+cmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250
TWV0cmljcygpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkpOwotICAgICAgICBpZiAoYm94LT5wYXJl
bnQoKSAmJiAhYm94LT5yZW5kZXJlcigpLmlzVGV4dCgpKSB7CisgICAgICAgIExheW91dFVuaXQg
YXNjZW50V2l0aE1hcmdpbiA9IGJveC0+cmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHls
ZSgpKS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOworICAgICAgICBMYXlv
dXRVbml0IGRlc2NlbnRXaXRoTWFyZ2luID0gYm94LT5yZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0
TGluZVN0eWxlKCkpLT5mb250TWV0cmljcygpLmRlc2NlbnQoYmFzZWxpbmVUeXBlKCkpOworICAg
ICAgICBpZiAoYm94LT5wYXJlbnQoKSAmJiAhYm94LT5yZW5kZXJlcigpLT5pc1RleHQoKSkgewog
ICAgICAgICAgICAgYXNjZW50V2l0aE1hcmdpbiArPSBib3gtPmJveE1vZGVsT2JqZWN0KCktPmJv
cmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGJveC0+Ym94TW9kZWxPYmplY3QoKS0+bWFyZ2luQmVm
b3JlKCk7CiAgICAgICAgICAgICBkZXNjZW50V2l0aE1hcmdpbiArPSBib3gtPmJveE1vZGVsT2Jq
ZWN0KCktPmJvcmRlckFuZFBhZGRpbmdBZnRlcigpICsgYm94LT5ib3hNb2RlbE9iamVjdCgpLT5t
YXJnaW5BZnRlcigpOwogICAgICAgICB9CkBAIC04NzUsNyArODc1LDcgQEAgdm9pZCBSb290SW5s
aW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KElubGluZUJveCogYm94LCBHbHlwaE92ZXJm
bG93QW5kRmFsbGIKIAogTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9u
Rm9yQm94KElubGluZUJveCogYm94LCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9z
aXRpb25DYWNoZSkKIHsKLSAgICBpZiAoYm94LT5yZW5kZXJlcigpLmlzVGV4dCgpKQorICAgIGlm
IChib3gtPnJlbmRlcmVyKCktPmlzVGV4dCgpKQogICAgICAgICByZXR1cm4gYm94LT5wYXJlbnQo
KS0+bG9naWNhbFRvcCgpOwogICAgIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJl
ciA9IGJveC0+Ym94TW9kZWxPYmplY3QoKTsKQEAgLTk0Nyw0NSArOTQ3LDQ1IEBAIExheW91dFVu
aXQgUm9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChJbmxpbmVCb3gqIGJveCwg
VmVydGljYWxQb3NpdGlvCiAKIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUxlYWRpbmdGb3JC
b3goSW5saW5lQm94KiBib3gpIGNvbnN0CiB7Ci0gICAgaWYgKGJveC0+cmVuZGVyZXIoKS5pc1Jl
cGxhY2VkKCkgfHwgKGJveC0+cmVuZGVyZXIoKS5pc1RleHQoKSAmJiAhYm94LT5pc1RleHQoKSkp
CisgICAgaWYgKGJveC0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpIHx8IChib3gtPnJlbmRlcmVy
KCktPmlzVGV4dCgpICYmICFib3gtPmlzVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4gPSByZW5kZXJlcigpLnN0eWxlKCkt
PmxpbmVCb3hDb250YWluKCk7CisgICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4gPSBy
ZW5kZXJlcigpLT5zdHlsZSgpLT5saW5lQm94Q29udGFpbigpOwogICAgIHJldHVybiAobGluZUJv
eENvbnRhaW4gJiBMaW5lQm94Q29udGFpbklubGluZSkgfHwgKGJveCA9PSB0aGlzICYmIChsaW5l
Qm94Q29udGFpbiAmIExpbmVCb3hDb250YWluQmxvY2spKTsKIH0KIAogYm9vbCBSb290SW5saW5l
Qm94OjppbmNsdWRlRm9udEZvckJveChJbmxpbmVCb3gqIGJveCkgY29uc3QKIHsKLSAgICBpZiAo
Ym94LT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSB8fCAoYm94LT5yZW5kZXJlcigpLmlzVGV4dCgp
ICYmICFib3gtPmlzVGV4dCgpKSkKKyAgICBpZiAoYm94LT5yZW5kZXJlcigpLT5pc1JlcGxhY2Vk
KCkgfHwgKGJveC0+cmVuZGVyZXIoKS0+aXNUZXh0KCkgJiYgIWJveC0+aXNUZXh0KCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCFib3gtPmlzVGV4dCgpICYmIGJveC0+
aXNJbmxpbmVGbG93Qm94KCkgJiYgIXRvSW5saW5lRmxvd0JveChib3gpLT5oYXNUZXh0Q2hpbGRy
ZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRm9yIG5vdyBtYXAgImdseXBo
cyIgdG8gImZvbnQiIGluIHZlcnRpY2FsIHRleHQgbW9kZSB1bnRpbCB0aGUgYm91bmRzIHJldHVy
bmVkIGJ5IGdseXBocyBhcmVuJ3QgZ2FyYmFnZS4KLSAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94
Q29udGFpbiA9IHJlbmRlcmVyKCkuc3R5bGUoKS0+bGluZUJveENvbnRhaW4oKTsKKyAgICBMaW5l
Qm94Q29udGFpbiBsaW5lQm94Q29udGFpbiA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmxpbmVCb3hD
b250YWluKCk7CiAgICAgcmV0dXJuIChsaW5lQm94Q29udGFpbiAmIExpbmVCb3hDb250YWluRm9u
dCkgfHwgKCFpc0hvcml6b250YWwoKSAmJiAobGluZUJveENvbnRhaW4gJiBMaW5lQm94Q29udGFp
bkdseXBocykpOwogfQogCiBib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3go
SW5saW5lQm94KiBib3gpIGNvbnN0CiB7Ci0gICAgaWYgKGJveC0+cmVuZGVyZXIoKS5pc1JlcGxh
Y2VkKCkgfHwgKGJveC0+cmVuZGVyZXIoKS5pc1RleHQoKSAmJiAhYm94LT5pc1RleHQoKSkpCisg
ICAgaWYgKGJveC0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpIHx8IChib3gtPnJlbmRlcmVyKCkt
PmlzVGV4dCgpICYmICFib3gtPmlzVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAogICAgIGlmICghYm94LT5pc1RleHQoKSAmJiBib3gtPmlzSW5saW5lRmxvd0JveCgpICYmICF0
b0lubGluZUZsb3dCb3goYm94KS0+aGFzVGV4dENoaWxkcmVuKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBmaXQgdG8gZ2x5cGhzIHlldCBmb3IgdmVy
dGljYWwgdGV4dCwgc2luY2UgdGhlIGJvdW5kcyByZXR1cm5lZCBhcmUgZ2FyYmFnZS4KLSAgICBM
aW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbiA9IHJlbmRlcmVyKCkuc3R5bGUoKS0+bGluZUJv
eENvbnRhaW4oKTsKKyAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbiA9IHJlbmRlcmVy
KCktPnN0eWxlKCktPmxpbmVCb3hDb250YWluKCk7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbCgp
ICYmIChsaW5lQm94Q29udGFpbiAmIExpbmVCb3hDb250YWluR2x5cGhzKTsKIH0KIAogYm9vbCBS
b290SW5saW5lQm94OjppbmNsdWRlTWFyZ2luRm9yQm94KElubGluZUJveCogYm94KSBjb25zdAog
ewotICAgIGlmIChib3gtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gtPnJlbmRlcmVy
KCkuaXNUZXh0KCkgJiYgIWJveC0+aXNUZXh0KCkpKQorICAgIGlmIChib3gtPnJlbmRlcmVyKCkt
PmlzUmVwbGFjZWQoKSB8fCAoYm94LT5yZW5kZXJlcigpLT5pc1RleHQoKSAmJiAhYm94LT5pc1Rl
eHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExpbmVCb3hDb250YWluIGxpbmVC
b3hDb250YWluID0gcmVuZGVyZXIoKS5zdHlsZSgpLT5saW5lQm94Q29udGFpbigpOworICAgIExp
bmVCb3hDb250YWluIGxpbmVCb3hDb250YWluID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+bGluZUJv
eENvbnRhaW4oKTsKICAgICByZXR1cm4gbGluZUJveENvbnRhaW4gJiBMaW5lQm94Q29udGFpbklu
bGluZUJveDsKIH0KIApAQCAtOTkzLDEzICs5OTMsMTMgQEAgYm9vbCBSb290SW5saW5lQm94Ojpp
bmNsdWRlTWFyZ2luRm9yQm94KElubGluZUJveCogYm94KSBjb25zdAogYm9vbCBSb290SW5saW5l
Qm94OjpmaXRzVG9HbHlwaHMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBmaXQg
dG8gZ2x5cGhzIHlldCBmb3IgdmVydGljYWwgdGV4dCwgc2luY2UgdGhlIGJvdW5kcyByZXR1cm5l
ZCBhcmUgZ2FyYmFnZS4KLSAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbiA9IHJlbmRl
cmVyKCkuc3R5bGUoKS0+bGluZUJveENvbnRhaW4oKTsKKyAgICBMaW5lQm94Q29udGFpbiBsaW5l
Qm94Q29udGFpbiA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmxpbmVCb3hDb250YWluKCk7CiAgICAg
cmV0dXJuIGlzSG9yaXpvbnRhbCgpICYmIChsaW5lQm94Q29udGFpbiAmIExpbmVCb3hDb250YWlu
R2x5cGhzKTsKIH0KIAogYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlc1Jvb3RMaW5lQm94Rm9u
dE9yTGVhZGluZygpIGNvbnN0CiB7Ci0gICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4g
PSByZW5kZXJlcigpLnN0eWxlKCktPmxpbmVCb3hDb250YWluKCk7CisgICAgTGluZUJveENvbnRh
aW4gbGluZUJveENvbnRhaW4gPSByZW5kZXJlcigpLT5zdHlsZSgpLT5saW5lQm94Q29udGFpbigp
OwogICAgIHJldHVybiAobGluZUJveENvbnRhaW4gJiBMaW5lQm94Q29udGFpbkJsb2NrKSB8fCAo
bGluZUJveENvbnRhaW4gJiBMaW5lQm94Q29udGFpbklubGluZSkgfHwgKGxpbmVCb3hDb250YWlu
ICYgTGluZUJveENvbnRhaW5Gb250KTsKIH0KIApAQCAtMTAwOCw5ICsxMDA4LDkgQEAgTm9kZSog
Um9vdElubGluZUJveDo6Z2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUoSW5saW5lQm94KiYgc3Rh
cnRCb3gpIGNvbnN0CiAgICAgVmVjdG9yPElubGluZUJveCo+IGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyOwogICAgIGNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlcik7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlci5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJb
aV0tPnJlbmRlcmVyKCkubm9kZSgpKSB7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlcltpXS0+cmVuZGVyZXIoKS0+bm9kZSgpKSB7CiAgICAgICAgICAgICBzdGFydEJveCA9IGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyW2ldOwotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0Qm94LT5y
ZW5kZXJlcigpLm5vZGUoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydEJveC0+cmVuZGVyZXIo
KS0+bm9kZSgpOwogICAgICAgICB9CiAgICAgfQogICAgIHN0YXJ0Qm94ID0gMDsKQEAgLTEwMjIs
OSArMTAyMiw5IEBAIE5vZGUqIFJvb3RJbmxpbmVCb3g6OmdldExvZ2ljYWxFbmRCb3hXaXRoTm9k
ZShJbmxpbmVCb3gqJiBlbmRCb3gpIGNvbnN0CiAgICAgVmVjdG9yPElubGluZUJveCo+IGxlYWZC
b3hlc0luTG9naWNhbE9yZGVyOwogICAgIGNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihs
ZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CiAgICAgZm9yIChzaXplX3QgaSA9IGxlYWZCb3hlc0lu
TG9naWNhbE9yZGVyLnNpemUoKTsgaSA+IDA7IC0taSkgeyAKLSAgICAgICAgaWYgKGxlYWZCb3hl
c0luTG9naWNhbE9yZGVyW2kgLSAxXS0+cmVuZGVyZXIoKS5ub2RlKCkpIHsKKyAgICAgICAgaWYg
KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2kgLSAxXS0+cmVuZGVyZXIoKS0+bm9kZSgpKSB7CiAg
ICAgICAgICAgICBlbmRCb3ggPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpIC0gMV07Ci0gICAg
ICAgICAgICByZXR1cm4gZW5kQm94LT5yZW5kZXJlcigpLm5vZGUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbmRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKICAgICAgICAgfQogICAgIH0KICAgICBl
bmRCb3ggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKaW5kZXgg
MmZiZjNjZC4uZjVlOGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBHYXBSZWN0czsKIAogY2xhc3MgUm9vdElubGlu
ZUJveCA6IHB1YmxpYyBJbmxpbmVGbG93Qm94IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSb290
SW5saW5lQm94KFJlbmRlckJsb2NrJik7CisgICAgZXhwbGljaXQgUm9vdElubGluZUJveChSZW5k
ZXJCbG9jayopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKSBPVkVS
UklERSBGSU5BTDsKIApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICBHYXBSZWN0cyBs
aW5lU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50
JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9t
Um9vdEJsb2NrLAogICAgICAgICBMYXlvdXRVbml0IHNlbFRvcCwgTGF5b3V0VW5pdCBzZWxIZWln
aHQsIGNvbnN0IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmLCBjb25zdCBQYWludEluZm8q
KTsKIAotICAgIFJlbmRlckJsb2NrJiBibG9jaygpIGNvbnN0OworICAgIFJlbmRlckJsb2NrKiBi
bG9jaygpIGNvbnN0OwogCiAgICAgSW5saW5lQm94KiBjbG9zZXN0TGVhZkNoaWxkRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmLCBib29sIG9ubHlFZGl0YWJsZUxlYXZlcyk7CiAgICAgSW5saW5lQm94
KiBjbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQsIGJvb2wgb25seUVk
aXRhYmxlTGVhdmVzID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oCmluZGV4IGEzN2FjMGQuLjFmOTE1MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJ
bmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNS
b290SW5saW5lQm94LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3ggRklOQUwgOiBwdWJsaWMgUm9vdElubGlu
ZUJveCB7CiBwdWJsaWM6Ci0gICAgVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94KFJlbmRlckJs
b2NrJiBibG9jaykKKyAgICBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3goUmVuZGVyQmxvY2sq
IGJsb2NrKQogICAgICAgICA6IFJvb3RJbmxpbmVCb3goYmxvY2spCiAgICAgewogICAgICAgICBz
ZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCmluZGV4IDZkMzBmY2EuLjAzYWZmMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKQEAg
LTMxMiw2ICszMTIsMjMgQEAgc3RhdGljIHZvaWQgY29tcHV0ZVhJbnRlcnNlY3Rpb25zKGNvbnN0
IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeSwgYm9vbCBpc00KICAgICB9CiB9CiAKK3N0
YXRpYyBib29sIGNvbXBhcmVYMShjb25zdCBGbG9hdFNoYXBlSW50ZXJ2YWwgYSwgY29uc3QgRmxv
YXRTaGFwZUludGVydmFsJiBiKSB7IHJldHVybiBhLngxKCkgPCBiLngxKCk7IH0KKworc3RhdGlj
IHZvaWQgc29ydEFuZE1lcmdlU2hhcGVJbnRlcnZhbHMoRmxvYXRTaGFwZUludGVydmFscyYgaW50
ZXJ2YWxzKQoreworICAgIHN0ZDo6c29ydChpbnRlcnZhbHMuYmVnaW4oKSwgaW50ZXJ2YWxzLmVu
ZCgpLCBjb21wYXJlWDEpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGludGVydmFs
cy5zaXplKCk7ICkgeworICAgICAgICBjb25zdCBGbG9hdFNoYXBlSW50ZXJ2YWwmIHRoaXNJbnRl
cnZhbCA9IGludGVydmFsc1tpXTsKKyAgICAgICAgRmxvYXRTaGFwZUludGVydmFsJiBwcmV2aW91
c0ludGVydmFsID0gaW50ZXJ2YWxzW2kgLSAxXTsKKyAgICAgICAgaWYgKHRoaXNJbnRlcnZhbC5v
dmVybGFwcyhwcmV2aW91c0ludGVydmFsKSkgeworICAgICAgICAgICAgcHJldmlvdXNJbnRlcnZh
bC5zZXRYMihzdGQ6Om1heDxmbG9hdD4ocHJldmlvdXNJbnRlcnZhbC54MigpLCB0aGlzSW50ZXJ2
YWwueDIoKSkpOworICAgICAgICAgICAgaW50ZXJ2YWxzLnJlbW92ZShpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICArK2k7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBjb21wdXRlT3Zl
cmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxv
YXQgeTEsIGZsb2F0IHkyLCBGbG9hdFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpCiB7CiAgICAgVmVj
dG9yPGNvbnN0IEZsb2F0UG9seWdvbkVkZ2UqPiBlZGdlczsKQEAgLTM0Myw3ICszNjAsNyBAQCBz
dGF0aWMgdm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKGNvbnN0IEZsb2F0
UG9seWdvbiYgcG9seWdvbiwgZmxvYQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGbG9hdFNo
YXBlSW50ZXJ2YWwoeDEsIHgyKSk7CiAgICAgfQogCi0gICAgRmxvYXRTaGFwZUludGVydmFsOjpz
b3J0VmVjdG9yKHJlc3VsdCk7CisgICAgc29ydEFuZE1lcmdlU2hhcGVJbnRlcnZhbHMocmVzdWx0
KTsKIH0KIAogdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVu
aXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVz
dWx0KSBjb25zdApAQCAtMzYwLDEzICszNzcsMTMgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4
Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EK
ICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRlcnZh
bHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBtZXJnZWRJbnRlcnZhbHM7Ci0gICAgRmxv
YXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMoeTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMs
IG1lcmdlZEludGVydmFscyk7CisgICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50
ZXJ2YWxzKHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzLCBtZXJnZWRJbnRlcnZhbHMpOwogCiAg
ICAgRmxvYXRTaGFwZUludGVydmFscyBlZGdlSW50ZXJ2YWxzOwogICAgIGNvbXB1dGVPdmVybGFw
cGluZ0VkZ2VYUHJvamVjdGlvbnMocG9seWdvbiwgeTEsIHkyLCBlZGdlSW50ZXJ2YWxzKTsKIAog
ICAgIEZsb2F0U2hhcGVJbnRlcnZhbHMgZXhjbHVkZWRJbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFw
ZUludGVydmFsOjp1bml0ZVZlY3RvcnMobWVyZ2VkSW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBl
eGNsdWRlZEludGVydmFscyk7CisgICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50
ZXJ2YWxzKG1lcmdlZEludGVydmFscywgZWRnZUludGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIEZsb2F0U2hhcGVJbnRlcnZhbCBpbnRlcnZhbCA9IGV4Y2x1ZGVk
SW50ZXJ2YWxzW2ldOwpAQCAtMzg4LDEzICs0MDUsMTMgQEAgdm9pZCBQb2x5Z29uU2hhcGU6Omdl
dEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2EKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRl
cnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBjb21tb25JbnRlcnZhbHM7Ci0gICAg
RmxvYXRTaGFwZUludGVydmFsOjppbnRlcnNlY3RWZWN0b3JzKHkxWEludGVydmFscywgeTJYSW50
ZXJ2YWxzLCBjb21tb25JbnRlcnZhbHMpOworICAgIEZsb2F0U2hhcGVJbnRlcnZhbDo6aW50ZXJz
ZWN0U2hhcGVJbnRlcnZhbHMoeTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMsIGNvbW1vbkludGVy
dmFscyk7CiAKICAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGVkZ2VJbnRlcnZhbHM7CiAgICAgY29t
cHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhwb2x5Z29uLCB5MSwgeTIsIGVkZ2VJbnRl
cnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBpbmNsdWRlZEludGVydmFsczsKLSAg
ICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0VmVjdG9ycyhjb21tb25JbnRlcnZhbHMsIGVk
Z2VJbnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxzKTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6
OnN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29tbW9uSW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBp
bmNsdWRlZEludGVydmFscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5jbHVk
ZWRJbnRlcnZhbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgRmxvYXRTaGFwZUludGVy
dmFsJiBpbnRlcnZhbCA9IGluY2x1ZGVkSW50ZXJ2YWxzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCA0MjBhMmQ2Li5kMWI2ZGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwu
aApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogY2xhc3MgU2hhcGVJbnRlcnZhbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgU2hhcGVJbnRlcnZhbChUIHgxID0gMCwgVCB4MiA9IDApCiAgICAg
ICAgIDogbV94MSh4MSkKQEAgLTcxLDE0MSArNzIsMTQwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHgyKCkgPj0gaW50ZXJ2YWwueDEoKSAmJiB4MSgpIDw9IGludGVydmFsLngyKCk7CiAgICAg
fQogCi0gICAgYm9vbCBpbnRlcnNlY3QoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaSwgU2hhcGVJ
bnRlcnZhbDxUPiYgcnYpIGNvbnN0CisgICAgYm9vbCBjb250YWlucyhjb25zdCBTaGFwZUludGVy
dmFsPFQ+JiBpbnRlcnZhbCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICh4MigpIDwgaS54MSgp
IHx8IHgxKCkgPiBpLngyKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJ2
LnNldChzdGQ6Om1heCh4MSgpLCBpLngxKCkpLCBzdGQ6Om1pbih4MigpLCBpLngyKCkpKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiB4MSgpIDw9IGludGVydmFsLngxKCkg
JiYgeDIoKSA+PSBpbnRlcnZhbC54MigpOworICAgIH0KKworICAgIFNoYXBlSW50ZXJ2YWw8VD4g
aW50ZXJzZWN0KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVydmFsKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKG92ZXJsYXBzKGludGVydmFsKSk7CisgICAgICAgIHJldHVybiBTaGFw
ZUludGVydmFsPFQ+KHN0ZDo6bWF4PFQ+KHgxKCksIGludGVydmFsLngxKCkpLCBzdGQ6Om1pbjxU
Pih4MigpLCBpbnRlcnZhbC54MigpKSk7CiAgICAgfQogCiAgICAgdHlwZWRlZiBWZWN0b3I8U2hh
cGVJbnRlcnZhbDxUPiA+IFNoYXBlSW50ZXJ2YWxzOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgU2hh
cGVJbnRlcnZhbHM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIHR5cGVkZWYg
dHlwZW5hbWUgU2hhcGVJbnRlcnZhbHM6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogCi0gICAgc3RhdGlj
IHZvaWQgc29ydFZlY3RvcihTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzKQorICAgIHN0YXRpYyB2
b2lkIHVuaXRlU2hhcGVJbnRlcnZhbHMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIGEsIGNvbnN0IFNo
YXBlSW50ZXJ2YWxzJiBiLCBTaGFwZUludGVydmFscyYgcmVzdWx0KQogICAgIHsKLSAgICAgICAg
c3RkOjpzb3J0KGludGVydmFscy5iZWdpbigpLCBpbnRlcnZhbHMuZW5kKCkpOwotICAgIH0KKyAg
ICAgICAgQVNTRVJUKHNoYXBlSW50ZXJ2YWxzQXJlU29ydGVkQW5kRGlzam9pbnQoYSkgJiYgc2hh
cGVJbnRlcnZhbHNBcmVTb3J0ZWRBbmREaXNqb2ludChiKSk7CiAKLSAgICBzdGF0aWMgdm9pZCB1
bml0ZVZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYxLCBjb25zdCBTaGFwZUludGVydmFs
cyYgdjIsIFNoYXBlSW50ZXJ2YWxzJiBydikKLSAgICB7Ci0gICAgICAgIGlmICghdjEuc2l6ZSgp
KQotICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjIuYmVnaW4oKSwgdjIuZW5kKCkpOwotICAg
ICAgICBlbHNlIGlmICghdjIuc2l6ZSgpKQotICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEu
YmVnaW4oKSwgdjEuZW5kKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNoYXBlSW50
ZXJ2YWxzIHYodjEuc2l6ZSgpICsgdjIuc2l6ZSgpKTsKLSAgICAgICAgICAgIFNoYXBlSW50ZXJ2
YWw8VD4qIGludGVydmFsID0gMDsKLQotICAgICAgICAgICAgc3RkOjptZXJnZSh2MS5iZWdpbigp
LCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVnaW4oKSk7Ci0KLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykgewotICAgICAgICAgICAg
ICAgIGlmICghaW50ZXJ2YWwpCi0gICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAodltpXS54MSgpID49IGludGVydmFsLT54MSgpICYm
IHZbaV0ueDEoKSA8PSBpbnRlcnZhbC0+eDIoKSkgLy8gRklYTUU6IDFzdCA8PSB0ZXN0IG5vdCBu
ZWVkZWQ/Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsLT5zZXQoaW50ZXJ2YWwtPngxKCks
IHN0ZDo6bWF4PFQ+KGludGVydmFsLT54MigpLCB2W2ldLngyKCkpKTsKLSAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQorICAgICAgICBpZiAoYS5pc0VtcHR5KCkgfHwgYSA9PSBiKSB7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYi5iZWdpbigpLCBiLmVuZCgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoaW50ZXJ2YWwpCi0gICAgICAg
ICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlm
IChiLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKGEuYmVnaW4o
KSwgYS5lbmQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBj
b25zdF9pdGVyYXRvciBhTmV4dCA9IGEuYmVnaW4oKTsKKyAgICAgICAgY29uc3RfaXRlcmF0b3Ig
Yk5leHQgPSBiLmJlZ2luKCk7CisKKyAgICAgICAgd2hpbGUgKGFOZXh0ICE9IGEuZW5kKCkgfHwg
Yk5leHQgIT0gYi5lbmQoKSkgeworICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgbmV4dCA9IChi
TmV4dCA9PSBiLmVuZCgpIHx8IChhTmV4dCAhPSBhLmVuZCgpICYmIGFOZXh0LT54MSgpIDwgYk5l
eHQtPngxKCkpKSA/IGFOZXh0KysgOiBiTmV4dCsrOworICAgICAgICAgICAgaWYgKHJlc3VsdC5p
c0VtcHR5KCkgfHwgIXJlc3VsdC5sYXN0KCkub3ZlcmxhcHMoKm5leHQpKQorICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoKm5leHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJlc3VsdC5sYXN0KCkuc2V0WDIoc3RkOjptYXg8VD4ocmVzdWx0Lmxhc3QoKS54MigpLCBu
ZXh0LT54MigpKSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBpbnRlcnNl
Y3RWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbHMm
IHYyLCBTaGFwZUludGVydmFscyYgcnYpCisgICAgc3RhdGljIHZvaWQgaW50ZXJzZWN0U2hhcGVJ
bnRlcnZhbHMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIGEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBi
LCBTaGFwZUludGVydmFscyYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc2l6ZV90IHYxU2l6ZSA9
IHYxLnNpemUoKTsKLSAgICAgICAgc2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKKyAgICAgICAg
QVNTRVJUKHNoYXBlSW50ZXJ2YWxzQXJlU29ydGVkQW5kRGlzam9pbnQoYSkgJiYgc2hhcGVJbnRl
cnZhbHNBcmVTb3J0ZWRBbmREaXNqb2ludChiKSk7CiAKLSAgICAgICAgaWYgKCF2MVNpemUgfHwg
IXYyU2l6ZSkKKyAgICAgICAgaWYgKGEuaXNFbXB0eSgpIHx8IGIuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4gaW50ZXJ2YWw7Ci0gICAg
ICAgIGJvb2wgb3ZlcmxhcCA9IGZhbHNlOwotICAgICAgICBzaXplX3QgaTEgPSAwOwotICAgICAg
ICBzaXplX3QgaTIgPSAwOwotCi0gICAgICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBpMiA8IHYy
U2l6ZSkgewotICAgICAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiB2MTI7Ci0gICAgICAgICAgICBp
ZiAodjFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IW92ZXJsYXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ2LmFw
cGVuZChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gdjEyOwotICAg
ICAgICAgICAgICAgICAgICBvdmVybGFwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKHYxW2kxXS54MigpIDwgdjJbaTJdLngyKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGkxKys7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBp
MisrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkK
LSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKLSAgICAgICAgICAgICAg
ICBvdmVybGFwID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHYxW2kxXS54MSgpIDwgdjJb
aTJdLngxKCkpCi0gICAgICAgICAgICAgICAgICAgIGkxKys7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBpMisrOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAo
YSA9PSBiKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYS5iZWdpbigpLCBhLmVu
ZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChvdmVy
bGFwKQotICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKKyAgICAgICAgY29uc3RfaXRl
cmF0b3IgYU5leHQgPSBhLmJlZ2luKCk7CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJOZXh0ID0g
Yi5iZWdpbigpOworICAgICAgICBjb25zdF9pdGVyYXRvciB3b3JraW5nID0gYU5leHQtPngxKCkg
PCBiTmV4dC0+eDEoKSA/IGFOZXh0KysgOiBiTmV4dCsrOworCisgICAgICAgIHdoaWxlIChhTmV4
dCAhPSBhLmVuZCgpIHx8IGJOZXh0ICE9IGIuZW5kKCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2l0
ZXJhdG9yIG5leHQgPSAoYk5leHQgPT0gYi5lbmQoKSB8fCAoYU5leHQgIT0gYS5lbmQoKSAmJiBh
TmV4dC0+eDEoKSA8IGJOZXh0LT54MSgpKSkgPyBhTmV4dCsrIDogYk5leHQrKzsKKyAgICAgICAg
ICAgIGlmICh3b3JraW5nLT5vdmVybGFwcygqbmV4dCkpIHsKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKHdvcmtpbmctPmludGVyc2VjdCgqbmV4dCkpOworICAgICAgICAgICAgICAgIGlm
IChuZXh0LT54MigpID4gd29ya2luZy0+eDIoKSkKKyAgICAgICAgICAgICAgICAgICAgd29ya2lu
ZyA9IG5leHQ7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB3b3JraW5nID0g
bmV4dDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHN1YnRyYWN0VmVjdG9y
cyhjb25zdCBTaGFwZUludGVydmFscyYgdjEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiB2MiwgU2hh
cGVJbnRlcnZhbHMmIHJ2KQorICAgIHN0YXRpYyB2b2lkIHN1YnRyYWN0U2hhcGVJbnRlcnZhbHMo
Y29uc3QgU2hhcGVJbnRlcnZhbHMmIGEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBiLCBTaGFwZUlu
dGVydmFscyYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUo
KTsKLSAgICAgICAgc2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKKyAgICAgICAgQVNTRVJUKHNo
YXBlSW50ZXJ2YWxzQXJlU29ydGVkQW5kRGlzam9pbnQoYSkgJiYgc2hhcGVJbnRlcnZhbHNBcmVT
b3J0ZWRBbmREaXNqb2ludChiKSk7CiAKLSAgICAgICAgaWYgKCF2MVNpemUpCisgICAgICAgIGlm
IChhLmlzRW1wdHkoKSB8fCBhID09IGIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKCF2MlNpemUpCi0gICAgICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5l
bmQoKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2l6ZV90IGkxID0gMCwgaTIgPSAw
OwotICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwotCi0g
ICAgICAgICAgICB3aGlsZSAoaTEgPCBydi5zaXplKCkgJiYgaTIgPCB2MlNpemUpIHsKLSAgICAg
ICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+JiBpbnRlcnZhbDEgPSBydltpMV07Ci0gICAgICAg
ICAgICAgICAgY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwyID0gdjJbaTJdOwotCi0g
ICAgICAgICAgICAgICAgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFsMS54MSgpICYmIGlu
dGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQotICAgICAgICAgICAgICAgICAgICBydi5y
ZW1vdmUoaTEpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MigpIDwgaW50
ZXJ2YWwxLngxKCkpCi0gICAgICAgICAgICAgICAgICAgIGkyICs9IDE7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxKCkgPiBpbnRlcnZhbDEueDIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgaTEgKz0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEo
KSA+IGludGVydmFsMS54MSgpICYmIGludGVydmFsMi54MigpIDwgaW50ZXJ2YWwxLngyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgcnYuaW5zZXJ0KGkxLCBTaGFwZUludGVydmFsKGludGVydmFs
MS54MSgpLCBpbnRlcnZhbDIueDEoKSkpOwotICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDEu
c2V0KGludGVydmFsMi54MigpLCBpbnRlcnZhbDEueDIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGkyICs9IDE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEoKSA8PSBp
bnRlcnZhbDEueDEoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDEuc2V0KGludGVy
dmFsMi54MigpLCBpbnRlcnZhbDEueDIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGkyICs9IDE7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlICB7IC8vIChpbnRlcnZhbDIueDIoKSA+PSBpbnRlcnZh
bDEueDIoKSkKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLnNldChpbnRlcnZhbDEueDEo
KSwgaW50ZXJ2YWwyLngxKCkpOwotICAgICAgICAgICAgICAgICAgICBpMSArPSAxOworICAgICAg
ICBpZiAoYi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRSYW5nZShhLmJl
Z2luKCksIGEuZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgY29uc3RfaXRlcmF0b3IgYU5leHQgPSBhLmJlZ2luKCk7CisgICAgICAgIGNvbnN0X2l0ZXJh
dG9yIGJOZXh0ID0gYi5iZWdpbigpOworICAgICAgICBTaGFwZUludGVydmFsPFQ+IGFWYWx1ZSA9
ICphTmV4dDsKKyAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiBiVmFsdWUgPSAqYk5leHQ7CisKKyAg
ICAgICAgd2hpbGUgKGFOZXh0ICE9IGEuZW5kKCkgJiYgYk5leHQgIT0gYi5lbmQoKSkgeworICAg
ICAgICAgICAgaWYgKGJWYWx1ZS5jb250YWlucyhhVmFsdWUpKSB7CisgICAgICAgICAgICAgICAg
YVZhbHVlID0gKisrYU5leHQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFWYWx1ZS5jb250YWlu
cyhiVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGJWYWx1ZS54MSgpID4gYVZhbHVlLngx
KCkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZhbDxUPihh
VmFsdWUueDEoKSwgYlZhbHVlLngxKCkpKTsKKyAgICAgICAgICAgICAgICBpZiAoYVZhbHVlLngy
KCkgPiBiVmFsdWUueDIoKSkKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlLnNldFgxKGJWYWx1
ZS54MigpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFWYWx1
ZSA9ICorK2FOZXh0OworICAgICAgICAgICAgICAgIGJWYWx1ZSA9ICorK2JOZXh0OworICAgICAg
ICAgICAgfSBlbHNlIGlmIChhVmFsdWUub3ZlcmxhcHMoYlZhbHVlKSkgeworICAgICAgICAgICAg
ICAgIGlmIChhVmFsdWUueDEoKSA8IGJWYWx1ZS54MSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZhbDxUPihhVmFsdWUueDEoKSwgYlZhbHVlLngxKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlID0gKisrYU5leHQ7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlLnNldFgxKGJWYWx1ZS54Migp
KTsKKyAgICAgICAgICAgICAgICAgICAgYlZhbHVlID0gKisrYk5leHQ7CiAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYVZhbHVlLngx
KCkgPCBiVmFsdWUueDEoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGFW
YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGFWYWx1ZSA9ICorK2FOZXh0OworICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBiVmFsdWUgPSAqKytiTmV4dDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmIChhTmV4dCAhPSBhLmVuZCgpKSB7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGFWYWx1ZSk7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kUmFuZ2UoKythTmV4dCwgYS5lbmQoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIHgxKCkgPT0gb3RoZXIueDEoKSAmJiB4MigpID09IG90aGVyLngyKCk7IH0KICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICFvcGVyYXRvcj09KG90aGVyKTsgfQotICAgIGJvb2wgb3BlcmF0b3I8IChjb25zdCBTaGFwZUlu
dGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4geDEoKSA8IG90aGVyLngxKCk7IH0KLSAg
ICBib29sIG9wZXJhdG9yPiAoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG9wZXJhdG9yPCAob3RoZXIsICp0aGlzKTsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPiAo
b3RoZXIpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIG90
aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I8IChvdGhlcik7IH0KIAogcHJpdmF0ZToKICAg
ICBUIG1feDE7CiAgICAgVCBtX3gyOworCisgICAgc3RhdGljIGJvb2wgc2hhcGVJbnRlcnZhbHNB
cmVTb3J0ZWRBbmREaXNqb2ludChjb25zdCBTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzKQorICAg
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGludGVydmFscy5zaXplKCk7IGkr
KykKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbHNbaSAtIDFdLngyKCkgPiBpbnRlcnZhbHNbaV0u
eDEoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQogfTsKIAogdHlwZWRlZiBTaGFwZUludGVydmFsPGludD4gSW50U2hhcGVJbnRl
cnZhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaApp
bmRleCBhZWQwNzQyLi5hMDk5YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbi5oCkBAIC0zMSwxMyArMzEsMTEgQEAKICNpZm5kZWYgR3JpZFBvc2l0
aW9uX2gKICNkZWZpbmUgR3JpZFBvc2l0aW9uX2gKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gR3JpZFBvc2l0aW9uVHlwZSB7
CiAgICAgQXV0b1Bvc2l0aW9uLAotICAgIEV4cGxpY2l0UG9zaXRpb24sIC8vIFsgPGludGVnZXI+
IHx8IDxzdHJpbmc+IF0KKyAgICBJbnRlZ2VyUG9zaXRpb24sCiAgICAgU3BhblBvc2l0aW9uCiB9
OwogCkBAIC01MywzNyArNTEsMzAgQEAgcHVibGljOgogCiAgICAgR3JpZFBvc2l0aW9uVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgPT0gQXV0b1Bvc2l0aW9uOyB9CisgICAgYm9vbCBpc0ludGVnZXIoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gSW50ZWdlclBvc2l0aW9uOyB9CiAgICAgYm9vbCBpc1Nw
YW4oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3BhblBvc2l0aW9uOyB9CiAKLSAgICB2b2lk
IHNldEV4cGxpY2l0UG9zaXRpb24oaW50IHBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIG5hbWVkR3Jp
ZExpbmUpCisgICAgdm9pZCBzZXRJbnRlZ2VyUG9zaXRpb24oaW50IHBvc2l0aW9uKQogICAgIHsK
LSAgICAgICAgbV90eXBlID0gRXhwbGljaXRQb3NpdGlvbjsKKyAgICAgICAgbV90eXBlID0gSW50
ZWdlclBvc2l0aW9uOwogICAgICAgICBtX2ludGVnZXJQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAg
ICAgICBtX25hbWVkR3JpZExpbmUgPSBuYW1lZEdyaWRMaW5lOwogICAgIH0KIAogICAgIC8vICdz
cGFuJyB2YWx1ZXMgY2Fubm90IGJlIG5lZ2F0aXZlLCB5ZXQgd2UgcmV1c2UgdGhlIDxpbnRlZ2Vy
PiBwb3NpdGlvbiB3aGljaCBjYW4KICAgICAvLyBiZS4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUg
dG8gY29udmVydCB0aGUgc3BhbiBwb3NpdGlvbiB0byBhbiBpbnRlZ2VyLCBsb3NpbmcKICAgICAv
LyBzb21lIHByZWNpc2lvbiBoZXJlLiBJdCBzaG91bGRuJ3QgYmUgYW4gaXNzdWUgaW4gcHJhY3Rp
Y2UgdGhvdWdoLgotICAgIHZvaWQgc2V0U3BhblBvc2l0aW9uKGludCBwb3NpdGlvbiwgY29uc3Qg
U3RyaW5nJiBuYW1lZEdyaWRMaW5lKQorICAgIHZvaWQgc2V0U3BhblBvc2l0aW9uKGludCBwb3Np
dGlvbikKICAgICB7CiAgICAgICAgIG1fdHlwZSA9IFNwYW5Qb3NpdGlvbjsKICAgICAgICAgbV9p
bnRlZ2VyUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgbV9uYW1lZEdyaWRMaW5lID0gbmFt
ZWRHcmlkTGluZTsKICAgICB9CiAKICAgICBpbnQgaW50ZWdlclBvc2l0aW9uKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gRXhwbGljaXRQb3NpdGlvbik7CisgICAgICAg
IEFTU0VSVCh0eXBlKCkgPT0gSW50ZWdlclBvc2l0aW9uKTsKICAgICAgICAgcmV0dXJuIG1faW50
ZWdlclBvc2l0aW9uOwogICAgIH0KIAotICAgIFN0cmluZyBuYW1lZEdyaWRMaW5lKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gRXhwbGljaXRQb3NpdGlvbiB8fCB0eXBl
KCkgPT0gU3BhblBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZWRHcmlkTGluZTsKLSAg
ICB9Ci0KICAgICBpbnQgc3BhblBvc2l0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VCh0eXBlKCkgPT0gU3BhblBvc2l0aW9uKTsKQEAgLTEwMiw3ICs5Myw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgR3JpZFBvc2l0aW9uVHlwZSBtX3R5cGU7CiAgICAgaW50IG1faW50ZWdlclBv
c2l0aW9uOwotICAgIFN0cmluZyBtX25hbWVkR3JpZExpbmU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAppbmRleCA4ZGIzNjE0Li4wZDc4YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTUwNSw5ICs1MDUsNiBAQCBib29sIFJlbmRl
clN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVu
c2lnbmVkJiBjaGFuZwogI2VuZGlmCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
bV9saW5lU25hcCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1fbGluZVNuYXAKICAgICAg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbiAhPSBvdGhlci0+cmFyZUlu
aGVyaXRlZERhdGEtPm1fbGluZUFsaWduCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORykKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92
ZXJmbG93U2Nyb2xsaW5nICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVy
Zmxvd1Njcm9sbGluZwotI2VuZGlmCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
bGlzdFN0eWxlSW1hZ2UgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFn
ZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hl
LmNwcAppbmRleCA4NmE3MjRkLi4xNmI1NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNo
ZS5jcHAKQEAgLTU4LDcgKzU4LDggQEAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6On5T
dHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSgpCiAKIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6Omxvb2t1cChjb25zdCBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY2FjaGUu
Z2V0KHByb2dyYW1JbmZvKTsKKyAgICBDYWNoZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1f
Y2FjaGUuZmluZChwcm9ncmFtSW5mbyk7CisgICAgcmV0dXJuIGl0ZXIgIT0gbV9jYWNoZS5lbmQo
KSA/IGl0ZXItPnZhbHVlIDogMDsKIH0KIAogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTo6bG9va3VwKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSogcHJvZ3JhbSkgY29uc3QKQEAgLTY4LDE3ICs2OSwyMSBAQCBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpsb29rdXAoU3R5bGVDdXN0b21G
aWx0ZQogCiB2b2lkIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjphZGQoU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKQogewotICAgIEFTU0VSVCghbV9jYWNoZS5jb250YWlu
cyhwcm9ncmFtQ2FjaGVLZXkocHJvZ3JhbSkpKTsKLSAgICBtX2NhY2hlLnNldChwcm9ncmFtQ2Fj
aGVLZXkocHJvZ3JhbSksIHByb2dyYW0pOworICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIGtl
eSA9IHByb2dyYW1DYWNoZUtleShwcm9ncmFtKTsKKyAgICBBU1NFUlQobV9jYWNoZS5maW5kKGtl
eSkgPT0gbV9jYWNoZS5lbmQoKSk7CisgICAgbV9jYWNoZS5zZXQoa2V5LCBwcm9ncmFtKTsKICAg
ICBwcm9ncmFtLT5zZXRDYWNoZSh0aGlzKTsKIH0KIAogdm9pZCBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZTo6cmVtb3ZlKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogcHJvZ3JhbSkKIHsK
LSAgICBBU1NFUlQobV9jYWNoZS5jb250YWlucyhwcm9ncmFtQ2FjaGVLZXkocHJvZ3JhbSkpKTsK
LSAgICBtX2NhY2hlLnJlbW92ZShwcm9ncmFtQ2FjaGVLZXkocHJvZ3JhbSkpOworICAgIENhY2hl
TWFwOjppdGVyYXRvciBpdGVyID0gbV9jYWNoZS5maW5kKHByb2dyYW1DYWNoZUtleShwcm9ncmFt
KSk7CisgICAgQVNTRVJUKGl0ZXIgIT0gbV9jYWNoZS5lbmQoKSk7CisgICAgbV9jYWNoZS5yZW1v
dmUoaXRlcik7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKENTU19TSEFERVJTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAKaW5kZXggM2E5MTU1Ny4uZThkZmUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBSZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lubGluZShFbGVtZW50KiBlbGVtZW50KQog
CiBJbmxpbmVGbG93Qm94KiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQog
ewotICAgIElubGluZUZsb3dCb3gqIGJveCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgU1ZHSW5saW5l
Rmxvd0JveCgqdGhpcyk7CisgICAgSW5saW5lRmxvd0JveCogYm94ID0gbmV3IChyZW5kZXJBcmVu
YSgpKSBTVkdJbmxpbmVGbG93Qm94KHRoaXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2lj
YWxIZWlnaHQoKTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggOWE5MTdhYi4uOWU5
NzhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVU
ZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUKIAogSW5saW5lVGV4dEJveCogUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCgp
CiB7Ci0gICAgSW5saW5lVGV4dEJveCogYm94ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBTVkdJbmxp
bmVUZXh0Qm94KCp0aGlzKTsKKyAgICBJbmxpbmVUZXh0Qm94KiBib3ggPSBuZXcgKHJlbmRlckFy
ZW5hKCkpIFNWR0lubGluZVRleHRCb3godGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9n
aWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IDhjOWU2YWUuLjU0ZjAz
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5oCkBAIC02NywxOCArNjcsNiBAQCBwcml2YXRlOgogICAgIFNWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzIG1fbGF5b3V0QXR0cmlidXRlczsKIH07CiAKLWlubGluZSBSZW5kZXJTVkdJbmxp
bmVUZXh0JiB0b1JlbmRlclNWR0lubGluZVRleHQoUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17Ci0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzU1ZHSW5saW5lVGV4
dCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dCY+KG9iamVj
dCk7Ci19Ci0KLWlubGluZSBjb25zdCBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0b1JlbmRlclNWR0lu
bGluZVRleHQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17Ci0gICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzU1ZHSW5saW5lVGV4dCgpKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyU1ZHSW5saW5lVGV4dCY+KG9iamVjdCk7Ci19Ci0K
IGlubGluZSBSZW5kZXJTVkdJbmxpbmVUZXh0KiB0b1JlbmRlclNWR0lubGluZVRleHQoUmVuZGVy
T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
IW9iamVjdCB8fCBvYmplY3QtPmlzU1ZHSW5saW5lVGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IGQ5NDA0NjkuLmE2NWEzZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApA
QCAtMzM5LDEwICszMzksMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUZvbnRJbkFsbERl
c2NlbmRhbnRzKFJlbmRlck9iamVjdCogc3RhcnQsIFNWR1RleHRMYXlvdXQKICAgICBmb3IgKFJl
bmRlck9iamVjdCogZGVzY2VuZGFudCA9IHN0YXJ0OyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0g
ZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIoc3RhcnQpKSB7CiAgICAgICAgIGlmICghZGVzY2Vu
ZGFudC0+aXNTVkdJbmxpbmVUZXh0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
UmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCA9IHRvUmVuZGVyU1ZHSW5saW5lVGV4dCgqZGVzY2Vu
ZGFudCk7Ci0gICAgICAgIHRleHQudXBkYXRlU2NhbGVkRm9udCgpOworICAgICAgICBSZW5kZXJT
VkdJbmxpbmVUZXh0KiB0ZXh0ID0gdG9SZW5kZXJTVkdJbmxpbmVUZXh0KGRlc2NlbmRhbnQpOwor
ICAgICAgICB0ZXh0LT51cGRhdGVTY2FsZWRGb250KCk7CiAgICAgICAgIGlmIChidWlsZGVyKQot
ICAgICAgICAgICAgYnVpbGRlci0+cmVidWlsZE1ldHJpY3NGb3JUZXh0UmVuZGVyZXIoJnRleHQp
OworICAgICAgICAgICAgYnVpbGRlci0+cmVidWlsZE1ldHJpY3NGb3JUZXh0UmVuZGVyZXIodGV4
dCk7CiAgICAgfQogfQogCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0Ojps
YXlvdXQoKQogCiBSb290SW5saW5lQm94KiBSZW5kZXJTVkdUZXh0OjpjcmVhdGVSb290SW5saW5l
Qm94KCkgCiB7Ci0gICAgUm9vdElubGluZUJveCogYm94ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBT
VkdSb290SW5saW5lQm94KCp0aGlzKTsKKyAgICBSb290SW5saW5lQm94KiBib3ggPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFNWR1Jvb3RJbmxpbmVCb3godGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0
dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7CiB9CkBAIC00ODEsNyArNDgxLDcg
QEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW4KICAgICBpZiAoIWNsb3Nlc3RCb3gpCiAgICAgICAg
IHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CiAKLSAgICByZXR1
cm4gY2xvc2VzdEJveC0+cmVuZGVyZXIoKS5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBv
aW50SW5Db250ZW50cy54KCksIGNsb3Nlc3RCb3gtPnkoKSkpOworICAgIHJldHVybiBjbG9zZXN0
Qm94LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBvaW50SW5Db250
ZW50cy54KCksIGNsb3Nlc3RCb3gtPnkoKSkpOwogfQogCiB2b2lkIFJlbmRlclNWR1RleHQ6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxv
d0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3gu
Y3BwCmluZGV4IGUyOGQ5ZmYuLjMzNjkwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcApAQCAtNTQsMTEgKzU0LDE0IEBAIHZvaWQg
U1ZHSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiwgTGF5b3V0VW5pCiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7
CiAgICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKTsKIAot
ICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dCgmcmVuZGVyZXIoKSwgcGFp
bnRJbmZvLCBTVkdSZW5kZXJpbmdDb250ZXh0OjpTYXZlR3JhcGhpY3NDb250ZXh0KTsKKyAgICBS
ZW5kZXJPYmplY3QqIGJveFJlbmRlcmVyID0gcmVuZGVyZXIoKTsKKyAgICBBU1NFUlQoYm94UmVu
ZGVyZXIpOworCisgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0KGJveFJl
bmRlcmVyLCBwYWludEluZm8sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OlNhdmVHcmFwaGljc0NvbnRl
eHQpOwogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewog
ICAgICAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNTVkdJ
bmxpbmVUZXh0Qm94KCkpCi0gICAgICAgICAgICAgICAgY29tcHV0ZVRleHRNYXRjaE1hcmtlclJl
Y3RGb3JSZW5kZXJlcigmdG9SZW5kZXJTVkdJbmxpbmVUZXh0KHRvU1ZHSW5saW5lVGV4dEJveChj
aGlsZCktPnRleHRSZW5kZXJlcigpKSk7CisgICAgICAgICAgICAgICAgY29tcHV0ZVRleHRNYXRj
aE1hcmtlclJlY3RGb3JSZW5kZXJlcih0b1JlbmRlclNWR0lubGluZVRleHQodG9TVkdJbmxpbmVU
ZXh0Qm94KGNoaWxkKS0+dGV4dFJlbmRlcmVyKCkpKTsKIAogICAgICAgICAgICAgY2hpbGQtPnBh
aW50KHBhaW50SW5mbywgTGF5b3V0UG9pbnQoKSwgMCwgMCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmgKaW5kZXggMDg0YTM2
OC4uMThiOGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVGbG93Qm94LmgKQEAgLTMwLDggKzMwLDggQEAgY2xhc3MgUmVuZGVyU1ZHSW5saW5lVGV4dDsK
IAogY2xhc3MgU1ZHSW5saW5lRmxvd0JveCBGSU5BTCA6IHB1YmxpYyBJbmxpbmVGbG93Qm94IHsK
IHB1YmxpYzoKLSAgICBTVkdJbmxpbmVGbG93Qm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCi0g
ICAgICAgIDogSW5saW5lRmxvd0JveChyZW5kZXJlcikKKyAgICBTVkdJbmxpbmVGbG93Qm94KFJl
bmRlck9iamVjdCogb2JqKQorICAgICAgICA6IElubGluZUZsb3dCb3gob2JqKQogICAgICAgICAs
IG1fbG9naWNhbEhlaWdodCgwKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzNzc2OWEwLi45NDFhZWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IEV4cGVjdGVkU1ZHSW5saW5lVGV4dEJveFNp
emUgOiBwdWJsaWMgSW5saW5lVGV4dEJveCB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihTVkdJ
bmxpbmVUZXh0Qm94KSA9PSBzaXplb2YoRXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94U2l6ZSksIFNW
R0lubGluZVRleHRCb3hfaXNfbm90X29mX2V4cGVjdGVkX3NpemUpOwogCi1TVkdJbmxpbmVUZXh0
Qm94OjpTVkdJbmxpbmVUZXh0Qm94KFJlbmRlck9iamVjdCYgb2JqZWN0KQorU1ZHSW5saW5lVGV4
dEJveDo6U1ZHSW5saW5lVGV4dEJveChSZW5kZXJPYmplY3QqIG9iamVjdCkKICAgICA6IElubGlu
ZVRleHRCb3gob2JqZWN0KQogICAgICwgbV9sb2dpY2FsSGVpZ2h0KDApCiAgICAgLCBtX3BhaW50
aW5nUmVzb3VyY2VNb2RlKEFwcGx5VG9EZWZhdWx0TW9kZSkKQEAgLTgwLDEyICs4MCwxMyBAQCBp
bnQgU1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQsIGJvb2wpIGNvbnN0
CiAKIGludCBTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbkluRnJhZ21lbnQoY29u
c3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7Ci0gICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJl
bmRlcmVyID0gdG9SZW5kZXJTVkdJbmxpbmVUZXh0KHRoaXMtPnRleHRSZW5kZXJlcigpKTsKKyAg
ICBSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclNWR0lubGluZVRl
eHQodGhpcy0+dGV4dFJlbmRlcmVyKCkpOworICAgIEFTU0VSVCh0ZXh0UmVuZGVyZXIpOwogCi0g
ICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHRleHRSZW5kZXJlci5zY2FsaW5nRmFjdG9yKCk7Cisg
ICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHRleHRSZW5kZXJlci0+c2NhbGluZ0ZhY3RvcigpOwog
ICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRl
eHRSZW5kZXJlci5zdHlsZSgpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHRSZW5kZXJl
ci0+c3R5bGUoKTsKICAgICBBU1NFUlQoc3R5bGUpOwogCiAgICAgVGV4dFJ1biB0ZXh0UnVuID0g
Y29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZnJhZ21lbnQpOwpAQCAtOTcsNyArOTgsNyBAQCBpbnQg
U1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb25JbkZyYWdtZW50KGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbgogICAgIGlmICghZnJhZ21lbnRUcmFuc2Zvcm0uaXNJZGVudGl0
eSgpKQogICAgICAgICB0ZXh0UnVuLnNldEhvcml6b250YWxHbHlwaFN0cmV0Y2gobmFycm93UHJl
Y2lzaW9uVG9GbG9hdChmcmFnbWVudFRyYW5zZm9ybS54U2NhbGUoKSkpOwogCi0gICAgcmV0dXJu
IGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCAtIHN0YXJ0KCkgKyB0ZXh0UmVuZGVyZXIuc2NhbGVk
Rm9udCgpLm9mZnNldEZvclBvc2l0aW9uKHRleHRSdW4sIHBvc2l0aW9uICogc2NhbGluZ0ZhY3Rv
ciwgaW5jbHVkZVBhcnRpYWxHbHlwaHMpOworICAgIHJldHVybiBmcmFnbWVudC5jaGFyYWN0ZXJP
ZmZzZXQgLSBzdGFydCgpICsgdGV4dFJlbmRlcmVyLT5zY2FsZWRGb250KCkub2Zmc2V0Rm9yUG9z
aXRpb24odGV4dFJ1biwgcG9zaXRpb24gKiBzY2FsaW5nRmFjdG9yLCBpbmNsdWRlUGFydGlhbEds
eXBocyk7CiB9CiAKIGZsb2F0IFNWR0lubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KGlu
dCkgY29uc3QKQEAgLTExNCwxMiArMTE1LDEzIEBAIEZsb2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94
OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYKIAog
ICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCi0g
ICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJTVkdJbmxpbmVU
ZXh0KHRoaXMtPnRleHRSZW5kZXJlcigpKTsKKyAgICBSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0
UmVuZGVyZXIgPSB0b1JlbmRlclNWR0lubGluZVRleHQodGhpcy0+dGV4dFJlbmRlcmVyKCkpOwor
ICAgIEFTU0VSVCh0ZXh0UmVuZGVyZXIpOwogCi0gICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHRl
eHRSZW5kZXJlci5zY2FsaW5nRmFjdG9yKCk7CisgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHRl
eHRSZW5kZXJlci0+c2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsK
IAotICAgIGNvbnN0IEZvbnQmIHNjYWxlZEZvbnQgPSB0ZXh0UmVuZGVyZXIuc2NhbGVkRm9udCgp
OworICAgIGNvbnN0IEZvbnQmIHNjYWxlZEZvbnQgPSB0ZXh0UmVuZGVyZXItPnNjYWxlZEZvbnQo
KTsKICAgICBjb25zdCBGb250TWV0cmljcyYgc2NhbGVkRm9udE1ldHJpY3MgPSBzY2FsZWRGb250
LmZvbnRNZXRyaWNzKCk7CiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luKGZyYWdtZW50LngsIGZy
YWdtZW50LnkpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpCkBAIC0xNDMsNyArMTQ1LDEw
IEBAIExheW91dFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rpb25SZWN0KGludCBz
dGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpCiAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPj0gZW5k
UG9zaXRpb24pCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKLSAgICBSZW5kZXJTdHls
ZSogc3R5bGUgPSB0ZXh0UmVuZGVyZXIoKS5zdHlsZSgpOworICAgIFJlbmRlclRleHQqIHRleHQg
PSB0ZXh0UmVuZGVyZXIoKTsKKyAgICBBU1NFUlQodGV4dCk7CisKKyAgICBSZW5kZXJTdHlsZSog
c3R5bGUgPSB0ZXh0LT5zdHlsZSgpOwogICAgIEFTU0VSVChzdHlsZSk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gZnJhZ21lbnRUcmFuc2Zvcm07CkBAIC0xNzEsMjQgKzE3NiwyNSBAQCBMYXlvdXRS
ZWN0IFNWR0lubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3NpdGlv
biwgaW50IGVuZFBvc2l0aQogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvblJl
Y3QpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdGV4dFNob3VsZEJlUGFpbnRlZChjb25zdCBS
ZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVyZXIpCitzdGF0aWMgaW5saW5lIGJvb2wgdGV4
dFNob3VsZEJlUGFpbnRlZChSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0UmVuZGVyZXIpCiB7CiAg
ICAgLy8gRm9udDo6cGl4ZWxTaXplKCksIHJldHVybnMgRm9udERlc2NyaXB0aW9uOjpjb21wdXRl
ZFBpeGVsU2l6ZSgpLCB3aGljaCByZXR1cm5zICJpbnQoeCArIDAuNSkiLgogICAgIC8vIElmIHRo
ZSBhYnNvbHV0ZSBmb250IHNpemUgb24gc2NyZWVuIGlzIGJlbG93IHg9MC41LCBkb24ndCByZW5k
ZXIgYW55dGhpbmcuCi0gICAgcmV0dXJuIHRleHRSZW5kZXJlci5zY2FsZWRGb250KCkucGl4ZWxT
aXplKCk7CisgICAgcmV0dXJuIHRleHRSZW5kZXJlci0+c2NhbGVkRm9udCgpLnBpeGVsU2l6ZSgp
OwogfQogCiB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQ
YWludEluZm8mIHBhaW50SW5mbykKIHsKLSAgICBBU1NFUlQocGFpbnRJbmZvLnNob3VsZFBhaW50
V2l0aGluUm9vdCgmcmVuZGVyZXIoKSkpOworICAgIEFTU0VSVChwYWludEluZm8uc2hvdWxkUGFp
bnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpKTsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2Vs
ZWN0aW9uKTsKICAgICBBU1NFUlQodHJ1bmNhdGlvbigpID09IGNOb1RydW5jYXRpb24pOwogCi0g
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAg
aWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZW5kZXJPYmplY3QmIHBhcmVudFJlbmRlcmVyID0gcGFyZW50KCkt
PnJlbmRlcmVyKCk7Ci0gICAgQVNTRVJUKCFwYXJlbnRSZW5kZXJlci5kb2N1bWVudCgpLnByaW50
aW5nKCkpOworICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQoKS0+cmVu
ZGVyZXIoKTsKKyAgICBBU1NFUlQocGFyZW50UmVuZGVyZXIpOworICAgIEFTU0VSVCghcGFyZW50
UmVuZGVyZXItPmRvY3VtZW50KCkucHJpbnRpbmcoKSk7CiAKICAgICAvLyBEZXRlcm1pbmUgd2hl
dGhlciBvciBub3Qgd2UncmUgc2VsZWN0ZWQuCiAgICAgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9u
bHkgPSBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbjsKQEAgLTE5NiwxOSAr
MjAyLDIxIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5k
KFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgIGlmICghaGFzU2VsZWN0aW9uIHx8IHBhaW50U2Vs
ZWN0ZWRUZXh0T25seSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3IgYmFja2dyb3VuZENv
bG9yID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJlcigpLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgfHwgIWJhY2tncm91bmRDb2xvci5h
bHBoYSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRleHRTaG91bGRCZVBhaW50ZWQo
dG9SZW5kZXJTVkdJbmxpbmVUZXh0KHRoaXMtPnRleHRSZW5kZXJlcigpKSkpCisgICAgUmVuZGVy
U1ZHSW5saW5lVGV4dCogdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJTVkdJbmxpbmVUZXh0KHRoaXMt
PnRleHRSZW5kZXJlcigpKTsKKyAgICBBU1NFUlQodGV4dFJlbmRlcmVyKTsKKyAgICBpZiAoIXRl
eHRTaG91bGRCZVBhaW50ZWQodGV4dFJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVuZGVyU3R5bGUqIHN0eWxlID0gcGFyZW50UmVuZGVyZXIuc3R5bGUoKTsKKyAgICBSZW5kZXJT
dHlsZSogc3R5bGUgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKTsKICAgICBBU1NFUlQoc3R5bGUp
OwogCiAgICAgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlID0gc3R5bGU7CiAgICAgaWYgKGhh
c1NlbGVjdGlvbikgewotICAgICAgICBzZWxlY3Rpb25TdHlsZSA9IHBhcmVudFJlbmRlcmVyLmdl
dENhY2hlZFBzZXVkb1N0eWxlKFNFTEVDVElPTik7CisgICAgICAgIHNlbGVjdGlvblN0eWxlID0g
cGFyZW50UmVuZGVyZXItPmdldENhY2hlZFBzZXVkb1N0eWxlKFNFTEVDVElPTik7CiAgICAgICAg
IGlmICghc2VsZWN0aW9uU3R5bGUpCiAgICAgICAgICAgICBzZWxlY3Rpb25TdHlsZSA9IHN0eWxl
OwogICAgIH0KQEAgLTI0NSwyOCArMjUzLDMwIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFp
bnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogCiB2b2lkIFNWR0lu
bGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQsIExheW91dFVuaXQpCiB7Ci0gICAgQVNTRVJUKHBhaW50SW5mby5zaG91
bGRQYWludFdpdGhpblJvb3QoJnJlbmRlcmVyKCkpKTsKKyAgICBBU1NFUlQocGFpbnRJbmZvLnNo
b3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSk7CiAgICAgQVNTRVJUKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZVNlbGVjdGlvbik7CiAgICAgQVNTRVJUKHRydW5jYXRpb24oKSA9PSBjTm9UcnVuY2F0aW9u
KTsKIAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KQorICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTogV2UncmUgZXhwbGljaXRlbHkgbm90IHN1
cHBvcnRpbmcgY29tcG9zaXRpb24gJiBjdXN0b20gdW5kZXJsaW5lcyBhbmQgY3VzdG9tIGhpZ2hs
aWdodGVycyAtIHVubGlrZSBJbmxpbmVUZXh0Qm94LgogICAgIC8vIElmIHdlIGV2ZXIgbmVlZCB0
aGF0IGZvciBTVkcsIGl0J3MgdmVyeSBlYXN5IHRvIHJlZmFjdG9yIGFuZCByZXVzZSB0aGUgY29k
ZS4KIAotICAgIFJlbmRlck9iamVjdCYgcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQoKS0+cmVuZGVy
ZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50KCktPnJlbmRl
cmVyKCk7CisgICAgQVNTRVJUKHBhcmVudFJlbmRlcmVyKTsKIAogICAgIGJvb2wgcGFpbnRTZWxl
Y3RlZFRleHRPbmx5ID0gcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb247Ci0g
ICAgYm9vbCBoYXNTZWxlY3Rpb24gPSAhcGFyZW50UmVuZGVyZXIuZG9jdW1lbnQoKS5wcmludGlu
ZygpICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOwor
ICAgIGJvb2wgaGFzU2VsZWN0aW9uID0gIXBhcmVudFJlbmRlcmVyLT5kb2N1bWVudCgpLnByaW50
aW5nKCkgJiYgc2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmU7
CiAgICAgaWYgKCFoYXNTZWxlY3Rpb24gJiYgcGFpbnRTZWxlY3RlZFRleHRPbmx5KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjb25zdCBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVyZXIg
PSB0b1JlbmRlclNWR0lubGluZVRleHQodGhpcy0+dGV4dFJlbmRlcmVyKCkpOworICAgIFJlbmRl
clNWR0lubGluZVRleHQqIHRleHRSZW5kZXJlciA9IHRvUmVuZGVyU1ZHSW5saW5lVGV4dCh0aGlz
LT50ZXh0UmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKHRleHRSZW5kZXJlcik7CiAgICAgaWYgKCF0
ZXh0U2hvdWxkQmVQYWludGVkKHRleHRSZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlbmRlclN0eWxlKiBzdHlsZSA9IHBhcmVudFJlbmRlcmVyLnN0eWxlKCk7CisgICAgUmVuZGVy
U3R5bGUqIHN0eWxlID0gcGFyZW50UmVuZGVyZXItPnN0eWxlKCk7CiAgICAgQVNTRVJUKHN0eWxl
KTsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9IHN0eWxlLT5zdmdTdHls
ZSgpOwpAQCAtMjc3LDcgKzI4Nyw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pCiAKICAgICBS
ZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUgPSBzdHlsZTsKICAgICBpZiAoaGFzU2VsZWN0aW9u
KSB7Ci0gICAgICAgIHNlbGVjdGlvblN0eWxlID0gcGFyZW50UmVuZGVyZXIuZ2V0Q2FjaGVkUHNl
dWRvU3R5bGUoU0VMRUNUSU9OKTsKKyAgICAgICAgc2VsZWN0aW9uU3R5bGUgPSBwYXJlbnRSZW5k
ZXJlci0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoU0VMRUNUSU9OKTsKICAgICAgICAgaWYgKHNlbGVj
dGlvblN0eWxlKSB7CiAgICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU2VsZWN0
aW9uU3R5bGUgPSBzZWxlY3Rpb25TdHlsZS0+c3ZnU3R5bGUoKTsKICAgICAgICAgICAgIEFTU0VS
VChzdmdTZWxlY3Rpb25TdHlsZSk7CkBAIC0yOTAsNyArMzAwLDcgQEAgdm9pZCBTVkdJbmxpbmVU
ZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmLCBM
YXlvdXRVbmkKICAgICAgICAgICAgIHNlbGVjdGlvblN0eWxlID0gc3R5bGU7CiAgICAgfQogCi0g
ICAgaWYgKHRleHRSZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvclJlbmRlcmluZ1NWR01hc2spIHsKKyAgICBpZiAodGV4dFJlbmRlcmVyLT52
aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvclJlbmRlcmlu
Z1NWR01hc2spIHsKICAgICAgICAgaGFzRmlsbCA9IHRydWU7CiAgICAgICAgIGhhc1Zpc2libGVT
dHJva2UgPSBmYWxzZTsKICAgICB9CkBAIC0zNzUsMTQgKzM4NSwxNiBAQCB2b2lkIFNWR0lubGlu
ZVRleHRCb3g6OnJlbGVhc2VQYWludGluZ1Jlc291cmNlKEdyYXBoaWNzQ29udGV4dComIGNvbnRl
eHQsIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcGFpbnRpbmdSZXNvdXJjZSk7CiAKLSAgICBSZW5k
ZXJPYmplY3QmIHBhcmVudFJlbmRlcmVyID0gcGFyZW50KCktPnJlbmRlcmVyKCk7Ci0gICAgbV9w
YWludGluZ1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZSgmcGFyZW50UmVuZGVyZXIsIGNvbnRl
eHQsIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUsIHBhdGgsIC8qUmVuZGVyU1ZHU2hhcGUqLyAwKTsK
KyAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50KCktPnJlbmRlcmVyKCk7
CisgICAgQVNTRVJUKHBhcmVudFJlbmRlcmVyKTsKKworICAgIG1fcGFpbnRpbmdSZXNvdXJjZS0+
cG9zdEFwcGx5UmVzb3VyY2UocGFyZW50UmVuZGVyZXIsIGNvbnRleHQsIG1fcGFpbnRpbmdSZXNv
dXJjZU1vZGUsIHBhdGgsIC8qUmVuZGVyU1ZHU2hhcGUqLyAwKTsKICAgICBtX3BhaW50aW5nUmVz
b3VyY2UgPSAwOwogfQogCiBib29sIFNWR0lubGluZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0Nv
bnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2Nh
bGluZ0ZhY3RvciwgVGV4dFJ1biYgdGV4dFJ1biwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAg
IGJvb2wgYWNxdWlyZWRSZXNvdXJjZSA9IGFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRleHQs
IHNjYWxpbmdGYWN0b3IsICZwYXJlbnQoKS0+cmVuZGVyZXIoKSwgc3R5bGUpOworICAgIGJvb2wg
YWNxdWlyZWRSZXNvdXJjZSA9IGFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRleHQsIHNjYWxp
bmdGYWN0b3IsIHBhcmVudCgpLT5yZW5kZXJlcigpLCBzdHlsZSk7CiAgICAgaWYgKCFhY3F1aXJl
ZFJlc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQxMiwxMCArNDI0LDEyIEBA
IHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cmVzdG9yZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4dFBh
aW50aW5nKEdyYXBoaWNzQ29udGV4dComCiBUZXh0UnVuIFNWR0lubGluZVRleHRCb3g6OmNvbnN0
cnVjdFRleHRSdW4oUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZy
YWdtZW50KSBjb25zdAogewogICAgIEFTU0VSVChzdHlsZSk7CisgICAgQVNTRVJUKHRleHRSZW5k
ZXJlcigpKTsKIAotICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJlciA9IHRoaXMtPnRleHRSZW5k
ZXJlcigpOworICAgIFJlbmRlclRleHQqIHRleHQgPSB0ZXh0UmVuZGVyZXIoKTsKKyAgICBBU1NF
UlQodGV4dCk7CiAKLSAgICBUZXh0UnVuIHJ1bih0ZXh0UmVuZGVyZXIuY2hhcmFjdGVycygpICsg
ZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0CisgICAgVGV4dFJ1biBydW4odGV4dC0+Y2hhcmFjdGVy
cygpICsgZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0CiAgICAgICAgICAgICAgICAgLCBmcmFnbWVu
dC5sZW5ndGgKICAgICAgICAgICAgICAgICAsIDAgLyogeFBvcywgb25seSByZWxldmFudCB3aXRo
IGFsbG93VGFicz10cnVlICovCiAgICAgICAgICAgICAgICAgLCAwIC8qIHBhZGRpbmcsIG9ubHkg
cmVsZXZhbnQgZm9yIGp1c3RpZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9yIFNWRyAqLwpAQCAt
NDI0LDcgKzQzOCw3IEBAIFRleHRSdW4gU1ZHSW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1
bihSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnCiAgICAgICAgICAgICAgICAg
LCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLT5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyIC8q
IGRpcmVjdGlvbmFsT3ZlcnJpZGUgKi8pOwogCiAgICAgaWYgKHRleHRSdW5OZWVkc1JlbmRlcmlu
Z0NvbnRleHQoc3R5bGUtPmZvbnQoKSkpCi0gICAgICAgIHJ1bi5zZXRSZW5kZXJpbmdDb250ZXh0
KFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoJnRleHRSZW5kZXJlcikpOworICAg
ICAgICBydW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlKHRleHQpKTsKIAogICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwogCkBAIC00
MzIsNyArNDQ2LDcgQEAgVGV4dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVu
KFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWcKICAgICBydW4uZGlzYWJsZVNw
YWNpbmcoKTsKIAogICAgIC8vIFByb3BhZ2F0ZSB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIGNo
YXJhY3RlcnMgYnVmZmVyIHRvIHRoZSBUZXh0UnVuLCBldmVuIHdoZW4gd2UncmUgb25seSBwcm9j
ZXNzaW5nIGEgc3Vic3RyaW5nLgotICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3RoKHRleHRSZW5k
ZXJlci50ZXh0TGVuZ3RoKCkgLSBmcmFnbWVudC5jaGFyYWN0ZXJPZmZzZXQpOworICAgIHJ1bi5z
ZXRDaGFyYWN0ZXJzTGVuZ3RoKHRleHQtPnRleHRMZW5ndGgoKSAtIGZyYWdtZW50LmNoYXJhY3Rl
ck9mZnNldCk7CiAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVuLmxlbmd0
aCgpKTsKICAgICByZXR1cm4gcnVuOwogfQpAQCAtNDkxLDcgKzUwNSw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVuZGVyT2JqZWN0KiBmaW5kUmVuZGVyT2JqZWN0RGVmaW5pbmluZ1RleHREZWNvcmF0aW9u
KElubGluZUZsb3dCCiAgICAgLy8gTG9va3VwIGZpcnN0IHJlbmRlciBvYmplY3QgaW4gcGFyZW50
IGhpZXJhcmNoeSB3aGljaCBoYXMgdGV4dC1kZWNvcmF0aW9uIHNldC4KICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gMDsKICAgICB3aGlsZSAocGFyZW50Qm94KSB7Ci0gICAgICAgIHJlbmRl
cmVyID0gJnBhcmVudEJveC0+cmVuZGVyZXIoKTsKKyAgICAgICAgcmVuZGVyZXIgPSBwYXJlbnRC
b3gtPnJlbmRlcmVyKCk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpICYmIHJlbmRl
cmVyLT5zdHlsZSgpLT50ZXh0RGVjb3JhdGlvbigpICE9IFRleHREZWNvcmF0aW9uTm9uZSkKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNTA1LDcgKzUxOSw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVy
T2JqZWN0KiBmaW5kUmVuZGVyT2JqZWN0RGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKElubGluZUZs
b3dCCiAKIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZy
YWdtZW50JiBmcmFnbWVudCkKIHsKLSAgICBpZiAodGV4dFJlbmRlcmVyKCkuc3R5bGUoKS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSA9PSBUZXh0RGVjb3JhdGlvbk5vbmUpCisgICAgaWYgKHRl
eHRSZW5kZXJlcigpLT5zdHlsZSgpLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpID09IFRleHRE
ZWNvcmF0aW9uTm9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRmluZCBvdXQgd2hpY2gg
cmVuZGVyIHN0eWxlIGRlZmluZWQgdGhlIHRleHQtZGVjb3JhdGlvbiwgYXMgaXRzIGZpbGwvc3Ry
b2tlIHByb3BlcnRpZXMgaGF2ZSB0byBiZSB1c2VkIGZvciBkcmF3aW5nIGluc3RlYWQgb2Ygb3Vy
cy4KQEAgLTU3NCwxMiArNTg4LDEzIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNv
cmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlCiAKIHZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24p
CiB7Ci0gICAgY29uc3QgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyID0gdG9SZW5k
ZXJTVkdJbmxpbmVUZXh0KHRoaXMtPnRleHRSZW5kZXJlcigpKTsKKyAgICBSZW5kZXJTVkdJbmxp
bmVUZXh0KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclNWR0lubGluZVRleHQodGhpcy0+dGV4dFJl
bmRlcmVyKCkpOworICAgIEFTU0VSVCh0ZXh0UmVuZGVyZXIpOwogCi0gICAgZmxvYXQgc2NhbGlu
Z0ZhY3RvciA9IHRleHRSZW5kZXJlci5zY2FsaW5nRmFjdG9yKCk7CisgICAgZmxvYXQgc2NhbGlu
Z0ZhY3RvciA9IHRleHRSZW5kZXJlci0+c2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2Fs
aW5nRmFjdG9yKTsKIAotICAgIGNvbnN0IEZvbnQmIHNjYWxlZEZvbnQgPSB0ZXh0UmVuZGVyZXIu
c2NhbGVkRm9udCgpOworICAgIGNvbnN0IEZvbnQmIHNjYWxlZEZvbnQgPSB0ZXh0UmVuZGVyZXIt
PnNjYWxlZEZvbnQoKTsKICAgICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cgPSBzdHlsZS0+dGV4
dFNoYWRvdygpOwogCiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luKGZyYWdtZW50LngsIGZyYWdt
ZW50LnkpOwpAQCAtNjQ2LDEzICs2NjEsMTMgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWlu
dFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFIKIAog
ICAgIC8vIERyYXcgdGV4dCB1c2luZyBzZWxlY3Rpb24gc3R5bGUgZnJvbSB0aGUgc3RhcnQgdG8g
dGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0aW9uCiAgICAgaWYgKHN0eWxlICE9IHNlbGVj
dGlvblN0eWxlKQotICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2Vk
KCZwYXJlbnQoKS0+cmVuZGVyZXIoKSwgU3R5bGVEaWZmZXJlbmNlUmVwYWludCwgc2VsZWN0aW9u
U3R5bGUpOworICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHBh
cmVudCgpLT5yZW5kZXJlcigpLCBTdHlsZURpZmZlcmVuY2VSZXBhaW50LCBzZWxlY3Rpb25TdHls
ZSk7CiAKICAgICBUZXh0UnVuIHNlbGVjdGlvblRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHNl
bGVjdGlvblN0eWxlLCBmcmFnbWVudCk7CiAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4
dCwgc2VsZWN0aW9uU3R5bGUsIHRleHRSdW4sIGZyYWdtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQ
b3NpdGlvbik7CiAKICAgICBpZiAoc3R5bGUgIT0gc2VsZWN0aW9uU3R5bGUpCi0gICAgICAgIFNW
R1Jlc291cmNlc0NhY2hlOjpjbGllbnRTdHlsZUNoYW5nZWQoJnBhcmVudCgpLT5yZW5kZXJlcigp
LCBTdHlsZURpZmZlcmVuY2VSZXBhaW50LCBzdHlsZSk7CisgICAgICAgIFNWR1Jlc291cmNlc0Nh
Y2hlOjpjbGllbnRTdHlsZUNoYW5nZWQocGFyZW50KCktPnJlbmRlcmVyKCksIFN0eWxlRGlmZmVy
ZW5jZVJlcGFpbnQsIHN0eWxlKTsKIAogICAgIC8vIEV2ZW50dWFsbHkgZHJhdyB0ZXh0IHVzaW5n
IHJlZ3VsYXIgc3R5bGUgZnJvbSB0aGUgZW5kIHBvc2l0aW9uIG9mIHRoZSBzZWxlY3Rpb24gdG8g
dGhlIGVuZCBvZiB0aGUgY3VycmVudCBjaHVuayBwYXJ0CiAgICAgaWYgKGVuZFBvc2l0aW9uIDwg
c3RhdGljX2Nhc3Q8aW50PihmcmFnbWVudC5sZW5ndGgpICYmICFwYWludFNlbGVjdGVkVGV4dE9u
bHkpCkBAIC02NjMsMTIgKzY3OCwxMyBAQCBGbG9hdFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6Y2Fs
Y3VsYXRlQm91bmRhcmllcygpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHRleHRSZWN0OwogCi0g
ICAgY29uc3QgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJTVkdJ
bmxpbmVUZXh0KHRoaXMtPnRleHRSZW5kZXJlcigpKTsKKyAgICBSZW5kZXJTVkdJbmxpbmVUZXh0
KiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclNWR0lubGluZVRleHQodGhpcy0+dGV4dFJlbmRlcmVy
KCkpOworICAgIEFTU0VSVCh0ZXh0UmVuZGVyZXIpOwogCi0gICAgZmxvYXQgc2NhbGluZ0ZhY3Rv
ciA9IHRleHRSZW5kZXJlci5zY2FsaW5nRmFjdG9yKCk7CisgICAgZmxvYXQgc2NhbGluZ0ZhY3Rv
ciA9IHRleHRSZW5kZXJlci0+c2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFj
dG9yKTsKIAotICAgIGZsb2F0IGJhc2VsaW5lID0gdGV4dFJlbmRlcmVyLnNjYWxlZEZvbnQoKS5m
b250TWV0cmljcygpLmZsb2F0QXNjZW50KCkgLyBzY2FsaW5nRmFjdG9yOworICAgIGZsb2F0IGJh
c2VsaW5lID0gdGV4dFJlbmRlcmVyLT5zY2FsZWRGb250KCkuZm9udE1ldHJpY3MoKS5mbG9hdEFz
Y2VudCgpIC8gc2NhbGluZ0ZhY3RvcjsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBmcmFnbWVudFRy
YW5zZm9ybTsKICAgICB1bnNpZ25lZCB0ZXh0RnJhZ21lbnRzU2l6ZSA9IG1fdGV4dEZyYWdtZW50
cy5zaXplKCk7CkBAIC02OTAsMTcgKzcwNiwxNyBAQCBib29sIFNWR0lubGluZVRleHRCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0Jgog
ICAgIC8vIEZJWE1FOiBpbnRlZ3JhdGUgd2l0aCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludCBi
ZXR0ZXIuCiAgICAgQVNTRVJUKCFpc0xpbmVCcmVhaygpKTsKIAotICAgIFBvaW50ZXJFdmVudHNI
aXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19URVhUX0hJVFRFU1RJ
TkcsIHJlcXVlc3QsIHJlbmRlcmVyKCkuc3R5bGUoKS0+cG9pbnRlckV2ZW50cygpKTsKLSAgICBi
b29sIGlzVmlzaWJsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lC
TEU7CisgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRS
dWxlczo6U1ZHX1RFWFRfSElUVEVTVElORywgcmVxdWVzdCwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
cG9pbnRlckV2ZW50cygpKTsKKyAgICBib29sIGlzVmlzaWJsZSA9IHJlbmRlcmVyKCktPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1
bGVzLnJlcXVpcmVWaXNpYmxlKSB7Ci0gICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tl
ICYmIChyZW5kZXJlcigpLnN0eWxlKCktPnN2Z1N0eWxlKCktPmhhc1N0cm9rZSgpIHx8ICFoaXRS
dWxlcy5yZXF1aXJlU3Ryb2tlKSkKLSAgICAgICAgICAgIHx8IChoaXRSdWxlcy5jYW5IaXRGaWxs
ICYmIChyZW5kZXJlcigpLnN0eWxlKCktPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSB8fCAhaGl0UnVs
ZXMucmVxdWlyZUZpbGwpKSkgeworICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAm
JiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+c3ZnU3R5bGUoKS0+aGFzU3Ryb2tlKCkgfHwgIWhpdFJ1
bGVzLnJlcXVpcmVTdHJva2UpKQorICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwg
JiYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSB8fCAhaGl0UnVs
ZXMucmVxdWlyZUZpbGwpKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBib3hPcmlnaW4oeCgp
LCB5KCkpOwogICAgICAgICAgICAgYm94T3JpZ2luLm1vdmVCeShhY2N1bXVsYXRlZE9mZnNldCk7
CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChib3hPcmlnaW4sIHNpemUoKSk7CiAgICAgICAg
ICAgICBpZiAobG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKHJlY3QpKSB7Ci0gICAgICAg
ICAgICAgICAgcmVuZGVyZXIoKS51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChy
ZW5kZXJlcigpLm5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCisg
ICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxv
Y2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNl
dCkpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RS
ZXN1bHQocmVuZGVyZXIoKS0+bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBy
ZWN0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgfQog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5oCmluZGV4IGM1MGM1NTEuLjZmZWEyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNW
R1Jvb3RJbmxpbmVCb3g7CiAKIGNsYXNzIFNWR0lubGluZVRleHRCb3ggRklOQUwgOiBwdWJsaWMg
SW5saW5lVGV4dEJveCB7CiBwdWJsaWM6Ci0gICAgU1ZHSW5saW5lVGV4dEJveChSZW5kZXJPYmpl
Y3QmKTsKKyAgICBTVkdJbmxpbmVUZXh0Qm94KFJlbmRlck9iamVjdCopOwogCiAgICAgdmlydHVh
bCBib29sIGlzU1ZHSW5saW5lVGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAKaW5kZXggNTkzNzZhMC4uMWMyZGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MDIsOCArNDAyLDExIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVNWR0lubGluZVRleHRCb3goVGV4dFN0cmVhbSYgdHMs
IFNWR0lubGluZVRleHRCb3gqIHRleHRCCiAgICAgaWYgKGZyYWdtZW50cy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9IHRl
eHRCb3gtPnRleHRSZW5kZXJlcigpLnN0eWxlKCktPnN2Z1N0eWxlKCk7Ci0gICAgU3RyaW5nIHRl
eHQgPSB0ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS50ZXh0KCk7CisgICAgUmVuZGVyU1ZHSW5saW5l
VGV4dCogdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJTVkdJbmxpbmVUZXh0KHRleHRCb3gtPnRleHRS
ZW5kZXJlcigpKTsKKyAgICBBU1NFUlQodGV4dFJlbmRlcmVyKTsKKworICAgIGNvbnN0IFNWR1Jl
bmRlclN0eWxlKiBzdmdTdHlsZSA9IHRleHRSZW5kZXJlci0+c3R5bGUoKS0+c3ZnU3R5bGUoKTsK
KyAgICBTdHJpbmcgdGV4dCA9IHRleHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCk7CiAKICAg
ICB1bnNpZ25lZCBmcmFnbWVudHNTaXplID0gZnJhZ21lbnRzLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZnJhZ21lbnRzU2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRleCBmOTY4MjMyLi5m
ZDk5MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElu
bGluZUJveC5jcHAKQEAgLTQxLDcgKzQxLDEwIEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pCiAg
ICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7CiAgICAgQVNTRVJUKCFwYWludElu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKTsKIAotICAgIGJvb2wgaXNQcmludGluZyA9
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5wcmludGluZygpOworICAgIFJlbmRlck9iamVjdCogYm94
UmVuZGVyZXIgPSByZW5kZXJlcigpOworICAgIEFTU0VSVChib3hSZW5kZXJlcik7CisKKyAgICBi
b29sIGlzUHJpbnRpbmcgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLnByaW50aW5nKCk7CiAgICAg
Ym9vbCBoYXNTZWxlY3Rpb24gPSAhaXNQcmludGluZyAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZTsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5m
byhwYWludEluZm8pOwpAQCAtNTQsMTEgKzU3LDExIEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5p
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0Nv
bnRleHQoJnJlbmRlcmVyKCksIHBhaW50SW5mbywgU1ZHUmVuZGVyaW5nQ29udGV4dDo6U2F2ZUdy
YXBoaWNzQ29udGV4dCk7CisgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0
KGJveFJlbmRlcmVyLCBwYWludEluZm8sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OlNhdmVHcmFwaGlj
c0NvbnRleHQpOwogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQo
KSkgewogICAgICAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+
aXNTVkdJbmxpbmVUZXh0Qm94KCkpCi0gICAgICAgICAgICAgICAgU1ZHSW5saW5lRmxvd0JveDo6
Y29tcHV0ZVRleHRNYXRjaE1hcmtlclJlY3RGb3JSZW5kZXJlcih0b1JlbmRlclNWR0lubGluZVRl
eHQoJnRvU1ZHSW5saW5lVGV4dEJveChjaGlsZCktPnRleHRSZW5kZXJlcigpKSk7CisgICAgICAg
ICAgICAgICAgU1ZHSW5saW5lRmxvd0JveDo6Y29tcHV0ZVRleHRNYXRjaE1hcmtlclJlY3RGb3JS
ZW5kZXJlcih0b1JlbmRlclNWR0lubGluZVRleHQodG9TVkdJbmxpbmVUZXh0Qm94KGNoaWxkKS0+
dGV4dFJlbmRlcmVyKCkpKTsKIAogICAgICAgICAgICAgY2hpbGQtPnBhaW50KHBhaW50SW5mbywg
TGF5b3V0UG9pbnQoKSwgMCwgMCk7CiAgICAgICAgIH0KQEAgLTY3LDcgKzcwLDcgQEAgdm9pZCBT
VkdSb290SW5saW5lQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmLCBMYXlvdXRVbmkKIAogdm9pZCBTVkdSb290SW5saW5lQm94Ojpjb21wdXRlUGVyQ2hh
cmFjdGVyTGF5b3V0SW5mb3JtYXRpb24oKQogewotICAgIFJlbmRlclNWR1RleHQqIHRleHRSb290
ID0gdG9SZW5kZXJTVkdUZXh0KCZibG9jaygpKTsKKyAgICBSZW5kZXJTVkdUZXh0KiB0ZXh0Um9v
dCA9IHRvUmVuZGVyU1ZHVGV4dChibG9jaygpKTsKICAgICBBU1NFUlQodGV4dFJvb3QpOwogCiAg
ICAgVmVjdG9yPFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzKj4mIGxheW91dEF0dHJpYnV0ZXMgPSB0
ZXh0Um9vdC0+bGF5b3V0QXR0cmlidXRlcygpOwpAQCAtOTUsMTMgKzk4LDE0IEBAIHZvaWQgU1ZH
Um9vdElubGluZUJveDo6bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZsb3dCb3gq
IHN0YXJ0LCBTVkdUZXh0CiB7CiAgICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gc3RhcnQtPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAg
ICBpZiAoY2hpbGQtPmlzU1ZHSW5saW5lVGV4dEJveCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
Y2hpbGQtPnJlbmRlcmVyKCkuaXNTVkdJbmxpbmVUZXh0KCkpOworICAgICAgICAgICAgQVNTRVJU
KGNoaWxkLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIEFTU0VSVChjaGlsZC0+cmVuZGVyZXIo
KS0+aXNTVkdJbmxpbmVUZXh0KCkpOwogCiAgICAgICAgICAgICBTVkdJbmxpbmVUZXh0Qm94KiB0
ZXh0Qm94ID0gdG9TVkdJbmxpbmVUZXh0Qm94KGNoaWxkKTsKICAgICAgICAgICAgIGNoYXJhY3Rl
ckxheW91dC5sYXlvdXRJbmxpbmVUZXh0Qm94KHRleHRCb3gpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gU2tpcCBnZW5lcmF0ZWQgY29udGVudC4KLSAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBjaGlsZC0+cmVuZGVyZXIoKS5ub2RlKCk7CisgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gY2hpbGQtPnJlbmRlcmVyKCktPm5vZGUoKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTE1LDcgKzExOSw3IEBAIHZvaWQgU1ZHUm9v
dElubGluZUJveDo6bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZsb3dCb3gqIHN0
YXJ0LCBTVkdUZXh0CiAgICAgICAgICAgICAgICAgU1ZHVGV4dExheW91dEVuZ2luZSBsaW5lTGF5
b3V0KGNoYXJhY3RlckxheW91dC5sYXlvdXRBdHRyaWJ1dGVzKCkpOwogICAgICAgICAgICAgICAg
IGxheW91dENoYXJhY3RlcnNJblRleHRCb3hlcyhmbG93Qm94LCBsaW5lTGF5b3V0KTsKIAotICAg
ICAgICAgICAgICAgIGNoYXJhY3RlckxheW91dC5iZWdpblRleHRQYXRoTGF5b3V0KCZjaGlsZC0+
cmVuZGVyZXIoKSwgbGluZUxheW91dCk7CisgICAgICAgICAgICAgICAgY2hhcmFjdGVyTGF5b3V0
LmJlZ2luVGV4dFBhdGhMYXlvdXQoY2hpbGQtPnJlbmRlcmVyKCksIGxpbmVMYXlvdXQpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBsYXlvdXRDaGFyYWN0ZXJzSW5UZXh0Qm94ZXMoZmxv
d0JveCwgY2hhcmFjdGVyTGF5b3V0KTsKQEAgLTEzMSw3ICsxMzUsOCBAQCB2b2lkIFNWR1Jvb3RJ
bmxpbmVCb3g6OmxheW91dENoaWxkQm94ZXMoSW5saW5lRmxvd0JveCogc3RhcnQsIEZsb2F0UmVj
dCogY2hpbGRSZQogICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgRmxvYXRS
ZWN0IGJveFJlY3Q7CiAgICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVUZXh0Qm94KCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChjaGlsZC0+cmVuZGVyZXIoKS5pc1NWR0lubGluZVRleHQoKSk7
CisgICAgICAgICAgICBBU1NFUlQoY2hpbGQtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgQVNT
RVJUKGNoaWxkLT5yZW5kZXJlcigpLT5pc1NWR0lubGluZVRleHQoKSk7CiAKICAgICAgICAgICAg
IFNWR0lubGluZVRleHRCb3gqIHRleHRCb3ggPSB0b1NWR0lubGluZVRleHRCb3goY2hpbGQpOwog
ICAgICAgICAgICAgYm94UmVjdCA9IHRleHRCb3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsKQEAg
LTE0MSw3ICsxNDYsNyBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dENoaWxkQm94ZXMo
SW5saW5lRmxvd0JveCogc3RhcnQsIEZsb2F0UmVjdCogY2hpbGRSZQogICAgICAgICAgICAgdGV4
dEJveC0+c2V0TG9naWNhbEhlaWdodChib3hSZWN0LmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFNraXAgZ2VuZXJhdGVkIGNvbnRlbnQuCi0gICAgICAgICAgICBp
ZiAoIWNoaWxkLT5yZW5kZXJlcigpLm5vZGUoKSkKKyAgICAgICAgICAgIGlmICghY2hpbGQtPnJl
bmRlcmVyKCktPm5vZGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY2hpbGQtPmlzSW5saW5lRmxvd0Jv
eCgpKTsKQEAgLTE2MiwxNyArMTY3LDE4IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0
Q2hpbGRCb3hlcyhJbmxpbmVGbG93Qm94KiBzdGFydCwgRmxvYXRSZWN0KiBjaGlsZFJlCiAKIHZv
aWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0Um9vdEJveChjb25zdCBGbG9hdFJlY3QmIGNoaWxk
UmVjdCkKIHsKLSAgICBSZW5kZXJCbG9jayYgcGFyZW50QmxvY2sgPSBibG9jaygpOworICAgIFJl
bmRlckJsb2NrKiBwYXJlbnRCbG9jayA9IGJsb2NrKCk7CisgICAgQVNTRVJUKHBhcmVudEJsb2Nr
KTsKIAogICAgIC8vIEZpbmFsbHksIGFzc2lnbiB0aGUgcm9vdCBibG9jayBwb3NpdGlvbiwgbm93
IHRoYXQgYWxsIGNvbnRlbnQgaXMgbGFpZCBvdXQuCiAgICAgTGF5b3V0UmVjdCBib3VuZGluZ1Jl
Y3QgPSBlbmNsb3NpbmdMYXlvdXRSZWN0KGNoaWxkUmVjdCk7Ci0gICAgcGFyZW50QmxvY2suc2V0
TG9jYXRpb24oYm91bmRpbmdSZWN0LmxvY2F0aW9uKCkpOwotICAgIHBhcmVudEJsb2NrLnNldFNp
emUoYm91bmRpbmdSZWN0LnNpemUoKSk7CisgICAgcGFyZW50QmxvY2stPnNldExvY2F0aW9uKGJv
dW5kaW5nUmVjdC5sb2NhdGlvbigpKTsKKyAgICBwYXJlbnRCbG9jay0+c2V0U2l6ZShib3VuZGlu
Z1JlY3Quc2l6ZSgpKTsKIAogICAgIC8vIFBvc2l0aW9uIGFsbCBjaGlsZHJlbiByZWxhdGl2ZSB0
byB0aGUgcGFyZW50IGJsb2NrLgogICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICAvLyBT
a2lwIGdlbmVyYXRlZCBjb250ZW50LgotICAgICAgICBpZiAoIWNoaWxkLT5yZW5kZXJlcigpLm5v
ZGUoKSkKKyAgICAgICAgaWYgKCFjaGlsZC0+cmVuZGVyZXIoKS0+bm9kZSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGNoaWxkLT5hZGp1c3RQb3NpdGlvbigtY2hpbGRSZWN0Lngo
KSwgLWNoaWxkUmVjdC55KCkpOwogICAgIH0KQEAgLTI3NywxMiArMjgzLDEyIEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZOZWVkZWQodm9p
ZCogdXNlckRhdGEsIFZlCiAKICAgICAgICAgLy8gUmVvcmRlcmluZyBpcyBvbmx5IG5lY2Vzc2Fy
eSBmb3IgQmlEaSB0ZXh0IHRoYXQgaXMgX2Fic29sdXRlbHlfIHBvc2l0aW9uZWQuCiAgICAgICAg
IGlmIChmaXJzdFRleHRCb3gtPmxlbigpID09IDEgJiYgZmlyc3RUZXh0Qm94LT5sZW4oKSA9PSBs
YXN0VGV4dEJveC0+bGVuKCkpIHsKLSAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQmIGZp
cnN0Q29udGV4dCA9IHRvUmVuZGVyU1ZHSW5saW5lVGV4dChmaXJzdFRleHRCb3gtPnRleHRSZW5k
ZXJlcigpKTsKLSAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQmIGxhc3RDb250ZXh0ID0g
dG9SZW5kZXJTVkdJbmxpbmVUZXh0KGxhc3RUZXh0Qm94LT50ZXh0UmVuZGVyZXIoKSk7CisgICAg
ICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0KiBmaXJzdENvbnRleHQgPSB0b1JlbmRlclNWR0lu
bGluZVRleHQoZmlyc3RUZXh0Qm94LT50ZXh0UmVuZGVyZXIoKSk7CisgICAgICAgICAgICBSZW5k
ZXJTVkdJbmxpbmVUZXh0KiBsYXN0Q29udGV4dCA9IHRvUmVuZGVyU1ZHSW5saW5lVGV4dChsYXN0
VGV4dEJveC0+dGV4dFJlbmRlcmVyKCkpOwogCiAgICAgICAgICAgICBTVkdUZXh0TGF5b3V0QXR0
cmlidXRlcyogZmlyc3RBdHRyaWJ1dGVzID0gMDsKICAgICAgICAgICAgIFNWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzKiBsYXN0QXR0cmlidXRlcyA9IDA7Ci0gICAgICAgICAgICBmaW5kRmlyc3RBbmRM
YXN0QXR0cmlidXRlc0luVmVjdG9yKGF0dHJpYnV0ZXMsICZmaXJzdENvbnRleHQsICZsYXN0Q29u
dGV4dCwgZmlyc3RBdHRyaWJ1dGVzLCBsYXN0QXR0cmlidXRlcyk7CisgICAgICAgICAgICBmaW5k
Rmlyc3RBbmRMYXN0QXR0cmlidXRlc0luVmVjdG9yKGF0dHJpYnV0ZXMsIGZpcnN0Q29udGV4dCwg
bGFzdENvbnRleHQsIGZpcnN0QXR0cmlidXRlcywgbGFzdEF0dHJpYnV0ZXMpOwogICAgICAgICAg
ICAgc3dhcEl0ZW1zSW5MYXlvdXRBdHRyaWJ1dGVzKGZpcnN0QXR0cmlidXRlcywgbGFzdEF0dHJp
YnV0ZXMsIGZpcnN0VGV4dEJveC0+c3RhcnQoKSwgbGFzdFRleHRCb3gtPnN0YXJ0KCkpOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9v
dElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5l
Qm94LmgKaW5kZXggNmJkZjJjMC4uNWJhYjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgU1ZH
SW5saW5lVGV4dEJveDsKIAogY2xhc3MgU1ZHUm9vdElubGluZUJveCBGSU5BTCA6IHB1YmxpYyBS
b290SW5saW5lQm94IHsKIHB1YmxpYzoKLSAgICBTVkdSb290SW5saW5lQm94KFJlbmRlckJsb2Nr
JiBibG9jaykKKyAgICBTVkdSb290SW5saW5lQm94KFJlbmRlckJsb2NrKiBibG9jaykKICAgICAg
ICAgOiBSb290SW5saW5lQm94KGJsb2NrKQogICAgICAgICAsIG1fbG9naWNhbEhlaWdodCgwKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENo
dW5rQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVu
a0J1aWxkZXIuY3BwCmluZGV4IGQ1ZWY5ODQuLjczYWMzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmtCdWlsZGVyLmNwcApAQCAtOTMsOSAr
OTMsMTAgQEAgdm9pZCBTVkdUZXh0Q2h1bmtCdWlsZGVyOjphZGRUZXh0Q2h1bmsoVmVjdG9yPFNW
R0lubGluZVRleHRCb3gqPiYgbGluZUxheW91dEJveGUKICAgICBTVkdJbmxpbmVUZXh0Qm94KiB0
ZXh0Qm94ID0gbGluZUxheW91dEJveGVzW2JveFN0YXJ0XTsKICAgICBBU1NFUlQodGV4dEJveCk7
CiAKLSAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclNWR0lu
bGluZVRleHQodGV4dEJveC0+dGV4dFJlbmRlcmVyKCkpOworICAgIFJlbmRlclNWR0lubGluZVRl
eHQqIHRleHRSZW5kZXJlciA9IHRvUmVuZGVyU1ZHSW5saW5lVGV4dCh0ZXh0Qm94LT50ZXh0UmVu
ZGVyZXIoKSk7CisgICAgQVNTRVJUKHRleHRSZW5kZXJlcik7CiAKLSAgICBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUgPSB0ZXh0UmVuZGVyZXIuc3R5bGUoKTsKKyAgICBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUgPSB0ZXh0UmVuZGVyZXItPnN0eWxlKCk7CiAgICAgQVNTRVJUKHN0eWxlKTsKIAog
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9IHN0eWxlLT5zdmdTdHlsZSgpOwpA
QCAtMTI2LDcgKzEyNyw3IEBAIHZvaWQgU1ZHVGV4dENodW5rQnVpbGRlcjo6YWRkVGV4dENodW5r
KFZlY3RvcjxTVkdJbmxpbmVUZXh0Qm94Kj4mIGxpbmVMYXlvdXRCb3hlCiAKICAgICAvLyBIYW5k
bGUgJ2xlbmd0aEFkanVzdCcgcHJvcGVydHkuCiAgICAgZmxvYXQgZGVzaXJlZFRleHRMZW5ndGgg
PSAwOwotICAgIGlmIChTVkdUZXh0Q29udGVudEVsZW1lbnQqIHRleHRDb250ZW50RWxlbWVudCA9
IFNWR1RleHRDb250ZW50RWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJlcih0ZXh0UmVuZGVyZXIu
cGFyZW50KCkpKSB7CisgICAgaWYgKFNWR1RleHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRF
bGVtZW50ID0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKHRleHRS
ZW5kZXJlci0+cGFyZW50KCkpKSB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dCh0ZXh0Q29udGVudEVsZW1lbnQpOwogICAgICAgICBkZXNpcmVkVGV4dExlbmd0aCA9IHRl
eHRDb250ZW50RWxlbWVudC0+c3BlY2lmaWVkVGV4dExlbmd0aCgpLnZhbHVlKGxlbmd0aENvbnRl
eHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0RW5naW5lLmNwcAppbmRleCAzYzRlOGJmLi5lMzExMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKQEAgLTIzNSwx
NyArMjM1LDE4IEBAIHZvaWQgU1ZHVGV4dExheW91dEVuZ2luZTo6bGF5b3V0SW5saW5lVGV4dEJv
eChTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94KQogewogICAgIEFTU0VSVCh0ZXh0Qm94KTsKIAot
ICAgIFJlbmRlclNWR0lubGluZVRleHQmIHRleHQgPSB0b1JlbmRlclNWR0lubGluZVRleHQodGV4
dEJveC0+dGV4dFJlbmRlcmVyKCkpOwotICAgIEFTU0VSVCh0ZXh0LnBhcmVudCgpKTsKLSAgICBB
U1NFUlQodGV4dC5wYXJlbnQoKS0+bm9kZSgpKTsKLSAgICBBU1NFUlQodGV4dC5wYXJlbnQoKS0+
bm9kZSgpLT5pc1NWR0VsZW1lbnQoKSk7CisgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCA9
IHRvUmVuZGVyU1ZHSW5saW5lVGV4dCh0ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKSk7CisgICAgQVNT
RVJUKHRleHQpOworICAgIEFTU0VSVCh0ZXh0LT5wYXJlbnQoKSk7CisgICAgQVNTRVJUKHRleHQt
PnBhcmVudCgpLT5ub2RlKCkpOworICAgIEFTU0VSVCh0ZXh0LT5wYXJlbnQoKS0+bm9kZSgpLT5p
c1NWR0VsZW1lbnQoKSk7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUgPSB0ZXh0LnN0
eWxlKCk7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4dC0+c3R5bGUoKTsKICAg
ICBBU1NFUlQoc3R5bGUpOwogCiAgICAgdGV4dEJveC0+Y2xlYXJUZXh0RnJhZ21lbnRzKCk7CiAg
ICAgbV9pc1ZlcnRpY2FsVGV4dCA9IHN0eWxlLT5zdmdTdHlsZSgpLT5pc1ZlcnRpY2FsV3JpdGlu
Z01vZGUoKTsKLSAgICBsYXlvdXRUZXh0T25MaW5lT3JQYXRoKHRleHRCb3gsICZ0ZXh0LCBzdHls
ZSk7CisgICAgbGF5b3V0VGV4dE9uTGluZU9yUGF0aCh0ZXh0Qm94LCB0ZXh0LCBzdHlsZSk7CiAK
ICAgICBpZiAobV9pblBhdGhMYXlvdXQpIHsKICAgICAgICAgbV9wYXRoTGF5b3V0Qm94ZXMuYXBw
ZW5kKHRleHRCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVl
cnkuY3BwCmluZGV4IGMwNjYwYTkuLmJjYzhkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTVkdUZXh0
UXVlcnk6OmNvbGxlY3RUZXh0Qm94ZXNJbkZsb3dCb3goSW5saW5lRmxvd0JveCogZmxvd0JveCkK
ICAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmbG93Qm94LT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc0lu
bGluZUZsb3dCb3goKSkgewogICAgICAgICAgICAgLy8gU2tpcCBnZW5lcmF0ZWQgY29udGVudC4K
LSAgICAgICAgICAgIGlmICghY2hpbGQtPnJlbmRlcmVyKCkubm9kZSgpKQorICAgICAgICAgICAg
aWYgKCFjaGlsZC0+cmVuZGVyZXIoKS0+bm9kZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgICAgICBjb2xsZWN0VGV4dEJveGVzSW5GbG93Qm94KHN0YXRpY19jYXN0PElu
bGluZUZsb3dCb3gqPihjaGlsZCkpOwpAQCAtMTE1LDcgKzExNSw4IEBAIGJvb2wgU1ZHVGV4dFF1
ZXJ5OjpleGVjdXRlUXVlcnkoRGF0YSogcXVlcnlEYXRhLCBQcm9jZXNzVGV4dEZyYWdtZW50Q2Fs
bGJhY2sgZnJhCiAgICAgLy8gTG9vcCBvdmVyIGFsbCB0ZXh0IGJveGVzCiAgICAgZm9yICh1bnNp
Z25lZCB0ZXh0Qm94UG9zaXRpb24gPSAwOyB0ZXh0Qm94UG9zaXRpb24gPCB0ZXh0Qm94Q291bnQ7
ICsrdGV4dEJveFBvc2l0aW9uKSB7CiAgICAgICAgIHF1ZXJ5RGF0YS0+dGV4dEJveCA9IG1fdGV4
dEJveGVzLmF0KHRleHRCb3hQb3NpdGlvbik7Ci0gICAgICAgIHF1ZXJ5RGF0YS0+dGV4dFJlbmRl
cmVyID0gJnRvUmVuZGVyU1ZHSW5saW5lVGV4dChxdWVyeURhdGEtPnRleHRCb3gtPnRleHRSZW5k
ZXJlcigpKTsKKyAgICAgICAgcXVlcnlEYXRhLT50ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclNWR0lu
bGluZVRleHQocXVlcnlEYXRhLT50ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKSk7CisgICAgICAgIEFT
U0VSVChxdWVyeURhdGEtPnRleHRSZW5kZXJlcik7CiAgICAgICAgIEFTU0VSVChxdWVyeURhdGEt
PnRleHRSZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgICAgIEFTU0VSVChxdWVyeURhdGEtPnRleHRS
ZW5kZXJlci0+c3R5bGUoKS0+c3ZnU3R5bGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAppbmRleCAxOGE4ZWU4Li5iN2YzNjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3Bw
CkBAIC00OSwxMCArNDksNyBAQCBuYW1lc3BhY2UgU3R5bGUgewogCiBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewot
ICAgIGlmICghZG9jdW1lbnQucmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IFJlbmRlclZpZXcmIHJlbmRlclZpZXcgPSAqZG9jdW1lbnQucmVuZGVyVmlldygpOworICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAKICAgICAvLyBIVE1MNSBzdGF0ZXMgdGhh
dCBzZWFtbGVzcyBpZnJhbWVzIHNob3VsZCByZXBsYWNlIGRlZmF1bHQgQ1NTIHZhbHVlcwogICAg
IC8vIHdpdGggdmFsdWVzIGluaGVyaXRlZCBmcm9tIHRoZSBjb250YWluaW5nIGlmcmFtZSBlbGVt
ZW50LiBIb3dldmVyLApAQCAtNzAsOCArNjcsOCBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBy
ZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGRvY3VtZW50
U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwogICAgIGlmICghc2VhbWxlc3NXaXRoUGFyZW50KSB7
CiAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNldFJUTE9yZGVyaW5nKGRvY3VtZW50LnZpc3VhbGx5
T3JkZXJlZCgpID8gVmlzdWFsT3JkZXIgOiBMb2dpY2FsT3JkZXIpOwotICAgICAgICBkb2N1bWVu
dFN0eWxlLT5zZXRab29tKCFkb2N1bWVudC5wcmludGluZygpID8gcmVuZGVyVmlldy5mcmFtZSgp
LnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsKLSAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0UGFnZVNj
YWxlVHJhbnNmb3JtKHJlbmRlclZpZXcuZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOworICAg
ICAgICBkb2N1bWVudFN0eWxlLT5zZXRab29tKGZyYW1lICYmICFkb2N1bWVudC5wcmludGluZygp
ID8gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsKKyAgICAgICAgZG9jdW1lbnRTdHlsZS0+
c2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZyYW1lID8gZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSA6
IDEpOwogICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRMb2NhbGUoZG9jdW1lbnQuY29udGVudExh
bmd1YWdlKCkpOwogICAgIH0KICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhbnkgLXdlYmtpdC11c2Vy
LW1vZGlmeSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IGlmcmFtZS4KQEAgLTk0LDM0ICs5MSw0
MSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlyZWN0aW9u
KGRvY0VsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwogICAgIH0KIAotICAg
IGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24gPSByZW5kZXJWaWV3LmZyYW1lVmlldygpLnBh
Z2luYXRpb24oKTsKLSAgICBpZiAocGFnaW5hdGlvbi5tb2RlICE9IFBhZ2luYXRpb246OlVucGFn
aW5hdGVkKSB7Ci0gICAgICAgIGRvY3VtZW50U3R5bGUtPnNldENvbHVtblN0eWxlc0Zyb21QYWdp
bmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUpOwotICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRD
b2x1bW5HYXAocGFnaW5hdGlvbi5nYXApOwotICAgICAgICBpZiAocmVuZGVyVmlldy5oYXNDb2x1
bW5zKCkpCi0gICAgICAgICAgICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtbkluZm9Gcm9tU3R5bGUo
ZG9jdW1lbnRTdHlsZS5nZXQoKSk7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGlmIChGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFBh
Z2luYXRpb24mIHBhZ2luYXRpb24gPSBmcmFtZVZpZXctPnBhZ2luYXRpb24oKTsKKyAgICAgICAg
ICAgIGlmIChwYWdpbmF0aW9uLm1vZGUgIT0gUGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQpIHsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlv
bk1vZGUocGFnaW5hdGlvbi5tb2RlKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudFN0eWxlLT5z
ZXRDb2x1bW5HYXAocGFnaW5hdGlvbi5nYXApOworICAgICAgICAgICAgICAgIGlmIChSZW5kZXJW
aWV3KiB2aWV3ID0gZG9jdW1lbnQucmVuZGVyVmlldygpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2aWV3LT5oYXNDb2x1bW5zKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LT51
cGRhdGVDb2x1bW5JbmZvRnJvbVN0eWxlKGRvY3VtZW50U3R5bGUuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFNlYW1s
ZXNzIGlmcmFtZXMgd2FudCB0byBpbmhlcml0IHRoZWlyIGZvbnQgZnJvbSB0aGVpciBwYXJlbnQg
aWZyYW1lLCBzbyBlYXJseSByZXR1cm4gYmVmb3JlIHNldHRpbmcgdGhlIGZvbnQuCiAgICAgaWYg
KHNlYW1sZXNzV2l0aFBhcmVudCkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50U3R5bGUucmVsZWFz
ZSgpOwogCi0gICAgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzID0gcmVuZGVyVmlldy5mcmFtZSgp
LnNldHRpbmdzKCk7Ci0KICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwogICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTY3JpcHQobG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVj
dGlvbihkb2N1bWVudFN0eWxlLT5sb2NhbGUoKSkpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRV
c2VQcmludGVyRm9udChkb2N1bWVudC5wcmludGluZygpIHx8ICFzZXR0aW5ncy5zY3JlZW5Gb250
U3Vic3RpdHV0aW9uRW5hYmxlZCgpKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5n
TW9kZShzZXR0aW5ncy5mb250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHN0YW5kYXJkRm9udCA9IHNldHRpbmdzLnN0YW5kYXJkRm9udEZhbWlseShmb250RGVzY3Jp
cHRpb24uc2NyaXB0KCkpOwotICAgIGlmICghc3RhbmRhcmRGb250LmlzRW1wdHkoKSkgewotICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0
YW5kYXJkRmFtaWx5KTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShzdGFu
ZGFyZEZvbnQpOwotICAgIH0KLSAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoQ1NT
VmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKLSAgICBpbnQgc2l6ZSA9IGZvbnRT
aXplRm9yS2V5d29yZChDU1NWYWx1ZU1lZGl1bSwgZmFsc2UsIGRvY3VtZW50KTsKLSAgICBmb250
RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsKLSAgICBib29sIHVzZVNWR1pvb21S
dWxlcyA9IGRvY3VtZW50LmlzU1ZHRG9jdW1lbnQoKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0
Q29tcHV0ZWRTaXplKGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXplLCBmb250
RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgdXNlU1ZHWm9vbVJ1bGVzLCBkb2N1bWVudFN0
eWxlLmdldCgpLCBkb2N1bWVudCkpOworICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1
bWVudC5zZXR0aW5ncygpKSB7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVy
Rm9udChkb2N1bWVudC5wcmludGluZygpIHx8ICFzZXR0aW5ncy0+c2NyZWVuRm9udFN1YnN0aXR1
dGlvbkVuYWJsZWQoKSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2Rl
KHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdGFuZGFyZEZvbnQgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KGZvbnREZXNj
cmlwdGlvbi5zY3JpcHQoKSk7CisgICAgICAgIGlmICghc3RhbmRhcmRGb250LmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2Ny
aXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CisgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
T25lRmFtaWx5KHN0YW5kYXJkRm9udCk7CisgICAgICAgIH0KKyAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEtleXdvcmRTaXplKENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7
CisgICAgICAgIGludCBzaXplID0gZm9udFNpemVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBm
YWxzZSwgZG9jdW1lbnQpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6
ZShzaXplKTsKKyAgICAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0Rv
Y3VtZW50KCk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoY29tcHV0
ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNpemUsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29s
dXRlU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMsIGRvY3VtZW50U3R5bGUuZ2V0KCksIGRvY3VtZW50
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9u
dChkb2N1bWVudC5wcmludGluZygpKTsKIAogICAgIEZvbnRPcmllbnRhdGlvbiBmb250T3JpZW50
YXRpb247CiAgICAgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAppbmRleCA1OGZiYTNiLi5hNWEy
NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcApAQCAtMjcs
OCArMjcsOCBAQAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZVRyZWUuaCIKIAogI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRS
YXJlRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJGbG93
VGhyZWFkQ29udHJvbGxlci5oIgpAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0YXRpYyB2b2lkIGF0dGFj
aFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIAogc3RhdGljIHZvaWQgYXR0YWNo
UmVuZGVyVHJlZShFbGVtZW50JiBjdXJyZW50LCBSZW5kZXJTdHlsZSogcmVzb2x2ZWRTdHlsZSkK
IHsKLSAgICBQb3N0QXR0YWNoQ2FsbGJhY2tEaXNhYmxlciBjYWxsYmFja0Rpc2FibGVyKGN1cnJl
bnQpOworICAgIFBvc3RBdHRhY2hDYWxsYmFja0Rpc2FibGVyIGNhbGxiYWNrRGlzYWJsZXIoJmN1
cnJlbnQpOwogICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVu
ZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAKICAgICBpZiAoY3VycmVudC5oYXNDdXN0b21TdHls
ZVJlc29sdmVDYWxsYmFja3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
bGlwUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVu
dC5jcHAKaW5kZXggZDZlYjIwYi4uYjA5YjlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Ns
aXBQYXRoRWxlbWVudC5jcHAKQEAgLTEwMywxMSArMTAzLDExIEBAIHZvaWQgU1ZHQ2xpcFBhdGhF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR0Ns
aXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2Up
Cit2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRD
b3VudERlbHRhKQogewotICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZSk7CisgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5
UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogCi0g
ICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIpCisgICAgaWYg
KGNoYW5nZWRCeVBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuaAppbmRleCBhNTUyYWRhLi5kNWI5ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQ
YXRoRWxlbWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSog
YWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKaW5kZXggZmNhMTQyOS4u
YWNjOTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcApAQCAtMTA2
LDggKzEwNiwxMSBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmFkZENsaWVudChTVkdFbGVtZW50
KiBlbGVtZW50KQogCiB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnJlbW92ZUNsaWVudChTVkdFbGVt
ZW50KiBlbGVtZW50KQogewotICAgIGlmIChtX2NsaWVudHMucmVtb3ZlKGVsZW1lbnQpKQorICAg
IEhhc2hTZXQ8U1ZHRWxlbWVudCo+OjppdGVyYXRvciBpdCA9IG1fY2xpZW50cy5maW5kKGVsZW1l
bnQpOworICAgIGlmIChpdCAhPSBtX2NsaWVudHMuZW5kKCkpIHsKKyAgICAgICAgbV9jbGllbnRz
LnJlbW92ZShpdCk7CiAgICAgICAgIGVsZW1lbnQtPmN1cnNvckVsZW1lbnRSZW1vdmVkKCk7Cisg
ICAgfQogfQogCiB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnJlbW92ZVJlZmVyZW5jZWRFbGVtZW50
KFNWR0VsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4
dGVuc2lvbnMuY3BwCmluZGV4IDllZTYyNTAuLjZiN2VjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjphZGRSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBS
ZW5kZXJTVkdSZXNvdXJjCiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVSZXNv
dXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkKQogewotICAgIGlmIChpZC5pc0VtcHR5KCkpCisg
ICAgaWYgKGlkLmlzRW1wdHkoKSB8fCAhbV9yZXNvdXJjZXMuY29udGFpbnMoaWQpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3Jlc291cmNlcy5yZW1vdmUoaWQpOwpAQCAtMzIyLDEyICszMjIs
MTYgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbFRhcmdldFJlZmVyZW5j
ZXNGb3JFbGVtZW50KFNWR0VsZW1lbnQqIHJlZmUKIHsKICAgICBWZWN0b3I8U1ZHRWxlbWVudCo+
IHRvQmVSZW1vdmVkOwogCi0gICAgYXV0byBlbmQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZW5k
KCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgIEhhc2hNYXA8U1ZHRWxlbWVudCosIE93blB0cjxIYXNoU2V0
PFNWR0VsZW1lbnQqPiA+ID46Oml0ZXJhdG9yIGVuZCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5l
bmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8U1ZHRWxlbWVudCosIE93blB0cjxIYXNoU2V0PFNWR0Vs
ZW1lbnQqPiA+ID46Oml0ZXJhdG9yIGl0ID0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBTVkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVu
dCA9IGl0LT5rZXk7Ci0gICAgICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+JiByZWZlcmVuY2luZ0Vs
ZW1lbnRzID0gKml0LT52YWx1ZTsKLSAgICAgICAgcmVmZXJlbmNpbmdFbGVtZW50cy5yZW1vdmUo
cmVmZXJlbmNpbmdFbGVtZW50KTsKLSAgICAgICAgaWYgKHJlZmVyZW5jaW5nRWxlbWVudHMuaXNF
bXB0eSgpKQorICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPiogcmVmZXJlbmNpbmdFbGVtZW50
cyA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj46Oml0ZXJh
dG9yIHNldEl0ID0gcmVmZXJlbmNpbmdFbGVtZW50cy0+ZmluZChyZWZlcmVuY2luZ0VsZW1lbnQp
OworICAgICAgICBpZiAoc2V0SXQgPT0gcmVmZXJlbmNpbmdFbGVtZW50cy0+ZW5kKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICByZWZlcmVuY2luZ0VsZW1lbnRzLT5yZW1vdmUo
c2V0SXQpOworICAgICAgICBpZiAocmVmZXJlbmNpbmdFbGVtZW50cy0+aXNFbXB0eSgpKQogICAg
ICAgICAgICAgdG9CZVJlbW92ZWQuYXBwZW5kKHJlZmVyZW5jZWRFbGVtZW50KTsKICAgICB9CiAK
QEAgLTM2Myw3ICszNjcsMTMgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlYnVpbGRB
bGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldChTVkdFbGVtZW50KiByZWYKIAogdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KFNW
R0VsZW1lbnQqIHJlZmVyZW5jZWRFbGVtZW50KQogewotICAgIG1fZWxlbWVudERlcGVuZGVuY2ll
cy5yZW1vdmUocmVmZXJlbmNlZEVsZW1lbnQpOworICAgIEFTU0VSVChyZWZlcmVuY2VkRWxlbWVu
dCk7CisgICAgSGFzaE1hcDxTVkdFbGVtZW50KiwgT3duUHRyPEhhc2hTZXQ8U1ZHRWxlbWVudCo+
ID4gPjo6aXRlcmF0b3IgaXQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZmluZChyZWZlcmVuY2Vk
RWxlbWVudCk7CisgICAgaWYgKGl0ID09IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIEFTU0VSVChpdC0+a2V5ID09IHJlZmVyZW5jZWRFbGVtZW50KTsK
KworICAgIG1fZWxlbWVudERlcGVuZGVuY2llcy5yZW1vdmUoaXQpOwogfQogCiAjaWYgRU5BQkxF
KFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA1ZGYyZmYyLi5hYjJl
NWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAjaW5j
bHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2lu
Y2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGVzY2VuZGFudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKQEAgLTEwNTYsMTMgKzEwNTYsMTMgQEAgdm9pZCBTVkdFbGVtZW50OjpidWls
ZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpCiAgICAgfQogfQogCi12b2lkIFNWR0VsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBTVkdFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNo
YW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7Ci0gICAgU3R5
bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAgU3R5bGVkRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5n
ZSwgY2hpbGRDb3VudERlbHRhKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hh
bmdlU291cmNlUGFyc2VyKQotICAgICAgICByZXR1cm47Ci0gICAgU1ZHRWxlbWVudEluc3RhbmNl
OjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KHRoaXMpOworICAgIC8vIEludmFsaWRh
dGUgYWxsIFNWR0VsZW1lbnRJbnN0YW5jZXMgYXNzb2NpYXRlZCB3aXRoIHVzCisgICAgaWYgKCFj
aGFuZ2VkQnlQYXJzZXIpCisgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFs
bEluc3RhbmNlc09mRWxlbWVudCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZH
RWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGIxM2YwMjUuLjE3MzJkMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCi0jaW5j
bHVkZSAiU1ZHRWxlbWVudFR5cGVDaGVja3MuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIK
ICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKICNpbmNsdWRlICJTVkdQYXJzaW5nRXJyb3IuaCIK
QEAgLTE2MSw3ICsxNjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0lu
Zm9ybWF0aW9uKCkgeyB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCksIHRoaXMpOyB9CiAgICAgdm9pZCB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJ
bmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWxlbWVudCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCA2MWUw
YzQyLi44NjQ5ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcApAQCAtMzYsMTkgKzM2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIERF
RklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6
aW5BdHRyLCBJbjEsIGluMSkKIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwg
c3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkK
IERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50
aWZpZXIoKSwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKLURFRklORV9BTklNQVRFRF9F
TlVNRVJBVElPTihTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjplZGdlTW9kZUF0
dHIsIEVkZ2VNb2RlLCBlZGdlTW9kZSwgRWRnZU1vZGVUeXBlKQogCiBCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCkKICAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCiAgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoc3RkRGV2aWF0aW9uWCkKICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShzdGREZXZpYXRpb25ZKQotICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGVkZ2VNb2RlKQogICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKIEVORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFn
TmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX2VkZ2VNb2RlKEVER0VNT0RFX05PTkUpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnKSk7CiAgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoKTsKQEAg
LTg0LDcgKzgxLDYgQEAgYm9vbCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW0KICAgICBpZiAoc3VwcG9ydGVk
QXR0cmlidXRlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQo
U1ZHTmFtZXM6OmluQXR0cik7CiAgICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKFNWR05h
bWVzOjpzdGREZXZpYXRpb25BdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQo
U1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cik7CiAgICAgfQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9
CkBAIC0xMTAsMTcgKzEwNiw2IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyKSB7
Ci0gICAgICAgIEVkZ2VNb2RlVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8
RWRnZU1vZGVUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eVZh
bHVlID4gMCkKLSAgICAgICAgICAgIHNldEVkZ2VNb2RlQmFzZVZhbHVlKHByb3BlcnR5VmFsdWUp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+cmVwb3J0V2FybmluZygKLSAgICAgICAgICAgICAgICAiZmVHYXVzc2lhbkJsdXI6IHBy
b2JsZW0gcGFyc2luZyBlZGdlTW9kZT1cIiIgKyB2YWx1ZQotICAgICAgICAgICAgICAgICsgIlwi
LiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0xMzMsOSAr
MTE4LDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CiAgICAgCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmVkZ2VNb2RlQXR0cikgeworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyKSB7CiAgICAgICAgIGlu
dmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1Myw3ICsxMzYsNyBAQCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0
ZERldmlhdGlvblkoKSA8IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlh
dGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0
aW9uWCgpLCBzdGREZXZpYXRpb25ZKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBw
ZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKaW5kZXggY2NkNTg3OC4uZDQz
MjU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
aApAQCAtMjMsOSArMjMsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CiAjaW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1l
cmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKLSNpbmNsdWRlICJTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw3ICs0OSw2
IEBAIHByaXZhdGU6CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQog
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25YLCBzdGREZXZpYXRp
b25YKQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGRE
ZXZpYXRpb25ZKQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKEVkZ2VNb2Rl
LCBlZGdlTW9kZSwgRWRnZU1vZGVUeXBlKQogICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5pZGwKaW5kZXggYTI1NmM1ZC4uMmE3OGUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5pZGwKQEAgLTI0LDE5ICsyNCwxMSBAQAogICov
CiAKIFsKLSAgICBDb25kaXRpb25hbD1TVkcmRklMVEVSUywKLSAgICBEb05vdENoZWNrQ29uc3Rh
bnRzCisgICAgQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlMKIF0gaW50ZXJmYWNlIFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQgewotICAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMKLSAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfVU5LTk9XTiAgID0gMDsKLSAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsKLSAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfV1JBUCAgICAgID0gMjsKLSAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSAgICAgID0gMzsKLQogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7CiAKICAgICB2b2lkIHNldFN0ZERldmlh
dGlvbihbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHN0ZERldmlhdGlvblgsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxv
YXQgc3RkRGV2aWF0aW9uWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVM
aWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNw
cAppbmRleCAyOThkNTZjLi41ZDJlNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5jcHAKQEAgLTIwNywxOCArMjA3LDE3IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBTVkdGRUxpZ2h0RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIFNW
R0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIFNWR0VsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNv
dXJjZVBhcnNlcikKLSAgICAgICAgcmV0dXJuOwotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IHBhcmVudE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0gICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24ocmVuZGVyZXIpOworICAgIGlmICghY2hhbmdlZEJ5UGFyc2VyKSB7CisgICAgICAgIGlm
IChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSkK
KyAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAppbmRleCA0NjA0NDRhLi44MzNj
MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaApAQCAtNDQsNyArNDQs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZFTGlnaHRFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihBemlt
dXRoLCBhemltdXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4
IGQ0MjgyZDEuLjM2ZTE5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHAKQEAgLTE3NywxMSArMTc3LDExIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKK3ZvaWQgU1ZHRmlsdGVyRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIFNW
R0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIFNWR0VsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNv
dXJjZVBhcnNlcikKKyAgICBpZiAoY2hhbmdlZEJ5UGFyc2VyKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5kZXggODZmMmJiZi4uYmNlNmVhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdl
ID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHAKaW5kZXggNWQ1YzA5ZS4uMmJkNDNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTEx
NywxMyArMTE3LDEyIEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hCiAgICAgaW52YWxpZGF0ZSgp
OwogfQogCi12b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAg
IFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJj
ZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGludmFs
aWRhdGUoKTsKKyAgICBpZiAoIWNoYW5nZWRCeVBhcnNlcikKKyAgICAgICAgaW52YWxpZGF0ZSgp
OwogfQogCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0U3Rh
bmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCmluZGV4IGMzZDgzNzYuLmE4OTc0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0g
MCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0
ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAppbmRleCAwNjgxYTY3Li4w
MWZlNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaApAQCAtODksNiArODksMTEg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNHbHlwaENhY2hlVmFsaWQ7CiB9OwogCitpbmxpbmUg
Ym9vbCBpc1NWR0ZvbnRFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5v
ZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRUYWcpOworfQorCiBpbmxpbmUgU1ZHRm9udEVs
ZW1lbnQqIHRvU1ZHRm9udEVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc1NWR0ZvbnRFbGVtZW50KG5vZGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5kZXggZjM4ZTRmYS4uYzAy
NGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTI5
Niw5ICsyOTYsOSBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSogcm9vdFBhcmVudCkKICAgICAgICAgQVNTRVJUKCFtX2ZvbnRFbGVtZW50KTsKIH0K
IAotdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYgY2hhbmdlKQordm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5n
ZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlKTsKKyAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFy
c2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAgIHJl
YnVpbGRGb250RmFjZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50
LmgKaW5kZXggNmU3ZDhlNi4uZmMzNmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUq
IGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7CiAKQEAgLTY3LDYgKzY3LDE4IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1l
bnQqIG1fZm9udEVsZW1lbnQ7CiB9OwogCitpbmxpbmUgYm9vbCBpc1NWR0ZvbnRGYWNlRWxlbWVu
dChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpmb250X2ZhY2VUYWcpOworfQorCitpbmxpbmUgYm9vbCBpc1NWR0ZvbnRGYWNlRWxlbWVu
dChjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdO
YW1lKFNWR05hbWVzOjpmb250X2ZhY2VUYWcpOworfQorCit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9v
bCBpc0VsZW1lbnRPZlR5cGU8U1ZHRm9udEZhY2VFbGVtZW50Pihjb25zdCBFbGVtZW50KiBlbGVt
ZW50KSB7IHJldHVybiBpc1NWR0ZvbnRGYWNlRWxlbWVudChlbGVtZW50KTsgfQorCiBpbmxpbmUg
U1ZHRm9udEZhY2VFbGVtZW50KiB0b1NWR0ZvbnRGYWNlRWxlbWVudChOb2RlKiBub2RlKQogewog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzU1ZHRm9udEZh
Y2VFbGVtZW50KG5vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZUZvcm1hdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9y
bWF0RWxlbWVudC5jcHAKaW5kZXggZGY3NDYyNy4uZjdhODQ5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKQEAgLTQwLDkgKzQwLDkgQEAg
UGFzc1JlZlB0cjxTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ+IFNWR0ZvbnRGYWNlRm9ybWF0RWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZvbnRG
YWNlRm9ybWF0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZvbnRG
YWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCit2b2lkIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBp
bnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2UpOworICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIs
IGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAKICAgICBpZiAo
IXBhcmVudE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGZvbnRfZmFjZV91cmlU
YWcpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VGb3JtYXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VG
b3JtYXRFbGVtZW50LmgKaW5kZXggZDQ1NjIyZS4uNmZhNzdiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlU3JjRWxlbWVudC5jcHAKaW5kZXggOTRhOTJmZi4uYzZkYzlmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5jcHAKQEAgLTU5LDkgKzU5LDkgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IFNWR0ZvbnRGYWNlU3JjRWxlbWVudDo6c3JjVmFsdWUoKSBj
b25zdAogICAgIHJldHVybiBsaXN0OwogfQogCi12b2lkIFNWR0ZvbnRGYWNlU3JjRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIFNWR0ZvbnRG
YWNlU3JjRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQog
ewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIFNWR0VsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJD
aGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnRO
b2RlKCktPmhhc1RhZ05hbWUoZm9udF9mYWNlVGFnKSkKICAgICAgICAgdG9TVkdGb250RmFjZUVs
ZW1lbnQocGFyZW50Tm9kZSgpKS0+cmVidWlsZEZvbnRGYWNlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmgKaW5kZXggNjAyMGRiMi4uMTUwYWM2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuaApAQCAtMzYsNyArMzYs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlU3JjRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZv
cmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEg
PSAwKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDEwOTI1YTYuLmIzYjVlZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC03MCw5ICs3
MCw5IEBAIHZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tCiAgICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBTVkdGb250
RmFjZVVyaUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9k
ZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkK
IHsKLSAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBTVkdFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVy
Q2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogCiAgICAgaWYgKCFwYXJlbnROb2RlKCkgfHwgIXBh
cmVudE5vZGUoKS0+aGFzVGFnTmFtZShmb250X2ZhY2Vfc3JjVGFnKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCmluZGV4IDlhOTUx
NDQuLmRjYzZlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RmFjZVVyaUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBh
ZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKICAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJT
dHlsZSYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKaW5kZXggODkzNjMwOC4uYjBkYzYyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTU5LDYgKzU5
LDE5IEBAIHByaXZhdGU6CiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsK
IAoraW5saW5lIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBOb2RlKiBub2Rl
KQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0
VGFnKTsKK30KKworaW5saW5lIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBF
bGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpmb3JlaWduT2JqZWN0VGFnKTsKK30KKwordGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNF
bGVtZW50T2ZUeXBlPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Pihjb25zdCBFbGVtZW50KiBlbGVt
ZW50KSB7IHJldHVybiBpc1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50KGVsZW1lbnQpOyB9CisKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggMTZhZjc3MC4uYmVmNDRmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTEyNiwxMSAr
MTI2LDExIEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KHRydWUpOwogfQogICAgIAotdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBTVkdFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOwogCi0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VQ
YXJzZXIpCisgICAgaWYgKGNoYW5nZWRCeVBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuaAppbmRleCBhMGU5NGI5Li42NjFhYzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVt
ZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNwcmVhZE1ldGhvZCwg
c3ByZWFkTWV0aG9kLCBTVkdTcHJlYWRNZXRob2RUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5oCmluZGV4IDkxMzRmMWIuLjljZDU3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKQEAgLTc3LDYgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VMb2Fk
ZXIgbV9pbWFnZUxvYWRlcjsKIH07CiAKK2lubGluZSBib29sIGlzU1ZHSW1hZ2VFbGVtZW50KGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmltYWdlVGFnKTsKK30KKwogaW5saW5lIFNWR0ltYWdlRWxlbWVudCogdG9TVkdJbWFnZUVsZW1l
bnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigh
bm9kZSB8fCBpc1NWR0ltYWdlRWxlbWVudChub2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFy
a2VyRWxlbWVudC5jcHAKaW5kZXggOTU5YTFhOS4uNmVlZjI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtMTc5LDExICsxNzksMTEgQEAgdm9pZCBTVkdNYXJr
ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNW
R01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdl
KQordm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENv
dW50RGVsdGEpCiB7Ci0gICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7Cisg
ICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hh
bmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIAotICAgIGlmIChjaGFuZ2Uuc291
cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2VkQnlQYXJzZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRl
cmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAppbmRleCA5YWNkMTZiLi4z
MjFiZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKQEAgLTEyOCw3ICsx
MjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFs
c2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNo
aWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDMwMzAxMWEuLmFhZjZlZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtMTQ2LDExICsxNDYsMTEgQEAgdm9p
ZCBTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAot
dm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBj
aGFuZ2UpCit2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGls
ZENvdW50RGVsdGEpCiB7Ci0gICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CisgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3Jl
Q2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIAotICAgIGlmIChjaGFuZ2Uu
c291cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2VkQnlQYXJz
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJl
bmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCmluZGV4IGYzNWUyNzYuLjU5
NWVjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAppbmRleCBhYTRhNGNmLi42OWUzNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTE3MSwxMSArMTcxLDExIEBAIHZvaWQgU1ZHUGF0
dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQg
U1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hh
bmdlKQordm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hp
bGRDb3VudERlbHRhKQogewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Up
OworICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9y
ZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAKLSAgICBpZiAoY2hhbmdl
LnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAgICBpZiAoY2hhbmdlZEJ5UGFy
c2VyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBy
ZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAppbmRleCAxYzE1
OTZhLi42ZGI2NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaApAQCAt
NjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
ID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwg
aW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IDVmZjM3MmMuLmI5YjI5MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJDU1NIZWxwZXIu
aCIKKyNpbmNsdWRlICJEZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNGNjMTMwMi4uMzI1
ZTRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtMTI3LDkg
KzEyNyw5IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHU2NyaXB0RWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqCiAgICAgcmV0dXJuIEluc2VydGlvbkRv
bmU7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNo
YW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKKyAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5
UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAg
IFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaAppbmRleCBjYWEwOTgyLi45OWI5ZDg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTY3JpcHRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKQEAgLTg4LDYgKzg4LDExIEBAIHByaXZhdGU6
CiAgICAgVGltZXI8U1ZHRWxlbWVudD4gbV9zdmdMb2FkRXZlbnRUaW1lcjsKIH07CiAKK2lubGlu
ZSBib29sIGlzU1ZHU2NyaXB0RWxlbWVudChOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2Rl
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzY3JpcHRUYWcpOworfQorCiBpbmxpbmUgU1ZHU2NyaXB0
RWxlbWVudCogdG9TVkdTY3JpcHRFbGVtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1l
czo6c2NyaXB0VGFnKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCmluZGV4
IGQwODAzODcuLmJmOGNhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3Bw
CkBAIC0xNTUsOSArMTU1LDkgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiAgICAgICAgIG1fc3R5bGVTaGVldE93bmVyLnJlbW92
ZWRGcm9tRG9jdW1lbnQoJmRvY3VtZW50KCksIHRoaXMpOwogfQogCi12b2lkIFNWR1N0eWxlRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCit2b2lkIFNW
R1N0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQog
ewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIFNWR0VsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJD
aGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgbV9zdHlsZVNoZWV0T3duZXIuY2hpbGRyZW5D
aGFuZ2VkKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgKaW5kZXgg
MDVhNWE0Zi4uZGQ3YzI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaApAQCAt
NTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBO
b2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rp
dGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcApp
bmRleCAzM2YxZjMxLi4zOGVlZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50
LmNwcApAQCAtNTYsOSArNTYsOSBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6cmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSogcm9vdFBhcmVudCkKICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVUaXRs
ZSh0aGlzKTsKIH0KIAotdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYgY2hhbmdlKQordm9pZCBTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRl
ckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBTVkdFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY2hhbmdlKTsKKyAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdl
ZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwog
ICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgIC8vIEZJWE1FOiBkb2VzIFNWRyBoYXZlIHRp
dGxlIHRleHQgZGlyZWN0aW9uPwogICAgICAgICBkb2N1bWVudCgpLnNldFRpdGxlRWxlbWVudChT
dHJpbmdXaXRoRGlyZWN0aW9uKHRleHRDb250ZW50KCksIExUUiksIHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RpdGxlRWxlbWVudC5oCmluZGV4IGE0OWFkOWQuLjkyZWMxZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
TUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcAppbmRleCA4MmFkMzE3Li4zNThhOWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcApAQCAtMjcsOCAr
MjcsOCBAQAogI2luY2x1ZGUgIlNNSUxUaW1lQ29udGFpbmVyLmgiCiAKICNpZiBFTkFCTEUoU1ZH
KQorI2luY2x1ZGUgIkRlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNp
bmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDdjOWQ1ZTkuLmY1OTQw
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMzEsOCAr
MzEsOCBAQAogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAKICNpbmNsdWRlICJDaHJvbWUuaCIKKyNp
bmNsdWRlICJEZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5o
IgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCmluZGV4IGUzYTg5
ZmQuLjdjOThlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VD
YWNoZS5jcHAKQEAgLTQ3LDcgKzQ3LDggQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpyZW1vdmVDbGll
bnRGcm9tQ2FjaGUoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NF
UlQoY2xpZW50KTsKIAotICAgIG1faW1hZ2VGb3JDb250YWluZXJNYXAucmVtb3ZlKGNsaWVudCk7
CisgICAgaWYgKG1faW1hZ2VGb3JDb250YWluZXJNYXAuY29udGFpbnMoY2xpZW50KSkKKyAgICAg
ICAgbV9pbWFnZUZvckNvbnRhaW5lck1hcC5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBTVkdJ
bWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VD
bGllbnQqIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eS5jcHAKaW5kZXggNjBmYWU1Yi4uZTVmZWU1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKQEAg
LTM5LDEwICszOSwxMSBAQCBTVkdBbmltYXRlZFByb3BlcnR5OjpTVkdBbmltYXRlZFByb3BlcnR5
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaQogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6flNWR0FuaW1hdGVkUHJvcGVydHkoKQogewogICAgIC8vIFJlbW92ZSB3cmFwcGVyIGZy
b20gY2FjaGUuCi0gICAgQ2FjaGUmIGNhY2hlID0gKmFuaW1hdGVkUHJvcGVydHlDYWNoZSgpOwot
ICAgIGZvciAoYXV0byBpdCA9IGNhY2hlLmJlZ2luKCksIGVuZCA9IGNhY2hlLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICBDYWNoZSogY2FjaGUgPSBhbmltYXRlZFByb3BlcnR5Q2FjaGUo
KTsKKyAgICBjb25zdCBDYWNoZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2FjaGUtPmVuZCgpOwor
ICAgIGZvciAoQ2FjaGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2FjaGUtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlID09IHRoaXMpIHsKLSAgICAgICAg
ICAgIGNhY2hlLnJlbW92ZShpdCk7CisgICAgICAgICAgICBjYWNoZS0+cmVtb3ZlKGl0LT5rZXkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvc3ZndGFncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9zdmd0YWdzLmlu
CmluZGV4IGM0MDYzMTEuLjdkYjQ4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9z
dmd0YWdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9zdmd0YWdzLmluCkBAIC01MywyMSAr
NTMsMjEgQEAgZmVUdXJidWxlbmNlCiBmaWx0ZXIKICNlbmRpZgogI2lmIEVOQUJMRV9TVkdfRk9O
VFMKLWZvbnQgZ2VuZXJhdGVUeXBlQ2hlY2tzCi1mb250X2ZhY2UgZ2VuZXJhdGVUeXBlQ2hlY2tz
Citmb250Citmb250X2ZhY2UKIGZvbnRfZmFjZV9mb3JtYXQKIGZvbnRfZmFjZV9uYW1lCiBmb250
X2ZhY2Vfc3JjCiBmb250X2ZhY2VfdXJpCiAjZW5kaWYKLWZvcmVpZ25PYmplY3QgZ2VuZXJhdGVU
eXBlQ2hlY2tzCitmb3JlaWduT2JqZWN0CiBnCiAjaWYgRU5BQkxFX1NWR19GT05UUwogZ2x5cGgK
IGdseXBoUmVmCiBoa2VybiBpbnRlcmZhY2VOYW1lPVNWR0hLZXJuRWxlbWVudAogI2VuZGlmCi1p
bWFnZSBnZW5lcmF0ZVR5cGVDaGVja3MKK2ltYWdlCiBsaW5lCiBsaW5lYXJHcmFkaWVudAogbWFy
a2VyCkBAIC04Myw3ICs4Myw3IEBAIHBvbHlnb24KIHBvbHlsaW5lCiByYWRpYWxHcmFkaWVudAog
cmVjdAotc2NyaXB0IGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIsIGdlbmVyYXRlVHlw
ZUNoZWNrcworc2NyaXB0IGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKIHN0b3AKIHN0
eWxlIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKIHN2ZyBpbnRlcmZhY2VOYW1lPVNW
R1NWR0VsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhZDhhZGNk
Li4zZWZiM2IxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTYwNSw4
ICsxNjA1LDYgQEAgU3RyaW5nIEludGVybmFsczo6bGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50KiBk
b2N1bWVudCwgdW5zaWduZWQgZmxhZ3MsIEV4Y2VwdGlvbkMKICAgICAgICAgbGF5ZXJUcmVlRmxh
Z3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3RzOwogICAgIGlmIChmbGFncyAm
IExBWUVSX1RSRUVfSU5DTFVERVNfUEFJTlRJTkdfUEhBU0VTKQogICAgICAgICBsYXllclRyZWVG
bGFncyB8PSBMYXllclRyZWVGbGFnc0luY2x1ZGVQYWludGluZ1BoYXNlczsKLSAgICBpZiAoZmxh
Z3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVTX0NPTlRFTlRfTEFZRVJTKQotICAgICAgICBsYXllclRy
ZWVGbGFncyB8PSBMYXllclRyZWVGbGFnc0luY2x1ZGVDb250ZW50TGF5ZXJzOwogCiAgICAgcmV0
dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5sYXllclRyZWVBc1RleHQobGF5ZXJUcmVlRmxhZ3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggM2NkNWQwZi4uZDFiNGI5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMjUsOCArMjI1LDcgQEAgcHVibGljOgog
ICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAxLAogICAgICAgICBM
QVlFUl9UUkVFX0lOQ0xVREVTX1RJTEVfQ0FDSEVTID0gMiwKICAgICAgICAgTEFZRVJfVFJFRV9J
TkNMVURFU19SRVBBSU5UX1JFQ1RTID0gNCwKLSAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURFU19Q
QUlOVElOR19QSEFTRVMgPSA4LAotICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX0NPTlRFTlRf
TEFZRVJTID0gMTYKKyAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURFU19QQUlOVElOR19QSEFTRVMg
PSA4CiAgICAgfTsKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50KiwgdW5zaWdu
ZWQgZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNU
ZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IDU2ZTc4ODkuLjk4YWVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKQEAgLTE3NSw3ICsxNzUsNiBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyOwogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNUUyA9IDQ7CiAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19QQUlOVElOR19QSEFTRVMgPSA4
OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfQ09OVEVOVF9M
QVlFUlMgPSAxNjsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01TdHJpbmcgbGF5ZXJUcmVlQXNU
ZXh0KERvY3VtZW50IGRvY3VtZW50LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyk7CiAK
ICAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01TdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
KERvY3VtZW50IGRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAppbmRleCA5MjI3MjI2Li40YzZmZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05
MSw3ICs5MCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0CiAgICAgb3B0aW9ucy5zZW5kTG9h
ZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7CiAKICAgICAvLyBEdXJpbmcgY3JlYXRlLCBjYWxs
YmFja3MgbWF5IGhhcHBlbiB3aGljaCByZW1vdmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMg
b2JqZWN0LgotICAgIFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgbV90aHJlYWRh
YmxlTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggMjk3YWJmMi4uYzgxMDUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC02Miw3ICs2Miw2IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE5Miw3ICsxOTEsNiBAQCBYTUxIdHRw
UmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICAsIG1fZXhjZXB0aW9uQ29kZSgwKQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUo
dGhpcykKICAgICAsIG1fcmVzcG9uc2VUeXBlQ29kZShSZXNwb25zZVR5cGVEZWZhdWx0KQotICAg
ICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKIHsKICAgICBpbml0aWFsaXplWE1MSHR0
cFJlcXVlc3RTdGF0aWNEYXRhKCk7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjM5LDE0ICsyMzcsNyBA
QCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAg
IH0KLSAgICByZXR1cm4gcmVzcG9uc2VUZXh0SWdub3JpbmdSZXNwb25zZVR5cGUoKTsKLX0KLQot
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkQ2FjaGVSZXNwb25zZUpTT04oKQotewotICAgIEFTU0VS
VChtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlSlNPTiAmJiBkb25lV2l0aG91dEVy
cm9ycygpKTsKLSAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gdHJ1ZTsKLSAgICBtX3Jlc3Bv
bnNlQnVpbGRlci5jbGVhcigpOworICAgIHJldHVybiBtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmlu
Z1ByZXNlcnZlQ2FwYWNpdHkoKTsKIH0KIAogRG9jdW1lbnQqIFhNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZVhNTChFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI1Niw3ICsyNDcsNyBAQCBEb2N1bWVudCog
WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIWRvbmVXaXRob3V0RXJyb3JzKCkpCisgICAgaWYg
KG1fZXJyb3IgfHwgbV9zdGF0ZSAhPSBET05FKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlm
ICghbV9jcmVhdGVkRG9jdW1lbnQpIHsKQEAgLTM3MCw4ICszNjEsNiBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzZXRSZXNwb25zZVR5cGUoY29uc3QgU3RyaW5nJiByZXNwb25zZVR5cGUsIEV4Y2Vw
dGlvbkNvZGUmCiAgICAgICAgIG1fcmVzcG9uc2VUeXBlQ29kZSA9IFJlc3BvbnNlVHlwZURlZmF1
bHQ7CiAgICAgZWxzZSBpZiAocmVzcG9uc2VUeXBlID09ICJ0ZXh0IikKICAgICAgICAgbV9yZXNw
b25zZVR5cGVDb2RlID0gUmVzcG9uc2VUeXBlVGV4dDsKLSAgICBlbHNlIGlmIChyZXNwb25zZVR5
cGUgPT0gImpzb24iKQotICAgICAgICBtX3Jlc3BvbnNlVHlwZUNvZGUgPSBSZXNwb25zZVR5cGVK
U09OOwogICAgIGVsc2UgaWYgKHJlc3BvbnNlVHlwZSA9PSAiZG9jdW1lbnQiKQogICAgICAgICBt
X3Jlc3BvbnNlVHlwZUNvZGUgPSBSZXNwb25zZVR5cGVEb2N1bWVudDsKICAgICBlbHNlIGlmIChy
ZXNwb25zZVR5cGUgPT0gImJsb2IiKQpAQCAtMzg5LDggKzM3OCw2IEBAIFN0cmluZyBYTUxIdHRw
UmVxdWVzdDo6cmVzcG9uc2VUeXBlKCkKICAgICAgICAgcmV0dXJuICIiOwogICAgIGNhc2UgUmVz
cG9uc2VUeXBlVGV4dDoKICAgICAgICAgcmV0dXJuICJ0ZXh0IjsKLSAgICBjYXNlIFJlc3BvbnNl
VHlwZUpTT046Ci0gICAgICAgIHJldHVybiAianNvbiI7CiAgICAgY2FzZSBSZXNwb25zZVR5cGVE
b2N1bWVudDoKICAgICAgICAgcmV0dXJuICJkb2N1bWVudCI7CiAgICAgY2FzZSBSZXNwb25zZVR5
cGVCbG9iOgpAQCAtODM1LDcgKzgyMiw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJl
cXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjphYm9ydCgpCiB7
CiAgICAgLy8gaW50ZXJuYWxBYm9ydCgpIGNhbGxzIGRyb3BQcm90ZWN0aW9uKCksIHdoaWNoIG1h
eSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZS4KLSAgICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4gcHJvdGVjdCh0aGlzKTsK
IAogICAgIGJvb2wgc2VuZEZsYWcgPSBtX2xvYWRlcjsKIApAQCAtODk5LDcgKzg4Niw2IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNl
QmxvYiA9IDA7CiAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuY2xlYXIoKTsKICAgICBtX3Jl
c3BvbnNlQXJyYXlCdWZmZXIuY2xlYXIoKTsKLSAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0g
ZmFsc2U7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVxdWVzdCgpCkBAIC0xMjAy
LDcgKzExODgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuKQogICAgIGlmIChtX3N0YXRlIDwgSEVBREVSU19SRUNFSVZFRCkK
ICAgICAgICAgY2hhbmdlU3RhdGUoSEVBREVSU19SRUNFSVZFRCk7CiAKLSAgICBib29sIHVzZURl
Y29kZXIgPSBzaG91bGREZWNvZGVSZXNwb25zZSgpOworICAgIGJvb2wgdXNlRGVjb2RlciA9IG1f
cmVzcG9uc2VUeXBlQ29kZSA9PSBSZXNwb25zZVR5cGVEZWZhdWx0IHx8IG1fcmVzcG9uc2VUeXBl
Q29kZSA9PSBSZXNwb25zZVR5cGVUZXh0IHx8IG1fcmVzcG9uc2VUeXBlQ29kZSA9PSBSZXNwb25z
ZVR5cGVEb2N1bWVudDsKIAogICAgIGlmICh1c2VEZWNvZGVyICYmICFtX2RlY29kZXIpIHsKICAg
ICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpAQCAtMTI1NSw3ICsxMjQx
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbikKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFRpbWVvdXQoKQogewogICAgIC8v
IGludGVybmFsQWJvcnQoKSBjYWxscyBkcm9wUHJvdGVjdGlvbigpLCB3aGljaCBtYXkgcmVsZWFz
ZSB0aGUgbGFzdCByZWZlcmVuY2UuCi0gICAgUmVmPFhNTEh0dHBSZXF1ZXN0PiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3QodGhpcyk7CiAgICAgaW50
ZXJuYWxBYm9ydCgpOwogCiAgICAgY2xlYXJSZXNwb25zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaAppbmRleCBmOTBjZmVlLi40MTk0OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaApAQCAtNjgsMTUgKzY4LDExIEBAIHB1YmxpYzoKICAgICAKICAgICBlbnVtIFJl
c3BvbnNlVHlwZUNvZGUgewogICAgICAgICBSZXNwb25zZVR5cGVEZWZhdWx0LAotICAgICAgICBS
ZXNwb25zZVR5cGVUZXh0LAotICAgICAgICBSZXNwb25zZVR5cGVKU09OLAorICAgICAgICBSZXNw
b25zZVR5cGVUZXh0LCAKICAgICAgICAgUmVzcG9uc2VUeXBlRG9jdW1lbnQsCi0KLSAgICAgICAg
Ly8gQmluYXJ5IGZvcm1hdAogICAgICAgICBSZXNwb25zZVR5cGVCbG9iLAogICAgICAgICBSZXNw
b25zZVR5cGVBcnJheUJ1ZmZlcgogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0IFJlc3BvbnNlVHlw
ZUNvZGUgRmlyc3RCaW5hcnlSZXNwb25zZVR5cGUgPSBSZXNwb25zZVR5cGVCbG9iOwogCiAjaWYg
RU5BQkxFKFhIUl9USU1FT1VUKQogICAgIHZpcnR1YWwgdm9pZCBkaWRUaW1lb3V0KCk7CkBAIC0x
MDUsMTEgKzEwMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFib3J0KCk7CiAgICAgdm9pZCBzZXRS
ZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShjb25zdCBTdHJp
bmcmIG92ZXJyaWRlKTsKLSAgICBib29sIGRvbmVXaXRob3V0RXJyb3JzKCkgY29uc3QgeyByZXR1
cm4gIW1fZXJyb3IgJiYgbV9zdGF0ZSA9PSBET05FOyB9CiAgICAgU3RyaW5nIGdldEFsbFJlc3Bv
bnNlSGVhZGVycyhFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIGdldFJlc3BvbnNl
SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
ICAgIFN0cmluZyByZXNwb25zZVRleHQoRXhjZXB0aW9uQ29kZSYpOwotICAgIFN0cmluZyByZXNw
b25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VC
dWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpOyB9CiAgICAgRG9jdW1lbnQqIHJlc3Bv
bnNlWE1MKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBEb2N1bWVudCogb3B0aW9uYWxSZXNwb25zZVhN
TCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VEb2N1bWVudC5nZXQoKTsgfQogICAgIEJsb2Iq
IHJlc3BvbnNlQmxvYigpOwpAQCAtMTE5LDkgKzExMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRpbWVvdXQodW5zaWduZWQgbG9uZyB0aW1lb3V0LCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYK
IAotICAgIGJvb2wgcmVzcG9uc2VDYWNoZUlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Bv
bnNlQ2FjaGVJc1ZhbGlkOyB9Ci0gICAgdm9pZCBkaWRDYWNoZVJlc3BvbnNlSlNPTigpOwotCiAg
ICAgdm9pZCBzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgLy8gRXhwb3NlIEhUVFAgdmFsaWRhdGlvbiBtZXRob2RzIGZvciBvdGhl
ciB1bnRydXN0ZWQgcmVxdWVzdHMuCkBAIC0yMDksOCArMjAwLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIG5ldHdvcmtFcnJvcigpOwogICAgIHZvaWQgYWJvcnRFcnJvcigpOwogCi0gICAgYm9vbCBz
aG91bGREZWNvZGVSZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUeXBlQ29kZSA8
IEZpcnN0QmluYXJ5UmVzcG9uc2VUeXBlOyB9Ci0KICAgICBPd25QdHI8WE1MSHR0cFJlcXVlc3RV
cGxvYWQ+IG1fdXBsb2FkOwogCiAgICAgS1VSTCBtX3VybDsKQEAgLTI2MCw3ICsyNDksNiBAQCBw
cml2YXRlOgogCiAgICAgLy8gQW4gZW51bSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbGxvd2VkIHN0
cmluZyB2YWx1ZXMgZm9yIHRoZSByZXNwb25zZVR5cGUgYXR0cmlidXRlLgogICAgIFJlc3BvbnNl
VHlwZUNvZGUgbV9yZXNwb25zZVR5cGVDb2RlOwotICAgIGJvb2wgbV9yZXNwb25zZUNhY2hlSXNW
YWxpZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaWRsCmluZGV4IGYwNzA0ZmUuLjU5NjUxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmlkbApAQCAtMzEsNyArMzEsOCBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0UmVz
cG9uc2VUeXBlIHsKICAgICAiYXJyYXlidWZmZXIiLAogICAgICJibG9iIiwKICAgICAiZG9jdW1l
bnQiLAotICAgICJqc29uIiwKKy8vICAgIEZJWE1FOiBlbmFibGUgb25jZSBzdXBwb3J0IGZvciBq
c29uIHJlc3BvbnNlVGV4dCBpcyBjb21wbGV0ZWQuIChidWcgIzczNjQ4KQorLy8gICAgImpzb24i
LAogICAgICJ0ZXh0IgogfTsKIApAQCAtODYsNyArODcsNyBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0
UmVzcG9uc2VUeXBlIHsKICAgICBbR2V0dGVyUmFpc2VzRXhjZXB0aW9uXSByZWFkb25seSBhdHRy
aWJ1dGUgRG9jdW1lbnQgcmVzcG9uc2VYTUw7CiAKICAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9u
XSBhdHRyaWJ1dGUgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlOwotICAg
IFtHZXR0ZXJSYWlzZXNFeGNlcHRpb24sIENhY2hlZEF0dHJpYnV0ZSwgQ3VzdG9tR2V0dGVyXSBy
ZWFkb25seSBhdHRyaWJ1dGUgT2JqZWN0IHJlc3BvbnNlOworICAgIFtHZXR0ZXJSYWlzZXNFeGNl
cHRpb24sIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIE9iamVjdCByZXNwb25zZTsK
IAogICAgIFtHZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBzaG9ydCBzdGF0dXM7CiAgICAgW0dldHRlclJhaXNlc0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBzdGF0dXNUZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzgwMmFkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRRdC5jcHAKQEAg
LTAsMCArMSwxMTYgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgWFNMIGltcGxl
bWVudGF0aW9uLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBXaWVjem9yZWsgPGZh
dzIxN0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYU0xTdHlsZVNo
ZWV0LmgiCisKKyNpZiBFTkFCTEUoWFNMVCkKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisjaW5jbHVkZSAiWFNMSW1wb3J0UnVsZS5oIgorI2luY2x1ZGUgIlhTTFRQcm9j
ZXNzb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitYU0xTdHlsZVNoZWV0OjpYU0xTdHls
ZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0
IEtVUkwmIGZpbmFsVVJMLCAgYm9vbCBlbWJlZGRlZCkKKyAgICA6IG1fb3duZXJOb2RlKHBhcmVu
dE5vZGUpCisgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQorICAgICwgbV9maW5hbFVS
TChmaW5hbFVSTCkKKyAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKKyAgICAsIG1fZW1iZWRkZWQo
ZW1iZWRkZWQpCit7Cit9CisKK1hTTFN0eWxlU2hlZXQ6On5YU0xTdHlsZVNoZWV0KCkKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkgeworICAg
ICAgICBBU1NFUlQobV9jaGlsZHJlbi5hdChpKS0+cGFyZW50U3R5bGVTaGVldCgpID09IHRoaXMp
OworICAgICAgICBtX2NoaWxkcmVuLmF0KGkpLT5zZXRQYXJlbnRTdHlsZVNoZWV0KDApOworICAg
IH0KK30KKworYm9vbCBYU0xTdHlsZVNoZWV0Ojppc0xvYWRpbmcoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFhTTFN0eWxlU2hl
ZXQ6OmNoZWNrTG9hZGVkKCkKK3sKKyAgICBpZiAob3duZXJOb2RlKCkpCisgICAgICAgIG93bmVy
Tm9kZSgpLT5zaGVldExvYWRlZCgpOworfQorCit2b2lkIFhTTFN0eWxlU2hlZXQ6OmNsZWFyRG9j
dW1lbnRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitDYWNoZWRSZXNvdXJjZUxv
YWRlciogWFNMU3R5bGVTaGVldDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQoreworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IG93bmVyRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCk7Cit9CisKK2Jvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgLy8gRklYTUU6IEZpeCBRWG1sUXVlcnkgc28gdGhhdCBpdCBhbGxvd3Mg
Y29tcGlsaW5nIHRoZSBzdHlsZXNoZWV0IGJlZm9yZSBzZXR0aW5nIHRoZSBkb2N1bWVudAorICAg
IC8vIHRvIGJlIHRyYW5zZm9ybWVkLiBUaGlzIHdheSB3ZSBjb3VsZCBub3Qgb25seSBjaGVjayBp
ZiB0aGUgc3R5bGVzaGVldCBpcyBjb3JyZWN0IGJlZm9yZSB1c2luZyBpdAorICAgIC8vIGJ1dCBh
bHNvIHR1cm4gWFNMU3R5bGVTaGVldDo6c2hlZXRTdHJpbmcoKSBpbnRvIFhTTFN0eWxlU2hlZXQ6
OnF1ZXJ5KCkgdGhhdCByZXR1cm5zIGEgUVhtbFF1ZXJ5LgorCisgICAgbV9zaGVldFN0cmluZyA9
IHN0cmluZzsKKyAgICByZXR1cm4gIW1fc2hlZXRTdHJpbmcuaXNFbXB0eSgpOworfQorCit2b2lk
IFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0RvY3VtZW50KiBYU0xTdHlsZVNoZWV0
Ojpvd25lckRvY3VtZW50KCkKK3sKKyAgICBOb2RlKiBub2RlID0gb3duZXJOb2RlKCk7CisgICAg
cmV0dXJuIG5vZGUgPyBub2RlLT5kb2N1bWVudCgpIDogMDsKK30KKwordm9pZCBYU0xTdHlsZVNo
ZWV0OjpzZXRQYXJlbnRTdHlsZVNoZWV0KFhTTFN0eWxlU2hlZXQqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgWFNMU3R5bGVTaGVldDo6bWFya0FzUHJvY2Vzc2VkKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoWFNMVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yUXQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiMjQyNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3BwCkBAIC0wLDAgKzEs
MTgzIEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFhTTCBpbXBsZW1lbnRhdGlv
bi4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFrdWIgV2llY3pvcmVrIDxmYXcyMTdAZ21h
aWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoWFNMVCkKKworI2luY2x1
ZGUgIlhTTFRQcm9jZXNzb3IuaCIKKworI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1Tb3VyY2UuaCIK
KyNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2luY2x1ZGUgPHFhYnN0cmFjdG1lc3NhZ2VoYW5kbGVyLmg+
CisjaW5jbHVkZSA8cWFic3RyYWN0dXJpcmVzb2x2ZXIuaD4KKyNpbmNsdWRlIDxxYnVmZmVyLmg+
CisjaW5jbHVkZSA8cXNvdXJjZWxvY2F0aW9uLmg+CisjaW5jbHVkZSA8cXhtbHF1ZXJ5Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgWFNMVE1lc3NhZ2VIYW5kbGVyIDogcHVibGlj
IFFBYnN0cmFjdE1lc3NhZ2VIYW5kbGVyIHsKKworcHVibGljOgorICAgIFhTTFRNZXNzYWdlSGFu
ZGxlcihEb2N1bWVudCogZG9jdW1lbnQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTWVz
c2FnZShRdE1zZ1R5cGUgdHlwZSwgY29uc3QgUVN0cmluZyYgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVVybCYgaWRlbnRpZmllciwgY29uc3QgUVNv
dXJjZUxvY2F0aW9uJiBzb3VyY2VMb2NhdGlvbik7CisKK3ByaXZhdGU6CisgICAgRG9jdW1lbnQq
IG1fZG9jdW1lbnQ7Cit9OworCitYU0xUTWVzc2FnZUhhbmRsZXI6OlhTTFRNZXNzYWdlSGFuZGxl
cihEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBRQWJzdHJhY3RNZXNzYWdlSGFuZGxlcigpCisg
ICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQoreworfQorCit2b2lkIFhTTFRNZXNzYWdlSGFuZGxl
cjo6aGFuZGxlTWVzc2FnZShRdE1zZ1R5cGUgdHlwZSwgY29uc3QgUVN0cmluZyYgZGVzY3JpcHRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRVXJsJiwg
Y29uc3QgUVNvdXJjZUxvY2F0aW9uJiBzb3VyY2VMb2NhdGlvbikKK3sKKyAgICBpZiAoIW1fZG9j
dW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE1lc3NhZ2VMZXZlbCBsZXZl
bDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFF0RGVidWdNc2c6CisgICAgICAgIGxl
dmVsID0gRGVidWdNZXNzYWdlTGV2ZWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUXRXYXJu
aW5nTXNnOgorICAgICAgICBsZXZlbCA9IFdhcm5pbmdNZXNzYWdlTGV2ZWw7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUXRDcml0aWNhbE1zZzoKKyAgICBjYXNlIFF0RmF0YWxNc2c6CisgICAg
ICAgIGxldmVsID0gRXJyb3JNZXNzYWdlTGV2ZWw7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGxldmVsID0gTG9nTWVzc2FnZUxldmVsOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBDb25zb2xlKiBjb25zb2xlID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKTsKKyAgICBjb25zb2xlLT5hZGRNZXNzYWdlKFhNTE1lc3NhZ2VTb3VyY2UsIGxldmVs
LCBkZXNjcmlwdGlvbiwgc291cmNlTG9jYXRpb24udXJpKCkudG9TdHJpbmcoKSwgc291cmNlTG9j
YXRpb24ubGluZSgpLCBzb3VyY2VMb2NhdGlvbi5jb2x1bW4oKSk7Cit9CisKK2NsYXNzIFhTTFRV
cmlSZXNvbHZlciA6IHB1YmxpYyBRQWJzdHJhY3RVcmlSZXNvbHZlciB7CisKK3B1YmxpYzoKKyAg
ICBYU0xUVXJpUmVzb2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50KTsKKyAgICB2aXJ0dWFsIFFVcmwg
cmVzb2x2ZShjb25zdCBRVXJsJiByZWxhdGl2ZSwgY29uc3QgUVVybCYgYmFzZVVSSSkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Cit9OworCitYU0xUVXJpUmVz
b2x2ZXI6OlhTTFRVcmlSZXNvbHZlcihEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBRQWJzdHJh
Y3RVcmlSZXNvbHZlcigpCisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQoreworfQorCitRVXJs
IFhTTFRVcmlSZXNvbHZlcjo6cmVzb2x2ZShjb25zdCBRVXJsJiByZWxhdGl2ZSwgY29uc3QgUVVy
bCYgYmFzZVVSSSkgY29uc3QKK3sKKyAgICBRVXJsIHVybCA9IGJhc2VVUkkucmVzb2x2ZWQocmVs
YXRpdmUpOworCisgICAgaWYgKCFtX2RvY3VtZW50LT5mcmFtZSgpIHx8ICFtX2RvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCkpCisgICAgICAgIHJldHVybiBRVXJsKCk7
CisgICAgcmV0dXJuIHVybDsKK30KKworYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub1N0
cmluZyhOb2RlKiBzb3VyY2VOb2RlLCBTdHJpbmcmLCBTdHJpbmcmIHJlc3VsdFN0cmluZywgU3Ry
aW5nJikKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKworICAgIFJlZlB0cjxYU0xTdHls
ZVNoZWV0PiBzdHlsZXNoZWV0ID0gbV9zdHlsZXNoZWV0OworICAgIGlmICghc3R5bGVzaGVldCAm
JiBtX3N0eWxlc2hlZXRSb290Tm9kZSkgeworICAgICAgICBOb2RlKiBub2RlID0gbV9zdHlsZXNo
ZWV0Um9vdE5vZGUuZ2V0KCk7CisgICAgICAgIHN0eWxlc2hlZXQgPSBYU0xTdHlsZVNoZWV0Ojpj
cmVhdGVGb3JYU0xUUHJvY2Vzc29yKG5vZGUtPnBhcmVudE5vZGUoKSA/IG5vZGUtPnBhcmVudE5v
ZGUoKSA6IG5vZGUsCisgICAgICAgICAgICBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KSwKKyAgICAgICAgICAgIG5vZGUtPmRvY3VtZW50KCktPnVybCgpKTsgLy8gRklYTUU6IFNob3Vs
ZCB3ZSB1c2UgYmFzZVVSTCBoZXJlPworCisgICAgICAgIC8vIEFjY29yZGluZyB0byBNb3ppbGxh
IGRvY3VtZW50YXRpb24sIHRoZSBub2RlIG11c3QgYmUgYSBEb2N1bWVudCBub2RlLCBhbiB4c2w6
c3R5bGVzaGVldCBvciB4c2w6dHJhbnNmb3JtIGVsZW1lbnQuCisgICAgICAgIC8vIEJ1dCB3ZSBq
dXN0IHVzZSB0ZXh0IGNvbnRlbnQgcmVnYXJkbGVzcyBvZiBub2RlIHR5cGUuCisgICAgICAgIHN0
eWxlc2hlZXQtPnBhcnNlU3RyaW5nKGNyZWF0ZU1hcmt1cChub2RlKSk7CisgICAgfQorCisgICAg
aWYgKCFzdHlsZXNoZWV0IHx8IHN0eWxlc2hlZXQtPnNoZWV0U3RyaW5nKCkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gc3VjY2VzczsKKworICAgIFJlZlB0cjxEb2N1bWVudD4gb3duZXJEb2N1
bWVudCA9IHNvdXJjZU5vZGUtPmRvY3VtZW50KCk7CisgICAgYm9vbCBzb3VyY2VJc0RvY3VtZW50
ID0gKHNvdXJjZU5vZGUgPT0gb3duZXJEb2N1bWVudC5nZXQoKSk7CisKKyAgICBRWG1sUXVlcnkg
cXVlcnkoUVhtbFF1ZXJ5OjpYU0xUMjApOworCisgICAgWFNMVE1lc3NhZ2VIYW5kbGVyIG1lc3Nh
Z2VIYW5kbGVyKG93bmVyRG9jdW1lbnQuZ2V0KCkpOworICAgIFhTTFRVcmlSZXNvbHZlciB1cmlS
ZXNvbHZlcihvd25lckRvY3VtZW50LmdldCgpKTsKKyAgICBxdWVyeS5zZXRNZXNzYWdlSGFuZGxl
cigmbWVzc2FnZUhhbmRsZXIpOworCisgICAgWFNMVFByb2Nlc3Nvcjo6UGFyYW1ldGVyTWFwOjpp
dGVyYXRvciBlbmQgPSBtX3BhcmFtZXRlcnMuZW5kKCk7CisgICAgZm9yIChYU0xUUHJvY2Vzc29y
OjpQYXJhbWV0ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYXJhbWV0ZXJzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgcXVlcnkuYmluZFZhcmlhYmxlKFFTdHJpbmcoaXQtPmtleSks
IFFYbWxJdGVtKFFWYXJpYW50KFFTdHJpbmcoaXQtPnZhbHVlKSkpKTsKKworICAgIFFTdHJpbmcg
c291cmNlOworICAgIGlmIChzb3VyY2VJc0RvY3VtZW50ICYmIG93bmVyRG9jdW1lbnQtPnRyYW5z
Zm9ybVNvdXJjZSgpKQorICAgICAgICBzb3VyY2UgPSBvd25lckRvY3VtZW50LT50cmFuc2Zvcm1T
b3VyY2UoKS0+cGxhdGZvcm1Tb3VyY2UoKTsKKyAgICBpZiAoIXNvdXJjZUlzRG9jdW1lbnQgfHwg
c291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgc291cmNlID0gY3JlYXRlTWFya3VwKHNvdXJjZU5v
ZGUpOworCisgICAgUUJ1ZmZlciBpbnB1dEJ1ZmZlcjsKKyAgICBRQnVmZmVyIHN0eWxlU2hlZXRC
dWZmZXI7CisgICAgUUJ1ZmZlciBvdXRwdXRCdWZmZXI7CisKKyAgICBpbnB1dEJ1ZmZlci5zZXRE
YXRhKHNvdXJjZS50b1V0ZjgoKSk7CisgICAgc3R5bGVTaGVldEJ1ZmZlci5zZXREYXRhKFFTdHJp
bmcoc3R5bGVzaGVldC0+c2hlZXRTdHJpbmcoKSkudG9VdGY4KCkpOworCisgICAgaW5wdXRCdWZm
ZXIub3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5KTsKKyAgICBzdHlsZVNoZWV0QnVmZmVyLm9wZW4o
UUlPRGV2aWNlOjpSZWFkT25seSk7CisgICAgb3V0cHV0QnVmZmVyLm9wZW4oUUlPRGV2aWNlOjpS
ZWFkV3JpdGUpOworCisgICAgcXVlcnkuc2V0Rm9jdXMoJmlucHV0QnVmZmVyKTsKKyAgICBxdWVy
eS5zZXRRdWVyeSgmc3R5bGVTaGVldEJ1ZmZlciwgUVVybChzdHlsZXNoZWV0LT5ocmVmKCkpKTsK
KworICAgIHF1ZXJ5LnNldFVyaVJlc29sdmVyKCZ1cmlSZXNvbHZlcik7CisKKyAgICBzdWNjZXNz
ID0gcXVlcnkuZXZhbHVhdGVUbygmb3V0cHV0QnVmZmVyKTsKKyAgICBvdXRwdXRCdWZmZXIucmVz
ZXQoKTsKKyAgICByZXN1bHRTdHJpbmcgPSBRU3RyaW5nOjpmcm9tVXRmOChvdXRwdXRCdWZmZXIu
cmVhZEFsbCgpKS50cmltbWVkKCk7CisKKyAgICBpZiAobV9zdHlsZXNoZWV0KSB7CisgICAgICAg
IG1fc3R5bGVzaGVldC0+Y2xlYXJEb2N1bWVudHMoKTsKKyAgICAgICAgbV9zdHlsZXNoZWV0ID0g
MDsKKyAgICB9CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFhTTFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDQyOWJhNDMuLjY0YzJkODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01
MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUg
IlRyZWVEZXB0aExpbWl0LmgiCiAjaW5jbHVkZSAiWE1MRXJyb3JzLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjU3LDcgKzI1Niw3IEBAIHZv
aWQgWE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiB1bnVz
ZWRSZXNvdXJjZSkKICAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7CiAKICAgICAvLyBKYXZhU2Ny
aXB0IGNhbiBkZXRhY2ggdGhpcyBwYXJzZXIsIG1ha2Ugc3VyZSBpdCdzIGtlcHQgYWxpdmUgZXZl
biBpZiBkZXRhY2hlZC4KLSAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZlB0cjxYTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKICAgICAKICAg
ICBpZiAoZXJyb3JPY2N1cnJlZCkKICAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFcnJv
ckV2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggNDFiOWM4Yy4uMTY1ZTI3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cApAQCAtNjEsMTEgKzYxLDEwIEBACiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5o
IgogI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXIuaD4KICNpbmNsdWRlIDxsaWJ4bWwvcGFyc2VySW50
ZXJuYWxzLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCiAjaWYgRU5BQkxFKFhTTFQp
CkBAIC02ODUsNyArNjg0LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9Xcml0ZShjb25z
dCBTdHJpbmcmIHBhcnNlU3RyaW5nKQogICAgIGlmIChwYXJzZVN0cmluZy5sZW5ndGgoKSkgewog
ICAgICAgICAvLyBKYXZhU2NyaXB0IG1heSBjYXVzZSB0aGUgcGFyc2VyIHRvIGRldGFjaCBkdXJp
bmcgeG1sUGFyc2VDaHVuawogICAgICAgICAvLyBrZWVwIHRoaXMgYWxpdmUgdW50aWwgdGhpcyBm
dW5jdGlvbiBpcyBkb25lLgotICAgICAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3Qo
KnRoaXMpOworICAgICAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7
CiAKICAgICAgICAgc3dpdGNoVG9VVEYxNihjb250ZXh0LT5jb250ZXh0KCkpOwogICAgICAgICBY
TUxEb2N1bWVudFBhcnNlclNjb3BlIHNjb3BlKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCkpOwpAQCAtODg0LDcgKzg4Myw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVs
ZW1lbnROcygpCiAKICAgICAvLyBKYXZhU2NyaXB0IGNhbiBkZXRhY2ggdGhlIHBhcnNlci4gIE1h
a2Ugc3VyZSB0aGlzIGlzIG5vdCByZWxlYXNlZAogICAgIC8vIGJlZm9yZSB0aGUgZW5kIG9mIHRo
aXMgbWV0aG9kLgotICAgIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgZXhpdFRl
eHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJRdC5jcHAKaW5kZXggMzgwYmE1NC4uZjQ5YjY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCkBAIC0yMTIsNiArMjEyLDIyIEBA
IHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmluaXRpYWxpemVQYXJzZXJDb250ZXh0KGNvbnN0IENT
dHJpbmcmKQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiB7CisjaWYgRU5BQkxF
KFhTTFQpCisgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtKSB7CisgICAgICAgIGRvY3VtZW50KCkt
PnNldFRyYW5zZm9ybVNvdXJjZShhZG9wdFB0cihuZXcgVHJhbnNmb3JtU291cmNlKG1fb3JpZ2lu
YWxTb3VyY2VGb3JUcmFuc2Zvcm0udG9TdHJpbmcoKSkpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvYyB0aGluayBpdCdzIGRvbmUsIHNvIGl0
IHdpbGwgYXBwbHkgeHNsIHNoZWV0cy4KKyAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
ckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisKKyAgICAgICAgLy8gc3R5bGVSZXNv
bHZlckNoYW5nZWQoKSBjYWxsIGNhbiBkZXRhY2ggdGhlIHBhcnNlciBhbmQgbnVsbCBvdXQgaXRz
IGRvY3VtZW50LgorICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIGp1c3QgYmFpbCBvdXQuCisg
ICAgICAgIGlmIChpc0RldGFjaGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0UGFyc2luZyh0cnVlKTsKKyAgICAgICAgRG9jdW1lbnRQYXJzZXI6OnN0
b3BQYXJzaW5nKCk7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobV9zdHJlYW0uZXJyb3IoKSA9
PSBRWG1sU3RyZWFtUmVhZGVyOjpQcmVtYXR1cmVFbmRPZkRvY3VtZW50RXJyb3IKICAgICAgICAg
fHwgKG1fd3JvdGVUZXh0ICYmICFtX3Nhd0ZpcnN0RWxlbWVudCAmJiAhbV9zYXdYU0xUcmFuc2Zv
cm0gJiYgIW1fc2F3RXJyb3IpKQogICAgICAgICBoYW5kbGVFcnJvcihYTUxFcnJvcnM6OmZhdGFs
LCBxUHJpbnRhYmxlKG1fc3RyZWFtLmVycm9yU3RyaW5nKCkpLCB0ZXh0UG9zaXRpb24oKSk7CkBA
IC01NzUsNiArNTkxLDExIEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKCkKIAogICAgIGlmIChwaS0+aXNDU1MoKSkKICAgICAgICAgbV9zYXdDU1Mg
PSB0cnVlOworI2lmIEVOQUJMRShYU0xUKQorICAgIG1fc2F3WFNMVHJhbnNmb3JtID0gIW1fc2F3
Rmlyc3RFbGVtZW50ICYmIHBpLT5pc1hTTCgpOworICAgIGlmIChtX3Nhd1hTTFRyYW5zZm9ybSAm
JiAhZG9jdW1lbnQoKS0+dHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkKKyAgICAgICAgc3RvcFBh
cnNpbmcoKTsKKyNlbmRpZgogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZUNkYXRh
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGUyOTE2NjEuLjMzMTg1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwpAQCAtMSwyOSArMSwzIEBACi0yMDEzLTA4LTMwICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgotCi0gICAgICAgIFtXaW5kb3dzXSBDb3JyZWN0IHdp
bmRvd3MgYnVpbGQuIEdldCByaWQgb2YgdW5uZWNlc3NhcnkgcHJlLWJ1aWxkIHN0ZXAuIFdlIGRv
bid0IGJ1aWxkIGFueXRoaW5nCi0gICAgICAgIGluIHRoaXMgcHJvamVjdCwganVzdCBjb3B5IHNv
bWUgZmlsZXMgaW50byB0aGUgV2ViS2l0IHJlc291cmNlIGZvbGRlci4gVGhpcyB3YXMgZm9vbGlu
ZyB0aGUKLSAgICAgICAgYnVpbGQgc3lzdGVtIGludG8gdGhpbmtpbmcgc29tZXRoaW5nIGZhaWxl
ZCwgcmVzdWx0aW5nIGluIGEgYnVpbGQgZXJyb3IuCi0KLSAgICAgICAgKiBXZWJJbnNwZWN0b3JV
SS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2o6IFJlbW92ZSByZWZlcmVuY2UgdG8gV2Vi
SW5zcGVjdG9yVUlQcmVCdWlsZC5jbWQKLSAgICAgICAgKiBXZWJJbnNwZWN0b3JVSS52Y3hwcm9q
L1dlYkluc3BlY3RvclVJLnZjeHByb2ouZmlsdGVyczoKLSAgICAgICAgKiBXZWJJbnNwZWN0b3JV
SS52Y3hwcm9qL1dlYkluc3BlY3RvclVJUHJlQnVpbGQuY21kOiBSZW1vdmVkLgotCi0yMDEzLTA4
LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgotCi0gICAgICAgIFtXaW5k
b3dzXSBCdWlsZCBjb3JyZWN0aW9uIGFmdGVyIGRlcGVuZGVuY3kgY2hhbmdlLgotCi0gICAgICAg
ICogV2ViSW5zcGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qOiBSZW1vdmUg
Y2lyY3VsYXIgZGVwZW5kZW5jeSBvbgotICAgICAgICBXZWJLaXQsIGFuZCBjb250cm9sIHRoaXMg
YXQgdGhlIHNvbHV0aW9uIGxldmVsLiBUaGUgcHJpb3IgY2hhbmdlIGJyb2tlIGV4dGVybmFsCi0g
ICAgICAgIGJ1aWxkZXJzLgotCi0yMDEzLTA4LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgotCi0gICAgICAgIFtXaW5kb3dzXSBVbnJldmlld2VkIGJ1aWxkIGdhcmRlbmlu
Zy4KLQotICAgICAgICAqIFdlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4
cHJvajogQWRqdXN0IGJ1aWxkIGRlcGVuZGVuY2llcyBzbwotICAgICAgICB0aGF0IFdlYkluc3Bl
Y3RvclVJICdidWlsZHMnIGFmdGVyIFdlYktpdCBzbyB0aGF0IHRoZSBleHBlY3RlZCByZXNvdXJj
ZSBkaXJlY3RvcnkKLSAgICAgICAgc3RydWN0dXJlIGlzIGFsd2F5cyBpbiBwbGFjZS4KLQogMjAx
My0wOC0zMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEJyZWFrcG9pbnRzIHNob3VsZCBoYXZlIEF1dG9tYXRpY2FsbHkgQ29u
dGludWUgT3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVj
dG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvagppbmRleCAx
MDdhYmVlLi5kZGM4NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5z
cGVjdG9yVUkudmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZjeHByb2oK
QEAgLTcwMSw2ICs3MDEsNyBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXFVzZXJJbnRlcmZhY2Vc
VXRpbGl0aWVzLmpzIiAvPg0KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxVc2VySW50ZXJmYWNlXFdl
Ykluc3BlY3Rvci5qcyIgLz4NCiAgICAgPE5vbmUgSW5jbHVkZT0iV2ViSW5zcGVjdG9yVUlQb3N0
QnVpbGQuY21kIiAvPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJXZWJJbnNwZWN0b3JVSVByZUJ1aWxk
LmNtZCIgLz4NCiAgIDwvSXRlbUdyb3VwPg0KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCiAgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uVGFyZ2V0cyI+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1dl
Ykluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUkudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHByb2ovV2ViSW5zcGVjdG9yVUku
dmN4cHJvai5maWx0ZXJzCmluZGV4IGMxYzBkNGIuLjBmZDczNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvV2ViSW5zcGVjdG9yVUku
dmN4cHJvai9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qLmZpbHRlcnMKQEAgLTE3MzUsNSArMTczNSw2
IEBACiAgICAgICA8RmlsdGVyPlNjcmlwdHM8L0ZpbHRlcj4NCiAgICAgPC9Ob25lPg0KICAgICA8
Tm9uZSBJbmNsdWRlPSJXZWJJbnNwZWN0b3JVSVBvc3RCdWlsZC5jbWQiIC8+DQorICAgIDxOb25l
IEluY2x1ZGU9IldlYkluc3BlY3RvclVJUHJlQnVpbGQuY21kIiAvPg0KICAgPC9JdGVtR3JvdXA+
DQogPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJ
UHJlQnVpbGQuY21kIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnZjeHBy
b2ovV2ViSW5zcGVjdG9yVUlQcmVCdWlsZC5jbWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYTc3MDc3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9XZWJJbnNwZWN0b3JVSS52Y3hwcm9qL1dlYkluc3BlY3RvclVJUHJlQnVpbGQuY21kCkBAIC0w
LDAgKzEsNiBAQAorJVN5c3RlbURyaXZlJVxjeWd3aW5cYmluXHdoaWNoLmV4ZSBiYXNoCitpZiBl
cnJvcmxldmVsIDEgc2V0IFBBVEg9JVN5c3RlbURyaXZlJVxjeWd3aW5cYmluOyVQQVRIJQorY21k
IC9jCitpZiBleGlzdCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcYnVpbGRmYWlsZWQiIGdyZXAg
WFglUFJPSkVDVE5BTUUlWFggIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGJ1aWxkZmFpbGVkIgor
aWYgZXJyb3JsZXZlbCAxIGV4aXQgMQorZWNobyBYWCVQUk9KRUNUTkFNRSVYWCA+ICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxidWlsZGZhaWxlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjliNmMzOS4uZjU0NTAz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMTggKzEsMyBAQAotMjAxMy0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KLQotICAgICAgICBbV2luZG93c10gVW5yZXZpZXdlZCBidWls
ZCBjb3JyZWN0aW9uLgotICAgICAgICBVcGRhdGUgcHJvamVjdCBkZXBlbmRlbmNpZXMgc28gdGhh
dCBidWlsZCBsb2dzIG9uIG1hY2hpbmVzIHdpbGwgaW5jbHVkZSBvdXRwdXQgZnJvbSB0aGUKLSAg
ICAgICAgV2ViSW5zcGVjdG9yVUkgcHJvamVjdC4KLQotICAgICAgICAqIFdlYktpdC52Y3hwcm9q
L1dlYktpdC5zbG46Ci0KLTIwMTMtMDgtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgW1dpbmRvd3NdIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIx
NTQ5MTcKLQotICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC5zbG46IEVzdGFibGlzaCBi
dWlsZCBkZXBlbmRlbmN5IGZyb20gV2ViSW5zcGVjdG9yVUkgYWdhaW5zdAotICAgICAgICBXZWJL
aXQuIFJlbW92ZSByZXZlcnNlIGRlcGVuZGVuY3kuCi0KIDIwMTMtMDgtMjkgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGFmdGVyIHIxNTQ4MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0LnNsbiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
LnNsbgppbmRleCBlOThjZGJjLi41ZWFkYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC52Y3hwcm9qL1dlYktpdC5zbG4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9XZWJLaXQuc2xuCkBAIC01NCw2ICs1NCw3IEBAIEVuZFByb2plY3QKIFByb2plY3QoIns4QkM5
Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiV2ViS2l0IiwgIldlYktpdFxX
ZWJLaXQudmN4cHJvaiIsICJ7MDY2MkE4QTktODJBMy00NjM4LTk3RDgtRUM0MjVEOEQ4N0M5fSIK
IAlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CiAJCXsw
RjgzNzExNy04QzBCLTQ1OTYtQTM3My1BMzdFMTRBMDEyMjN9ID0gezBGODM3MTE3LThDMEItNDU5
Ni1BMzczLUEzN0UxNEEwMTIyM30KKwkJezA0NzM3MjRGLTBBQjMtNEYxMi04OTJFLTlGQUIwMTg2
QzgwNH0gPSB7MDQ3MzcyNEYtMEFCMy00RjEyLTg5MkUtOUZBQjAxODZDODA0fQogCUVuZFByb2pl
Y3RTZWN0aW9uCiBFbmRQcm9qZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEt
MDBBMEM5MUJDOTQyfSIpID0gInRlc3RSZWdFeHAiLCAiLi5cLi5cSmF2YVNjcmlwdENvcmVcSmF2
YVNjcmlwdENvcmUudmN4cHJvalx0ZXN0UmVnRXhwXHRlc3RSZWdFeHAudmN4cHJvaiIsICJ7QkIx
NjI4NkItQUFEQy00NkMxLUJDMEQtNkMwNkYzMjNFMDRCfSIKQEAgLTE1OSw3ICsxNjAsNiBAQCBF
bmRQcm9qZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQy
fSIpID0gIkFzc2VtYmxlQnVpbGRMb2dzIiwgIi4uXC4uXC4uXFRvb2xzXHdpblxBc3NlbWJsZUJ1
aWxkTG9nc1xBc3NlbWJsZUJ1aWxkTG9ncy52Y3hwcm9qIiwgIns2N0E2MTk0MC1GODBCLTQyQTAt
QTI5RC1CNkRCMUMyN0JDRUV9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMp
ID0gcG9zdFByb2plY3QKIAkJe0FGOTREMTNBLTM2QzEtNDVGRi05QjBCLUVCNUQzRkY2RjQzRH0g
PSB7QUY5NEQxM0EtMzZDMS00NUZGLTlCMEItRUI1RDNGRjZGNDNEfQotCQl7MDQ3MzcyNEYtMEFC
My00RjEyLTg5MkUtOUZBQjAxODZDODA0fSA9IHswNDczNzI0Ri0wQUIzLTRGMTItODkyRS05RkFC
MDE4NkM4MDR9CiAJRW5kUHJvamVjdFNlY3Rpb24KIEVuZFByb2plY3QKIFByb2plY3QoInsyMTUw
RTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiQU5HTEUgcHJvamVjdHMiLCAi
QU5HTEUgcHJvamVjdHMiLCAiezVFOUI3MTkxLUNGN0QtNEVBNC04MTY4LTE0QTczNzQ5RTU4NX0i
CkBAIC0xOTEsOSArMTkxLDYgQEAgRW5kUHJvamVjdAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0cmFuc2xhdG9yX2hsc2wiLCAiLi5cLi5cVGhp
cmRQYXJ0eVxBTkdMRVxBTkdMRS52Y3hwcm9qXHRyYW5zbGF0b3JfaGxzbC52Y3hwcm9qIiwgIns4
QzZCNTVGRi03ODNDLTRBQTQtQkFDMi0yNEExQ0RCRURDOEF9IgogRW5kUHJvamVjdAogUHJvamVj
dCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJXZWJJbnNwZWN0
b3JVSSIsICIuLlwuLlxXZWJJbnNwZWN0b3JVSVxXZWJJbnNwZWN0b3JVSS52Y3hwcm9qXFdlYklu
c3BlY3RvclVJLnZjeHByb2oiLCAiezA0NzM3MjRGLTBBQjMtNEYxMi04OTJFLTlGQUIwMTg2Qzgw
NH0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAot
CQl7MDY2MkE4QTktODJBMy00NjM4LTk3RDgtRUM0MjVEOEQ4N0M5fSA9IHswNjYyQThBOS04MkEz
LTQ2MzgtOTdEOC1FQzQyNUQ4RDg3Qzl9Ci0JRW5kUHJvamVjdFNlY3Rpb24KIEVuZFByb2plY3QK
IEdsb2JhbAogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9
IHByZVNvbHV0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMWEyZDVkMi4uOTA5ODQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwpAQCAtMSwyNSArMSwzIEBACi0yMDEzLTA5LTAyICBCcmlhbiBIb2x0ICA8YnJp
YW4uaG9sdEBzYW1zdW5nLmNvbT4KLQotICAgICAgICBbQVRLXSBMZWFrOiBMZWFrcyBpbiB0ZXN0
YXRrLmMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
ODY3NQotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmlvIFNhbmNoZXogUHJhZGEuCi0KLSAgICAg
ICAgRml4ZWQgbWVtb3J5IGxlYWtzIGJ5IG1hdGNoaW5nIHJlZiBjYWxscyB3aXRoIHVucmVmcy4K
LQotICAgICAgICAqIHRlc3RzL3Rlc3RhdGsuYzoKLSAgICAgICAgKHRlc3RXZWJraXRBdGtDYXJl
dE9mZnNldHMpOgotICAgICAgICAodGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0c0FuZEV4dHJhbm91
c1doaXRlU3BhY2VzKToKLSAgICAgICAgKHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXQpOgot
ICAgICAgICAodGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldE5ld2xpbmVzKToKLSAgICAgICAg
KHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0YXJlYSk6Ci0gICAgICAgICh0ZXN0V2Vi
a2l0QXRrR2V0VGV4dEF0T2Zmc2V0VGV4dElucHV0KToKLSAgICAgICAgKHRlc3RXZWJraXRBdGtH
ZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlKToKLSAgICAgICAgKHRlc3RXZWJraXRBdGtH
ZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5TW9kZXJhdGUpOgotICAgICAgICAodGVzdFdlYmtpdEF0
a1RleHRBdHRyaWJ1dGVzKToKLSAgICAgICAgKHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9ucyk6
Ci0gICAgICAgICh0ZXN0V2Via2l0QXRrTGlzdHNPZkl0ZW1zKToKLQogMjAxMy0wOC0yOSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0F1dG9tYWtlXSBs
aWJXZWJDb3JlRE9NLmxhIGNvdWxkIHVzZSBhIGJldHRlciBuYW1lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90
ZXN0YXRrLmMKaW5kZXggN2U4Njg3OS4uZGE2ZDIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvdGVzdHMvdGVzdGF0ay5jCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rh
dGsuYwpAQCAtMzc0LDE0ICszNzQsMTIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0NhcmV0
T2Zmc2V0cygpCiAgICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGxpc3RJdGVt
KSwgMCwgLTEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIjEuIEEgbGlzdCBpdGVt
Iik7CiAgICAgZ19mcmVlICh0ZXh0KTsKLSAgICBnX29iamVjdF91bnJlZihsaXN0SXRlbSk7CiAK
ICAgICBsaXN0SXRlbSA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQobGlzdCwgMSk7
CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQobGlzdEl0ZW0pKTsKICAgICB0ZXh0ID0gYXRrX3Rl
eHRfZ2V0X3RleHQoQVRLX1RFWFQobGlzdEl0ZW0pLCAwLCAtMSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHRleHQsID09LCAiMi4gQmxvY2sgc3BhbiBpbiBhIGxpc3QgaXRlbVxuSW5saW5lIHNwYW4g
aW4gYSBsaXN0IGl0ZW0iKTsKICAgICBnX2ZyZWUgKHRleHQpOwotICAgIGdfb2JqZWN0X3VucmVm
KGxpc3RJdGVtKTsKIAogICAgIGxpc3RJdGVtID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9j
aGlsZChsaXN0LCAyKTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChsaXN0SXRlbSkpOwpAQCAt
NDU1LDcgKzQ1Myw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMoKQog
ICAgIGdfYXNzZXJ0X2NtcGludChyZXN1bHQsID09LCBUUlVFKTsKICAgICBvZmZzZXQgPSBhdGtf
dGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHRhYmxlQ2VsbCkpOwogICAgIGdfYXNzZXJ0
X2NtcGludChvZmZzZXQsID09LCAyKTsKLSAgICBnX29iamVjdF91bnJlZih0YWJsZUNlbGwpOwog
CiAgICAgLyogRXZlbiBlbXB0eSB0YWJsZSBjZWxscyBzaG91bGQgaW1wbGVtZW50IEF0a1RleHQs
IGJ1dCByZXBvcnQgYW4gZW1wdHkgc3RyaW5nICovCiAgICAgdGFibGVDZWxsID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZCh0YWJsZSwgMSk7CkBAIC00NjQsNyArNDYxLDYgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0cygpCiAgICAgdGV4dCA9IGF0a190ZXh0
X2dldF90ZXh0KEFUS19URVhUKHRhYmxlQ2VsbCksIDAsIC0xKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIodGV4dCwgPT0sICIiKTsKICAgICBnX2ZyZWUodGV4dCk7Ci0gICAgZ19vYmplY3RfdW5yZWYo
dGFibGVDZWxsKTsKIAogICAgIHRhYmxlQ2VsbCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVf
Y2hpbGQodGFibGUsIDIpOwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRhYmxlQ2VsbCkpOwpA
QCAtNDcyLDcgKzQ2OCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMo
KQogICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVCh0YWJsZUNlbGwpLCAwLCAt
MSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiQmxvY2sgc3BhbiBpbiBhIGxpbmsg
aW4gYSB0YWJsZSBjZWxsXG5JbmxpbmUgc3BhbiBpbiBhIGxpbmsgaW4gYSB0YWJsZSBjZWxsIik7
CiAgICAgZ19mcmVlKHRleHQpOwotICAgIGdfb2JqZWN0X3VucmVmKHRhYmxlQ2VsbCk7CiAKICAg
ICB0YWJsZUNlbGwgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKHRhYmxlLCAzKTsK
ICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0YWJsZUNlbGwpKTsKQEAgLTQ4Nyw3ICs0ODIsNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrQ2FyZXRPZmZzZXRzKCkKICAgICB0ZXh0ID0gYXRr
X3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoaGVhZGVyKSwgMCwgLTEpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0LCA9PSwgIkJsb2NrIHNwYW4gaW4gYSBsaW5rIGluIGEgaGVhZGluZ1xuSW5saW5l
IHNwYW4gaW4gYSBsaW5rIGluIGEgaGVhZGluZyIpOwogICAgIGdfZnJlZSh0ZXh0KTsKLSAgICBn
X29iamVjdF91bnJlZihoZWFkZXIpOwogCiAgICAgaGVhZGVyID0gYXRrX29iamVjdF9yZWZfYWNj
ZXNzaWJsZV9jaGlsZChvYmplY3QsIDYpOwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGhlYWRl
cikpOwpAQCAtNTU0LDcgKzU0OCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9m
ZnNldHNBbmRFeHRyYW5vdXNXaGl0ZVNwYWNlcygpCiAgICAgY2FyZXRPZmZzZXQgPSBhdGtfdGV4
dF9nZXRfY2FyZXRfb2Zmc2V0KHRleHRPYmplY3QpOwogICAgIGdfYXNzZXJ0X2NtcGludChjYXJl
dE9mZnNldCwgPT0sIGNoYXJhY3RlckNvdW50KTsKIAotICAgIGdfb2JqZWN0X3VucmVmKG9iamVj
dCk7CiAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7CiB9CiAKQEAgLTgxMiw3ICs4MDUsNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0KCkKIAogICAgIHJ1bkdl
dFRleHRUZXN0cyh0ZXh0T2JqZWN0KTsKIAotICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7CiAg
ICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7CiB9CiAKQEAgLTgzNSw3ICs4MjcsNiBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0TmV3bGluZXMoKQogCiAgICAgcnVu
R2V0VGV4dFRlc3RzKHRleHRPYmplY3QpOwogCi0gICAgZ19vYmplY3RfdW5yZWYob2JqZWN0KTsK
ICAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKIH0KIApAQCAtODUwLDE4ICs4NDEsMTYgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFRleHRhcmVhKCkKICAgICAv
KiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0LiAqLwogICAgIEF0a09iamVjdCogb2Jq
ZWN0ID0gZ2V0V2ViQXJlYU9iamVjdCh3ZWJWaWV3KTsKICAgICBnX2Fzc2VydChvYmplY3QpOwot
ICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9i
amVjdCwgMCk7Ci0gICAgZ19hc3NlcnQoY2hpbGQpOwotICAgIEF0a09iamVjdCogZ3JhbmRjaGls
ZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoY2hpbGQsIDApOwotICAgIGdfYXNz
ZXJ0KGdyYW5kY2hpbGQpOworICAgIG9iamVjdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVf
Y2hpbGQob2JqZWN0LCAwKTsKKyAgICBnX2Fzc2VydChvYmplY3QpOworICAgIG9iamVjdCA9IGF0
a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKTsKKyAgICBnX2Fzc2VydChv
YmplY3QpOwogCi0gICAgQXRrVGV4dCogdGV4dE9iamVjdCA9IEFUS19URVhUKGdyYW5kY2hpbGQp
OworICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChvYmplY3QpOwogICAgIGdfYXNz
ZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKIAogICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0
T2JqZWN0KTsKIAotICAgIGdfb2JqZWN0X3VucmVmKGNoaWxkKTsKLSAgICBnX29iamVjdF91bnJl
ZihncmFuZGNoaWxkKTsKICAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKIH0KIApAQCAtODc2
LDE4ICs4NjUsMTYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFRl
eHRJbnB1dCgpCiAgICAgLyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KICAg
ICBBdGtPYmplY3QqIG9iamVjdCA9IGdldFdlYkFyZWFPYmplY3Qod2ViVmlldyk7CiAgICAgZ19h
c3NlcnQob2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRrX29iamVjdF9yZWZfYWNj
ZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwotICAgIGdfYXNzZXJ0KGNoaWxkKTsKLSAgICBBdGtP
YmplY3QqIGdyYW5kY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGNoaWxk
LCAwKTsKLSAgICBnX2Fzc2VydChncmFuZGNoaWxkKTsKKyAgICBvYmplY3QgPSBhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7CisgICAgZ19hc3NlcnQob2JqZWN0KTsK
KyAgICBvYmplY3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7
CisgICAgZ19hc3NlcnQob2JqZWN0KTsKIAotICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtf
VEVYVChncmFuZGNoaWxkKTsKKyAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2Jq
ZWN0KTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7CiAKICAgICBydW5H
ZXRUZXh0VGVzdHModGV4dE9iamVjdCk7CiAKLSAgICBnX29iamVjdF91bnJlZihjaGlsZCk7Ci0g
ICAgZ19vYmplY3RfdW5yZWYoZ3JhbmRjaGlsZCk7CiAgICAgZ19vYmplY3RfdW5yZWYod2ViVmll
dyk7CiB9CiAKQEAgLTExNjIsMTEgKzExNDksOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRr
R2V0VGV4dEluUGFyYWdyYXBoQW5kQm9keVNpbXBsZSgpCiAKICAgICBjaGFyICp0ZXh0ID0gYXRr
X3RleHRfZ2V0X3RleHQodGV4dE9iamVjdDEsIDAsIC0xKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
dGV4dCwgPT0sICJUaGlzIGlzIGEgdGVzdC4iKTsKLSAgICBnX2ZyZWUodGV4dCk7CiAKICAgICB0
ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQodGV4dE9iamVjdDIsIDAsIDEyKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIodGV4dCwgPT0sICJIZWxsbyB3b3JsZC4iKTsKLSAgICBnX2ZyZWUodGV4dCk7CiAK
ICAgICBnX29iamVjdF91bnJlZihvYmplY3QxKTsKICAgICBnX29iamVjdF91bnJlZihvYmplY3Qy
KTsKQEAgLTExOTYsMTEgKzExODEsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4
dEluUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlKCkKIAogICAgIGNoYXIgKnRleHQgPSBhdGtfdGV4
dF9nZXRfdGV4dCh0ZXh0T2JqZWN0MSwgMCwgLTEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0
LCA9PSwgIlRoaXMgaXMgYSB0ZXN0LiIpOwotICAgIGdfZnJlZSh0ZXh0KTsKIAogICAgIHRleHQg
PSBhdGtfdGV4dF9nZXRfdGV4dCh0ZXh0T2JqZWN0MiwgMCwgNTMpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0LCA9PSwgIkhlbGxvIHdvcmxkLlxuVGhpcyBzZW50ZW5jZSBpcyBncmVlbi5cblRo
aXMgb25lIGlzIG5vdC4iKTsKLSAgICBnX2ZyZWUodGV4dCk7CiAKICAgICBnX29iamVjdF91bnJl
ZihvYmplY3QxKTsKICAgICBnX29iamVjdF91bnJlZihvYmplY3QyKTsKQEAgLTEzOTksNyArMTM4
Miw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0QXR0cmlidXRlcygpCiAgICAgYXRr
X2F0dHJpYnV0ZV9zZXRfZnJlZShzZXQzKTsKICAgICBhdGtfYXR0cmlidXRlX3NldF9mcmVlKHNl
dDQpOwogCi0gICAgZ19vYmplY3RfdW5yZWYoY2hpbGQpOwogICAgIGNoaWxkID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDEpOwogICAgIGdfYXNzZXJ0KGNoaWxkICYm
IEFUS19JU19URVhUKGNoaWxkKSk7CiAgICAgY2hpbGRUZXh0ID0gQVRLX1RFWFQoY2hpbGQpOwpA
QCAtMTQyMCw3ICsxNDAyLDYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRBdHRyaWJ1
dGVzKCkKICAgICBnX2Fzc2VydChhdGtBdHRyaWJ1dGVTZXRBdHRyaWJ1dGVIYXNWYWx1ZShzZXQy
LCBBVEtfVEVYVF9BVFRSX0JHX0NPTE9SLCAiODAsODEsODIiKSk7CiAgICAgYXRrX2F0dHJpYnV0
ZV9zZXRfZnJlZShzZXQxKTsKICAgICBhdGtfYXR0cmlidXRlX3NldF9mcmVlKHNldDIpOwotICAg
IGdfb2JqZWN0X3VucmVmKGNoaWxkKTsKIAogICAgIGNoaWxkID0gYXRrX29iamVjdF9yZWZfYWNj
ZXNzaWJsZV9jaGlsZChvYmplY3QsIDIpOwogICAgIGdfYXNzZXJ0KGNoaWxkICYmIEFUS19JU19U
RVhUKGNoaWxkKSk7CkBAIC0xNDQ2LDcgKzE0MjcsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0
QXRrVGV4dEF0dHJpYnV0ZXMoKQogICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoc2V0Mik7CiAg
ICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZShzZXQzKTsKICAgICBhdGtfYXR0cmlidXRlX3NldF9m
cmVlKHNldDQpOwotICAgIGdfb2JqZWN0X3VucmVmKGNoaWxkKTsKIAogICAgIGNoaWxkID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDMpOwogICAgIGdfYXNzZXJ0KGNo
aWxkICYmIEFUS19JU19URVhUKGNoaWxkKSk7CkBAIC0xNDY2LDggKzE0NDYsNiBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2Via2l0QXRrVGV4dEF0dHJpYnV0ZXMoKQogICAgIGF0a19hdHRyaWJ1dGVfc2V0
X2ZyZWUoc2V0MSk7CiAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZShzZXQyKTsKICAgICBhdGtf
YXR0cmlidXRlX3NldF9mcmVlKHNldDMpOwotCi0gICAgZ19vYmplY3RfdW5yZWYoY2hpbGQpOwog
fQogCiBzdGF0aWMgZ2NoYXIqIHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0ID0gMDsKQEAgLTE2
NDAsNyArMTYxOCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9ucygp
CiAKICAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgxKTsKICAgICBnX29iamVjdF91bnJlZihw
YXJhZ3JhcGgyKTsKLSAgICBnX29iamVjdF91bnJlZihsaW5rKTsKICAgICBnX29iamVjdF91bnJl
ZihsaXN0KTsKICAgICBnX29iamVjdF91bnJlZihsaXN0SXRlbSk7CiAgICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlldyk7CkBAIC0xOTY0LDE1ICsxOTQxLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtp
dEF0a0xpc3RzT2ZJdGVtcygpCiAgICAgZ19hc3NlcnRfY21waW50KGF0a19vYmplY3RfZ2V0X25f
YWNjZXNzaWJsZV9jaGlsZHJlbihpdGVtMiksID09LCAxKTsKICAgICBnX2Fzc2VydF9jbXBpbnQo
YXRrX29iamVjdF9nZXRfbl9hY2Nlc3NpYmxlX2NoaWxkcmVuKGl0ZW0zKSwgPT0sIDEpOwogCi0g
ICAgY2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0xKSwgMCwgLTEp
OwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlwzNDJcMjAwXDI0MiB0ZXh0IG9ubHki
KTsKLSAgICBnX2ZyZWUodGV4dCk7Ci0gICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19U
RVhUKGl0ZW0yKSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlwzNDJc
MjAwXDI0MiBsaW5rIG9ubHkiKTsKLSAgICBnX2ZyZWUodGV4dCk7Ci0gICAgdGV4dCA9IGF0a190
ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0zKSwgMCwgLTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0
cih0ZXh0LCA9PSwgIlwzNDJcMjAwXDI0MiB0ZXh0IGFuZCBhIGxpbmsiKTsKLSAgICBnX2ZyZWUo
dGV4dCk7CisgICAgZ19hc3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0
ZW0xKSwgMCwgLTEpLCA9PSwgIlwzNDJcMjAwXDI0MiB0ZXh0IG9ubHkiKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoaXRlbTIpLCAwLCAtMSksID09LCAi
XDM0MlwyMDBcMjQyIGxpbmsgb25seSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhdGtfdGV4dF9n
ZXRfdGV4dChBVEtfVEVYVChpdGVtMyksIDAsIC0xKSwgPT0sICJcMzQyXDIwMFwyNDIgdGV4dCBh
bmQgYSBsaW5rIik7CiAKICAgICBnX29iamVjdF91bnJlZihpdGVtMSk7CiAgICAgZ19vYmplY3Rf
dW5yZWYoaXRlbTIpOwpAQCAtMTk5MiwxNSArMTk2Myw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJr
aXRBdGtMaXN0c09mSXRlbXMoKQogICAgIGl0ZW0zID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvTGlzdCwgMik7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQoaXRlbTMpKTsKIAot
ICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChpdGVtMSksIDAsIC0xKTsKLSAg
ICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICIxLiB0ZXh0IG9ubHkiKTsKLSAgICBnX2ZyZWUo
dGV4dCk7Ci0gICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0yKSwgMCwg
LTEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIjIuIGxpbmsgb25seSIpOwotICAg
IGdfZnJlZSh0ZXh0KTsKLSAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoaXRl
bTMpLCAwLCAtMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiMy4gdGV4dCBhbmQg
YSBsaW5rIik7Ci0gICAgZ19mcmVlKHRleHQpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhdGtfdGV4
dF9nZXRfdGV4dChBVEtfVEVYVChpdGVtMSksIDAsIC0xKSwgPT0sICIxLiB0ZXh0IG9ubHkiKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoaXRlbTIpLCAw
LCAtMSksID09LCAiMi4gbGluayBvbmx5Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKGF0a190ZXh0
X2dldF90ZXh0KEFUS19URVhUKGl0ZW0zKSwgMCwgLTEpLCA9PSwgIjMuIHRleHQgYW5kIGEgbGlu
ayIpOwogCiAgICAgZ19hc3NlcnRfY21waW50KGF0a19vYmplY3RfZ2V0X25fYWNjZXNzaWJsZV9j
aGlsZHJlbihpdGVtMSksID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX29iamVjdF9n
ZXRfbl9hY2Nlc3NpYmxlX2NoaWxkcmVuKGl0ZW0yKSwgPT0sIDEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGM5OTM2ODcuLjA1MTJlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMjggKzEsMyBAQAot
MjAxMy0wOS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgW01h
Y10gTm8gbmVlZCBmb3IgSGFyZEF1dG9yZWxlYXNlLCB3aGljaCBpcyBzYW1lIGFzIENGQnJpZGdp
bmdSZWxlYXNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjA1NjkKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgotCi0gICAgICAgICog
TWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgotICAgICAgICAoLVtOU0ZpbGVNYW5hZ2Vy
IF93ZWJraXRfc3RhcnR1cFZvbHVtZU5hbWVdKTogUmVtb3ZlZCBzb21lIHVubmVlZGVkIGxvY2Fs
cy4KLSAgICAgICAgR290IHJpZCBvZiB0aGUgcG9pbnRsZXNzIHJlZi9sZWFrUmVmL0hhcmRBdXRv
cmVsZWFzZSBkYW5jZSwgYW5kIHJlcGxhY2VkIGl0Ci0gICAgICAgIHdpdGggYSBbW3ggY29weV0g
YXV0b3JlbGVhc2VdLgotCi0gICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5tbToKLSAgICAg
ICAgKC1bTlNVUkwgX3dlYl9VUkxXaXRoTG93ZXJjYXNlZFNjaGVtZV0pOiBVc2UgQ0ZCcmlkZ2lu
Z1JlbGVhc2UsIGFuZCBnb3QgcmlkCi0gICAgICAgIG9mIHVubmVlZGVkIHR5cGUgY2FzdHMuCi0K
LSAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tOgotICAgICAgICAoK1tX
ZWJCYXNlUGx1Z2luUGFja2FnZSBwcmVmZXJyZWRMb2NhbGl6YXRpb25OYW1lXSk6IFVzZSBDRkJy
aWRnaW5nUmVsZWFzZS4KLSAgICAgICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1t
OgotICAgICAgICAoLVtXZWJQREZSZXByZXNlbnRhdGlvbiBjb252ZXJ0UG9zdFNjcmlwdERhdGFT
b3VyY2VUb1BERjpdKTogRGl0dG8uCi0KLSAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Ci0g
ICAgICAgICgrW1dlYlZpZXcgX3NldENhY2hlTW9kZWw6XSk6IFVzZSBDRkJyaWRnaW5nUmVsZWFz
ZSBhbmQgZ290IHJpZCBvZiB1bm5lZWRlZAotICAgICAgICB0eXBlIGNhc3QuCi0KIDIwMTMtMDgt
MzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBj
b2RlIGJlaGluZCBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXggYzg0MmViYi4uOWQ2NDQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5t
bQpAQCAtOTYsNyArOTYsOSBAQCBzdGF0aWMgdm9pZCAqc2V0TWV0YURhdGEodm9pZCogY29udGV4
dCkKIHsKICAgICBSZXRhaW5QdHI8REFTZXNzaW9uUmVmPiBzZXNzaW9uID0gYWRvcHRDRihEQVNl
c3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOwogICAgIFJldGFpblB0cjxEQURpc2tS
ZWY+IGRpc2sgPSBhZG9wdENGKERBRGlza0NyZWF0ZUZyb21Wb2x1bWVQYXRoKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHNlc3Npb24uZ2V0KCksIChDRlVSTFJlZilbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OkAiLyJdKSk7Ci0gICAgcmV0dXJuIFtbKE5TU3RyaW5nICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
YWRvcHRDRihEQURpc2tDb3B5RGVzY3JpcHRpb24oZGlzay5nZXQoKSkpLmdldCgpLCBrREFEaXNr
RGVzY3JpcHRpb25Wb2x1bWVOYW1lS2V5KSBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gZGlza0Rlc2NyaXB0aW9uID0gYWRvcHRDRihEQURpc2tDb3B5
RGVzY3JpcHRpb24oZGlzay5nZXQoKSkpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZGlza05h
bWUgPSAoTlNTdHJpbmcgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaXNrRGVzY3JpcHRpb24uZ2V0
KCksIGtEQURpc2tEZXNjcmlwdGlvblZvbHVtZU5hbWVLZXkpOworICAgIHJldHVybiBIYXJkQXV0
b3JlbGVhc2UoZGlza05hbWUubGVha1JlZigpKTsKIH0KIAogLy8gLVtOU0ZpbGVNYW5hZ2VyIGZp
bGVFeGlzdHNBdFBhdGg6XSByZXR1cm5zIE5PIGlmIHRoZXJlIGlzIGEgYnJva2VuIHN5bWxpbmsg
YXQgdGhlIHBhdGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRl
eCAwZWIzZWEzLi4wYWRhMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
Yk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRy
YXMubW0KQEAgLTIxNCw4ICsyMTQsOCBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogICAgIH0KICAg
ICAKICAgICBOU1VSTCAqcmVzdWx0ID0gY2hhbmdlZAotICAgICAgICA/IENGQnJpZGdpbmdSZWxl
YXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnVmZmVyLCBieXRlc0Zp
bGxlZCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBuaWwsIFlFUykpCi0gICAgICAgIDogc2VsZjsK
KyAgICAgICAgPyAoTlNVUkwgKilIYXJkQXV0b3JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVS
TFdpdGhCeXRlcyhOVUxMLCBidWZmZXIsIGJ5dGVzRmlsbGVkLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIG5pbCwgWUVTKSkKKyAgICAgICAgOiAoTlNVUkwgKilzZWxmOwogCiAgICAgaWYgKGJ1ZmZl
ciAhPSBzdGF0aWNfYnVmZmVyKSB7CiAgICAgICAgIGZyZWUoYnVmZmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCmluZGV4IDViMDdi
OTguLjlhOGZiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFz
ZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNl
UGx1Z2luUGFja2FnZS5tbQpAQCAtOTAsNyArOTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogKyAoTlNTdHJpbmcgKilwcmVmZXJyZWRMb2NhbGl6YXRpb25OYW1lCiB7Ci0gICAgcmV0
dXJuIENGQnJpZGdpbmdSZWxlYXNlKFdLQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZShO
VUxMKSk7CisgICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShXS0NvcHlDRkxvY2FsaXphdGlvblBy
ZWZlcnJlZE5hbWUoTlVMTCkpOwogfQogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQppbmRleCAzZDdk
ZTRkLi5jM2JjZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBE
RlJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERG
UmVwcmVzZW50YXRpb24ubW0KQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgIENGUmVsZWFzZShwcm92
aWRlcik7CiAgICAgQ0ZSZWxlYXNlKGNvbnN1bWVyKTsKIAotICAgIHJldHVybiBDRkJyaWRnaW5n
UmVsZWFzZShyZXN1bHQpOworICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UocmVzdWx0KTsKIH0K
IAogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAq
KWRhdGFTb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1MDAxYjE5
Li43MDgzMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC01OTA2LDcg
KzU5MDYsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2
NF90IG51bSkKICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYmIGNhY2hlTW9kZWwgPT0gc19j
YWNoZU1vZGVsKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURp
cmVjdG9yeSA9IENGQnJpZGdpbmdSZWxlYXNlKFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9y
eSgpKTsKKyAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURpcmVjdG9yeSA9IChOU1N0cmluZyAqKUhh
cmRBdXRvcmVsZWFzZShXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CiAgICAgaWYg
KCFuc3VybENhY2hlRGlyZWN0b3J5KQogICAgICAgICBuc3VybENhY2hlRGlyZWN0b3J5ID0gTlNI
b21lRGlyZWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYWJjODkzMy4uNDdhMTg0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKQEAgLTEsMzkgKzEsMyBAQAotMjAxMy0wOS0wMyAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KLQotICAgICAgICBbUXRdIEltYWdlcyBz
Y2FsZWQgcG9vcmx5IG9uIGNvbXBvc2l0ZWQgY2FudmFzCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2MzIKLQotICAgICAgICBSZXZpZXdlZCBieSBK
b2NlbHluIFR1cmNvdHRlLgotCi0gICAgICAgIEV4cGxpY2l0bHkgc2V0IGEgaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSBvbiB0aGUgVGV4dHVyZU1hcHBlciwgYmVjYXVzZQotICAgICAgICBJbnRl
cnBvbGF0aW9uRGVmYXVsdCBtYXkgYmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgYnkgbmVzdGVk
IEdyYXBoaWNzQ29udGV4dHMuCi0KLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFw
cGVyTGF5ZXJDbGllbnRRdC5jcHA6Ci0gICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRR
dDo6cmVuZGVyQ29tcG9zaXRlZExheWVycyk6Ci0KLTIwMTMtMDktMDMgIEFsbGFuIFNhbmRmZWxk
IEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+Ci0KLSAgICAgICAgW1F0XSBUaWxlZC1i
YWNraW5nIHN0b3JlIG5vdCBjbGlwcGVkIHRvIGZyYW1lIG9yIHZpc2libGUgcmVjdAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjA2Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KLQotICAgICAgICBDbGlwIHBhaW50aW5n
IGZyb20gdGhlIHRpbGVkLWJhY2tpbmcgc3RvcmUgdG8gdGhlIGZyYW1lIHJlY3QuCi0KLSAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKLSAgICAgICAgKFFXZWJG
cmFtZUFkYXB0ZXI6OnJlbmRlckZyb21UaWxlZEJhY2tpbmdTdG9yZSk6Ci0KLTIwMTMtMDktMDMg
IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+Ci0KLSAgICAg
ICAgW1F0XVtXSzFdIFBhZ2VWaXNpYmlsaXR5IHRlc3RzIGFyZSBmbGFreQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNDE4Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KLQotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKLSAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpyZXNldFBhZ2VWaXNpYmlsaXR5KToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgotCiAyMDEzLTA4LTI4ICBaZW5vIEFsYmlzc2VyICA8emVu
b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gT3B0aW9uIGtleSBjb21iaW5hdGlvbnMgZG8g
bm90IHdvcmsgaW4gSW5wdXQgRWxlbWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IDJj
ODFiMDIuLjI1ZjAxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC04OTMsMTYgKzg5Myw2
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmRpc2FibGVEZWZhdWx0VHlwZXNldHRp
bmdGZWF0dXJlcygpCiAgICAgV2ViQ29yZTo6Rm9udDo6c2V0RGVmYXVsdFR5cGVzZXR0aW5nRmVh
dHVyZXMoMCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0UGFnZVZp
c2liaWxpdHkoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyKQotewotI2lmIEVOQUJMRShQQUdFX1ZJ
U0lCSUxJVFlfQVBJKQotICAgIC8vIFNldCB2aXNpYmlsaXR5IHdpdGhvdXQgZW1pdHRpbmcgYW4g
ZXZlbnQuCi0gICAgYWRhcHRlci0+cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmls
aXR5U3RhdGVWaXNpYmxlLCB0cnVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFkYXB0ZXIp
OwotI2VuZGlmCi19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdldEpTV2luZG93
T2JqZWN0KFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIsIEpTQ29udGV4dFJlZiogY29udGV4dCwg
SlNPYmplY3RSZWYqIG9iamVjdCkKIHsKICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RP
TVdpbmRvdyhhZGFwdGVyLT5mcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5oCmluZGV4IDI3YzhkMDEuLjAxOTIzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAg
LTIwNSw3ICsyMDUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25QZXJtaXNzaW9ucygpOwogCiAgICAgc3RhdGljIHZvaWQgZGlzYWJsZURlZmF1bHRUeXBlc2V0
dGluZ0ZlYXR1cmVzKCk7Ci0gICAgc3RhdGljIHZvaWQgcmVzZXRQYWdlVmlzaWJpbGl0eShRV2Vi
UGFnZUFkYXB0ZXIqKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldEpTV2luZG93T2JqZWN0KFFXZWJG
cmFtZUFkYXB0ZXIqLCBKU0NvbnRleHRSZWYqLCBKU09iamVjdFJlZiopOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCmlu
ZGV4IDc2MzNiZjcuLmU4YTIxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcApAQCAtNjQxLDIwICs2NDEsMTkgQEAgYm9v
bCBRV2ViRnJhbWVBZGFwdGVyOjpyZW5kZXJGcm9tVGlsZWRCYWNraW5nU3RvcmUoUVBhaW50ZXIq
IHBhaW50ZXIsIGNvbnN0IFFSZWcKIAogICAgIGludCBzY3JvbGxYID0gdmlldy0+c2Nyb2xsWCgp
OwogICAgIGludCBzY3JvbGxZID0gdmlldy0+c2Nyb2xsWSgpOwotICAgIFFSZWN0IGZyYW1lUmVj
dCA9IHZpZXctPmZyYW1lUmVjdCgpOworICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3JvbGxYLCAt
c2Nyb2xsWSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlY3Rvci5zaXplKCk7ICsraSkg
ewogICAgICAgICBjb25zdCBRUmVjdCYgY2xpcFJlY3QgPSB2ZWN0b3IuYXQoaSk7CiAKLSAgICAg
ICAgY29udGV4dC5zYXZlKCk7Ci0gICAgICAgIFFSZWN0IHJlY3QgPSBjbGlwUmVjdC5pbnRlcnNl
Y3RlZChmcmFtZVJlY3QpOwotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCwgLXNj
cm9sbFkpOwotICAgICAgICByZWN0LnRyYW5zbGF0ZShzY3JvbGxYLCBzY3JvbGxZKTsKLSAgICAg
ICAgY29udGV4dC5jbGlwKHJlY3QpOworICAgICAgICBwYWludGVyLT5zYXZlKCk7CisKKyAgICAg
ICAgUVJlY3QgcmVjdCA9IGNsaXBSZWN0LnRyYW5zbGF0ZWQoc2Nyb2xsWCwgc2Nyb2xsWSk7Cisg
ICAgICAgIHBhaW50ZXItPnNldENsaXBSZWN0KHJlY3QsIFF0OjpJbnRlcnNlY3RDbGlwKTsKIAog
ICAgICAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+cGFpbnQoJmNvbnRleHQsIHJlY3Qp
OwogCi0gICAgICAgIGNvbnRleHQucmVzdG9yZSgpOworICAgICAgICBwYWludGVyLT5yZXN0b3Jl
KCk7CiAgICAgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJM
YXllckNsaWVudFF0LmNwcAppbmRleCA0NjU4NTdmLi4wMWRhY2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXll
ckNsaWVudFF0LmNwcApAQCAtMTA0LDE0ICsxMDQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXll
ckNsaWVudFF0OjpyZW5kZXJDb21wb3NpdGVkTGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dAogICAgICAgICByZXR1cm47CiAKICAgICBtX3RleHR1cmVNYXBwZXItPnNldEdyYXBoaWNzQ29u
dGV4dChjb250ZXh0KTsKLSAgICAvLyBHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgaXMgYWx3YXlzIEludGVycG9sYXRpb25EZWZhdWx0IGhlcmUsCi0gICAgLy8gYnV0
ICdkZWZhdWx0JyBtYXkgYmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgZHVlIHRvIGEgZGlmZmVy
ZW50IGJhY2tlbmQgUVBhaW50ZXIsCi0gICAgLy8gc28gd2UgbmVlZCB0byBzZXQgYW4gZXhwbGlj
aXQgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eS4KLSAgICBpZiAoY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6U21vb3RoUGl4bWFwVHJhbnNmb3Jt
KQotICAgICAgICBtX3RleHR1cmVNYXBwZXItPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
V2ViQ29yZTo6SW50ZXJwb2xhdGlvbk1lZGl1bSk7Ci0gICAgZWxzZQotICAgICAgICBtX3RleHR1
cmVNYXBwZXItPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoV2ViQ29yZTo6SW50ZXJwb2xh
dGlvbk5vbmUpOwotCisgICAgbV90ZXh0dXJlTWFwcGVyLT5zZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KGNvbnRleHQtPmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAgICAgbV90ZXh0
dXJlTWFwcGVyLT5zZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkp
OwogICAgIFFQYWludGVyKiBwYWludGVyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwYWludGVyLT53b3JsZFRyYW5zZm9ybSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDM1YTc4NzQuLmZhODQxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMTM0ICsx
LDMgQEAKLTIwMTMtMDktMDMgIEFudG9uIE9iemhpcm92ICA8YS5vYnpoaXJvdkBzYW1zdW5nLmNv
bT4KLQotICAgICAgICBbR1RLXSBnZGsgdGhyZWFkcyBkZXByZWNhdGVkIGZ1bmN0aW9ucyBjYWxs
cyBzaG91bGQgYmUgcmVmYWN0b3JlZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIwMDcwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyaW8gU2FuY2hl
eiBQcmFkYS4KLQotICAgICAgICBSZW1vdmVkIGRlcHJlY2F0ZWQgZnVuY3Rpb25zIGdka190aHJl
YWRzX2xlYXZlKCkvZ2RrX3RocmVhZHNfZW50ZXIoKSBmdW5jdGlvbnMgc2luY2UKLSAgICAgICAg
dGhlcmUgaXMgbm8gbW9yZSBjaGVja3MgZm9yIHRocmVhZHMgbG9jayBpbiBHVEsgMy42LgotCi0g
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6Ci0gICAgICAgICh3
ZWJraXRXZWJWaWV3UnVuQXNNb2RhbCk6Ci0gICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQb3B1
cE1lbnVQcm94eUd0ay5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5R3Rr
OjpzaG93UG9wdXBNZW51KToKLQotMjAxMy0wOS0wMyAgQnJpYW4gSG9sdCAgPGJyaWFuLmhvbHRA
c2Ftc3VuZy5jb20+Ci0KLSAgICAgICAgW0dUS10gW1dLMl0gVGVzdENvbnRleHRNZW51IGRlZmF1
bHQtbWVudSBmYWlscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIwNDU5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZh
LgotCi0gICAgICAgIEFkZCBjb250ZXh0IG1lbnUgaXRlbXMgZm9yIGRvd25sb2FkaW5nIG1lZGlh
IGVsZW1lbnRzLgotCi0gICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnVBY3Rpb25zLmNwcDoKLSAgICAgICAgKHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9u
VGFnKToKLSAgICAgICAgKHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0Rm9yQ29udGV4dE1lbnVJ
dGVtKToKLSAgICAgICAgKHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwpOgotICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oOgotICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RDb250ZXh0TWVudS5jcHA6Ci0KLTIwMTMt
MDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIEN1dCBkb3du
IG9uIGRvdWJsZSBoYXNoaW5nIGFuZCBjb2RlIG5lZWRsZXNzbHkgdXNpbmcgaGFzaCB0YWJsZSBp
dGVyYXRvcnMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDYxMQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAg
KiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgotICAgICAgICAoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UpOiBVc2UgdGFrZSBpbnN0ZWFkIG9mIGZpbmQvcmVtb3Zl
LgotCi0gICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKLSAgICAgICAgKFdl
YktpdDo6V2ViUHJlZmVyZW5jZXM6OnJlbW92ZVBhZ2VHcm91cCk6IFVzZSB0aGUgcmV0dXJuIHZh
bHVlIGZyb20gcmVtb3ZlCi0gICAgICAgIGluc3RlYWQgb2YgZmluZC9yZW1vdmUuCi0KLSAgICAg
ICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcDoKLSAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmNhbmNlbFJlcXVlc3RGb3JHZW9sb2NhdGlvbik6Ci0gICAgICAgIChXZWJLaXQ6
Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlR2VvbG9jYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pOgotICAgICAgICBVc2UgdGFrZSBpbnN0ZWFkIG9mIGZpbmQv
cmVtb3ZlLgotCi0gICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcDoKLSAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmZyYW1lRGlkRmlu
aXNoTG9hZGluZyk6IFVzZSB0YWtlIGluc3RlYWQgb2YgZmluZC9yZW1vdmUuCi0gICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpmcmFtZURpZEZhaWwpOiBVc2UgdGFrZSBpbnN0ZWFkIG9m
IGZpbmQvcmVtb3ZlLgotCi0gICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcDoKLSAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OnJlbW92ZUl0ZW0pOiBVc2UgdGFrZSBpbnN0ZWFkIG9mIGZpbmQvcmVtb3ZlLgotCi0gICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgotICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRGaW5pc2hDaGVja2luZ1RleHQpOiBVc2UgdGFrZSBpbnN0ZWFkIG9mIGdldC9y
ZW1vdmUgc28gd2UKLSAgICAgICAgaGFzaCBvbmx5IG9uY2UuCi0gICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZENhbmNlbENoZWNraW5nVGV4dCk6IERpdHRvLgotICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzdG9wRXh0ZW5kaW5nSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvbik6IFVz
ZSB0aGUgcmV0dXJuCi0gICAgICAgIHZhbHVlIGZyb20gcmVtb3ZlIGluc3RlYWQgb2YgY29udGFp
bnMvcmVtb3ZlIHNvIHdlIGhhc2ggb25seSBvbmNlLgotCi0yMDEzLTA5LTAyICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KLQotICAgICAgICBbTWFjXSBObyBuZWVkIGZvciBIYXJkQXV0
b3JlbGVhc2UsIHdoaWNoIGlzIHNhbWUgYXMgQ0ZCcmlkZ2luZ1JlbGVhc2UKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFuZHkgRXN0ZXMuCi0KLSAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRp
bGl0aWVzLm1tOgotICAgICAgICAoV2ViS2l0Ojpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKTog
VXNlIENGQnJpZGdpbmdSZWxlYXNlLiBBbHNvCi0gICAgICAgIGNoYW5nZWQgY29uZGl0aW9uIHRv
IGJlIGEgbGl0dGxlIGNsZWFuZXIgYW5kIHVzZSBhIGNvbnN0YW50IHN0cmluZyBmb3IgZW1wdHkK
LSAgICAgICAgc3RyaW5ncyBhcyB3ZWxsIGFzIG51bGwgc3RyaW5ncy4KLQotICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKLSAgICAgICAg
KGF1dG9yZWxlYXNlZCk6IFN3aXRjaGVkIGZyb20gYXV0b3JlbGVhc2UgdG8gQ0ZCcmlkZ2luZ1Jl
bGVhc2UgZm9yIHN0cmluZ3MsCi0gICAgICAgIHdoaWNoIGVsaW1pbmF0ZXMgYSB0eXBlIGNhc3Qg
YW5kIG1ha2VzIHRoaXMgd29yayB1bmRlciBHQywgYWx0aG91Z2ggSSBkb24ndAotICAgICAgICB0
aGluayB3ZSBzaG91bGQgY29tcGlsZSBXZWJLaXQyIGZvciBHQy4KLQotICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbToKLSAgICAg
ICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgotICAgICAgICBVc2UgQ0ZCcmlkZ2luZ1JlbGVhc2UuCi0K
LTIwMTMtMDktMDIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KLQotICAg
ICAgICBSRUdSRVNTSU9OKHIxNTQ5MDkpOiBjYXVzZWQgbWFueSBjcmFzaGVzIG9uIFF0IFdLMiwg
RUZMIFdLMgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIwNjAwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAq
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENv
ZGVycy5jcHA6Ci0gICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6IGtleVRpbWUgc2hvdWxkIGJl
IGRvdWJsZSBoZXJlIHRvby4KLQotMjAxMy0wOS0wMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KLQotICAgICAgICBbV0syXVtNYWNdIERyYWcgYW5kIGRyb3AgdGVzdHMgaW50
ZXJmZXJlIHdpdGggdXNlcidzIFVJCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjA1MzgKLQotICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWlu
LgotCi0gICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOiAoLVtXS1ZpZXcgX3Nl
dERyYWdJbWFnZTphdDpsaW5rRHJhZzpdKTogTWFrZSBpdCBwb3NzaWJsZQotICAgICAgICB0byBv
dmVycmlkZSBkcmFnIGluaXRpYXRpb24gaW4gc3ViY2xhc3Nlcy4gSXQgaXMgYSBiaXQgdW5mb3J0
dW5hdGUgdGhhdCB0aGlzIGV4cG9zZXMKLSAgICAgICAgYSBkZXByZWNhdGVkIEFQSSB0aGF0IHdl
IGNhbGwsIGJ1dCBwcm9iYWJseSBub3QgdW5mb3J0dW5hdGUgZW5vdWdoIHRvIGludmVudCBhIG5l
dwotICAgICAgICBzY2FyeSBsb29raW5nIG5hbWUgZm9yIHRoZSBzYW1lIGZ1bmN0aW9uLCBhbmQg
Y29uZGl0aW9uYWxseSBjYWxsIHRoYXQgaWYgaW1wbGVtZW50ZWQKLSAgICAgICAgYnkgc3ViY2xh
c3MuCi0KLTIwMTMtMDgtMzEgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcuY29t
PgotCi0gICAgICAgIHdhcm5pbmc6IHVudXNlZCBwYXJhbWV0ZXIgcG9pbnQgYW5kIGFyZWEgaW4g
RXdrVmlldy5jcHA6MTM5MAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIwNTQ1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKLSAgICAgICAgKEV3a1ZpZXc6
OmRpZEZpbmRab29tYWJsZUFyZWEpOiBBZGRlZCBVTlVTRURfUEFSQU0uCi0KLTIwMTMtMDgtMzEg
IEphZSBIeXVuIFBhcmsgIDxqYWUucGFya0Bjb21wYW55MTAwLm5ldD4KLQotICAgICAgICBSZW1v
dmUgdW51c2VkIHZhcmlhYmxlIGluIExheWVyVHJlZUhvc3QKLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODk1MAotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBtX3dhaXRpbmdGb3JVSVByb2Nlc3MgaGFzIGJl
ZW4gcmVuYW1lZCB0byBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyIGFzIG9mCi0gICAgICAgIHIxNTIx
ODMsIGFuZCBpdCBpcyBhIHByaXZhdGUgdmFyaWFibGUgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LiBUaHVzLAotICAgICAgICB3ZSBkb24ndCBuZWVkIG1fd2FpdGluZ0ZvclVJUHJvY2VzcyBp
biBMYXllclRyZWVIb3N0LgotCi0gICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaDoKLQogMjAxMy0wOC0zMCAgQnJpYW4gSG9sdCAgPGJyaWFuLmhvbHRAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0dUS10gW1dLMl0gVGVzdFdlYktpdFdlYlZpZXcgc25hcHNob3QgZmFp
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDg5ZjA2YjUuLjE3MGVjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmNwcApAQCAtNDE3LDggKzQxNywxMyBAQCBQYXNzT3duUHRyPE1lc3Nh
Z2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlYwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogCi0gICAgICAgIGlmIChPd25QdHI8TWVzc2FnZURlY29k
ZXI+IGRlY29kZXIgPSBtX3dhaXRGb3JNZXNzYWdlTWFwLnRha2UobWVzc2FnZUFuZERlc3RpbmF0
aW9uKSkKKyAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5j
ZSwgU3RyaW5nUmVmZXJlbmNlPiwgdWludDY0X3Q+LCBPd25QdHI8TWVzc2FnZURlY29kZXI+Pjo6
aXRlcmF0b3IgaXQgPSBtX3dhaXRGb3JNZXNzYWdlTWFwLmZpbmQobWVzc2FnZUFuZERlc3RpbmF0
aW9uKTsKKyAgICAgICAgaWYgKGl0LT52YWx1ZSkgeworICAgICAgICAgICAgT3duUHRyPE1lc3Nh
Z2VEZWNvZGVyPiBkZWNvZGVyID0gaXQtPnZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1f
d2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKKwogICAgICAgICAgICAgcmV0dXJuIGRlY29k
ZXIucmVsZWFzZSgpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBOb3cgd2Ugd2Fp
dC4KICAgICAgICAgaWYgKCFtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLnRpbWVkV2FpdChtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgsIGFic29sdXRlVGltZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDMxMTJhMjQuLjRhYzZmOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQpAQCAt
MzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTlNTdHJpbmcgKm5zU3RyaW5n
RnJvbVdlYkNvcmVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitOU1N0cmluZyogbnNTdHJp
bmdGcm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4g
c3RyaW5nLmlzRW1wdHkoKSA/IEAiIiA6IENGQnJpZGdpbmdSZWxlYXNlKFdLU3RyaW5nQ29weUNG
U3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBsKCkpKSk7CisgICAgcmV0dXJuIHN0cmluZy5pbXBs
KCkgPyBIYXJkQXV0b3JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9BUEkoc3RyaW5n
LmltcGwoKSkpKSA6IEAiIjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNGVkNThiOS4uYzI3NzQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC03MjcsNyArNzI3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJB
bmltYXRpb24+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHcmEKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGtleWZyYW1lc1NpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleWZyYW1lc1NpemU7ICsraSkgewotICAgICAg
ICBkb3VibGUga2V5VGltZTsKKyAgICAgICAgZmxvYXQga2V5VGltZTsKICAgICAgICAgUmVmUHRy
PFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShrZXlUaW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMGJiODgwZC4uNWJiODQ5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTEz
OTAsOCArMTM5MCw2IEBAIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBFd2tWaWV3Ojp0YWtl
U25hcHNob3QoKQogdm9pZCBFd2tWaWV3OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdLUG9p
bnQmIHBvaW50LCBjb25zdCBXS1JlY3QmIGFyZWEpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICBVTlVTRURfUEFSQU0ocG9pbnQpOwotICAgIFVOVVNFRF9QQVJBTShhcmVhKTsKIH0KIAog
RXZhc19TbWFydF9DbGFzcyBFd2tWaWV3OjpwYXJlbnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9D
TEFTU19JTklUX05VTEw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmNwcAppbmRleCBlOGNkZmZkLi4z
NzkzZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudUFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAKQEAgLTEyMyw5ICsxMjMsNiBAQCBD
b250ZXh0TWVudUFjdGlvbiB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhXZWJL
aXRDb250ZXh0TWVudUFjdGlvbiBhYwogICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtVGFn
TWVkaWFQbGF5UGF1c2U7CiAgICAgY2FzZSBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9NRURJ
QV9NVVRFOgogICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlOwotICAg
IGNhc2UgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfVklERU9fVE9fRElTSzoK
LSAgICBjYXNlIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0FVRElPX1RPX0RJ
U0s6Ci0gICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNr
OwogICAgIGNhc2UgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VTVE9NOgogICAgICAgICBy
ZXR1cm4gQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnOwogICAgIGRlZmF1bHQ6CkBA
IC0yMTcsOSArMjE0LDYgQEAgV2ViS2l0Q29udGV4dE1lbnVBY3Rpb24gd2Via2l0Q29udGV4dE1l
bnVBY3Rpb25HZXRGb3JDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnUKICAgICAgICAgICAgIFdF
QktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX1BMQVkgOiBXRUJLSVRfQ09OVEVYVF9NRU5V
X0FDVElPTl9NRURJQV9QQVVTRTsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0
ZToKICAgICAgICAgcmV0dXJuIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX01VVEU7
Ci0gICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrOgotICAgICAg
ICByZXR1cm4gbWVudUl0ZW0tPnRpdGxlKCkgPT0gY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRW
aWRlb1RvRGlzaygpID8KLSAgICAgICAgICAgIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RP
V05MT0FEX1ZJREVPX1RPX0RJU0sgOiBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9ET1dOTE9B
RF9BVURJT19UT19ESVNLOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9u
VGFnOgogICAgICAgICByZXR1cm4gV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VTVE9NOwog
ICAgIGRlZmF1bHQ6CkBAIC0zMTIsMTAgKzMwNiw2IEBAIFN0cmluZyB3ZWJraXRDb250ZXh0TWVu
dUFjdGlvbkdldExhYmVsKFdlYktpdENvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICAgICAg
cmV0dXJuIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKTsKICAgICBjYXNlIFdFQktJVF9D
T05URVhUX01FTlVfQUNUSU9OX01FRElBX01VVEU6CiAgICAgICAgIHJldHVybiBjb250ZXh0TWVu
dUl0ZW1UYWdNZWRpYU11dGUoKTsKLSAgICBjYXNlIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9O
X0RPV05MT0FEX1ZJREVPX1RPX0RJU0s6Ci0gICAgICAgIHJldHVybiBjb250ZXh0TWVudUl0ZW1U
YWdEb3dubG9hZFZpZGVvVG9EaXNrKCk7Ci0gICAgY2FzZSBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9ET1dOTE9BRF9BVURJT19UT19ESVNLOgotICAgICAgICByZXR1cm4gY29udGV4dE1lbnVJ
dGVtVGFnRG93bmxvYWRBdWRpb1RvRGlzaygpOwogICAgIGNhc2UgV0VCS0lUX0NPTlRFWFRfTUVO
VV9BQ1RJT05fTk9fQUNUSU9OOgogICAgIGNhc2UgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05f
Q1VTVE9NOgogICAgIGNhc2UgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fU1BFTExJTkdfR1VF
U1M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudUFjdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51QWN0aW9ucy5oCmluZGV4IDVhMTc5ZGYuLjE4NWJkMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRl
eHRNZW51QWN0aW9ucy5oCkBAIC03Miw4ICs3Miw2IEBAIEdfQkVHSU5fREVDTFMKICAqIEBXRUJL
SVRfQ09OVEVYVF9NRU5VX0FDVElPTl9NRURJQV9QTEFZOiBQbGF5IGN1cnJlbnQgbWVkaWEgZWxl
bWVudC4KICAqIEBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9NRURJQV9QQVVTRTogUGF1c2Ug
Y3VycmVudCBtZWRpYSBlbGVtZW50LgogICogQFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01F
RElBX01VVEU6IE11dGUgY3VycmVudCBtZWRpYSBlbGVtZW50LgotICogQFdFQktJVF9DT05URVhU
X01FTlVfQUNUSU9OX0RPV05MT0FEX1ZJREVPX1RPX0RJU0s6IERvd25sb2FkIHZpZGVvIHRvIGRp
c2suCi0gKiBAV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfQVVESU9fVE9fRElT
SzogRG93bmxvYWQgYXVkaW8gdG8gZGlzay4KICAqIEBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
Tl9DVVNUT006IEN1c3RvbSBhY3Rpb24gZGVmaW5lZCBieSBhcHBsaWNhdGlvbnMuCiAgKgogICog
RW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIHN0b2NrIGFjdGlvbnMgZm9yCkBAIC0xMjMs
OCArMTIxLDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
Tl9NRURJQV9QTEFZLAogICAgIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX1BBVVNF
LAogICAgIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX01VVEUsCi0gICAgV0VCS0lU
X0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfVklERU9fVE9fRElTSywKLSAgICBXRUJLSVRf
Q09OVEVYVF9NRU5VX0FDVElPTl9ET1dOTE9BRF9BVURJT19UT19ESVNLLAogCiAgICAgV0VCS0lU
X0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VTVE9NID0gMTAwMDAKIH0gV2ViS2l0Q29udGV4dE1lbnVB
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IDMxODcxNjIuLjcyZmU2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xNTYwLDcgKzE1NjAs
OSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JVTl9BU19NT0RBTF0sIDAsIE5V
TEwpOwogCiAgICAgd2ViVmlldy0+cHJpdi0+bW9kYWxMb29wID0gYWRvcHRHUmVmKGdfbWFpbl9s
b29wX25ldygwLCBGQUxTRSkpOworICAgIGdka190aHJlYWRzX2xlYXZlKCk7CiAgICAgZ19tYWlu
X2xvb3BfcnVuKHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CisgICAgZ2RrX3RocmVh
ZHNfZW50ZXIoKTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0Q29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCBkM2U0MmFmLi5jMzYxZjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0Q29u
dGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RDb250ZXh0TWVudS5jcHAKQEAgLTMwOSw3ICszMDksNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0TmV4dChpdGVyKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWV9WSURFT19MSU5LX1RPX0NM
SVBCT0FSRCwgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3Vy
cmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5V
X0FDVElPTl9PUEVOX1ZJREVPX0lOX05FV19XSU5ET1csIFZpc2libGUgfCBFbmFibGVkKTsKLSAg
ICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQo
aXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfVklERU9fVE9fRElTSywg
VmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRWRp
dGFibGU6CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
CmluZGV4IDliNWNjNzMuLjNmOTkyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0K
QEAgLTQ5LDEyICs0OSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBzdGF0aWMgaW5s
aW5lIE5TU3RyaW5nICphdXRvcmVsZWFzZWQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJl
dHVybiBDRkJyaWRnaW5nUmVsZWFzZShXS1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBhZG9wdFdLKHN0cmluZykuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tTdHJpbmcgPSBhZG9wdFdLKHN0cmluZyk7CisgICAgcmV0dXJuIFsoTlNTdHJpbmcg
KilXS1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3a1N0cmluZy5nZXQo
KSkgYXV0b3JlbGVhc2VdOwogfQogCiBzdGF0aWMgaW5saW5lIE5TVVJMICphdXRvcmVsZWFzZWQo
V0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShXS1VSTENvcHlD
RlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZG9wdFdLKHVybCkuZ2V0KCkpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBhZG9wdFdLKHVybCk7CisgICAgcmV0dXJuIEhhcmRB
dXRvcmVsZWFzZShXS1VSTENvcHlDRlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3a1VSTC5nZXQo
KSkpOwogfQogCiBAaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGEgOiBO
U09iamVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5k
ZXggMDM1NzE1MC4uMjkxMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQpAQCAtMjc1NCwxNiArMjc1NCwxNiBAQCBzdGF0aWMgdm9pZCBkcmF3UGFnZUJh
Y2tncm91bmQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3Qg
SQogICAgIHNpemUuc2NhbGUoMS4wIC8gX2RhdGEtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKICAgICBbaW1hZ2Ugc2V0U2l6ZTpzaXplXTsKICAgICAKLSAgICAvLyBUaGUgY2FsbCBiZWxv
dyBjb3VsZCByZWxlYXNlIHRoaXMgV0tWaWV3LgorICAgIC8vIFRoZSBjYWxsIHRvIHN1cGVyIGNv
dWxkIHJlbGVhc2UgdGhpcyBXS1ZpZXcuCiAgICAgUmV0YWluUHRyPFdLVmlldz4gcHJvdGVjdG9y
KHNlbGYpOwogICAgIAotICAgIFtzZWxmIGRyYWdJbWFnZTppbWFnZQotICAgICAgICAgICAgICAg
ICBhdDpjbGllbnRQb2ludAotICAgICAgICAgICAgIG9mZnNldDpOU1plcm9TaXplCi0gICAgICAg
ICAgICAgIGV2ZW50OihsaW5rRHJhZykgPyBbTlNBcHAgY3VycmVudEV2ZW50XSA6X2RhdGEtPl9t
b3VzZURvd25FdmVudAotICAgICAgICAgcGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIHBhc3RlYm9h
cmRXaXRoTmFtZTpOU0RyYWdQYm9hcmRdCi0gICAgICAgICAgICAgc291cmNlOnNlbGYKLSAgICAg
ICAgICBzbGlkZUJhY2s6WUVTXTsKKyAgICBbc3VwZXIgZHJhZ0ltYWdlOmltYWdlCisgICAgICAg
ICAgICAgICAgICBhdDpjbGllbnRQb2ludAorICAgICAgICAgICAgICBvZmZzZXQ6TlNaZXJvU2l6
ZQorICAgICAgICAgICAgICAgZXZlbnQ6KGxpbmtEcmFnKSA/IFtOU0FwcCBjdXJyZW50RXZlbnRd
IDpfZGF0YS0+X21vdXNlRG93bkV2ZW50CisgICAgICAgICAgcGFzdGVib2FyZDpbTlNQYXN0ZWJv
YXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpOU0RyYWdQYm9hcmRdCisgICAgICAgICAgICAgIHNvdXJj
ZTpzZWxmCisgICAgICAgICAgIHNsaWRlQmFjazpZRVNdOwogfQogCiBzdGF0aWMgYm9vbCBtYXRj
aGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50KE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4
dGVuc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJl
bmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCmlu
ZGV4IGE0YzRiNzkuLjQ3NjhmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
ZWZlcmVuY2VzLmNwcApAQCAtNzAsOCArNzAsMTMgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6YWRk
UGFnZUdyb3VwKFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQogCiB2b2lkIFdlYlByZWZlcmVuY2Vz
OjpyZW1vdmVQYWdlR3JvdXAoV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXApCiB7Ci0gICAgYm9vbCBk
aWRSZW1vdmVQYWdlR3JvdXAgPSBtX3BhZ2VHcm91cHMucmVtb3ZlKHBhZ2VHcm91cCk7Ci0gICAg
aWYgKGRpZFJlbW92ZVBhZ2VHcm91cCAmJiBwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpIHsKKyAg
ICBIYXNoU2V0PFdlYlBhZ2VHcm91cCo+OjppdGVyYXRvciBpdGVyID0gbV9wYWdlR3JvdXBzLmZp
bmQocGFnZUdyb3VwKTsKKyAgICBpZiAoaXRlciA9PSBtX3BhZ2VHcm91cHMuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcGFnZUdyb3Vwcy5yZW1vdmUoaXRlcik7CisKKyAgICBpZiAo
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIC0tcHJpdmF0ZUJyb3dzaW5nUGFn
ZUdyb3VwQ291bnQ7CiAgICAgICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nUGFnZUdyb3VwQ291bnQp
CiAgICAgICAgICAgICBXZWJDb250ZXh0Ojp3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJv
eHlHdGsuY3BwCmluZGV4IDExMTRhMTguLmE0MTgzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCkBAIC05Nyw3ICs5
Nyw5IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50
UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0CiAgICAgLy8gbWVudSByaWdodCBhZnRlciBj
YWxsaW5nIFdlYlBvcHVwTWVudVByb3h5OjpzaG93UG9wdXBNZW51KCkuCiAgICAgbV9ydW5Mb29w
ID0gYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldygwLCBGQUxTRSkpOwogCisgICAgZ2RrX3RocmVh
ZHNfbGVhdmUoKTsKICAgICBnX21haW5fbG9vcF9ydW4obV9ydW5Mb29wLmdldCgpKTsKKyAgICBn
ZGtfdGhyZWFkc19lbnRlcigpOwogCiAgICAgbV9ydW5Mb29wLmNsZWFyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggYzQw
Y2Y2Ni4uNmIwNWY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRp
b24KICAgICBtX2dlb2xvY2F0aW9uVG9JRE1hcC5zZXQoZ2VvbG9jYXRpb24sIGdlb2xvY2F0aW9u
SUQpOwogICAgIG1faWRUb0dlb2xvY2F0aW9uTWFwLnNldChnZW9sb2NhdGlvbklELCBnZW9sb2Nh
dGlvbik7CiAKKwogICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLT5mcmFtZSgpOwogCiAg
ICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFt
ZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpOwpAQCAtNzIsMjAgKzczLDI2
IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVz
dEZvckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uCiAKIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3RGb3JHZW9sb2NhdGlvbihHZW9sb2NhdGlvbiog
Z2VvbG9jYXRpb24pCiB7Ci0gICAgdWludDY0X3QgZ2VvbG9jYXRpb25JRCA9IG1fZ2VvbG9jYXRp
b25Ub0lETWFwLnRha2UoZ2VvbG9jYXRpb24pOwotICAgIGlmICghZ2VvbG9jYXRpb25JRCkKKyAg
ICBHZW9sb2NhdGlvblRvSURNYXA6Oml0ZXJhdG9yIGl0ID0gbV9nZW9sb2NhdGlvblRvSURNYXAu
ZmluZChnZW9sb2NhdGlvbik7CisgICAgaWYgKGl0ID09IG1fZ2VvbG9jYXRpb25Ub0lETWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm47CisKKyAgICB1aW50NjRfdCBnZW9sb2NhdGlvbklEID0gaXQt
PnZhbHVlOworICAgIG1fZ2VvbG9jYXRpb25Ub0lETWFwLnJlbW92ZShpdCk7CiAgICAgbV9pZFRv
R2VvbG9jYXRpb25NYXAucmVtb3ZlKGdlb2xvY2F0aW9uSUQpOwogfQogCiB2b2lkIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNz
aW9uRGVjaXNpb24odWludDY0X3QgZ2VvbG9jYXRpb25JRCwgYm9vbCBhbGxvd2VkKQogewotICAg
IEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IG1faWRUb0dlb2xvY2F0aW9uTWFwLnRha2UoZ2Vv
bG9jYXRpb25JRCk7Ci0gICAgaWYgKCFnZW9sb2NhdGlvbikKKyAgICBJRFRvR2VvbG9jYXRpb25N
YXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvR2VvbG9jYXRpb25NYXAuZmluZChnZW9sb2NhdGlvbklE
KTsKKyAgICBpZiAoaXQgPT0gbV9pZFRvR2VvbG9jYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2dlb2xvY2F0aW9uVG9JRE1hcC5yZW1vdmUoZ2VvbG9jYXRpb24pOwogCisg
ICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uID0gaXQtPnZhbHVlOwogICAgIGdlb2xvY2F0aW9u
LT5zZXRJc0FsbG93ZWQoYWxsb3dlZCk7CisKKyAgICBtX2lkVG9HZW9sb2NhdGlvbk1hcC5yZW1v
dmUoaXQpOworICAgIG1fZ2VvbG9jYXRpb25Ub0lETWFwLnJlbW92ZShnZW9sb2NhdGlvbik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXgg
MjA1NGRmOS4uZWZjZjE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NjQsMjIg
Kzc2NCwzMiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpmcmFtZURpZEZpbmlzaExvYWRpbmcodWlu
dDY0X3QgcmVxdWVzdElEKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAgICAgCi0gICAg
YXV0byBub3RpZmljYXRpb24gPSBtX3BlbmRpbmdVUkxOb3RpZmljYXRpb25zLnRha2UocmVxdWVz
dElEKTsKLSAgICBpZiAobm90aWZpY2F0aW9uLmZpcnN0LmlzRW1wdHkoKSkKKyAgICBQZW5kaW5n
VVJMTm90aWZ5TWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1VSTE5vdGlmaWNhdGlvbnMuZmlu
ZChyZXF1ZXN0SUQpOworICAgIGlmIChpdCA9PSBtX3BlbmRpbmdVUkxOb3RpZmljYXRpb25zLmVu
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBOUFBfVVJMTm90aWZ5KG5vdGlmaWNhdGlvbi5m
aXJzdC51dGY4KCkuZGF0YSgpLCBOUFJFU19ET05FLCBub3RpZmljYXRpb24uc2Vjb25kKTsKKyAg
ICBTdHJpbmcgdXJsID0gaXQtPnZhbHVlLmZpcnN0OworICAgIHZvaWQqIG5vdGlmaWNhdGlvbkRh
dGEgPSBpdC0+dmFsdWUuc2Vjb25kOworCisgICAgbV9wZW5kaW5nVVJMTm90aWZpY2F0aW9ucy5y
ZW1vdmUoaXQpOworICAgIAorICAgIE5QUF9VUkxOb3RpZnkodXJsLnV0ZjgoKS5kYXRhKCksIE5Q
UkVTX0RPTkUsIG5vdGlmaWNhdGlvbkRhdGEpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpm
cmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkKIHsKICAg
ICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIAotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9w
ZW5kaW5nVVJMTm90aWZpY2F0aW9ucy50YWtlKHJlcXVlc3RJRCk7Ci0gICAgaWYgKG5vdGlmaWNh
dGlvbi5maXJzdC5pc051bGwoKSkKKyAgICBQZW5kaW5nVVJMTm90aWZ5TWFwOjppdGVyYXRvciBp
dCA9IG1fcGVuZGluZ1VSTE5vdGlmaWNhdGlvbnMuZmluZChyZXF1ZXN0SUQpOworICAgIGlmIChp
dCA9PSBtX3BlbmRpbmdVUkxOb3RpZmljYXRpb25zLmVuZCgpKQogICAgICAgICByZXR1cm47CisK
KyAgICBTdHJpbmcgdXJsID0gaXQtPnZhbHVlLmZpcnN0OworICAgIHZvaWQqIG5vdGlmaWNhdGlv
bkRhdGEgPSBpdC0+dmFsdWUuc2Vjb25kOworCisgICAgbV9wZW5kaW5nVVJMTm90aWZpY2F0aW9u
cy5yZW1vdmUoaXQpOwogICAgIAotICAgIE5QUF9VUkxOb3RpZnkobm90aWZpY2F0aW9uLmZpcnN0
LnV0ZjgoKS5kYXRhKCksIHdhc0NhbmNlbGxlZCA/IE5QUkVTX1VTRVJfQlJFQUsgOiBOUFJFU19O
RVRXT1JLX0VSUiwgbm90aWZpY2F0aW9uLnNlY29uZCk7CisgICAgTlBQX1VSTE5vdGlmeSh1cmwu
dXRmOCgpLmRhdGEoKSwgd2FzQ2FuY2VsbGVkID8gTlBSRVNfVVNFUl9CUkVBSyA6IE5QUkVTX05F
VFdPUktfRVJSLCBub3RpZmljYXRpb25EYXRhKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6
ZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBy
ZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5
ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAppbmRleCAxNDNjN2MzLi5kOTE5YzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTEwMSw2ICsxMDEsMTAgQEAg
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IExheWVyVHJlZUhvc3QoV2ViUGFnZSopOwogCiAgICAg
V2ViUGFnZSogbV93ZWJQYWdlOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAg
IGJvb2wgbV93YWl0aW5nRm9yVUlQcm9jZXNzOworI2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBM
YXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKaW5kZXggM2Y5MWNlMS4uYzk3MWUwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwCkBAIC0xMjYsMTIgKzEyNiwxNCBAQCB1aW50NjRfdCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6aWRGb3JJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogCiB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKIHsKLSAgICBSZWZQdHI8
SGlzdG9yeUl0ZW0+IGl0ZW0gPSBpZFRvSGlzdG9yeUl0ZW1NYXAoKS50YWtlKGl0ZW1JRCk7Ci0g
ICAgaWYgKCFpdGVtKQorICAgIElEVG9IaXN0b3J5SXRlbU1hcDo6aXRlcmF0b3IgaXQgPSBpZFRv
SGlzdG9yeUl0ZW1NYXAoKS5maW5kKGl0ZW1JRCk7CisgICAgaWYgKGl0ID09IGlkVG9IaXN0b3J5
SXRlbU1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIHBhZ2VDYWNo
ZSgpLT5yZW1vdmUoaXRlbS5nZXQoKSk7Ci0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCkucmVtb3Zl
KGl0ZW0pOworICAgIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5yZW1vdmUoaXQtPnZhbHVlLmdldCgp
KTsKKworICAgIGhpc3RvcnlJdGVtVG9JRE1hcCgpLnJlbW92ZShpdC0+dmFsdWUpOworICAgIGlk
VG9IaXN0b3J5SXRlbU1hcCgpLnJlbW92ZShpdCk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eShXZWJQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNhZDRjNDAuLmFjYTE4
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTM5NTcsMjAgKzM5NTcsMjIgQEAgdm9pZCBXZWJQYWdlOjphZGRUZXh0Q2hlY2tpbmdSZXF1
ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCwgUGFzc1JlZlB0cjxUZXh0Q2hlY2tpbmcKIAogdm9pZCBX
ZWJQYWdlOjpkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0KQogewotICAgIFJlZlB0cjxUZXh0Q2hl
Y2tpbmdSZXF1ZXN0PiByZXF1ZXN0ID0gbV9wZW5kaW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC50
YWtlKHJlcXVlc3RJRCk7CisgICAgVGV4dENoZWNraW5nUmVxdWVzdCogcmVxdWVzdCA9IG1fcGVu
ZGluZ1RleHRDaGVja2luZ1JlcXVlc3RNYXAuZ2V0KHJlcXVlc3RJRCk7CiAgICAgaWYgKCFyZXF1
ZXN0KQogICAgICAgICByZXR1cm47CiAKICAgICByZXF1ZXN0LT5kaWRTdWNjZWVkKHJlc3VsdCk7
CisgICAgbV9wZW5kaW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVz
dElEKQogewotICAgIFJlZlB0cjxUZXh0Q2hlY2tpbmdSZXF1ZXN0PiByZXF1ZXN0ID0gbV9wZW5k
aW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCk7CisgICAgVGV4dENoZWNr
aW5nUmVxdWVzdCogcmVxdWVzdCA9IG1fcGVuZGluZ1RleHRDaGVja2luZ1JlcXVlc3RNYXAuZ2V0
KHJlcXVlc3RJRCk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBy
ZXF1ZXN0LT5kaWRDYW5jZWwoKTsKKyAgICBtX3BlbmRpbmdUZXh0Q2hlY2tpbmdSZXF1ZXN0TWFw
LnJlbW92ZShyZXF1ZXN0SUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2Vi
RnJhbWUqIGZyYW1lKQpAQCAtNDE4MCw5ICs0MTgyLDEwIEBAIHVuc2lnbmVkIFdlYlBhZ2U6OmV4
dGVuZEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24oKQogCiB2b2lkIFdlYlBhZ2U6OnN0
b3BFeHRlbmRpbmdJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKHVuc2lnbmVkIHRva2Vu
KQogewotICAgIGlmICghbV9hY3RpdmVSZW5kZXJpbmdTdXBwcmVzc2lvblRva2Vucy5yZW1vdmUo
dG9rZW4pKQorICAgIGlmICghbV9hY3RpdmVSZW5kZXJpbmdTdXBwcmVzc2lvblRva2Vucy5jb250
YWlucyh0b2tlbikpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fYWN0aXZlUmVuZGVyaW5nU3Vw
cHJlc3Npb25Ub2tlbnMucmVtb3ZlKHRva2VuKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZp
ZXcoKS0+c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVudCghc2hvdWxkRXh0ZW5kSW5jcmVt
ZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvbigpKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdC5tbQppbmRleCAyN2JkZWFlLi5lYTUyYjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBpZiAo
dG9JbXBsKHJlc3VsdC5nZXQoKSktPnR5cGUoKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKQotICAg
ICAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKFdLU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOworICAgICAgICByZXR1
cm4gSGFyZEF1dG9yZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIChXS1N0cmluZ1JlZilyZXN1bHQuZ2V0KCkpKTsKICAgICBlbHNlIGlmICh0b0ltcGwocmVz
dWx0LmdldCgpKS0+dHlwZSgpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKQogICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOldLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0
PFdLQm9vbGVhblJlZj4ocmVzdWx0LmdldCgpKSldOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzY5NDc1My4uZWNhOGFmYiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwxNDUgKzEsMyBA
QAotMjAxMy0wOS0wMyAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICBbQVhdW0FUS10gQWRkZWQgc3VwcG9ydCBmb3Igc29ydCBhbmQgaGVscCBhdHRyaWJ1
dGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0
NTYKLQotICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KLQotICAgICAgICBBZGRl
ZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uIHRvIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBU
ZXh0IGFuZCBzdXBwb3J0IGZvcgotICAgICAgICBhcmlhLXNvcnQgYXR0cmlidXRlLgotCi0gICAg
ICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgot
ICAgICAgICAoY29yZUF0dHJpYnV0ZVRvQXRrQXR0cmlidXRlKToKLSAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cDoKLSAgICAgICAgKFdUUjo6Y29yZUF0dHJpYnV0ZVRvQXRrQXR0cmlidXRlKToKLSAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQpOgotCi0yMDEzLTA5LTAzICBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgotCi0gICAgICAg
IFtRdF1bV0sxXSBQYWdlVmlzaWJpbGl0eSB0ZXN0cyBhcmUgZmxha3kKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQxOAotCi0gICAgICAgIFJldmll
d2VkIGJ5IEpvY2VseW4gVHVyY290dGUuCi0KLSAgICAgICAgSW1wbGVtZW50IHJlc2V0UGFnZVZp
c2liaWxpdHkgc28gd2UgY2FuIHJlc2V0IHZpc2liaWxpdHkgd2l0aG91dAotICAgICAgICBlbWl0
aW5nIHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlIGV2ZW50cy4KLQotICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHA6Ci0gICAgICAgIChUZXN0UnVubmVyOjpyZXNldFBh
Z2VWaXNpYmlsaXR5KToKLQotMjAxMy0wOS0wMyAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9o
QGNvbGxhYm9yYS5jb20+Ci0KLSAgICAgICAgW0dUS10gbGlic291cCB1cHZlcnNpb24gdG8gZml4
IGEgZ3N0cmVhbWVyIGlzc3VlLCBidWcxMTUzNTQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDYxMwotCi0gICAgICAgIFJldmlld2VkIGJ5IFBoaWxp
cHBlIE5vcm1hbmQuCi0KLSAgICAgICAgVXAgdmVyc2lvbiBvZiBsaWJzb3VwIHRvIDIuNDMuOTAu
IEJ1dCB0aGUgZXhhY3QgdmVyc2lvbiB3aGljaCB3ZSdsbCB1c2UgaXMgbm90IDIuNDMuOTAuCi0g
ICAgICAgIFRvIGZpeCBidWcxMTUzNTQsIHdlIG5lZWQgdGhlIEFuZHJlJ3MgcGF0Y2ggZm9yIGxp
YnNvdXAsIGJ1dCB0aGUgbGFzdGVzdCByZWxlYXNlCi0gICAgICAgIGRvZXMgbm90IGNvbnRhaW4g
aXQuIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MDYzMzgKLSAg
ICAgICAgRm9yIHRoZSByZWFzb24sIHdlJ2xsIHVzZSBsaWJzb3VwIGdpdCByZXBvIGRpcmVjdGx5
IGZvciBhIHdoaWxlIHVudGlsIHRoZSBuZXh0Ci0gICAgICAgIGxpYnNvdXAgcmVsZWFzZS4KLQot
ICAgICAgICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6Ci0KLTIwMTMtMDktMDIgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgotCi0gICAgICAgIFtNYWNdIE5vIG5lZWQgZm9yIEhhcmRBdXRv
cmVsZWFzZSwgd2hpY2ggaXMgc2FtZSBhcyBDRkJyaWRnaW5nUmVsZWFzZQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTY5Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5keSBFc3Rlcy4KLQotICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbToKLSAgICAgICAgKGR1bXApOiBVc2UgQ0ZCcmlkZ2luZ1JlbGVhc2UuCi0K
LTIwMTMtMDktMDIgIEFudG9uIE9iemhpcm92ICA8YS5vYnpoaXJvdkBzYW1zdW5nLmNvbT4KLQot
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvOTgzNTA+IFtHVEtdIGFjY2Vzc2liaWxpdHkv
YXJpYS1pbnZhbGlkLmh0bWwgdGltZXMgb3V0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyaW8g
U2FuY2hleiBQcmFkYS4KLQotICAgICAgICBBZGRlZCBmZXcgbWFwcGluZ3MgaW4gRHVtcFJlbmRl
clRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIgZm9yIGFyaWEtaW52YWxpZCBpbiBvcmRlciB0byBn
ZXQgdGhlIHRlc3RzIHJ1biBwcm9wZXJseS4KLQotICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0
ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcDoKLSAgICAgICAgKGF4T2JqZWN0RXZlbnRM
aXN0ZW5lcik6Ci0gICAgICAgIEFkZGVkIG1hcHBpbmcgZm9yIGludmFsaWQtZW50cnkgZXZlbnQg
cGFyYW1ldGVyLgotICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcDoKLSAgICAgICAgKGNvcmVBdHRyaWJ1dGVUb0F0a0F0dHJpYnV0ZSk6Ci0g
ICAgICAgIEFkZGVkIG1hcHBpbmcgdG8gYXJpYS1pbnZhbGlkLgotICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgotICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3Bw
OgotICAgICAgICAoV1RSOjpjb3JlQXR0cmlidXRlVG9BdGtBdHRyaWJ1dGUpOgotICAgICAgICBB
ZGRlZCBtYXBwaW5nIHRvIGFyaWEtaW52YWxpZC4KLQotMjAxMy0wOS0wMiAgTmljayBEaWVnbyBZ
YW1hbmUgIDxuaWNrLnlhbWFuZUBvcGVuYm9zc2Eub3JnPgotCi0gICAgICAgIFNhdmUgbWQ1IGNv
cnJlY3RseSB3aGVuIGpoYnVpbGRQYXRoIGRvZXNuJ3QgZXhpc3QgeWV0Ci0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1NDgKLQotICAgICAgICBSZXZp
ZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAgICAgICAgQWZ0ZXIgcjE1MjYwNSwg
TWQ1IGZvciBqaGJ1aWxkIGZpbGVzIGFyZSBzYXZlZCBiZWZvcmUgdGhlIHVwZGF0ZQotICAgICAg
ICBwcm9jZXNzLCB0aGlzIHByZXZlbnRzIHRoZSBzY3JpcHQgdG8gcmVzdGFydCB1cGRhdGUgZnJv
bSBzY3JhdGNoCi0gICAgICAgIHdoZW4gaW5pdGlhbCBjaGVja291dHMgZmFpbC4gSG93ZXZlciBp
dCBjYXVzZXMgYW4gaXNzdWUgd2hlbiBidWlsZGRpcgotICAgICAgICAob3IgYnVpbGRkaXIvRGVw
ZW5kZW5jaWVzKSBkb2Vzbid0IGV4aXN0IHlldC4gSW4gdGhhdCBjYXNlIHRoZQotICAgICAgICBz
YXZlSmhidWlsZE1kNSBmdW5jdGlvbiBmYWlscyB0byBjcmVhdGUgbWQ1IGZpbGVzLgotICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgYSBjaGVja2luZyBmb3IgdGhlIGpoYnVpbGRQYXRoIGFuZCBjcmVh
dGVzIGl0IGlmCi0gICAgICAgIG5lY2Vzc2FyeSBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gdGhlIG1k
NSBmaWxlcy4KLQotICAgICAgICAqIFNjcmlwdHMvdXBkYXRlLXdlYmtpdC1saWJzLWpoYnVpbGQ6
Ci0gICAgICAgIChzYXZlSmhidWlsZE1kNSk6Ci0KLTIwMTMtMDktMDIgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLiBN
b3ZlIG15c2VsZiB0byB0aGUgcmV2aWV3ZXJzIGxpc3QuCi0KLSAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb246Ci0KLTIwMTMtMDktMDEgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0KLSAgICAgICAgW1dLMl1bTWFjXSBE
cmFnIGFuZCBkcm9wIHRlc3RzIGludGVyZmVyZSB3aXRoIHVzZXIncyBVSQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTM4Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KLQotICAgICAgICBUaGlzIG1ha2VzIHJ1bm5pbmcgV2Vi
S2l0MiByZWdyZXNzaW9uIHRlc3RzIGxvY2FsbHkgbW9yZSB2aWFibGUuIFRoZSBwYXRjaCBkb2Vz
bid0Ci0gICAgICAgIGZpeCBkcmFnIGFuZCBkcm9wIHRlc3RzIHRvIHdvcmsgYXMgZXhwZWN0ZWQs
IEkgcG9zdGVkIHNvbWUgdGhvdWdodCBhYm91dCB0aGF0IGluCi0gICAgICAgIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg1NTI+LgotCi0gICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6Ci0gICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OnBvc2l0aW9uKToKLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmg6Ci0gICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpldmVudFNlbmRlclByb3h5KToK
LSAgICAgICAgRXhwb3NlIGEgd2F5IHRvIGdldCBjdXJyZW50IG1vdXNlIHBvc2l0aW9uIGZyb20g
YW55d2hlcmUgaW4gV0tUUiBjb2RlLgotCi0gICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIG5ldyBmaWxlcy4K
LQotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06IChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXApOgotICAgICAgICBDb3BpZWQgYSBGSVhNRSBj
b21tZW50IGZyb20gRHVtcFJlbmRlclRyZWUuCi0KLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06Ci0gICAgICAgICgtW1Rlc3RSdW5uZXJXS1ZpZXcg
ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlkZUJhY2s6XSk6
Ci0gICAgICAgIE92ZXJyaWRlIGRyYWcgaW5pdGlhdGlvbiwgdXNpbmcgYSBjdXN0b20gTlNEcmFn
Z2luZ0luZm8gaW1wbGVtZW50YXRpb24uCi0KLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21h
Yy9UZXN0Q29udHJvbGxlck1hYy5tbTogKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5p
dGlhbGl6ZSk6Ci0gICAgICAgIFJlcGxhY2UgTlNFdmVudCB3aXRoIGEgY3VzdG9tIGNsYXNzLgot
Ci0gICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5n
SW5mby5oOiBBZGRlZC4KLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0
UnVubmVyRHJhZ2dpbmdJbmZvLm1tOiBBZGRlZC4KLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9XZWJLaXRUZXN0UnVubmVyRXZlbnQuaDogQWRkZWQuCi0gICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckV2ZW50Lm1tOiBBZGRlZC4KLSAgICAgICAgTGFy
Z2VseSBhIGNvcHkgb2YgRHVtcFJlbmRlclRyZWUgY2xhc3NlcywgbW9kaWZpZWQgdG8gbm90IHVz
ZSBnbG9iYWwgdmFyaWFibGVzLgotICAgICAgICBXZSBzaG91bGQgY29uc2lkZXIgbWFraW5nIHRo
ZXNlIHZhcmlhYmxlcyBzdGF0aWMgaW4gRXZlbnRTZW5kZXJQcm94eSB0aG91Z2gsIGFzCi0gICAg
ICAgIGl0J3Mgc3RyYW5nZSB0aGF0IG1vdXNlIHN0YXRlIGluIFdLVFIgaXMgcmVzZXQgYmV0d2Vl
biB0ZXN0cyB3aXRob3V0IFdlYktpdCBldmVyCi0gICAgICAgIGJlaW5nIHRvbGQgYWJvdXQgdGhh
dC4KLQotMjAxMy0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KLQot
ICAgICAgICBbV2luZG93c10gVW5yZXZpZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgKiB3aW4v
QXNzZW1ibGVCdWlsZExvZ3MvQXNzZW1ibGVMb2dzLmNtZDogTWFrZSBzdXJlIFdlYkluc3BlY3Rv
clVJIGJ1aWxkIG91dHB1dCBpcyByZXBvcnRlZAotICAgICAgICBmcm9tIHRoZSBidWlsZCBtYWNo
aW5lcy4KLQogMjAxMy0wOC0zMCAgR2Fib3IgQWJyYWhhbSAgPGFicmhtQGluZi51LXN6ZWdlZC5o
dT4KIAogICAgICAgICBbUXRdIFJlbW92ZSBxdC01LjAtd2syIGZyb20gdGhlIGJhc2VsaW5lIHNl
YXJjaCBwYXRocyBiZWNhdXNlIHRoZSBtaWdyYXRpb24gb2YgZXhwZWN0YXRpb25zIHRvIHF0LXdr
MiBpcyBkb25lLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlDYWxsYmFja3NBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2li
aWxpdHlDYWxsYmFja3NBdGsuY3BwCmluZGV4IDM5ZTBiZDQuLjMzNjI1ZGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5j
cHAKQEAgLTEwMSw4ICsxMDEsNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gYXhPYmplY3RFdmVudExpc3Rl
bmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCAqc2lnbmFsSGludCwgZ3VpbnQgbgogICAgICAgICBz
aWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
JnBhcmFtVmFsdWVzWzJdKSkpOwogICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9z
dHJpbmcoJnBhcmFtVmFsdWVzWzFdKSwgImNoZWNrZWQiKSkKICAgICAgICAgICAgIG5vdGlmaWNh
dGlvbk5hbWUgPSAiQ2hlY2tlZFN0YXRlQ2hhbmdlZCI7Ci0gICAgICAgIGVsc2UgaWYgKCFnX3N0
cmNtcDAoZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSksICJpbnZhbGlkLWVudHJ5
IikpCi0gICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5n
ZWQiOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwg
ImZvY3VzLWV2ZW50IikpIHsKICAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3Vz
LWV2ZW50IikpOwogICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIs
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4
IDQxYmM5NjkuLmU3ZGRiMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTQ4LDE2ICs0OCwxMCBAQCBzdGF0
aWMgU3RyaW5nIGNvcmVBdHRyaWJ1dGVUb0F0a0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhhdHRyaWJ1dGUsIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAKICAgICBTdHJpbmcgYXR0cmlidXRlU3RyaW5nID0gU3RyaW5nOjpmcm9t
VVRGOChidWZmZXIuZ2V0KCkpOwotICAgIGlmIChhdHRyaWJ1dGVTdHJpbmcgPT0gIkFYSW52YWxp
ZCIpCi0gICAgICAgIHJldHVybiAiYXJpYS1pbnZhbGlkIjsKLQogICAgIGlmIChhdHRyaWJ1dGVT
dHJpbmcgPT0gIkFYUGxhY2Vob2xkZXJWYWx1ZSIpCiAgICAgICAgIHJldHVybiAicGxhY2Vob2xk
ZXItdGV4dCI7CiAKLSAgICBpZiAoYXR0cmlidXRlU3RyaW5nID09ICJBWFNvcnREaXJlY3Rpb24i
KQotICAgICAgICByZXR1cm4gImFyaWEtc29ydCI7Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Cisg
ICAgcmV0dXJuICIiOwogfQogCiBzdGF0aWMgU3RyaW5nIGdldEF0dHJpYnV0ZVNldFZhbHVlRm9y
SWQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25zdCBjaGFyKiBpZCkKQEAgLTg5MywxMyArODg3
LDYgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAogICAgIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IGdl
dEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1lbnQpLCBhdGtBdHRyaWJ1
dGVOYW1lLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgLy8gSW4gY2FzZSBvZiAnYXJpYS1pbnZhbGlk
JyB3aGVuIHRoZSBhdHRyaWJ1dGUgZW1wdHkgb3IgaGFzICJmYWxzZSIgZm9yIEFUSwotICAgIC8v
IGFjY29yZGluZyB0byBodHRwOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS1pbXBsZW1lbnRhdGlv
bi8jbWFwcGluZyBhdHRyaWJ1dGUKLSAgICAvLyBpcyBub3QgbWFwcGVkIGJ1dCBsYXlvdXQgdGVz
dHMgd2lsbCBleHBlY3QgJ2ZhbHNlJy4KLSAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgp
ICYmIGF0a0F0dHJpYnV0ZU5hbWUgPT0gImFyaWEtaW52YWxpZCIpCi0gICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZmFsc2UiKTsKLQogICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVWYWx1ZS51dGY4KCkuZGF0YSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDdh
YTYxNjguLjQ1MGIyMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KQEAgLTExOTUsMTEgKzExOTUsMTEgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgICAgIHJl
c3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi9wZGYiOwogICAgICAgICB9IGVsc2UgaWYgKGdU
ZXN0UnVubmVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hp
dmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gd2ViQXJjaGl2ZV07Ci0g
ICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEoKENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOworICAg
ICAgICAgICAgcmVzdWx0U3RyaW5nID0gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZVhNTFN0cmluZ0Zy
b21XZWJBcmNoaXZlRGF0YSgoQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CiAgICAgICAg
ICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAg
ICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7CiAg
ICAgICAgICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUgZGF0YVNvdXJj
ZV0gd2ViQXJjaGl2ZV07Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVs
ZWFzZShjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKENGRGF0YVJlZilbd2ViQXJj
aGl2ZSBkYXRhXSkpOworICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gSGFyZEF1dG9yZWxlYXNl
KGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZl
IGRhdGFdKSk7CiAgICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13
ZWJhcmNoaXZlIjsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBb
bWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb25Gb3JQcmludGluZzpn
VGVzdFJ1bm5lci0+aXNQcmludGluZygpXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVu
bmVyUXQuY3BwCmluZGV4IDc5NGMwMGYuLmMyZTg2NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvVGVzdFJ1bm5lclF0LmNwcApAQCAtOTUwLDcgKzk1MCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwg
SlNTdHJpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXRQYWdlVmlzaWJpbGl0eSgpCiB7Ci0gICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0UGFnZVZpc2liaWxpdHkoRHVtcFJlbmRlclRy
ZWU6Omluc3RhbmNlKCktPnBhZ2VBZGFwdGVyKCkpOworICAgIC8vIE5vIG5lZWQgdG8gaW1wbGVt
ZW50IGl0IGJlY2F1c2UgdGhlIHZpc2liaWxpdHkgc3RhdGUgaXMgY29ycmVjdGx5IGluaXRpYWxp
c2VkIHdoZW4gdGhlIHBhZ2UgaXMgY3JlYXRlZC4KIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRQ
YWdlVmlzaWJpbGl0eShjb25zdCBjaGFyKiB2aXNpYmlsaXR5KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy91cGRhdGUtd2Via2l0LWxpYnMtamhidWlsZCBiL1Rvb2xzL1NjcmlwdHMvdXBkYXRl
LXdlYmtpdC1saWJzLWpoYnVpbGQKaW5kZXggOGQ0YzU3Mi4uNzRkZDdiNiAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LWxpYnMtamhidWlsZAorKysgYi9Ub29scy9TY3Jp
cHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCkBAIC04MiwxMSArODIsOSBAQCBzdWIgamhi
dWlsZENvbmZpZ3VyYXRpb25DaGFuZ2VkKCkKIAogc3ViIHNhdmVKaGJ1aWxkTWQ1KCkgewogICAg
ICMgU2F2ZSBtZDVzdW0gZm9yIGpoYnVpbGQtcmVsYXRlZCBmaWxlcy5zYXZlSmhidWlsZE1kNSgp
OwotICAgIG15ICRqaGJ1aWxkUGF0aCA9IGdldEpoYnVpbGRQYXRoKCk7Ci0gICAgKC1kICRqaGJ1
aWxkUGF0aCkgfHwgbWtwYXRoICRqaGJ1aWxkUGF0aDsKICAgICBmb3JlYWNoIG15ICRmaWxlIChx
dyhqaGJ1aWxkcmMgamhidWlsZC5tb2R1bGVzKSkgewogICAgICAgICBteSAkc291cmNlID0gam9p
bignLycsIHNvdXJjZURpcigpLCAiVG9vbHMiLCAkcGxhdGZvcm0sICRmaWxlKTsKLSAgICAgICAg
bXkgJGRlc3RpbmF0aW9uID0gam9pbignLycsICRqaGJ1aWxkUGF0aCwgJGZpbGUpOworICAgICAg
ICBteSAkZGVzdGluYXRpb24gPSBqb2luKCcvJywgZ2V0SmhidWlsZFBhdGgoKSwgJGZpbGUpOwog
ICAgICAgICBvcGVuKFNVTSwgIj4kZGVzdGluYXRpb24iIC4gIi5tZDVzdW0iKTsKICAgICAgICAg
cHJpbnQgU1VNIGdldE1ENUhhc2hGb3JGaWxlKCRzb3VyY2UpOwogICAgICAgICBjbG9zZShTVU0p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRy
aWJ1dG9ycy5qc29uIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRy
aWJ1dG9ycy5qc29uCmluZGV4IDVkMDljNDQuLjVlNmEwNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0b3JzLmpzb24KQEAgLTE1
NjQsNiArMTU2NCwxNiBAQAogICAgICAgICAgICAgImJ1bGFjaEBjaHJvbWl1bS5vcmciCiAgICAg
ICAgICBdCiAgICAgICB9LAorICAgICAgIk1hcmlvIFNhbmNoZXogUHJhZGEiIDogeworICAgICAg
ICAgImVtYWlscyIgOiBbCisgICAgICAgICAgICAibWFyaW9Ad2Via2l0Lm9yZyIsCisgICAgICAg
ICAgICAibWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20iCisgICAgICAgICBdLAorICAgICAgICAgImV4
cGVydGlzZSIgOiAiV2ViS2l0R1RLKywgYTExeSwgRXBpcGhhbnkvV2ViS2l0IENvbnRyaWJ1dG9y
IiwKKyAgICAgICAgICJuaWNrcyIgOiBbCisgICAgICAgICAgICAibXNhbmNoZXoiCisgICAgICAg
ICBdCisgICAgICB9LAogICAgICAgIk1hcmsgTGFtIiA6IHsKICAgICAgICAgICJlbWFpbHMiIDog
WwogICAgICAgICAgICAgIm1hcmsubGFtQGFwcGxlLmNvbSIKQEAgLTM4ODksMTYgKzM4OTksNiBA
QAogICAgICAgICAgICAgIm90aGVybWFjaWVqIgogICAgICAgICAgXQogICAgICAgfSwKLSAgICAg
ICJNYXJpbyBTYW5jaGV6IFByYWRhIiA6IHsKLSAgICAgICAgICJlbWFpbHMiIDogWwotICAgICAg
ICAgICAgIm1hcmlvQHdlYmtpdC5vcmciLAotICAgICAgICAgICAgIm1hcmlvLnByYWRhQHNhbXN1
bmcuY29tIgotICAgICAgICAgXSwKLSAgICAgICAgICJleHBlcnRpc2UiIDogIldlYktpdEdUSyss
IEFjY2Vzc2liaWxpdHksIFdlYktpdDIsIEVwaXBoYW55L1dlYktpdCBDb250cmlidXRvciIsCi0g
ICAgICAgICAibmlja3MiIDogWwotICAgICAgICAgICAgIm1zYW5jaGV6IgotICAgICAgICAgXQot
ICAgICAgfSwKICAgICAgICJNYXJrIEhhaG5lbmJlcmciIDogewogICAgICAgICAgImVtYWlscyIg
OiBbCiAgICAgICAgICAgICAibWhhaG5lbmJlcmdAYXBwbGUuY29tIgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAppbmRleCBlOTZkNDJmLi5iYjgxNGE4IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaApAQCAtMjcsMTUgKzI3LDE1IEBA
CiAjaWZuZGVmIEV2ZW50U2VuZGVyUHJveHlfaAogI2RlZmluZSBFdmVudFNlbmRlclByb3h5X2gK
IAotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotCiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8
UUV2ZW50PgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2lu
Y2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNlbGlmIFBMQVRGT1JN
KEVGTCkKICNpbmNsdWRlIDxXZWJLaXQyL0VXZWJLaXQyLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdUUiB7CkBAIC01Myw4ICs1Myw2IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2
ZW50U2VuZGVyUHJveHkoKTsKIAotICAgIFdLUG9pbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uOyB9Ci0KICAgICB2b2lkIG1vdXNlRG93bih1bnNpZ25lZCBidXR0b24sIFdL
RXZlbnRNb2RpZmllcnMpOwogICAgIHZvaWQgbW91c2VVcCh1bnNpZ25lZCBidXR0b24sIFdLRXZl
bnRNb2RpZmllcnMpOwogICAgIHZvaWQgbW91c2VNb3ZlVG8oZG91YmxlIHgsIGRvdWJsZSB5KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMjgxMzgw
MC4uYTQ0YWQ0NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKQEAgLTUyLDE2ICs1Miw3IEBAIHN0YXRpYyBTdHJpbmcgY29yZUF0dHJpYnV0ZVRvQXRrQXR0
cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5n
KGF0dHJpYnV0ZSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgIFN0cmluZyBhdHRy
aWJ1dGVTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7Ci0gICAgaWYgKGF0
dHJpYnV0ZVN0cmluZyA9PSAiQVhJbnZhbGlkIikKLSAgICAgICAgcmV0dXJuICJhcmlhLWludmFs
aWQiOwotCi0gICAgaWYgKGF0dHJpYnV0ZVN0cmluZyA9PSAiQVhQbGFjZWhvbGRlclZhbHVlIikK
LSAgICAgICAgcmV0dXJuICJwbGFjZWhvbGRlci10ZXh0IjsKLSAgICAKLSAgICBpZiAoYXR0cmli
dXRlU3RyaW5nID09ICJBWFNvcnREaXJlY3Rpb24iKQotICAgICAgICByZXR1cm4gImFyaWEtc29y
dCI7Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIGF0dHJpYnV0ZVN0cmluZyA9
PSAiQVhQbGFjZWhvbGRlclZhbHVlIiA/ICJwbGFjZWhvbGRlci10ZXh0IiA6IFN0cmluZygpOwog
fQogCiBzdGF0aWMgU3RyaW5nIGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQXRrT2JqZWN0KiBh
Y2Nlc3NpYmxlLCBjb25zdCBjaGFyKiBpZCkKQEAgLTY5NSwxMiArNjg2LDEwIEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiAKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7Ci0KLSAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUgPSBnZXRBdHRyaWJ1dGVTZXRWYWx1ZUZv
cklkKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSwgImFyaWEtaGVscCIpOwotICAgIEdPd25Q
dHI8Y2hhcj4gYXhWYWx1ZShnX3N0cmR1cF9wcmludGYoIkFYSGVscDogJXMiLCBhdHRyaWJ1dGVW
YWx1ZS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGF4VmFsdWUuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICAvLyBX
ZSBuZWVkIGEgd2F5IHRvIGNhbGwgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRl
eHQoKQorICAgIC8vIGZyb20gaGVyZSwgcHJvYmFibHkgYSBuZXcgaGVscGVyIGNsYXNzIGluIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQuCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA3MDEwZWEyLi42ODZm
MjhlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC02Myw4ICs2
Myw2IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdlYlZpZXcqIG1haW5XZWJWaWV3KCkgeyByZXR1
cm4gbV9tYWluV2ViVmlldy5nZXQoKTsgfQogICAgIFdLQ29udGV4dFJlZiBjb250ZXh0KCkgeyBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBFdmVudFNlbmRlclByb3h5KiBldmVudFNl
bmRlclByb3h5KCkgeyByZXR1cm4gbV9ldmVudFNlbmRlclByb3h5LmdldCgpOyB9Ci0KICAgICB2
b2lkIGVuc3VyZVZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpOwog
ICAgIAogICAgIC8vIFJ1bnMgdGhlIHJ1biBsb29wIHVudGlsIGBkb25lYCBpcyB0cnVlIG9yIHRo
ZSB0aW1lb3V0IGVsYXBzZXMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQyMzRhMmUuLmRjNTMyY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04NSw4ICs4NSw2IEBACiAJCUJDRDdEMkY4MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52b2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0Q3RDJGNzExOTIxMjc4MDA2REI3RUUgLyogVGVzdEludm9jYXRpb24uY3BwICovOyB9OwogCQlC
Q0RBMkI5QTExOTEwNTFGMDBDM0JDNDcgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQTJCOTkxMTkx
MDUxRjAwQzNCQzQ3IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJQzBDRTcy
MEIxMjQ3QzkzMzAwQkMwRUM0IC8qIFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMENFNzIwQTEyNDdDOTMzMDBCQzBFQzQgLyog
VGVzdFJ1bm5lck1hYy5tbSAqLzsgfTsKLQkJRTEzMkFBM0ExN0NENUYxMDAwNjExREYwIC8qIFdl
YktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTMyQUEzODE3Q0Q1RjEwMDA2MTFERjAgLyogV2ViS2l0VGVz
dFJ1bm5lckRyYWdnaW5nSW5mby5tbSAqLzsgfTsKLQkJRTEzMkFBM0QxN0NFNzc2RjAwNjExREYw
IC8qIFdlYktpdFRlc3RSdW5uZXJFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzJBQTNCMTdDRTc3NkYwMDYxMURGMCAvKiBXZWJLaXRUZXN0
UnVubmVyRXZlbnQubW0gKi87IH07CiAJCUUxQkE2NzFFMTc0MkRBNkEwMEMyMDI1MSAvKiBDYXJi
b24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFCQTY3MUQxNzQyREE1QTAwQzIwMjUxIC8qIENhcmJvbi5mcmFtZXdvcmsgKi87IH07
CiAJCUUxQzY0MkMzMTdDQkNDNzMwMEQ2NkEzQyAvKiBQb3NlQXNDbGFzcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzY0MkMxMTdDQkNDNzMwMEQ2
NkEzQyAvKiBQb3NlQXNDbGFzcy5tbSAqLzsgfTsKIAkJRTFDNjQyQzYxN0NCQ0Q0QzAwRDY2QTND
IC8qIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNjQyQzQxN0NCQ0Q0QzAwRDY2QTNDIC8qIFdlYktp
dFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tICovOyB9OwpAQCAtMjIzLDEwICsyMjEsNiBAQAogCQlC
Q0Q3RDJGNzExOTIxMjc4MDA2REI3RUUgLyogVGVzdEludm9jYXRpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEludm9jYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0RBMkI5OTExOTEwNTFGMDBDM0JDNDcgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMwQ0U3MjBBMTI0N0M5
MzMwMEJDMEVDNCAvKiBUZXN0UnVubmVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gVGVzdFJ1bm5lck1hYy5tbTsgcGF0aCA9IG1hYy9UZXN0UnVubmVyTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTMyQUEzODE3Q0Q1RjEwMDA2MTFE
RjAgLyogV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxMzJBQTM5MTdDRDVGMTAwMDYxMURGMCAvKiBX
ZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTEzMkFBM0IxN0NFNzc2RjAwNjExREYwIC8qIFdlYktpdFRlc3RSdW5uZXJF
dmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRl
c3RSdW5uZXJFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEzMkFBM0Mx
N0NFNzc2RjAwNjExREYwIC8qIFdlYktpdFRlc3RSdW5uZXJFdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyRXZlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFCQTY3MUQxNzQyREE1QTAwQzIwMjUxIC8qIENhcmJvbi5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENhcmJvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09U
OyB9OwogCQlFMUM2NDJDMTE3Q0JDQzczMDBENjZBM0MgLyogUG9zZUFzQ2xhc3MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQb3NlQXNDbGFzcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDNjQyQzIxN0NCQ0M3MzAwRDY2QTNDIC8qIFBvc2VB
c0NsYXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2VBc0NsYXNzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjgsMTUgKzQyMiwxMSBAQAogCQkJCTU2
NzBCODI3MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovLAogCQkJCUJD
NzkzM0ZGMTE4RjdDODQwMDVFQThFMiAvKiBtYWluLm1tICovLAogCQkJCUJDNzkzNEU3MTE5MDY4
NDYwMDVFQThFMiAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gKi8sCi0JCQkJRTFDNjQyQzIxN0NC
Q0M3MzAwRDY2QTNDIC8qIFBvc2VBc0NsYXNzLmggKi8sCiAJCQkJRTFDNjQyQzExN0NCQ0M3MzAw
RDY2QTNDIC8qIFBvc2VBc0NsYXNzLm1tICovLAorCQkJCUUxQzY0MkMyMTdDQkNDNzMwMEQ2NkEz
QyAvKiBQb3NlQXNDbGFzcy5oICovLAogCQkJCUJDOEM3OTVCMTFEMjc4NUQwMDQ1MzVBMSAvKiBU
ZXN0Q29udHJvbGxlck1hYy5tbSAqLywKLQkJCQlFMTMyQUEzOTE3Q0Q1RjEwMDA2MTFERjAgLyog
V2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5oICovLAotCQkJCUUxMzJBQTM4MTdDRDVGMTAw
MDYxMURGMCAvKiBXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLm1tICovLAotCQkJCUUxMzJB
QTNDMTdDRTc3NkYwMDYxMURGMCAvKiBXZWJLaXRUZXN0UnVubmVyRXZlbnQuaCAqLywKLQkJCQlF
MTMyQUEzQjE3Q0U3NzZGMDA2MTFERjAgLyogV2ViS2l0VGVzdFJ1bm5lckV2ZW50Lm1tICovLAot
CQkJCUUxQzY0MkM1MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2Fy
ZC5oICovLAogCQkJCUUxQzY0MkM0MTdDQkNENEMwMEQ2NkEzQyAvKiBXZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZC5tbSAqLywKKwkJCQlFMUM2NDJDNTE3Q0JDRDRDMDBENjZBM0MgLyogV2ViS2l0
VGVzdFJ1bm5lclBhc3RlYm9hcmQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU1NSw2ICs1NDUsOCBAQAogLyogQmVnaW4gUEJYUHJv
amVjdCBzZWN0aW9uICovCiAJCTA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJ
fTsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTI3ODA4NzMzREQ0MDAxMEU5Q0Qg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJLaXRUZXN0UnVu
bmVyIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMSI7CiAJCQlkZXZl
bG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CkBAIC02MjEsNyArNjEzLDYgQEAKIAkJCWZpbGVzID0g
KAogCQkJCTUzMjJGQjQzMTNGREEwQ0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNjQyQzMxN0NCQ0M3MzAwRDY2QTNDIC8qIFBvc2VB
c0NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJRTEzMkFBM0QxN0NFNzc2RjAwNjExREYwIC8q
IFdlYktpdFRlc3RSdW5uZXJFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU2NzBCODI4MTM4
NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MjZENzU4RTcxNjBCRUNERDAwMjY4NDcyIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDNzkzNDAwMTE4RjdDODQwMDVFQThFMiAvKiBtYWluLm1tIGlu
IFNvdXJjZXMgKi8sCkBAIC02MzIsNyArNjIzLDYgQEAKIAkJCQlCQzhDNzk1QzExRDI3ODVEMDA0
NTM1QTEgLyogVGVzdENvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q3RDJG
ODExOTIxMjc4MDA2REI3RUUgLyogVGVzdEludm9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM5MTkyMDUxMzMzRTRGODAwMzAxMURDIC8qIFRlc3RJbnZvY2F0aW9uQ0cuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRTEzMkFBM0ExN0NENUYxMDAwNjExREYwIC8qIFdlYktpdFRlc3RSdW5u
ZXJEcmFnZ2luZ0luZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTY0QzhGMDE1RDFBREExMDBF
RjFGRTAgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDQyOUZDNUYxNjI3MDg5NjAwRjY2RDhCIC8qIFdvcmtRdWV1ZU1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZl
bnRTZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0KaW5kZXggMjMzZDJmOC4uZjNkODQ4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9y
dCAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPFdlYktpdDIvV0tTdHJpbmcuaD4KLSNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTE3OSwxMSArMTc5LDgg
QEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmVzc3VyZTowLjBdOwogCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gW21f
dGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6W2V2
ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKLSAgICAvLyBGSVhNRTogU2lsbHkgaGFjayB0byB0ZWFj
aCBXS1RSIHRvIHJlc3BlY3QgY2FwdHVyaW5nIG1vdXNlIGV2ZW50cyBvdXRzaWRlIHRoZSBXS1Zp
ZXcuCi0gICAgLy8gVGhlIHJpZ2h0IHNvbHV0aW9uIGlzIGp1c3QgdG8gdXNlIE5TQXBwbGljYXRp
b24ncyBidWlsdC1pbiBldmVudCBzZW5kaW5nIG1ldGhvZHMsIAotICAgIC8vIGluc3RlYWQgb2Yg
cm9sbGluZyBvdXIgb3duIGFsZ29yaXRobSBmb3Igc2VsZWN0aW5nIGFuIGV2ZW50IHRhcmdldC4K
ICAgICB0YXJnZXRWaWV3ID0gdGFyZ2V0VmlldyA/IHRhcmdldFZpZXcgOiBtX3Rlc3RDb250cm9s
bGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKLSAgICBBU1NFUlQodGFyZ2V0Vmll
dyk7CisgICAgYXNzZXJ0KHRhcmdldFZpZXcpOwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZl
bnRdOwogICAgIGlmIChidXR0b25OdW1iZXIgPT0gTGVmdE1vdXNlQnV0dG9uKQogICAgICAgICBt
X2xlZnRNb3VzZUJ1dHRvbkRvd24gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQppbmRleCBkNzEyMjAwLi42MGI4ODcyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywyMiArMjMsMTkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRl
c3RDb250cm9sbGVyLmgiCiAKLSNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJX
ZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0IDxXZWJLaXQyL1dLSW1hZ2VD
Ry5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVFI7Ci0KIEBpbnRlcmZhY2UgV2ViS2l0VGVz
dFJ1bm5lcldpbmRvdyA6IE5TV2luZG93IHsKLSAgICBQbGF0Zm9ybVdlYlZpZXcqIF9wbGF0Zm9y
bVdlYlZpZXc7CisgICAgV1RSOjpQbGF0Zm9ybVdlYlZpZXcqIF9wbGF0Zm9ybVdlYlZpZXc7CiAg
ICAgTlNQb2ludCBfZmFrZU9yaWdpbjsKIH0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IFBsYXRmb3JtV2ViVmlldyogcGxhdGZvcm1XZWJWaWV3OworQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbikgV1RSOjpQbGF0Zm9ybVdlYlZpZXcqIHBsYXRmb3JtV2ViVmlldzsKIEBlbmQKIAog
QGludGVyZmFjZSBUZXN0UnVubmVyV0tWaWV3IDogV0tWaWV3IHsKQEAgLTY1LDEyICs2Miw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXVFI7CiAgICAgcmV0dXJuIF91c2VUaWxlZERyYXdpbmc7CiB9CiAK
LS0gKHZvaWQpZHJhZ0ltYWdlOihOU0ltYWdlICopYW5JbWFnZSBhdDooTlNQb2ludCl2aWV3TG9j
YXRpb24gb2Zmc2V0OihOU1NpemUpaW5pdGlhbE9mZnNldCBldmVudDooTlNFdmVudCAqKWV2ZW50
IHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZCBzb3VyY2U6KGlkKXNvdXJjZU9iaiBz
bGlkZUJhY2s6KEJPT0wpc2xpZGVGbGFnCi17Ci0gICAgUmV0YWluUHRyPFdlYktpdFRlc3RSdW5u
ZXJEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tXZWJLaXRUZXN0UnVubmVy
RHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOmFuSW1hZ2Ugb2Zmc2V0OmluaXRpYWxP
ZmZzZXQgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZU9ial0pOwotICAgIFtzZWxmIGRy
YWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwotfQotCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJLaXRUZXN0UnVubmVyV2luZG93CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDNhZDVkMTguLjFiNzdiNjUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC00
MSw3ICs0MSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUoKQogdm9pZCBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICBwb3NlQXNDbGFzcygiV2Vi
S2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQiLCAiTlNQYXN0ZWJvYXJkIik7Ci0gICAgcG9zZUFzQ2xh
c3MoIldlYktpdFRlc3RSdW5uZXJFdmVudCIsICJOU0V2ZW50Iik7CiB9CiAKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtRGVzdHJveSgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZvLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMyMWFiMjMuLjAwMDAwMDAKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUBpbnRlcmZhY2UgV2Vi
S2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbyA6IE5TT2JqZWN0IDxOU0RyYWdnaW5nSW5mbz4gewot
QHByaXZhdGUKLSAgICBOU1NpemUgX29mZnNldDsKLSAgICBOU0ltYWdlICpfZHJhZ2dlZEltYWdl
OwotICAgIE5TUGFzdGVib2FyZCAqX2RyYWdnaW5nUGFzdGVib2FyZDsKLSAgICBpZCBfZHJhZ2dp
bmdTb3VyY2U7Ci19Ci0KLS0gKGlkKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBvZmZz
ZXQ6KE5TU2l6ZSlvZmZzZXQgcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBz
b3VyY2U6KGlkKXNvdXJjZTsKLQotLSAoTlNXaW5kb3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2lu
ZG93OwotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKLS0g
KE5TUG9pbnQpZHJhZ2dpbmdMb2NhdGlvbjsKLS0gKE5TUG9pbnQpZHJhZ2dlZEltYWdlTG9jYXRp
b247Ci0tIChOU0ltYWdlICopZHJhZ2dlZEltYWdlOwotLSAoTlNQYXN0ZWJvYXJkICopZHJhZ2dp
bmdQYXN0ZWJvYXJkOwotLSAoaWQpZHJhZ2dpbmdTb3VyY2U7Ci0tIChpbnQpZHJhZ2dpbmdTZXF1
ZW5jZU51bWJlcjsKLQotLSAodm9pZClzbGlkZURyYWdnZWRJbWFnZVRvOihOU1BvaW50KXNjcmVl
blBvaW50OwotLSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGlu
YXRpb246KE5TVVJMICopZHJvcERlc3RpbmF0aW9uOwotQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8ubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMzFkMzMuLjAwMDAwMDAKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJLaXRUZXN0UnVubmVyRHJhZ2dpbmdJbmZv
LmgiCi0KLSNpbXBvcnQgIkV2ZW50U2VuZGVyUHJveHkuaCIKLSNpbXBvcnQgIlBsYXRmb3JtV2Vi
Vmlldy5oIgotI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdU
UjsKLQotQGltcGxlbWVudGF0aW9uIFdlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8KLQotLSAo
aWQpaW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWltYWdlIG9mZnNldDooTlNTaXplKW9mZnNldCBw
YXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIHNvdXJjZTooaWQpc291cmNlCi17
Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBfZHJhZ2dlZEltYWdlID0gW2ltYWdlIHJldGFpbl07Ci0gICAgX2RyYWdn
aW5nUGFzdGVib2FyZCA9IFtwYXN0ZWJvYXJkIHJldGFpbl07Ci0gICAgX2RyYWdnaW5nU291cmNl
ID0gW3NvdXJjZSByZXRhaW5dOwotICAgIF9vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgCi0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfZHJhZ2dlZEltYWdlIHJl
bGVhc2VdOwotICAgIFtfZHJhZ2dpbmdQYXN0ZWJvYXJkIHJlbGVhc2VdOwotICAgIFtfZHJhZ2dp
bmdTb3VyY2UgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU1dpbmRv
dyAqKWRyYWdnaW5nRGVzdGluYXRpb25XaW5kb3cgCi17Ci0gICAgcmV0dXJuIFtUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgd2luZG93XTsKLX0K
LQotLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayAKLXsKLSAg
ICAvLyBXS1ZpZXcgY3VycmVudGx5IGltcGxlbWVudHMgbmVpdGhlciBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tGb3JMb2NhbDogbm9yIGRyYWdnaW5nU2Vzc2lvbjpzb3VyY2VPcGVyYXRpb25N
YXNrRm9yRHJhZ2dpbmdDb250ZXh0Oi4KLSAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQWxsOwot
fQotCi0tIChOU1BvaW50KWRyYWdnaW5nTG9jYXRpb24KLXsKLSAgICBXS1BvaW50IGxvY2F0aW9u
ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLmV2ZW50U2VuZGVyUHJveHkoKS0+cG9zaXRpb24o
KTsKLSAgICByZXR1cm4gTlNNYWtlUG9pbnQobG9jYXRpb24ueCwgbG9jYXRpb24ueSk7Ci19Ci0K
LS0gKE5TUG9pbnQpZHJhZ2dlZEltYWdlTG9jYXRpb24gCi17Ci0gICAgV0tQb2ludCBsb2NhdGlv
biA9IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ldmVudFNlbmRlclByb3h5KCktPnBvc2l0aW9u
KCk7Ci0gICAgcmV0dXJuIE5TTWFrZVBvaW50KGxvY2F0aW9uLnggKyBfb2Zmc2V0LndpZHRoLCBs
b2NhdGlvbi55ICsgX29mZnNldC5oZWlnaHQpOwotfQotCi0tIChOU0ltYWdlICopZHJhZ2dlZElt
YWdlCi17Ci0gICAgcmV0dXJuIF9kcmFnZ2VkSW1hZ2U7Ci19Ci0KLS0gKE5TUGFzdGVib2FyZCAq
KWRyYWdnaW5nUGFzdGVib2FyZAotewotICAgIHJldHVybiBfZHJhZ2dpbmdQYXN0ZWJvYXJkOwot
fQotCi0tIChpZClkcmFnZ2luZ1NvdXJjZQotewotICAgIHJldHVybiBfZHJhZ2dpbmdTb3VyY2U7
Ci19Ci0KLS0gKGludClkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyCi17Ci0gICAgTlNMb2coQCJXZWJL
aXRUZXN0UnVubmVyIGRvZXNuJ3Qgc3VwcG9ydCBkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyIik7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLS0gKHZvaWQpc2xpZGVEcmFnZ2VkSW1hZ2VUbzooTlNQb2ludClz
Y3JlZW5Qb2ludAotewotICAgIE5TTG9nKEAiV2ViS2l0VGVzdFJ1bm5lciBkb2Vzbid0IHN1cHBv
cnQgc2xpZGVEcmFnZ2VkSW1hZ2VUbzoiKTsKLX0KLQotLSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5TVVJMICopZHJvcERlc3RpbmF0aW9uCi17
Ci0gICAgTlNMb2coQCJXZWJLaXRUZXN0UnVubmVyIGRvZXNuJ3Qgc3VwcG9ydCBuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOiIpOwotICAgIHJldHVybiBuaWw7Ci19Ci0K
LS0gKE5TRHJhZ2dpbmdGb3JtYXRpb24pZHJhZ2dpbmdGb3JtYXRpb24KLXsKLSAgICByZXR1cm4g
TlNEcmFnZ2luZ0Zvcm1hdGlvbkRlZmF1bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0RHJhZ2dpbmdGb3Jt
YXRpb246KE5TRHJhZ2dpbmdGb3JtYXRpb24pZm9ybWF0aW9uCi17Ci0gICAgLy8gSWdub3JlZC4K
LX0KLQotLSAoQk9PTClhbmltYXRlc1RvRGVzdGluYXRpb24KLXsKLSAgICByZXR1cm4gTk87Ci19
Ci0KLS0gKHZvaWQpc2V0QW5pbWF0ZXNUb0Rlc3RpbmF0aW9uOihCT09MKWZsYWcKLXsKLSAgICAv
LyBJZ25vcmVkLgotfQotCi0tIChOU0ludGVnZXIpbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcAot
ewotICAgIHJldHVybiAxOwotfQotCi0tICh2b2lkKXNldE51bWJlck9mVmFsaWRJdGVtc0ZvckRy
b3A6KE5TSW50ZWdlciludW1iZXIKLXsKLSAgICAvLyBJZ25vcmVkLgotfQotCi0tICh2b2lkKWVu
dW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczooTlNFbnVtZXJhdGlvbk9wdGlvbnMpZW51
bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmlldyBjbGFzc2VzOihOU0FycmF5ICopY2xhc3NBcnJh
eSBzZWFyY2hPcHRpb25zOihOU0RpY3Rpb25hcnkgKilzZWFyY2hPcHRpb25zIHVzaW5nQmxvY2s6
KHZvaWQgKF4pKE5TRHJhZ2dpbmdJdGVtICpkcmFnZ2luZ0l0ZW0sIE5TSW50ZWdlciBpZHgsIEJP
T0wgKnN0b3ApKWJsb2NrCi17Ci0gICAgLy8gSWdub3JlZC4KLX0KLQotQGVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lckV2ZW50LmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRXZlbnQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3ZTE4OS4uMDAwMDAwMAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyRXZlbnQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1AaW50ZXJmYWNlIFdlYktpdFRlc3RSdW5uZXJF
dmVudCA6IE5TRXZlbnQKLUBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1dlYktpdFRlc3RSdW5uZXJFdmVudC5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1dlYktpdFRlc3RSdW5uZXJFdmVudC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjQyMTJjNy4uMDAwMDAwMAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRU
ZXN0UnVubmVyRXZlbnQubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJLaXRUZXN0UnVubmVyRXZlbnQu
aCIKLQotI2ltcG9ydCAiRXZlbnRTZW5kZXJQcm94eS5oIgotI2ltcG9ydCAiVGVzdENvbnRyb2xs
ZXIuaCIKLSNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgotCi11c2luZyBuYW1lc3BhY2UgV1RS
OwotCi1AaW1wbGVtZW50YXRpb24gV2ViS2l0VGVzdFJ1bm5lckV2ZW50Ci0KLSsgKE5TUG9pbnQp
bW91c2VMb2NhdGlvbgotewotICAgIFdLUG9pbnQgbG9jYXRpb24gPSBUZXN0Q29udHJvbGxlcjo6
c2hhcmVkKCkuZXZlbnRTZW5kZXJQcm94eSgpLT5wb3NpdGlvbigpOwotICAgIHJldHVybiBbVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgY29u
dmVydEJhc2VUb1NjcmVlbjpOU01ha2VQb2ludChsb2NhdGlvbi54LCBsb2NhdGlvbi55KV07Ci19
Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9n
dGsvamhidWlsZC5tb2R1bGVzCmluZGV4IDBmMTI2ODEuLjcxZmMxYTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwpA
QCAtMTgwLDkgKzE4MCwxMCBAQAogICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVwIHBhY2th
Z2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDxicmFuY2gg
bW9kdWxlPSJsaWJzb3VwIiB2ZXJzaW9uPSIyLjQzLjkwIgotICAgICAgICAgICAgcmVwbz0iZ2l0
Lmdub21lLm9yZyIKLSAgICAgICAgICAgIHRhZz0iMGVhODZmNTY2YjdkNTI2YzgzMjhjN2M2MDJh
ZTFiZThjZGE4ZGQ2OCIvPgorICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMv
bGlic291cC8yLjQyL2xpYnNvdXAtMi40Mi4wLnRhci54eiIgdmVyc2lvbj0iMi40Mi4wIgorICAg
ICAgICAgICAgcmVwbz0iZnRwLmdub21lLm9yZyIKKyAgICAgICAgICAgIGhhc2g9InNoYTI1Njo5
ZTBlN2ViNWQzZjc0MDFjY2Y1MjFmYmMyODlmYzFmYTA5MjNiN2M3ODMzNzI5ZTJlZDc2OTZmN2I4
NDg4OTNlIgorICAgICAgICAgICAgbWQ1c3VtPSJhNjMyYTM4ZDI5ODNjMmE4ODY3OTY3MmQwMDk0
MDEyOCIvPgogICA8L2F1dG90b29scz4KIAogICA8YXV0b3Rvb2xzIGlkPSJmb250Y29uZmlnIiBh
dXRvZ2VuLXNoPSJjb25maWd1cmUiPgpkaWZmIC0tZ2l0IGEvVG9vbHMvd2luL0Fzc2VtYmxlQnVp
bGRMb2dzL0Fzc2VtYmxlTG9ncy5jbWQgYi9Ub29scy93aW4vQXNzZW1ibGVCdWlsZExvZ3MvQXNz
ZW1ibGVMb2dzLmNtZAppbmRleCA5YjhlYjExYS4uNmFlOWUzYSAxMDA3NTUKLS0tIGEvVG9vbHMv
d2luL0Fzc2VtYmxlQnVpbGRMb2dzL0Fzc2VtYmxlTG9ncy5jbWQKKysrIGIvVG9vbHMvd2luL0Fz
c2VtYmxlQnVpbGRMb2dzL0Fzc2VtYmxlTG9ncy5jbWQKQEAgLTEyNCwxMSArMTI0LDYgQEAgZWNo
byBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18gPj4gIiVDT05GSUdVUkFUSU8KIHR5cGUgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXG9iajMy
XFdlYktpdFxCdWlsZExvZy5odG0iID4+ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxCdWlsZE91
dHB1dC5odG0iCiAKIGVjaG8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fID4+ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxCdWlsZE91dHB1
dC5odG0iCi1lY2hvIENPTVBJTElORyBXZWJJbnNwZWN0b3JVSS4uLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA+PiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcQnVpbGRPdXRwdXQuaHRt
IgotZWNobyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18gPj4gIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXEJ1aWxkT3V0cHV0Lmh0bSIKLXR5
cGUgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXG9iajMyXFdlYkluc3BlY3RvclVJXEJ1aWxkTG9n
Lmh0bSIgPj4gIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXEJ1aWxkT3V0cHV0Lmh0bSIKLQotZWNo
byBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18gPj4gIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXEJ1aWxkT3V0cHV0Lmh0bSIKIGVjaG8gQ09N
UElMSU5HIFdpbkxhdW5jaGVyTGliLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxCdWlsZE91dHB1dC5odG0iCiBlY2hvIF9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyA+PiAiJUNP
TkZJR1VSQVRJT05CVUlMRERJUiVcQnVpbGRPdXRwdXQuaHRtIgogdHlwZSAiJUNPTkZJR1VSQVRJ
T05CVUlMRERJUiVcb2JqMzJcV2luTGF1bmNoZXJMaWJcQnVpbGRMb2cuaHRtIiA+PiAiJUNPTkZJ
R1VSQVRJT05CVUlMRERJUiVcQnVpbGRPdXRwdXQuaHRtIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210403</attachid>
            <date>2013-09-03 12:43:13 -0700</date>
            <delta_ts>2013-09-04 08:42:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>14382</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNzNjOWM2Li4zMTFiOGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDgtMzAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFJldmlzZSB0aGUgU2hhcGVJbnRlcnZhbCBzZXQgb3BlcmF0aW9ucycg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJldmlzZWQgdGhlIFNoYXBlSW50ZXJ2YWxzIHVuaXRlLCBpbnRlcnNlY3QsIGFuZCBz
dWJ0cmFjdCBvcGVyYXRpb25zIHRvCisgICAgICAgIGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgY2xh
cml0eS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIHJlcXVpcmVkLCB0aGlzIGlzIGp1c3Qg
YW4gaW50ZXJuYWwgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlT3ZlcmxhcHBpbmdFZGdl
WFByb2plY3Rpb25zKTogUmVtb3ZlZCBjYWxsIHRvIFNoYXBlSW50ZXJ2YWw8VD5zb3J0VmVjdG9y
KCksIHNpbmNlIGNhbGxpbmcgc3RkOjpzb3J0IGRpcmVjdGx5IGlzIHNpbXBsZXIuCisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZUludGVydmFsOjpjb250YWlucyk6IFRydWUgaWYgdGhlIGludGVydmFsIHBhcmFtZXRlciBp
cyB3aXRoaW4gdGhpcyBpbnRlcnZhbC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6
OmludGVyc2VjdCk6IFN1YnN0YW50aWFsbHkgcmV2aXNlZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5h
bCBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdFZlY3Rv
cnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0VmVj
dG9ycyk6IERpdHRvLgorCiAyMDEzLTA5LTAzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdXBwb3J0IFZlY3RvcjxSZWY8VD4+LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCmluZGV4IDZkMzBmY2EuLjAz
YWZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdv
blNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25T
aGFwZS5jcHAKQEAgLTMxMiw2ICszMTIsMjMgQEAgc3RhdGljIHZvaWQgY29tcHV0ZVhJbnRlcnNl
Y3Rpb25zKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeSwgYm9vbCBpc00KICAg
ICB9CiB9CiAKK3N0YXRpYyBib29sIGNvbXBhcmVYMShjb25zdCBGbG9hdFNoYXBlSW50ZXJ2YWwg
YSwgY29uc3QgRmxvYXRTaGFwZUludGVydmFsJiBiKSB7IHJldHVybiBhLngxKCkgPCBiLngxKCk7
IH0KKworc3RhdGljIHZvaWQgc29ydEFuZE1lcmdlU2hhcGVJbnRlcnZhbHMoRmxvYXRTaGFwZUlu
dGVydmFscyYgaW50ZXJ2YWxzKQoreworICAgIHN0ZDo6c29ydChpbnRlcnZhbHMuYmVnaW4oKSwg
aW50ZXJ2YWxzLmVuZCgpLCBjb21wYXJlWDEpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IGludGVydmFscy5zaXplKCk7ICkgeworICAgICAgICBjb25zdCBGbG9hdFNoYXBlSW50ZXJ2
YWwmIHRoaXNJbnRlcnZhbCA9IGludGVydmFsc1tpXTsKKyAgICAgICAgRmxvYXRTaGFwZUludGVy
dmFsJiBwcmV2aW91c0ludGVydmFsID0gaW50ZXJ2YWxzW2kgLSAxXTsKKyAgICAgICAgaWYgKHRo
aXNJbnRlcnZhbC5vdmVybGFwcyhwcmV2aW91c0ludGVydmFsKSkgeworICAgICAgICAgICAgcHJl
dmlvdXNJbnRlcnZhbC5zZXRYMihzdGQ6Om1heDxmbG9hdD4ocHJldmlvdXNJbnRlcnZhbC54Migp
LCB0aGlzSW50ZXJ2YWwueDIoKSkpOworICAgICAgICAgICAgaW50ZXJ2YWxzLnJlbW92ZShpKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICArK2k7CisgICAgfQorfQorCiBzdGF0aWMgdm9p
ZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKGNvbnN0IEZsb2F0UG9seWdvbiYg
cG9seWdvbiwgZmxvYXQgeTEsIGZsb2F0IHkyLCBGbG9hdFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQp
CiB7CiAgICAgVmVjdG9yPGNvbnN0IEZsb2F0UG9seWdvbkVkZ2UqPiBlZGdlczsKQEAgLTM0Myw3
ICszNjAsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25z
KGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChGbG9hdFNoYXBlSW50ZXJ2YWwoeDEsIHgyKSk7CiAgICAgfQogCi0gICAgRmxvYXRTaGFw
ZUludGVydmFsOjpzb3J0VmVjdG9yKHJlc3VsdCk7CisgICAgc29ydEFuZE1lcmdlU2hhcGVJbnRl
cnZhbHMocmVzdWx0KTsKIH0KIAogdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2
YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdt
ZW50TGlzdCYgcmVzdWx0KSBjb25zdApAQCAtMzYwLDEzICszNzcsMTMgQEAgdm9pZCBQb2x5Z29u
U2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0
VW5pdCBsb2dpY2EKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZhbHNl
LCB5MlhJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBtZXJnZWRJbnRlcnZh
bHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMoeTFYSW50ZXJ2YWxzLCB5
MlhJbnRlcnZhbHMsIG1lcmdlZEludGVydmFscyk7CisgICAgRmxvYXRTaGFwZUludGVydmFsOjp1
bml0ZVNoYXBlSW50ZXJ2YWxzKHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzLCBtZXJnZWRJbnRl
cnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBlZGdlSW50ZXJ2YWxzOwogICAgIGNv
bXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJvamVjdGlvbnMocG9seWdvbiwgeTEsIHkyLCBlZGdlSW50
ZXJ2YWxzKTsKIAogICAgIEZsb2F0U2hhcGVJbnRlcnZhbHMgZXhjbHVkZWRJbnRlcnZhbHM7Ci0g
ICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMobWVyZ2VkSW50ZXJ2YWxzLCBlZGdl
SW50ZXJ2YWxzLCBleGNsdWRlZEludGVydmFscyk7CisgICAgRmxvYXRTaGFwZUludGVydmFsOjp1
bml0ZVNoYXBlSW50ZXJ2YWxzKG1lcmdlZEludGVydmFscywgZWRnZUludGVydmFscywgZXhjbHVk
ZWRJbnRlcnZhbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2x1ZGVkSW50
ZXJ2YWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZsb2F0U2hhcGVJbnRlcnZhbCBpbnRlcnZh
bCA9IGV4Y2x1ZGVkSW50ZXJ2YWxzW2ldOwpAQCAtMzg4LDEzICs0MDUsMTMgQEAgdm9pZCBQb2x5
Z29uU2hhcGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5
b3V0VW5pdCBsb2dpY2EKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZh
bHNlLCB5MlhJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBjb21tb25JbnRl
cnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjppbnRlcnNlY3RWZWN0b3JzKHkxWEludGVy
dmFscywgeTJYSW50ZXJ2YWxzLCBjb21tb25JbnRlcnZhbHMpOworICAgIEZsb2F0U2hhcGVJbnRl
cnZhbDo6aW50ZXJzZWN0U2hhcGVJbnRlcnZhbHMoeTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMs
IGNvbW1vbkludGVydmFscyk7CiAKICAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGVkZ2VJbnRlcnZh
bHM7CiAgICAgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhwb2x5Z29uLCB5MSwg
eTIsIGVkZ2VJbnRlcnZhbHMpOwogCiAgICAgRmxvYXRTaGFwZUludGVydmFscyBpbmNsdWRlZElu
dGVydmFsczsKLSAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0VmVjdG9ycyhjb21tb25J
bnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxzKTsKKyAgICBGbG9hdFNo
YXBlSW50ZXJ2YWw6OnN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29tbW9uSW50ZXJ2YWxzLCBlZGdl
SW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgaW5jbHVkZWRJbnRlcnZhbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgRmxv
YXRTaGFwZUludGVydmFsJiBpbnRlcnZhbCA9IGluY2x1ZGVkSW50ZXJ2YWxzW2ldOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCA0MjBh
MmQ2Li5kMWI2ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW50ZXJ2YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW50ZXJ2YWwuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgU2hhcGVJbnRlcnZhbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2hhcGVJbnRlcnZhbChUIHgxID0gMCwgVCB4
MiA9IDApCiAgICAgICAgIDogbV94MSh4MSkKQEAgLTcxLDE0MSArNzIsMTQwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHgyKCkgPj0gaW50ZXJ2YWwueDEoKSAmJiB4MSgpIDw9IGludGVydmFs
LngyKCk7CiAgICAgfQogCi0gICAgYm9vbCBpbnRlcnNlY3QoY29uc3QgU2hhcGVJbnRlcnZhbDxU
PiYgaSwgU2hhcGVJbnRlcnZhbDxUPiYgcnYpIGNvbnN0CisgICAgYm9vbCBjb250YWlucyhjb25z
dCBTaGFwZUludGVydmFsPFQ+JiBpbnRlcnZhbCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICh4
MigpIDwgaS54MSgpIHx8IHgxKCkgPiBpLngyKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHJ2LnNldChzdGQ6Om1heCh4MSgpLCBpLngxKCkpLCBzdGQ6Om1pbih4MigpLCBp
LngyKCkpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiB4MSgpIDw9IGlu
dGVydmFsLngxKCkgJiYgeDIoKSA+PSBpbnRlcnZhbC54MigpOworICAgIH0KKworICAgIFNoYXBl
SW50ZXJ2YWw8VD4gaW50ZXJzZWN0KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVydmFsKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG92ZXJsYXBzKGludGVydmFsKSk7CisgICAgICAg
IHJldHVybiBTaGFwZUludGVydmFsPFQ+KHN0ZDo6bWF4PFQ+KHgxKCksIGludGVydmFsLngxKCkp
LCBzdGQ6Om1pbjxUPih4MigpLCBpbnRlcnZhbC54MigpKSk7CiAgICAgfQogCiAgICAgdHlwZWRl
ZiBWZWN0b3I8U2hhcGVJbnRlcnZhbDxUPiA+IFNoYXBlSW50ZXJ2YWxzOwogICAgIHR5cGVkZWYg
dHlwZW5hbWUgU2hhcGVJbnRlcnZhbHM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwog
ICAgIHR5cGVkZWYgdHlwZW5hbWUgU2hhcGVJbnRlcnZhbHM6Oml0ZXJhdG9yIGl0ZXJhdG9yOwog
Ci0gICAgc3RhdGljIHZvaWQgc29ydFZlY3RvcihTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzKQor
ICAgIHN0YXRpYyB2b2lkIHVuaXRlU2hhcGVJbnRlcnZhbHMoY29uc3QgU2hhcGVJbnRlcnZhbHMm
IGEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiBiLCBTaGFwZUludGVydmFscyYgcmVzdWx0KQogICAg
IHsKLSAgICAgICAgc3RkOjpzb3J0KGludGVydmFscy5iZWdpbigpLCBpbnRlcnZhbHMuZW5kKCkp
OwotICAgIH0KKyAgICAgICAgQVNTRVJUKHNoYXBlSW50ZXJ2YWxzQXJlU29ydGVkQW5kRGlzam9p
bnQoYSkgJiYgc2hhcGVJbnRlcnZhbHNBcmVTb3J0ZWRBbmREaXNqb2ludChiKSk7CiAKLSAgICBz
dGF0aWMgdm9pZCB1bml0ZVZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYxLCBjb25zdCBT
aGFwZUludGVydmFscyYgdjIsIFNoYXBlSW50ZXJ2YWxzJiBydikKLSAgICB7Ci0gICAgICAgIGlm
ICghdjEuc2l6ZSgpKQotICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjIuYmVnaW4oKSwgdjIu
ZW5kKCkpOwotICAgICAgICBlbHNlIGlmICghdjIuc2l6ZSgpKQotICAgICAgICAgICAgcnYuYXBw
ZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIFNoYXBlSW50ZXJ2YWxzIHYodjEuc2l6ZSgpICsgdjIuc2l6ZSgpKTsKLSAgICAgICAgICAg
IFNoYXBlSW50ZXJ2YWw8VD4qIGludGVydmFsID0gMDsKLQotICAgICAgICAgICAgc3RkOjptZXJn
ZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVnaW4oKSk7
Ci0KLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykgewot
ICAgICAgICAgICAgICAgIGlmICghaW50ZXJ2YWwpCi0gICAgICAgICAgICAgICAgICAgIGludGVy
dmFsID0gJnZbaV07Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAodltpXS54MSgpID49IGludGVy
dmFsLT54MSgpICYmIHZbaV0ueDEoKSA8PSBpbnRlcnZhbC0+eDIoKSkgLy8gRklYTUU6IDFzdCA8
PSB0ZXN0IG5vdCBuZWVkZWQ/Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsLT5zZXQoaW50
ZXJ2YWwtPngxKCksIHN0ZDo6bWF4PFQ+KGludGVydmFsLT54MigpLCB2W2ldLngyKCkpKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRl
cnZhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICBpZiAoYS5pc0VtcHR5KCkgfHwgYSA9PSBi
KSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYi5iZWdpbigpLCBiLmVuZCgpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoaW50ZXJ2
YWwpCi0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7Ci0gICAgICAgICAgICB9
CisgICAgICAgIGlmIChiLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFJh
bmdlKGEuYmVnaW4oKSwgYS5lbmQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb25zdF9pdGVyYXRvciBhTmV4dCA9IGEuYmVnaW4oKTsKKyAgICAgICAgY29u
c3RfaXRlcmF0b3IgYk5leHQgPSBiLmJlZ2luKCk7CisKKyAgICAgICAgd2hpbGUgKGFOZXh0ICE9
IGEuZW5kKCkgfHwgYk5leHQgIT0gYi5lbmQoKSkgeworICAgICAgICAgICAgY29uc3RfaXRlcmF0
b3IgbmV4dCA9IChiTmV4dCA9PSBiLmVuZCgpIHx8IChhTmV4dCAhPSBhLmVuZCgpICYmIGFOZXh0
LT54MSgpIDwgYk5leHQtPngxKCkpKSA/IGFOZXh0KysgOiBiTmV4dCsrOworICAgICAgICAgICAg
aWYgKHJlc3VsdC5pc0VtcHR5KCkgfHwgIXJlc3VsdC5sYXN0KCkub3ZlcmxhcHMoKm5leHQpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKm5leHQpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0KCkuc2V0WDIoc3RkOjptYXg8VD4ocmVzdWx0Lmxh
c3QoKS54MigpLCBuZXh0LT54MigpKSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcnNlY3RWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiB2MSwgY29uc3QgU2hh
cGVJbnRlcnZhbHMmIHYyLCBTaGFwZUludGVydmFscyYgcnYpCisgICAgc3RhdGljIHZvaWQgaW50
ZXJzZWN0U2hhcGVJbnRlcnZhbHMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIGEsIGNvbnN0IFNoYXBl
SW50ZXJ2YWxzJiBiLCBTaGFwZUludGVydmFscyYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc2l6
ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKLSAgICAgICAgc2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUo
KTsKKyAgICAgICAgQVNTRVJUKHNoYXBlSW50ZXJ2YWxzQXJlU29ydGVkQW5kRGlzam9pbnQoYSkg
JiYgc2hhcGVJbnRlcnZhbHNBcmVTb3J0ZWRBbmREaXNqb2ludChiKSk7CiAKLSAgICAgICAgaWYg
KCF2MVNpemUgfHwgIXYyU2l6ZSkKKyAgICAgICAgaWYgKGEuaXNFbXB0eSgpIHx8IGIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4gaW50
ZXJ2YWw7Ci0gICAgICAgIGJvb2wgb3ZlcmxhcCA9IGZhbHNlOwotICAgICAgICBzaXplX3QgaTEg
PSAwOwotICAgICAgICBzaXplX3QgaTIgPSAwOwotCi0gICAgICAgIHdoaWxlIChpMSA8IHYxU2l6
ZSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiB2MTI7Ci0g
ICAgICAgICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIW92ZXJsYXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFs
KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGludGVydmFs
ID0gdjEyOwotICAgICAgICAgICAgICAgICAgICBvdmVybGFwID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHYxW2kxXS54MigpIDwgdjJbaTJdLngyKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGkxKys7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBpMisrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAob3ZlcmxhcCkKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKLSAg
ICAgICAgICAgICAgICBvdmVybGFwID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHYxW2kx
XS54MSgpIDwgdjJbaTJdLngxKCkpCi0gICAgICAgICAgICAgICAgICAgIGkxKys7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBpMisrOwotICAgICAgICAgICAgfQor
ICAgICAgICBpZiAoYSA9PSBiKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoYS5i
ZWdpbigpLCBhLmVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmIChvdmVybGFwKQotICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKKyAgICAg
ICAgY29uc3RfaXRlcmF0b3IgYU5leHQgPSBhLmJlZ2luKCk7CisgICAgICAgIGNvbnN0X2l0ZXJh
dG9yIGJOZXh0ID0gYi5iZWdpbigpOworICAgICAgICBjb25zdF9pdGVyYXRvciB3b3JraW5nID0g
YU5leHQtPngxKCkgPCBiTmV4dC0+eDEoKSA/IGFOZXh0KysgOiBiTmV4dCsrOworCisgICAgICAg
IHdoaWxlIChhTmV4dCAhPSBhLmVuZCgpIHx8IGJOZXh0ICE9IGIuZW5kKCkpIHsKKyAgICAgICAg
ICAgIGNvbnN0X2l0ZXJhdG9yIG5leHQgPSAoYk5leHQgPT0gYi5lbmQoKSB8fCAoYU5leHQgIT0g
YS5lbmQoKSAmJiBhTmV4dC0+eDEoKSA8IGJOZXh0LT54MSgpKSkgPyBhTmV4dCsrIDogYk5leHQr
KzsKKyAgICAgICAgICAgIGlmICh3b3JraW5nLT5vdmVybGFwcygqbmV4dCkpIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHdvcmtpbmctPmludGVyc2VjdCgqbmV4dCkpOworICAgICAg
ICAgICAgICAgIGlmIChuZXh0LT54MigpID4gd29ya2luZy0+eDIoKSkKKyAgICAgICAgICAgICAg
ICAgICAgd29ya2luZyA9IG5leHQ7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICB3b3JraW5nID0gbmV4dDsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHN1
YnRyYWN0VmVjdG9ycyhjb25zdCBTaGFwZUludGVydmFscyYgdjEsIGNvbnN0IFNoYXBlSW50ZXJ2
YWxzJiB2MiwgU2hhcGVJbnRlcnZhbHMmIHJ2KQorICAgIHN0YXRpYyB2b2lkIHN1YnRyYWN0U2hh
cGVJbnRlcnZhbHMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIGEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxz
JiBiLCBTaGFwZUludGVydmFscyYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc2l6ZV90IHYxU2l6
ZSA9IHYxLnNpemUoKTsKLSAgICAgICAgc2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKKyAgICAg
ICAgQVNTRVJUKHNoYXBlSW50ZXJ2YWxzQXJlU29ydGVkQW5kRGlzam9pbnQoYSkgJiYgc2hhcGVJ
bnRlcnZhbHNBcmVTb3J0ZWRBbmREaXNqb2ludChiKSk7CiAKLSAgICAgICAgaWYgKCF2MVNpemUp
CisgICAgICAgIGlmIChhLmlzRW1wdHkoKSB8fCBhID09IGIpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKCF2MlNpemUpCi0gICAgICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5i
ZWdpbigpLCB2MS5lbmQoKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2l6ZV90IGkx
ID0gMCwgaTIgPSAwOwotICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEu
ZW5kKCkpOwotCi0gICAgICAgICAgICB3aGlsZSAoaTEgPCBydi5zaXplKCkgJiYgaTIgPCB2MlNp
emUpIHsKLSAgICAgICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+JiBpbnRlcnZhbDEgPSBydltp
MV07Ci0gICAgICAgICAgICAgICAgY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwyID0g
djJbaTJdOwotCi0gICAgICAgICAgICAgICAgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFs
MS54MSgpICYmIGludGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQotICAgICAgICAgICAg
ICAgICAgICBydi5yZW1vdmUoaTEpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFs
Mi54MigpIDwgaW50ZXJ2YWwxLngxKCkpCi0gICAgICAgICAgICAgICAgICAgIGkyICs9IDE7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxKCkgPiBpbnRlcnZhbDEueDIoKSkK
LSAgICAgICAgICAgICAgICAgICAgaTEgKz0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChp
bnRlcnZhbDIueDEoKSA+IGludGVydmFsMS54MSgpICYmIGludGVydmFsMi54MigpIDwgaW50ZXJ2
YWwxLngyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcnYuaW5zZXJ0KGkxLCBTaGFwZUludGVy
dmFsKGludGVydmFsMS54MSgpLCBpbnRlcnZhbDIueDEoKSkpOwotICAgICAgICAgICAgICAgICAg
ICBpbnRlcnZhbDEuc2V0KGludGVydmFsMi54MigpLCBpbnRlcnZhbDEueDIoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGkyICs9IDE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZh
bDIueDEoKSA8PSBpbnRlcnZhbDEueDEoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnRlcnZh
bDEuc2V0KGludGVydmFsMi54MigpLCBpbnRlcnZhbDEueDIoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGkyICs9IDE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlICB7IC8vIChpbnRlcnZhbDIueDIo
KSA+PSBpbnRlcnZhbDEueDIoKSkKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLnNldChp
bnRlcnZhbDEueDEoKSwgaW50ZXJ2YWwyLngxKCkpOwotICAgICAgICAgICAgICAgICAgICBpMSAr
PSAxOworICAgICAgICBpZiAoYi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmRSYW5nZShhLmJlZ2luKCksIGEuZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYU5leHQgPSBhLmJlZ2luKCk7CisgICAgICAg
IGNvbnN0X2l0ZXJhdG9yIGJOZXh0ID0gYi5iZWdpbigpOworICAgICAgICBTaGFwZUludGVydmFs
PFQ+IGFWYWx1ZSA9ICphTmV4dDsKKyAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiBiVmFsdWUgPSAq
Yk5leHQ7CisKKyAgICAgICAgd2hpbGUgKGFOZXh0ICE9IGEuZW5kKCkgJiYgYk5leHQgIT0gYi5l
bmQoKSkgeworICAgICAgICAgICAgaWYgKGJWYWx1ZS5jb250YWlucyhhVmFsdWUpKSB7CisgICAg
ICAgICAgICAgICAgYVZhbHVlID0gKisrYU5leHQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFW
YWx1ZS5jb250YWlucyhiVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGJWYWx1ZS54MSgp
ID4gYVZhbHVlLngxKCkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJ
bnRlcnZhbDxUPihhVmFsdWUueDEoKSwgYlZhbHVlLngxKCkpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoYVZhbHVlLngyKCkgPiBiVmFsdWUueDIoKSkKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVl
LnNldFgxKGJWYWx1ZS54MigpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGFWYWx1ZSA9ICorK2FOZXh0OworICAgICAgICAgICAgICAgIGJWYWx1ZSA9ICorK2JO
ZXh0OworICAgICAgICAgICAgfSBlbHNlIGlmIChhVmFsdWUub3ZlcmxhcHMoYlZhbHVlKSkgewor
ICAgICAgICAgICAgICAgIGlmIChhVmFsdWUueDEoKSA8IGJWYWx1ZS54MSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZhbDxUPihhVmFsdWUueDEoKSwg
YlZhbHVlLngxKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlID0gKisrYU5leHQ7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYVZhbHVlLnNldFgx
KGJWYWx1ZS54MigpKTsKKyAgICAgICAgICAgICAgICAgICAgYlZhbHVlID0gKisrYk5leHQ7CiAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYVZhbHVlLngxKCkgPCBiVmFsdWUueDEoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGFWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGFWYWx1ZSA9ICorK2FOZXh0
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBiVmFsdWUgPSAq
KytiTmV4dDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmIChhTmV4dCAh
PSBhLmVuZCgpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGFWYWx1ZSk7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kUmFuZ2UoKythTmV4dCwgYS5lbmQoKSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIHgxKCkgPT0gb3RoZXIueDEoKSAmJiB4MigpID09IG90aGVyLngyKCk7
IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQotICAgIGJvb2wgb3BlcmF0b3I8IChj
b25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4geDEoKSA8IG90aGVy
LngxKCk7IH0KLSAgICBib29sIG9wZXJhdG9yPiAoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPCAob3RoZXIsICp0aGlzKTsgfQotICAgIGJvb2wg
b3BlcmF0b3I8PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
IW9wZXJhdG9yPiAob3RoZXIpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFNoYXBlSW50
ZXJ2YWw8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I8IChvdGhlcik7IH0KIAog
cHJpdmF0ZToKICAgICBUIG1feDE7CiAgICAgVCBtX3gyOworCisgICAgc3RhdGljIGJvb2wgc2hh
cGVJbnRlcnZhbHNBcmVTb3J0ZWRBbmREaXNqb2ludChjb25zdCBTaGFwZUludGVydmFscyYgaW50
ZXJ2YWxzKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGludGVydmFs
cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbHNbaSAtIDFdLngyKCkgPiBp
bnRlcnZhbHNbaV0ueDEoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQogfTsKIAogdHlwZWRlZiBTaGFwZUludGVydmFsPGludD4g
SW50U2hhcGVJbnRlcnZhbDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>