<?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>149660</bug_id>
          
          <creation_ts>2015-09-30 05:37:05 -0700</creation_ts>
          <short_desc>Refactor binding generator to factor out JS DOM class m_impl handling</short_desc>
          <delta_ts>2015-10-01 07:07:18 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129552</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-30 05:37:05 -0700</bug_when>
    <thetext>It might be better to move m_impl handling of JS DOM class wrappers outside binding generator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129558</commentid>
    <comment_count>1</comment_count>
      <attachid>262153</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-09-30 06:07:39 -0700</bug_when>
    <thetext>Created attachment 262153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129581</commentid>
    <comment_count>2</comment_count>
      <attachid>262153</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-30 08:36:10 -0700</bug_when>
    <thetext>Comment on attachment 262153
Patch

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

This is OK, but I think we can do a little better. See comments below.

Also, since we’re going to touch every call site, I think it’s useful to think about the fact that impl() is not a great name. The thing that’s wrapped by a wrapper doesn’t need to be named “impl” nor is “implementation object” and ideal term for it. I think I’d call it the “wrapped object” or “underlying object”.

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:51
&gt; +template&lt;typename ImplementationClass&gt; class JSDOMWrapperWithImplementation : public JSDOMWrapper {

Why such a long name? Is there code uses JSDOMWrapper directly? Can’t this class template have the shorter name?

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:53
&gt; +    typedef JSDOMWrapper Base;

These kinds of typedefs can be dangerous, because if I derive from this class template, I will inherit an inaccurate typedef “Base” that is actually my grandparent base class, not my immediate base class. Does the benefit outweigh the risk here? I suppose we were using this already.

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:55
&gt; +    ImplementationClass&amp; impl() const { return *m_impl; }

This isn’t safe to call once releaseImpl() is called. I don’t understand why we have releaseImpl().

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:56
&gt; +    ~JSDOMWrapperWithImplementation() { releaseImpl(); }

This is only needed because we use a raw pointer rather than a Ref or RefPtr. Why do we do that?

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:59
&gt; +    JSDOMWrapperWithImplementation(JSC::Structure* structure, JSC::JSGlobalObject* globalObject, Ref&lt;ImplementationClass&gt;&amp;&amp; impl)

The structure and global object arguments should probably be references instead of pointers, longer term. Don’t need to change that at this time.

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:63
&gt; +    void releaseImpl() { std::exchange(m_impl, nullptr)-&gt;deref(); }

What call site needs releaseImpl()? I ask because it forces us to use RefPtr instead of Ref.

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:66
&gt; +    ImplementationClass* m_impl;

It seems strange to use a raw pointer here instead of a Ref or RefPtr.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1033
&gt; +        push(@headerContent, &quot;    ~${className}() { }\n&quot;);

I think that &quot;= default&quot; would be better. But also omitting any explicit destructor declaration entirely would be even better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129596</commentid>
    <comment_count>3</comment_count>
      <attachid>262153</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-30 09:16:17 -0700</bug_when>
    <thetext>Comment on attachment 262153
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:53
&gt;&gt; +    typedef JSDOMWrapper Base;
&gt; 
&gt; These kinds of typedefs can be dangerous, because if I derive from this class template, I will inherit an inaccurate typedef “Base” that is actually my grandparent base class, not my immediate base class. Does the benefit outweigh the risk here? I suppose we were using this already.

It is not that much shorter. I personally would just get rid of this typedef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129897</commentid>
    <comment_count>4</comment_count>
      <attachid>262247</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-01 04:43:44 -0700</bug_when>
    <thetext>Created attachment 262247
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129906</commentid>
    <comment_count>5</comment_count>
      <attachid>262247</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-01 06:08:22 -0700</bug_when>
    <thetext>Comment on attachment 262247
Patch for landing

Clearing flags on attachment: 262247

Committed r190403: &lt;http://trac.webkit.org/changeset/190403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129907</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-01 06:08:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129913</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-01 07:07:18 -0700</bug_when>
    <thetext>Thanks for the reviews.
I agree with most of the points.
It is difficult though to integrate some of them as that would touch other files as well.


&gt; Also, since we’re going to touch every call site, I think it’s useful to
&gt; think about the fact that impl() is not a great name. The thing that’s
&gt; wrapped by a wrapper doesn’t need to be named “impl” nor is “implementation
&gt; object” and ideal term for it. I think I’d call it the “wrapped object” or
&gt; “underlying object”.

wrapped() is good to me.
We already have toWrapped for instance.

impl() is already in use in other parts of the code.
It might be better to change the name as a follow-up patch.

&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:51
&gt; &gt; +template&lt;typename ImplementationClass&gt; class JSDOMWrapperWithImplementation : public JSDOMWrapper {
&gt; 
&gt; Why such a long name? Is there code uses JSDOMWrapper directly? Can’t this
&gt; class template have the shorter name?

How about moving JSDOMWrapper to JSDOMObject and JSDOMWrapperWithImplementation to JSDOMWrapper?

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:53
&gt; &gt; +    typedef JSDOMWrapper Base;
&gt; 
&gt; These kinds of typedefs can be dangerous, because if I derive from this
&gt; class template, I will inherit an inaccurate typedef “Base” that is actually
&gt; my grandparent base class, not my immediate base class. Does the benefit
&gt; outweigh the risk here? I suppose we were using this already.

Yes, it is in use in JSC.
It is also nice when generating code, see Base::impl() for instance in CodeGeneratorJS.pm.

Whatever is done, Base will be defined for all JS DOM wrappers:
it is already defined by JSDOMWrapper and JSDestructibleObject for instance.

&gt; It is not that much shorter. I personally would just get rid of this typedef.

I will fix that when renaming m_impl -&gt; m_wrapped.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:55
&gt; &gt; +    ImplementationClass&amp; impl() const { return *m_impl; }
&gt; 
&gt; This isn’t safe to call once releaseImpl() is called. I don’t understand why
&gt; we have releaseImpl().

I removed it in the patch.

&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:56
&gt; &gt; +    ~JSDOMWrapperWithImplementation() { releaseImpl(); }
&gt; 
&gt; This is only needed because we use a raw pointer rather than a Ref or
&gt; RefPtr. Why do we do that?
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:59
&gt; &gt; +    JSDOMWrapperWithImplementation(JSC::Structure* structure, JSC::JSGlobalObject* globalObject, Ref&lt;ImplementationClass&gt;&amp;&amp; impl)
&gt; 
&gt; The structure and global object arguments should probably be references
&gt; instead of pointers, longer term. Don’t need to change that at this time.

Time permitting, I would like to tackle this one.

&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:63
&gt; &gt; +    void releaseImpl() { std::exchange(m_impl, nullptr)-&gt;deref(); }
&gt; 
&gt; What call site needs releaseImpl()? I ask because it forces us to use RefPtr
&gt; instead of Ref.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:66
&gt; &gt; +    ImplementationClass* m_impl;
&gt; 
&gt; It seems strange to use a raw pointer here instead of a Ref or RefPtr.

I think it is ok to move to Ref&lt;&gt;
It has some consequences related to const, so better do that as a follow-up patch.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1033
&gt; &gt; +        push(@headerContent, &quot;    ~${className}() { }\n&quot;);
&gt; 
&gt; I think that &quot;= default&quot; would be better. But also omitting any explicit
&gt; destructor declaration entirely would be even better.

OK, I removed it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262153</attachid>
            <date>2015-09-30 06:07:39 -0700</date>
            <delta_ts>2015-10-01 04:43:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149660-20150930150711.patch</filename>
            <type>text/plain</type>
            <size>82868</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNkZjVlNzE0OGVhNTY1
OGM1ODBiZjUzZTA4MWZiNzE2OGI5ZWI4Mi4uZWY1NWM5M2Q3YjAzYmY5ODM5ZWJhMGNkOThmYWY2
YTU0NDU0ZWYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MCBAQAorMjAxNS0wOS0zMCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlZmFj
dG9yIGJpbmRpbmcgZ2VuZXJhdG9yIHRvIGZhY3RvciBKUyBET00gY2xhc3MgbV9pbXBsIGhhbmRs
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24gdGVtcGxhdGUgY2xhc3MgdG8gbW92ZSBt
X2ltcGwgb3V0IG9mIHRoZSBiaW5kaW5nIGdlbmVyYXRvci4KKyAgICAgICAgVXBkYXRlZCBjdXN0
b20gYmluZGluZ3MgdG8gdXNlIGltcGwoKSBpbnN0ZWFkIG9mIG1faW1wbCBkaXJlY3RseS4KKyAg
ICAgICAgVXBkYXRlZCBiaW5kaW5nIGdlbmVyYXRvciBhY2NvcmRpbmdseS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCBiaW5kaW5nIHRlc3RzLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcldpdGhJbXBsZW1l
bnRhdGlvbjo6aW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXJXaXRoSW1wbGVt
ZW50YXRpb246On5KU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uOjpKU0RPTVdyYXBwZXJXaXRoSW1w
bGVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uOjpyZWxlYXNlSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjplbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
U3VidGxlQ3J5cHRvOjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp2
ZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OndyYXBLZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZXRQYXJlbnRDbGFz
c05hbWUpOgorICAgICAgICAoR2V0SW1wbENsYXNzTmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUhl
YWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmpl
Y3Q6On5KU1Rlc3RBY3RpdmVET01PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdDo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdDo6fkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjp+SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6fkpTVGVzdEV2ZW50Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRh
cmdldDo6SlNUZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RFdmVudFRhcmdldDo6fkpTVGVzdEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV4Y2VwdGlvbjo6SlNUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RFeGNlcHRpb246On5KU1Rlc3RFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OkpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNv
bnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZTo6fkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6fkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6On5K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3I6On5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1p
bmlzdGljUmVhZG9ubHlBdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6fkpTVGVzdE5vbmRldGVybWluaXN0aWMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpKU1Rlc3RPYmopOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE9iajo6fkpTVGVzdE9iaik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Ip
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpmaW5pc2hDcmVhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp+SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp+SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6SlNUZXN0VHlwZWRlZnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0VHlwZWRlZnM6OmdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6fkpTVGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNhdHRyaWJ1dGU6OkpTYXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzYXR0cmlidXRl
UmVhZG9ubHkpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U2F0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGU6On5KU2F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHk6OkpTcmVhZG9ubHkpOgorICAgICAgICAoV2Vi
Q29yZTo6anNyZWFkb25seUNvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFk
b25seTo6fkpTcmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6ZmluaXNo
Q3JlYXRpb24pOiBEZWxldGVkLgorCiAyMDE1LTA5LTMwICBHd2FuZyBZb29uIEh3YW5nICA8eW9v
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFN1cHBvcnQgSGlEUEkgUHJvcGVybHkgaW4g
V2ViS2l0R3RrKyB3aXRoIHRoZSBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggODhkYzU2ZDAxNmMw
NDZhNzdjMTI3ODk1OTljYTQ5NTAzOGZkYzNiYS4uOWFmODQ1YzE4MjBiNmE0NDkxODkzNGVlMzEw
MjE1ZTY4ZDc0ZDM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01TdHJpbmdNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEpTRE9NU3RyaW5n
TWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcAogewogICAgIEpTRE9NU3RyaW5nTWFwKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9N
U3RyaW5nTWFwKj4ob2JqZWN0KTsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKLSAgICB0aGlz
T2JqZWN0LT5tX2ltcGwtPmdldE5hbWVzKG5hbWVzKTsKKyAgICB0aGlzT2JqZWN0LT5pbXBsKCku
Z2V0TmFtZXMobmFtZXMpOwogICAgIHNpemVfdCBsZW5ndGggPSBuYW1lcy5zaXplKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBuYW1lc1tpXSkpOwpAQCAtNjUsNyAr
NjUsNyBAQCBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNET01TdHJpbmdNYXAqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlO
YW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2lt
cGwtPmRlbGV0ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAg
cmV0dXJuIHRoaXNPYmplY3QtPmltcGwoKS5kZWxldGVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogfQogCiBib29sIEpTRE9NU3RyaW5nTWFwOjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAppbmRleCA4ZGVkOTgwMTk3
YmE1Njk1ZDlhNGQ2MTZlMjg1NDZhZjQxMDFkNTAyLi43OTJkY2ZhYjBiMzUyMDQ4NmYzYmQ3YTll
YmJhN2ExMGJmZjMyNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuaApAQCAtNDIsMTIgKzQyLDMwIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEpTRE9N
V3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIAotICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbE9iamVj
dC0+dm0oKSwgc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LT52bSgpLCBz
dHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsZW1lbnRhdGlvbkNsYXNzPiBj
bGFzcyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVy
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOworCisgICAgSW1wbGVt
ZW50YXRpb25DbGFzcyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KKyAgICB+SlNE
T01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uKCkgeyByZWxlYXNlSW1wbCgpOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24oSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8SW1wbGVt
ZW50YXRpb25DbGFzcz4mJiBpbXBsKQorICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpCisgICAgICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkgeyB9CisKKyAgICB2b2lk
IHJlbGVhc2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVmKCk7
IH0KKworcHJpdmF0ZToKKyAgICBJbXBsZW1lbnRhdGlvbkNsYXNzKiBtX2ltcGw7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU0RPTVdyYXBwZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAppbmRl
eCA1MjdkMjEzZDcyMzUzMTNlY2FmYjZlZTcyMzdiNzRhZWE2OTA1NWIwLi5lYmM1YmE3YWI2MzBj
ZmE1M2QwMTViMmM2ZDM0MjM4OTQ1MjgwOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIEpT
VmFsdWUgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbk9wdGlv
bnMpOwogCi0gICAgbV9pbXBsLT5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5y
ZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9u
cy5yZWxlYXNlKCkpOworICAgIGltcGwoKS5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxs
YmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9u
T3B0aW9ucy5yZWxlYXNlKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0x
MzYsNyArMTM2LDcgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChw
b3NpdGlvbk9wdGlvbnMpOwogCi0gICAgaW50IHdhdGNoSUQgPSBtX2ltcGwtPndhdGNoUG9zaXRp
b24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOworICAgIGludCB3YXRjaElEID0gaW1w
bCgpLndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJy
b3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOwogICAgIHJl
dHVybiBqc051bWJlcih3YXRjaElEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggNDlh
MGVmZGM0NTg1Y2QyNWQxZDJlNDVhYzEzODczNDMzZjk1MmE0MC4uYjMzNjRkMjY0NTE0NTI2YjU3
YmZlZTBlZDE4ZGY1ZDZkMDQwYzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC00NywxNyAr
NDcsMTcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgVFlQRV9NSVNNQVRDSF9FUlIp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9Ci0gICAgaWYgKGluZGV4IDwg
MCB8fCAodW5zaWduZWQpaW5kZXggPj0gbV9pbXBsLT5sZW5ndGgoKSkgeworICAgIGlmIChpbmRl
eCA8IDAgfHwgKHVuc2lnbmVkKWluZGV4ID49IGltcGwoKS5sZW5ndGgoKSkgewogICAgICAgICBz
ZXRET01FeGNlcHRpb24oJnN0YXRlLCBJTkRFWF9TSVpFX0VSUik7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdCgmc3RhdGUpOwogCi0gICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IG1faW1wbC0+
Y29sdW1uTmFtZXMoKS5zaXplKCk7CisgICAgdW5zaWduZWQgbnVtQ29sdW1ucyA9IGltcGwoKS5j
b2x1bW5OYW1lcygpLnNpemUoKTsKICAgICB1bnNpZ25lZCB2YWx1ZXNJbmRleCA9IGluZGV4ICog
bnVtQ29sdW1uczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29sdW1uczsgaSsr
KSB7Ci0gICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IG1faW1wbC0+dmFsdWVzKClbdmFs
dWVzSW5kZXggKyBpXTsKKyAgICAgICAgY29uc3QgU1FMVmFsdWUmIHZhbHVlID0gaW1wbCgpLnZh
bHVlcygpW3ZhbHVlc0luZGV4ICsgaV07CiAgICAgICAgIEpTVmFsdWUganNWYWx1ZTsKIAogICAg
ICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewpAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIEpT
U1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPnB1dERp
cmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgbV9pbXBsLT5j
b2x1bW5OYW1lcygpW2ldKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUsIGltcGwoKS5jb2x1bW5OYW1lcygpW2ldKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKICAgICB9CiAKICAgICByZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAppbmRleCAzYzcz
NGE1MDlkZmJmODExZmYyNTU1ZmJkOGQyODBhYTA5NzhmNDRhLi45NWE4ZGZjZTg1YTMyNmJiMzE1
YjBkZjJiZWYxZTg0NDBiYTE1MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIEpT
VmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUmIHN0YXRlKQogICAg
IH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIG1faW1wbC0+ZXhlY3V0ZVNRTChz
cWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNr
LnJlbGVhc2UoKSwgZWMpOworICAgIGltcGwoKS5leGVjdXRlU1FMKHNxbFN0YXRlbWVudCwgc3Fs
VmFsdWVzLCBjYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBlYyk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNw
cAppbmRleCA5Y2M1ODViZDdlYjFhYTZkOWMwNGJkNjI0ZGI2NTVhMDVkNTEzMzExLi41ODVkNzI0
N2I2MWJhMDkwZDQxZDA4NjE2ZTUyZjI1MTBlM2Y0ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBK
U1N0b3JhZ2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICB0aGlzT2JqZWN0LT5tX2ltcGwtPnJlbW92ZUl0ZW0ocHJvcGVydHlOYW1lVG9TdHJp
bmcocHJvcGVydHlOYW1lKSwgZWMpOworICAgIHRoaXNPYmplY3QtPmltcGwoKS5yZW1vdmVJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsMTIgKzgzLDEyIEBA
IHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB7CiAgICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bV9pbXBsLT5sZW5ndGgoZWMpOworICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
YywgdGhpc09iamVjdC0+bV9pbXBsLT5rZXkoaSwgZWMpKSk7CisgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLmtl
eShpLCBlYykpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4
IDY4ZTZkNTY4MTk3MTAwNWQ1NGE3YzU4MGQ4MGUwYjI5NmQxYjVkYTEuLmY1YmE0ZDMwMjljZDY4
OGY5MzVlZmUzMGI3OWQ3OWJlMjIzNDdmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBK
U1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhD
cnlwdG9LZXlVc2FnZUVuY3J5cHQpKSB7Ci0gICAgICAgIG1faW1wbC0+ZG9jdW1lbnQoKS0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CisgICAg
ICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBp
bmNsdWRlICdlbmNyeXB0JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9U
X1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBA
IC0yMDUsNyArMjA1LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3Rh
dGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAogICAg
IGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VEZWNyeXB0KSkgewotICAgICAgICBtX2lt
cGwtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUg
J2RlY3J5cHQnIikpOworICAgICAgICBpbXBsKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
S2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZGVjcnlwdCciKSk7CiAgICAgICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQpAQCAtMjU3LDcgKzI1Nyw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlw
dG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlU2lnbikpIHsK
LSAgICAgICAgbV9pbXBsLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRv
IG5vdCBpbmNsdWRlICdzaWduJyIpKTsKKyAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJ
SUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOwogICAgICAgICBz
ZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTMwOSw3ICszMDksNyBAQCBKU1ZhbHVlIEpTU3Vi
dGxlQ3J5cHRvOjp2ZXJpZnkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdl
VmVyaWZ5KSkgewotICAgICAgICBtX2ltcGwtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktl
eSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3ZlcmlmeSciKSk7CisgICAgICAgIGltcGwoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnkn
IikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTY0Niw3ICs2NDYsNyBA
QCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCF3cmFwcGluZ0tl
eS0+YWxsb3dzKENyeXB0b0tleVVzYWdlV3JhcEtleSkpIHsKLSAgICAgICAgbV9pbXBsLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5
JyIpKTsKKyAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2Fn
ZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikpOwogICAgICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndy
YXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVu
d3JhcEtleSkpIHsKLSAgICAgICAgbV9pbXBsLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJL
ZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBLZXknIikpOworICAgICAgICBpbXBsKCku
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndW53
cmFwS2V5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRF
RF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZl
MGMzMWQ1MGFmNTgzMzhiMDFiMDk4N2MyODBhZmMwOWI5NGMzOGEuLjBiZmFiYmYxYWQ0NTBkNzhm
MWY4NjBiNTlkZDZmODc4NzJhNTAzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODAsNyArMTgwLDggQEAgc3ViIEdl
dFBhcmVudENsYXNzTmFtZQogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAogICAgIHJldHVy
biAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNMZWdhY3lQYXJlbnQifSBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNMZWdhY3lQYXJlbnQifTsKLSAgICBy
ZXR1cm4gIkpTRE9NV3JhcHBlciIgdW5sZXNzICRpbnRlcmZhY2UtPnBhcmVudDsKKyAgICByZXR1
cm4gIkpTRE9NV3JhcHBlciIgdW5sZXNzIE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJm
YWNlKTsKKyAgICByZXR1cm4gIkpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjwiIC4gR2V0
SW1wbENsYXNzTmFtZSgkaW50ZXJmYWNlLT5uYW1lKSAuICI+IiB1bmxlc3MgJGludGVyZmFjZS0+
cGFyZW50OwogICAgIHJldHVybiAiSlMiIC4gJGludGVyZmFjZS0+cGFyZW50OwogfQogCkBAIC04
NDAsNiArODQxLDEwIEBAIHN1YiBHZXRJbXBsQ2xhc3NOYW1lCiAgICAgbXkgJG5hbWUgPSBzaGlm
dDsKIAogICAgIHJldHVybiAiRE9NV2luZG93IiBpZiAkbmFtZSBlcSAiQWJzdHJhY3RWaWV3IjsK
KworICAgIG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05h
dGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkbmFtZSk7CisgICAgcmV0dXJuICRzdmdO
YXRpdmVUeXBlIGlmICRzdmdOYXRpdmVUeXBlOworCiAgICAgcmV0dXJuICRuYW1lOwogfQogCkBA
IC04ODEsOSArODg2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgJGhlYWRlckluY2x1ZGVz
eyJTVkdFbGVtZW50LmgifSA9IDEgaWYgJGNsYXNzTmFtZSA9fiAvXkpTU1ZHLzsKIAogICAgIG15
ICRpbXBsVHlwZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZU5hbWUpOwotICAgIG15ICgk
c3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0g
R2V0U1ZHUHJvcGVydHlUeXBlcygkaW1wbFR5cGUpOwotICAgICRpbXBsVHlwZSA9ICRzdmdOYXRp
dmVUeXBlIGlmICRzdmdOYXRpdmVUeXBlOwotCisgICAgbXkgKCRzdmdQcm9wZXJ0eVR5cGUsICRz
dmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVz
KCRpbnRlcmZhY2VOYW1lKTsKICAgICBteSAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGU7
CiAgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlID0gJHN2Z1Byb3BlcnR5VHlwZSBp
ZiAkc3ZnUHJvcGVydHlUeXBlOwogICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSA9
ICRzdmdMaXN0UHJvcGVydHlUeXBlIGlmICRzdmdMaXN0UHJvcGVydHlUeXBlOwpAQCAtMTAyNyw3
ICsxMDMwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoISRoYXNQYXJlbnQpIHsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Qzo6SlNDZWxsKik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB+JHtj
bGFzc05hbWV9KCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB+JHtj
bGFzc05hbWV9KCkgeyB9XG4iKTsKICAgICB9CiAKICAgICAjIENsYXNzIGluZm8KQEAgLTExODgs
MTIgKzExOTEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAKICAgICBpZiAoTmVlZHNJ
bXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIGlmICghJGhhc1BhcmVu
dCkgewotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkaW1wbFR5cGUmIGlt
cGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2lt
cGwsIG51bGxwdHIpLT5kZXJlZigpOyB9XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgInByaXZhdGU6XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgJGltcGxUeXBlKiBtX2ltcGw7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKCRoYXNQYXJlbnQpIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
JGludGVyZmFjZU5hbWUmIGltcGwoKSBjb25zdFxuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHtcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lJj4oQmFzZTo6aW1wbCgp
KTtcbiIpOwpAQCAtMjEzOCw5ICsyMTM2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNs
YXNzTmFtZSkgfTtcblxuIik7CiAKLSAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGltcGxU
eXBlKTsKLSAgICAkaW1wbFR5cGUgPSAkc3ZnTmF0aXZlVHlwZSBpZiAkc3ZnTmF0aXZlVHlwZTsK
LQorICAgIG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05h
dGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW50ZXJmYWNlTmFtZSk7CiAgICAgbXkg
JHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlOwogICAgICRzdmdQcm9wZXJ0eU9yTGlzdFBy
b3BlcnR5VHlwZSA9ICRzdmdQcm9wZXJ0eVR5cGUgaWYgJHN2Z1Byb3BlcnR5VHlwZTsKICAgICAk
c3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgPSAkc3ZnTGlzdFByb3BlcnR5VHlwZSBpZiAk
c3ZnTGlzdFByb3BlcnR5VHlwZTsKQEAgLTIxNjMsMTIgKzIxNTksNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRD
bGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpIHsgfVxuXG4iKTsKICAgICAgfWVsc2Ug
ewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7Ci0gICAgICAgIGlmICgkaGFzUGFyZW50KSB7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUoc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSlcbiIpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1l
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpXG4iKTsKLSAgICAgICAgfQorICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUoc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAg
ICAgfQpAQCAtMjE5NiwxMyArMjE4Nyw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9
IHN0YXRpY19jYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPiR7Y2xhc3NOYW1lfTo6fiR7Y2xhc3NOYW1lfSgp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLQotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6fiR7Y2xhc3NOYW1lfSgpXG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgaWYgKE5lZWRzSW1wbGVt
ZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmVsZWFzZUltcGwoKTtcbiIpOwotICAgICAgICB9Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKICAgICBteSAkaGFzR2V0dGVyID0gSW5zdGFu
Y2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoJGludGVyZmFjZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuY3BwCmluZGV4IDlmZjA5MzNmYjYwYWQ0MjRmMTQzOWVjNDVhMTBiYzEx
MzcwNTk5YTAuLmExNjgwODg4YzljZjY5NDVmZjJjMmQ3NTkzZjJmZGIxNzIwZjUxMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3Rp
dmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xMzksOCArMTM5LDcgQEAgdm9pZCBK
U1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnNfaW5mbyA9IHsgIlRlc3RBY3Rp
dmVET01PYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFibGUs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0KSB9OwogCiBKU1Rlc3RB
Y3RpdmVET01PYmplY3Q6OkpTVGVzdEFjdGl2ZURPTU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RBY3RpdmVET01PYmpl
Y3Q+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkK
LSAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1w
bGVtZW50YXRpb248VGVzdEFjdGl2ZURPTU9iamVjdD4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMTYwLDExICsxNTksNiBAQCB2b2lkIEpTVGVz
dEFjdGl2ZURPTU9iamVjdDo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RBY3RpdmVET01PYmplY3Q6On5KU1Rlc3RBY3RpdmVET01PYmplY3QoKTsKIH0K
IAotSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp+SlNUZXN0QWN0aXZlRE9NT2JqZWN0KCkKLXsKLSAg
ICByZWxlYXNlSW1wbCgpOwotfQotCiBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KG9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggOGM5NTg4N2JjMTRmZDE4MjdmM2E5OGI5NDgwOWU2
YjhjMTQ2MWNmOS4uNjNkZDU4NzJiNjc4OTIxMzhjMjNhOTZhNWFiNmUyZGE0OWRhMDI0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdCA6IHB1YmxpYyBKU0RP
TVdyYXBwZXIgeworY2xhc3MgSlNUZXN0QWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEpTRE9NV3Jh
cHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0QWN0aXZlRE9NT2JqZWN0PiB7CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldp
dGhJbXBsZW1lbnRhdGlvbjxUZXN0QWN0aXZlRE9NT2JqZWN0PiBCYXNlOwogICAgIHN0YXRpYyBK
U1Rlc3RBY3RpdmVET01PYmplY3QqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEFjdGl2ZURPTU9iamVjdD4m
JiBpbXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEFjdGl2ZURPTU9iamVjdD4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RBY3RpdmVET01PYmplY3Qoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgVGVzdEFjdGl2ZURPTU9iamVjdCogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0KCk7CisgICAgfkpTVGVzdEFjdGl2ZURPTU9iamVjdCgpIHsgfQogCiAgICAgREVDTEFSRV9J
TkZPOwogCkBAIC01MiwxMSArNTIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwotICAgIFRlc3RBY3RpdmVET01PYmplY3QmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBs
OyB9Ci0gICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxw
dHIpLT5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGVzdEFjdGl2ZURPTU9iamVjdCogbV9p
bXBsOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRleCAwMzAzMGMwNTcyM2E5OGNk
N2I3MzRkN2VlNWQ2NDc3Y2Y1YThiMGE5Li4zYzFlODgzOTYwZTgwMmY5MzIyNjQ2OWEyMmVjNmYx
MTdhMDFiNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAgLTExOSw4ICsxMTksNyBAQCB2
b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdgogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KSB9
OwogCiBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6SlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpCisg
ICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3Zl
KGltcGwpKQogewogfQogCkBAIC0xNDAsMTEgKzEzOSw2IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
CiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3Q6On5KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCgpOwog
fQogCi1KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6fkpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KCkKLXsKLSAgICByZWxlYXNl
SW1wbCgpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBi
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RQcm90b3R5cGUqPihiYXNlVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAppbmRleCAwZDIzOWFm
MDk4NWU4YjMwZDFmMmUxNDAyYTc2YmRkMGMyMTkzYjNhLi5iMDk3MTM0ZDI0N2Y4Yjk4MmEzYWZh
NGRkMWFjNDE4YjdhZWE1NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaApAQCAtMjcsOSArMjcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0IDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFzcyBKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCA6IHB1YmxpYyBKU0RPTVdy
YXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0PiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAg
ICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4mJiBpbXBsKQogICAgIHsKICAgICAg
ICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURjo6bW92ZShpbXBsKSk7CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgc3RhdGljIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dCogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwotICAgIH5KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCgpOworICAgIH5KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dCgpIHsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MCwxMSArNTAsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3QmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCBy
ZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0KiBtX2ltcGw7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3QoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJl
ZjxUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+JiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCBiNWU4NTRkNGIxMzBkNzVmMjM2
YmNmMGM0N2M0ZmMyZTlhMmQ4NTVmLi42ZDI1MzM4MThiNzY0MTUwM2ZmOGU2OWI0ZjA4OTQ5ZTM3
NmNiMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTEzMyw4
ICsxMzMsNyBAQCB2b2lkIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OnNfaW5mbyA9IHsgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3RDdXN0b21OYW1lZEdldHRlclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKSB9OwogCiBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+JiYgaW1wbCkKLSAgICA6IEpTRE9N
V3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5sZWFr
UmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEN1c3RvbU5h
bWVkR2V0dGVyPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewog
fQogCkBAIC0xNTQsMTEgKzE1Myw2IEBAIHZvaWQgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6On5KU1Rlc3RDdXN0b21OYW1lZEdldHRlcigpOwogfQogCi1KU1Rlc3RDdXN0b21O
YW1lZEdldHRlcjo6fkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKCkKLXsKLSAgICByZWxlYXNlSW1w
bCgpOwotfQotCiBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuaAppbmRleCAyNGMwODBiZTFkYjBhNzg5MjNkYzk2YzhhNjljMjAzZDg5
MjAwYjkzLi42ZjRhMzA4NDhkNTVhOGFiOGM0ZjNmOTA0YzhjYjNmOWE4ZGVmYzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyIDogcHVibGljIEpT
RE9NV3JhcHBlciB7CitjbGFzcyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciA6IHB1YmxpYyBKU0RP
TVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiB7CiBwdWJs
aWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3Jh
cHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+IEJhc2U7CiAgICAg
c3RhdGljIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDdXN0b21O
YW1lZEdldHRlcj4mJiBpbXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CkBAIC00Myw3ICs0
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwot
ICAgIH5KU1Rlc3RDdXN0b21OYW1lZEdldHRlcigpOworICAgIH5KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlcigpIHsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MywxMSArNTMsNiBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIFRlc3RDdXN0b21OYW1lZEdldHRlciYg
aW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2b2lkIHJlbGVhc2VJbXBsKCkg
eyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVmKCk7IH0KLQotcHJpdmF0ZToK
LSAgICBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIG1faW1wbDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGI4NzBmZDU2Y2FmOTIyOTAxYWEy
ODgxMzgwNDE2ZmViNWU0NTA5MjguLmY2YTNjNjFiNzc1Y2MzMjQyNzk2MWU4Yjc5MzJiOTVlNmY0
NjM4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE3MCw4ICsx
NzAsNyBAQCB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYm
IGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAg
LCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uPFRlc3RFdmVudENvbnN0cnVjdG9yPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKQogewogfQogCkBAIC0xOTEsMTEgKzE5MCw2IEBAIHZvaWQgSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0
LT5KU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp+SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcigpOwogfQog
Ci1KU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp+SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcigpCi17Ci0g
ICAgcmVsZWFzZUltcGwoKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1
Y3RvckF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDNmMWRiMjYxNWVlOTBjMDA3
ODk0YmQxNGJkNWU0MGU1NDA5ZTg2ODkuLmEzZmIwYTE2MzNhNDczMDhlZTlkNGJjZDBmYzIxNWI2
OWYxM2ZlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtMjksOSArMjks
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTRGljdGlvbmFyeTsKIAotY2xhc3Mg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdEV2ZW50Q29uc3RydWN0b3I+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9NV3Jh
cHBlciBCYXNlOworICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRl
c3RFdmVudENvbnN0cnVjdG9yPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmIGltcGwpCiAgICAgewog
ICAgICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKTsKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0RXZl
bnRDb25zdHJ1Y3RvcigpOworICAgIH5KU1Rlc3RFdmVudENvbnN0cnVjdG9yKCkgeyB9CiAKICAg
ICBERUNMQVJFX0lORk87CiAKQEAgLTUzLDExICs1Myw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7Ci0gICAgVGVzdEV2ZW50Q29uc3RydWN0b3ImIGltcGwoKSBjb25zdCB7IHJl
dHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZSht
X2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGVzdEV2ZW50Q29u
c3RydWN0b3IqIG1faW1wbDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdEV2ZW50Q29uc3Ry
dWN0b3I+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBiMTBhNjcwOGNlYmUy
NmVhODYwNmNlNjhlYjUxMDcyNDliNjQzYTllLi44M2IzMGNkNDBiZDgyZjhmOWE5Yzk0ZGE1MzBh
YjRmMzJiYTE0YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE0NSw4ICsxNDUs
NyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRUYXJnZXQ6OnNfaW5mbyA9IHsgIlRlc3RF
dmVudFRhcmdldCIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFdmVudFRhcmdldFRhYmxlLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0KSB9OwogCiBKU1Rlc3RFdmVudFRhcmdl
dDo6SlNUZXN0RXZlbnRUYXJnZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRUYXJnZXQ+JiYgaW1wbCkKLSAgICA6IEpT
RE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5s
ZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEV2ZW50
VGFyZ2V0PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQog
CkBAIC0xNjYsMTEgKzE2NSw2IEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmRlc3Ryb3koSlND
OjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0RXZlbnRUYXJnZXQ6On5KU1Rl
c3RFdmVudFRhcmdldCgpOwogfQogCi1KU1Rlc3RFdmVudFRhcmdldDo6fkpTVGVzdEV2ZW50VGFy
Z2V0KCkKLXsKLSAgICByZWxlYXNlSW1wbCgpOwotfQotCiBib29sIEpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuaAppbmRleCBhMjFiN2VmOTJkZTc3MGYxNzQwYjFhOGFmZDM3YTBiYWFk
YTg5MTk3Li4xODEyYWE0ZGE0ZDY2Yjg2ODlmOGU4NWVlMmFlMGMwYWRkNGJkMzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEpTVGVzdEV2ZW50VGFyZ2V0IDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFz
cyBKU1Rlc3RFdmVudFRhcmdldCA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdEV2ZW50VGFyZ2V0PiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIg
QmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0RXZl
bnRUYXJnZXQ+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEV2ZW50VGFyZ2V0KiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RFdmVudFRhcmdldD4mJiBpbXBsKQogICAgIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKCJBbGxvY2F0ZWQg
bWFzcXVlcmFkaW5nIG9iamVjdCIpOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0RXZlbnRUYXJnZXQo
KTsKKyAgICB+SlNUZXN0RXZlbnRUYXJnZXQoKSB7IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKIApA
QCAtNTcsMTEgKzU3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAotICAgIFRlc3RF
dmVudFRhcmdldCYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2b2lkIHJl
bGVhc2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVmKCk7IH0K
LQotcHJpdmF0ZToKLSAgICBUZXN0RXZlbnRUYXJnZXQqIG1faW1wbDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6OkludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCAxNTlmYzczYWRmMmY0YTNiNzY3NTQ3
ZDI3YTI2Y2M5NjE5YjE1NzFhLi40NGI2NzExYmU5MWFiNzg5ZWEyMTlhZDk1NjA1MjQ5YTBlOTRm
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTI5LDggKzEyOSw3IEBAIHZvaWQgSlNU
ZXN0RXhjZXB0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0RXhjZXB0aW9uOjpzX2luZm8gPSB7ICJUZXN0RXhjZXB0aW9uIiwgJkJhc2U6
OnNfaW5mbywgJkpTVGVzdEV4Y2VwdGlvblRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEV4Y2VwdGlvbikgfTsKIAogSlNUZXN0RXhjZXB0aW9uOjpKU1Rlc3RFeGNlcHRpb24oU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
RXhjZXB0aW9uPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFwcGVy
V2l0aEltcGxlbWVudGF0aW9uPFRlc3RFeGNlcHRpb24+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CiAKQEAgLTE1MCwxMSArMTQ5LDYgQEAgdm9pZCBKU1Rl
c3RFeGNlcHRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+
SlNUZXN0RXhjZXB0aW9uOjp+SlNUZXN0RXhjZXB0aW9uKCk7CiB9CiAKLUpTVGVzdEV4Y2VwdGlv
bjo6fkpTVGVzdEV4Y2VwdGlvbigpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQogYm9vbCBK
U1Rlc3RFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihv
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCmluZGV4IDM4YjRmNmE0ZmI4OTRmMjU1MzkwNmE2NjRj
ZjJmZjVhZGIyOGZlODMuLjFlOTgyMjIxZjNmYWZlYjIyN2Y3Yzc5ZjA0YjY2MTIxZjIxMjM2ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXhjZXB0aW9uLmgKQEAgLTI4LDkgKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBKU1Rlc3RFeGNlcHRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK2Ns
YXNzIEpTVGVzdEV4Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdEV4Y2VwdGlvbj4gewogcHVibGljOgotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJh
c2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEV4Y2Vw
dGlvbj4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0RXhjZXB0aW9uKiBjcmVhdGUoSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RFeGNlcHRpb24+JiYgaW1wbCkKICAgICB7CiAgICAgICAgIEpTVGVzdEV4Y2VwdGlvbiogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb24+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RXhjZXB0aW9uKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFRlc3RFeGNlcHRpb24qIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdEV4Y2VwdGlvbigpOworICAgIH5KU1Rl
c3RFeGNlcHRpb24oKSB7IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNTMsMTEgKzUzLDYg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBUZXN0RXhjZXB0aW9uJiBp
bXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7
IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1wcml2YXRlOgot
ICAgIFRlc3RFeGNlcHRpb24qIG1faW1wbDsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IGFiODEyNzJkNzM5MWI0ZGIyOGE5NmQ5NzUwYjczNmZh
MzRlOGUzM2IuLjkxN2IzOGQ3NjAwYWQzOTg1OGExZWFlMWEwMTU4ZmIyODQxYTc2ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTExMiw4ICsxMTIsNyBA
QCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpzX2lu
Zm8gPSB7ICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSkgfTsKIAogSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZShTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFw
cGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPihzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQogCkBAIC0xMzMsMTEgKzEzMiw2
IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjp+SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSgpOwogfQogCi1KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjp+
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSgpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQog
RW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4o
YmFzZVZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCmluZGV4IGZl
MzgwYTBhMGMzM2UwNGU3MmZmYWUyMDc1YzljZmU4YWNlZjIwYzYuLmUzNjc1MDQwYjZhZmJjOTNj
YjAzY2YyYWRmMGRiYmZhMThhMjViMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK2NsYXNz
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgOiBwdWJsaWMgSlNET01XcmFwcGVyV2l0aEltcGxl
bWVudGF0aW9uPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRl
ZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1l
bnRhdGlvbjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZT4mJiBpbXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUo
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6
Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoKTsKKyAgICB+
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSgpIHsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBA
IC01MSwxMSArNTEsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIFRl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQot
ICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+
ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAgIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBtX2lt
cGw7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZShKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiYm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBmMmE5MzQxNTY0YmJjMDA1NzE1MjA0MTVj
MTk2MWZjOGViOTJhM2FkLi40OThjNzNmYzc5NGFjYjVmNDYwZTk4NDNhMmU2ODAwMTYzYWE2NDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtNDEwLDggKzQxMCw3IEBAIHZvaWQgSlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0SW50ZXJmYWNlOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlIiwgJkJhc2U6OnNf
aW5mbywgJkpTVGVzdEludGVyZmFjZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdElu
dGVyZmFjZSkgfTsKIAogSlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2UoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0SW50
ZXJmYWNlPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0
aEltcGxlbWVudGF0aW9uPFRlc3RJbnRlcmZhY2U+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEY6Om1vdmUoaW1wbCkpCiB7CiB9CiAKQEAgLTQzMSwxMSArNDMwLDYgQEAgdm9pZCBKU1Rlc3RJ
bnRlcmZhY2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNU
ZXN0SW50ZXJmYWNlOjp+SlNUZXN0SW50ZXJmYWNlKCk7CiB9CiAKLUpTVGVzdEludGVyZmFjZTo6
fkpTVGVzdEludGVyZmFjZSgpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQogYm9vbCBKU1Rl
c3RJbnRlcmZhY2U6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihvYmpl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IGYyMGVlZjA5OWFjOTE5MTk5NDk2MGM4ZGM1YTEx
ZjliNThmZmY4M2EuLjhhZTU5ZWExNzhmMzliYmU3MTNiNzQwYjMzYzJiNTBjMjdiNmY1ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmgKQEAgLTI5LDkgKzI5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBKU1Rlc3RJbnRlcmZhY2UgOiBwdWJsaWMgSlNET01X
cmFwcGVyIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEpTVGVzdEludGVyZmFjZSA6IHB1YmxpYyBK
U0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEludGVyZmFjZT4gewogcHVibGljOgot
ICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb248VGVzdEludGVyZmFjZT4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0
SW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJbnRlcmZhY2U+JiYgaW1wbCkKICAgICB7CiAg
ICAgICAgIEpTVGVzdEludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RJbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0SW50
ZXJmYWNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2Vs
bCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0SW50
ZXJmYWNlKCk7CisgICAgfkpTVGVzdEludGVyZmFjZSgpIHsgfQogCiAgICAgREVDTEFSRV9JTkZP
OwogCkBAIC03OSwxMSArNzksNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgSlNDOjpKU1ZhbHVlIHN1cHBsZW1lbnRhbE1ldGhv
ZDMoSlNDOjpFeGVjU3RhdGUmKTsKICNlbmRpZgotICAgIFRlc3RJbnRlcmZhY2UmIGltcGwoKSBj
b25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpl
eGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGVz
dEludGVyZmFjZSogbV9pbXBsOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcAppbmRleCA0NGY5Y2Q0MzFiOTZhMzdhZWIxNTQ1YzVlODk0ZDEzZDAwYjg0
ZWZmLi4zNjU5YjI0Zjc3YzFlNmJhNDJlZWRhMjA1NjI0MWJjY2NlMWRkMDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTE0NiwxMCArMTQ2LDYgQEAg
dm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6fkpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKCk7CiB9CiAKLUpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp+
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoKQotewotfQotCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihiYXNlVmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCBjYjhmZWNhNjAxYzdkZWZh
OGRhYjIyNzk5YjcyMjA3YTU1MTFjNGZhLi5kYTZmYzVhOGIzNmNhN2FjOWUwZjIzYTE5NGE2NjBh
OTcyNjg5NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaApAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVBy
b3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yKCk7CisgICAgfkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKCkgeyB9
CiAKICAgICBERUNMQVJFX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAppbmRleCAzNTdlZGJhM2IyYjAxZmQxMGNhMDcxMWIyYjQxNDNjZDE4M2I2
OWM0Li5iZGZmMTc2MWRhOWZlZTQ0NTJhOTFiYjc0Y2NmZGJmMzQ5YjI2Y2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0xMjAsOCArMTIwLDcg
QEAgdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpIH07
CiAKIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4mJiBpbXBsKQotICAgIDogSlNET01X
cmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbXBsKCZpbXBsLmxlYWtS
ZWYoKSkKKyAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcj4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkK
IHsKIH0KIApAQCAtMTQxLDExICsxNDAsNiBAQCB2b2lkIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6fkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoKTsK
IH0KIAotSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6fkpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIoKQotewotICAgIHJlbGVhc2VJbXBsKCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KGJhc2VWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCBlMTY5
MGI0M2M4MWJiODJhYTMyMmU2MzJkOGY5YWNhZDMyNzNiNThiLi5hOWZmNjRkM2ZiNTcyNTJkYmIz
NDE3ZDIxNTJjMjRmZWJiYmYzMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHVibGljIEpTRE9NV3JhcHBlciB7
CitjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHVibGljIEpTRE9NV3JhcHBl
cldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gewogcHVibGlj
OgotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBw
ZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IEJhc2U7CiAg
ICAgc3RhdGljIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGNyZWF0ZShKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYgaW1wbCkKICAgICB7CiAgICAgICAgIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEY6Om1vdmUoaW1wbCkpOwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogdG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotICAgIH5K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKCk7CisgICAgfkpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIoKSB7IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNTEsMTEgKzUxLDYgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lciYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2b2lkIHJlbGVh
c2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVmKCk7IH0KLQot
cHJpdmF0ZToKLSAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogbV9pbXBsOwogcHJvdGVj
dGVkOgogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4mJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBlZGVhZDY3MWU4NGQxOWJi
N2JmNjM1ODAxZWYyOGIzMmYzZTE4YzkyLi5iMWNjZWJlNGFlYjU0MzVlNzNiOWIyMWFlOTEzM2E3
NzRmNjY1N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xODUs
OCArMTg1LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rv
cj4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQot
ICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkKKyAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBs
ZW1lbnRhdGlvbjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMjA2LDExICsyMDUsNiBAQCB2b2lkIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3I6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09i
amVjdC0+SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6fkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoKTsK
IH0KIAotSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6fkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoKQot
ewotICAgIHJlbGVhc2VJbXBsKCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29u
c3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25z
dHJ1Y3RvclByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0
b3IuaAppbmRleCBlM2E1MzY2MTg4NjVmYzM1ZmZlNjJjNTA1ZjFkMjdjMzBiNWUzOTNiLi5hMmE1
MWZlMmE2YjNiMGRjNTAyZjQ3NDFiN2FkYzc2YmRiOGFhNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NV3JhcHBlciB7Citj
bGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NV3JhcHBlcldpdGhJbXBs
ZW1lbnRhdGlvbjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gewogcHVibGljOgotICAgIHR5cGVkZWYg
SlNET01XcmFwcGVyIEJhc2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50
YXRpb248VGVzdE5hbWVkQ29uc3RydWN0b3I+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkK
ICAgICB7CiAgICAgICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHN0YXRpYyBUZXN0TmFtZWRDb25zdHJ1Y3RvciogdG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotICAgIH5K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yKCk7CisgICAgfkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoKSB7
IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNTIsMTEgKzUyLDYgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIFRlc3ROYW1lZENvbnN0cnVj
dG9yJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFzZUlt
cGwoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1wcml2
YXRlOgotICAgIFRlc3ROYW1lZENvbnN0cnVjdG9yKiBtX2ltcGw7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVy
bWluaXN0aWMuY3BwCmluZGV4IGFmMmRiYmM5NGZkODM5NThkNTYxMzY4OWU4OGMwZmU5NmI4NGMw
NjkuLmE4Y2E0ZTE3OWI2MjQzYmJkODVhMjRjMTZiM2RkMDQzYzMyN2VlOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1p
bmlzdGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAgLTE0MSw4ICsxNDEsNyBAQCB2b2lkIEpTVGVz
dE5vbmRldGVybWluaXN0aWNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpzX2luZm8gPSB7ICJUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYykgfTsKIAogSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3ROb25kZXRlcm1pbmlzdGljPiYmIGltcGwpCi0gICAgOiBKU0RP
TVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVh
a1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3ROb25kZXRl
cm1pbmlzdGljPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewog
fQogCkBAIC0xNjIsMTEgKzE2MSw2IEBAIHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROb25kZXRlcm1p
bmlzdGljOjp+SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYygpOwogfQogCi1KU1Rlc3ROb25kZXRlcm1p
bmlzdGljOjp+SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYygpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsK
LX0KLQogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNSZWFkb25seUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmgKaW5kZXggYzVkNjYzMzAwY2Iy
NDA5M2UzNTEzNWQ1ZDVmMTY1YjdjMjU0ZDBhNC4uNThmYTc3NDM2N2ZkMTFjNDg5NWJlYTNhNzFh
NDJkZmI2NGZiMGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCkBAIC0yNyw5
ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE5vbmRldGVy
bWluaXN0aWM+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOworICAg
IHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3ROb25kZXRlcm1pbmlz
dGljPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3ROb25kZXRlcm1pbmlzdGljPiYmIGltcGwpCiAgICAgewogICAgICAgICBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5vbmRldGVybWluaXN0aWM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVz
dE5vbmRldGVybWluaXN0aWMqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYygp
OworICAgIH5KU1Rlc3ROb25kZXRlcm1pbmlzdGljKCkgeyB9CiAKICAgICBERUNMQVJFX0lORk87
CiAKQEAgLTUxLDExICs1MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgVGVzdE5vbmRldGVybWluaXN0aWMmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9
Ci0gICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIp
LT5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGVzdE5vbmRldGVybWluaXN0aWMqIG1faW1w
bDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5vbmRldGVybWluaXN0aWM+JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCmluZGV4IGE4N2Q3NzJjNDg3NmY3YjlkNDQ2YTBhZTY2OTIzM2JmYTA5Y2VmNWUuLjg3
MjMzNmUxNWM3ZGZlODE5M2Y4OTg2OWYzZjMwODY4NGI2NjRmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03
MDcsOCArNzA3LDcgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmo6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0T2JqKSB9OwogCiBKU1Rlc3RPYmo6OkpTVGVzdE9iaihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPYmo+JiYgaW1wbCkKLSAg
ICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbCgm
aW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVz
dE9iaj4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApA
QCAtNzI4LDExICs3MjcsNiBAQCB2b2lkIEpTVGVzdE9iajo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RPYmo6On5KU1Rlc3RPYmooKTsKIH0KIAotSlNU
ZXN0T2JqOjp+SlNUZXN0T2JqKCkKLXsKLSAgICByZWxlYXNlSW1wbCgpOwotfQotCiBib29sIEpT
VGVzdE9iajo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
c3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KG9iamVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
aW5kZXggMDg5MmE4MGU4ZGI5YWEyNjkwMTExOTNiMDNjYmVkOTNhZWU1ZWEzYS4uNTE3ZmE5NjUz
ZTUwYTNkYTUwNTg2MWI0ZjgwN2Q3MDRiZDMyZjJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMjcsOSArMjcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTVGVzdE9iaiA6IHB1YmxpYyBKU0RP
TVdyYXBwZXIgeworY2xhc3MgSlNUZXN0T2JqIDogcHVibGljIEpTRE9NV3JhcHBlcldpdGhJbXBs
ZW1lbnRhdGlvbjxUZXN0T2JqPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIg
QmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0T2Jq
PiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RPYmoqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE9iaj4mJiBp
bXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0T2JqKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RP
Ymooc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGVzdE9iaiogdG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0T2JqKCk7
CisgICAgfkpTVGVzdE9iaigpIHsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC02NSwxMSAr
NjUsNiBAQCBwdWJsaWM6CiAgICAgSlNDOjpKU1ZhbHVlIGN1c3RvbU1ldGhvZChKU0M6OkV4ZWNT
dGF0ZSYpOwogICAgIEpTQzo6SlNWYWx1ZSBjdXN0b21NZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNT
dGF0ZSYpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2xhc3NNZXRob2QyKEpTQzo6RXhlY1N0
YXRlJik7Ci0gICAgVGVzdE9iaiYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAg
ICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRl
cmVmKCk7IH0KLQotcHJpdmF0ZToKLSAgICBUZXN0T2JqKiBtX2ltcGw7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA2NmVmM2Q1MjFi
MWY4MmM2YmI5NzdjODg1M2MyYmQ5YjI5MmE2Zjc1Li5lMWQxMzMxOTQwN2ZhYjFkOTk0MjM4Nzli
OTJkNmNiNmM1MDc5M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCkBAIC0yMDYsOCArMjA2LDcgQEAgdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpIH07CiAKIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycz4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KQotICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkKKyAgICA6IEpTRE9NV3JhcHBlcldpdGhJ
bXBsZW1lbnRhdGlvbjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMjI3LDExICsyMjYsNiBAQCB2
b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6fkpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsKIH0KIAotSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6fkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKQotewotICAgIHJlbGVhc2VJbXBs
KCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1Byb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaAppbmRleCAxMWUyOTE5OTg2MmUxMjVhMTRmYWU1MWY3NDA1ZjY0OTY5
NDVkYjFhLi42NTQ1N2E3NDI4YmM5NmI3OWMyZTA4MDBkODdjNTA1YmIxYTJlYmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTI3LDkgKzI3LDkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzIDogcHVibGljIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycz4gewogcHVibGljOgotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJh
c2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1w
bCkKICAgICB7CiAgICAgICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpAQCAtNDEsNyArNDEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOwotICAgIH5KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKCk7
CisgICAgfkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKSB7IH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKIApAQCAtNTEsMTEgKzUxLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKLSAgICBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJu
ICptX2ltcGw7IH0KLSAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1w
bCwgbnVsbHB0ciktPmRlcmVmKCk7IH0KLQotcHJpdmF0ZToKLSAgICBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyogbV9pbXBsOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAppbmRleCBjYTEwZGY2ZmZhOTFkMjlhOWUwODMwYzU3ZTRhODU1YWQ3ZWFmOWMwLi5kZjFj
OTY1OTNiMzMxZmUxODIwMWUwNWEwZjdlNmE0YmQ2ODQ0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0xMzUsOCArMTM1LDcgQEAgdm9pZCBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRp
bnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1RhYmxlLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpIH07CiAKIEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4m
JiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotICAg
ICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkKKyAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1l
bnRhdGlvbjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdU
Rjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMTU2LDExICsxNTUsNiBAQCB2b2lkIEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVj
dC0+SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoKTsKIH0K
IAotSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6fkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoKQotewot
ICAgIHJlbGVhc2VJbXBsKCk7Ci19Ci0KIGJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKaW5kZXggMGM5YTdmMTRmYTcwZWU1MjkzNGQxZDZm
ZTBhMThiZjM1ZGE0NDYzMi4uMjA0NzlhYjU4Nzg3Y2U1ZjJkNTkwNTI3MjVkZWQzYTUzYjA1NTFh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJyaWRlQnVpbHRpbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCkBAIC0yNyw5ICsyNyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyA6IHB1
YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyA6IHB1Ymxp
YyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE92ZXJyaWRlQnVpbHRpbnM+IHsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOworICAgIHR5cGVkZWYgSlNE
T01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiBCYXNlOwog
ICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVy
cmlkZUJ1aWx0aW5zPiYmIGltcGwpCiAgICAgewogICAgICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0g
ICAgfkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoKTsKKyAgICB+SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cygpIHsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01NCwxMSArNTQsNiBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBUZXN0
T3ZlcnJpZGVCdWlsdGlucyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2
b2lkIHJlbGVhc2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVm
KCk7IH0KLQotcHJpdmF0ZToKLSAgICBUZXN0T3ZlcnJpZGVCdWlsdGlucyogbV9pbXBsOwogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6SGFz
SW1wdXJlR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNDdmY2E0NDhkNThlZmI4ZmM0YzE0
YWRiZGVmOWU4ZDYxYjMwOWEwNy4uYmFkZWEwY2EzNjdhZDEzYTgwYzlkN2IzMDA2NzIzOGVmZjRl
NDNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKQEAgLTEzMSw4ICsxMzEsNyBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c19pbmZv
ID0geyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb248VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMTUyLDEx
ICsxNTEsNiBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6On5KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UoKTsKIH0KIAotSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp+SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKCkKLXsKLSAgICByZWxlYXNlSW1wbCgpOwot
fQotCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgK
aW5kZXggMTczNWRhOWFhNjY5MDU5Yjc5NDNjMjg5NWU0N2M1MWFkYzJiMmZiNy4uZDMxZGQzNGFh
ZmNjNGE1MWZhMjg4NWRiYzJmMDcyYzEyM2I2OTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtMjksOSArMjksOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRh
dGlvbjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiB7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJ
bXBsZW1lbnRhdGlvbjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBCYXNlOwog
ICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4mJiBpbXBsKQogICAgIHsK
ICAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKCk7CisgICAgfkpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSgpIHsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01NywxMSAr
NTcsNiBAQCBwdWJsaWM6CiAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtX2Nh
Y2hlZFJlYWRvbmx5VmFsdWU7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKLSAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFz
ZUltcGwoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1w
cml2YXRlOgotICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIG1faW1wbDsK
IHByb3RlY3RlZDoKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggNzE3YTFmZjlm
NDQ5NGY1N2Y2NWY2NWNjZTM1ODQzNGE5MjdjYjBkYS4uYzllYWU0N2VjMzg1OWQyOTQ4NmM3NTEw
MDYzMWIxMzZlNzRmMzA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0yMTQsOCArMjE0LDcg
QEAgdm9pZCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzOjpzX2luZm8gPSB7ICJUZXN0VHlwZWRlZnMi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0VHlwZWRlZnNUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RUeXBlZGVmcykgfTsKIAogSlNUZXN0VHlwZWRlZnM6OkpTVGVzdFR5cGVkZWZzKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdFR5cGVkZWZzPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFw
cGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RUeXBlZGVmcz4oc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMjM1LDExICsyMzQsNiBAQCB2b2lkIEpT
VGVzdFR5cGVkZWZzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3Qt
PkpTVGVzdFR5cGVkZWZzOjp+SlNUZXN0VHlwZWRlZnMoKTsKIH0KIAotSlNUZXN0VHlwZWRlZnM6
On5KU1Rlc3RUeXBlZGVmcygpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQogYm9vbCBKU1Rl
c3RUeXBlZGVmczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4ob2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmgKaW5kZXggYjNhNWFkNjc2NmIwNTg1YWIyMTYzZjUxYmFlMjdiNGQ1
OTI2OWNlZi4uZGVjOWVhMTcyOWI1ZTU1MGUzMzFlYTc1ZDhkYjBjYWViMDc1MmU3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBKU1Rlc3RUeXBlZGVmcyA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNUZXN0
VHlwZWRlZnMgOiBwdWJsaWMgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RUeXBl
ZGVmcz4gewogcHVibGljOgotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgdHlw
ZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdFR5cGVkZWZzPiBCYXNlOwog
ICAgIHN0YXRpYyBKU1Rlc3RUeXBlZGVmcyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0VHlwZWRlZnM+JiYg
aW1wbCkKICAgICB7CiAgICAgICAgIEpTVGVzdFR5cGVkZWZzKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFR5cGVkZWZzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdFR5cGVkZWZzKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1w
bCkpOwpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRlc3RUeXBlZGVmcyog
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKLSAgICB+SlNUZXN0VHlwZWRlZnMoKTsKKyAgICB+SlNUZXN0VHlwZWRlZnMoKSB7IH0KIAog
ICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNTIsMTEgKzUyLDYgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKLSAgICBUZXN0VHlwZWRlZnMmIGltcGwoKSBjb25zdCB7IHJldHVybiAq
bV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGws
IG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGVzdFR5cGVkZWZzKiBtX2lt
cGw7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCmluZGV4IGRkY2Y3M2Y5ZDFhNDE0YTNiNTE1Y2ZhMWJm
MzYyZjVmYjQ0OThhYzQuLjg5YzZkMWE1NDY3ODM5ZjViZTI1YTRkN2Y3OTk3NmIxYTZiYTg1MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0
dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTYXR0cmlidXRlLmNwcApAQCAtMTE2LDggKzExNiw3IEBAIHZvaWQgSlNhdHRyaWJ1dGVQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU2F0dHJpYnV0
ZTo6c19pbmZvID0geyAiYXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU2F0dHJpYnV0ZSkgfTsKIAogSlNhdHRyaWJ1dGU6OkpTYXR0cmlidXRlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8YXR0
cmlidXRlPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0
aEltcGxlbWVudGF0aW9uPGF0dHJpYnV0ZT4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6
bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMTM3LDExICsxMzYsNiBAQCB2b2lkIEpTYXR0cmlidXRl
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTYXR0cmlidXRl
Ojp+SlNhdHRyaWJ1dGUoKTsKIH0KIAotSlNhdHRyaWJ1dGU6On5KU2F0dHJpYnV0ZSgpCi17Ci0g
ICAgcmVsZWFzZUltcGwoKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25s
eShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0
ZS5oCmluZGV4IDU3OGUwNWZlZTlkNjgxNzM2NjA4YWY5YmQ1NjVlYzgxZGU1OWQ1NmEuLjZhMjJh
MzQyOTVlYTE3MjM2YmYxOTg1ZmY4OWIzYjcwMTZkYTY4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oCkBAIC0yOCw5
ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNhdHRyaWJ1dGUgOiBw
dWJsaWMgSlNET01XcmFwcGVyIHsKK2NsYXNzIEpTYXR0cmlidXRlIDogcHVibGljIEpTRE9NV3Jh
cHBlcldpdGhJbXBsZW1lbnRhdGlvbjxhdHRyaWJ1dGU+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IEpTRE9NV3JhcHBlciBCYXNlOworICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uPGF0dHJpYnV0ZT4gQmFzZTsKICAgICBzdGF0aWMgSlNhdHRyaWJ1dGUqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8YXR0cmlidXRlPiYmIGltcGwpCiAgICAgewogICAgICAgICBKU2F0dHJpYnV0ZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU2F0dHJpYnV0ZT4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU2F0dHJpYnV0ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgYXR0cmlidXRlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTYXR0cmlidXRlKCk7CisgICAg
fkpTYXR0cmlidXRlKCkgeyB9CiAKICAgICBERUNMQVJFX0lORk87CiAKQEAgLTUyLDExICs1Miw2
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgYXR0cmlidXRlJiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IHN0
ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAg
IGF0dHJpYnV0ZSogbV9pbXBsOwogcHJvdGVjdGVkOgogICAgIEpTYXR0cmlidXRlKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8YXR0cmlidXRlPiYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHku
Y3BwCmluZGV4IGQwM2VjZDE2MjI4YTZmNDkwZTgzZDUwOTg1M2ZlNDQxZWIwYmFmZDkuLjY3M2Qz
Y2Y5Y2I2ZmViMTI1YTg5YmEwYzFlOTgyY2Y2NTFhYTFmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTEx
Miw4ICsxMTIsNyBAQCB2b2lkIEpTcmVhZG9ubHlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU3JlYWRvbmx5OjpzX2luZm8gPSB7ICJyZWFkb25seSIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNyZWFkb25seSkgfTsKIAog
SlNyZWFkb25seTo6SlNyZWFkb25seShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPHJlYWRvbmx5PiYmIGltcGwpCi0gICAgOiBKU0RPTVdy
YXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1Jl
ZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPHJlYWRvbmx5PihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQogCkBAIC0xMzMsMTEg
KzEzMiw2IEBAIHZvaWQgSlNyZWFkb25seTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAg
ICB0aGlzT2JqZWN0LT5KU3JlYWRvbmx5Ojp+SlNyZWFkb25seSgpOwogfQogCi1KU3JlYWRvbmx5
Ojp+SlNyZWFkb25seSgpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQogRW5jb2RlZEpTVmFs
dWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNyZWFkb25seVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU3JlYWRvbmx5UHJvdG90eXBlKj4o
YmFzZVZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU3JlYWRvbmx5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5oCmluZGV4IDI0NWViNzFmYmFjM2Y4MjAwMDcyNzM4YzU4NmE0MWM1
MWU0ODk1MTIuLjUxYjFjYTIxZmQ3OTJhYTFhMWM0ODllM2I1NzE2NGEyZTRjYmJiYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9u
bHkuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpT
cmVhZG9ubHkgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK2NsYXNzIEpTcmVhZG9ubHkgOiBwdWJs
aWMgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPHJlYWRvbmx5PiB7CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldp
dGhJbXBsZW1lbnRhdGlvbjxyZWFkb25seT4gQmFzZTsKICAgICBzdGF0aWMgSlNyZWFkb25seSog
Y3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxyZWFkb25seT4mJiBpbXBsKQogICAgIHsKICAgICAgICAgSlNyZWFkb25s
eSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU3JlYWRvbmx5PihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTcmVhZG9ubHkoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURjo6bW92ZShpbXBsKSk7CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgc3RhdGljIHJlYWRvbmx5KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTcmVhZG9ubHkoKTsKKyAg
ICB+SlNyZWFkb25seSgpIHsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MSwxMSArNTEs
NiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHJlYWRvbmx5JiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IHN0
ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAg
IHJlYWRvbmx5KiBtX2ltcGw7CiBwcm90ZWN0ZWQ6CiAgICAgSlNyZWFkb25seShKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPHJlYWRvbmx5PiYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262247</attachid>
            <date>2015-10-01 04:43:44 -0700</date>
            <delta_ts>2015-10-01 06:08:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-149660-20151001134317.patch</filename>
            <type>text/plain</type>
            <size>82121</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY1NzEyN2ZkZjRkMzM1
YmUyZDQyNmRhOGFmZjkwY2IyNDdmODBhMS4uN2Q0YWIzYzIxZjI4OTBiYzNkOGIyNTkxY2QwZjFk
N2E3NTJjOGVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MCBAQAorMjAxNS0xMC0wMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlZmFj
dG9yIGJpbmRpbmcgZ2VuZXJhdG9yIHRvIGZhY3RvciBKUyBET00gY2xhc3MgbV9pbXBsIGhhbmRs
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGRlZCBK
U0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24gdGVtcGxhdGUgY2xhc3MgdG8gbW92ZSBtX2lt
cGwgb3V0IG9mIHRoZSBiaW5kaW5nIGdlbmVyYXRvci4KKyAgICAgICAgVXBkYXRlZCBjdXN0b20g
YmluZGluZ3MgdG8gdXNlIGltcGwoKSBpbnN0ZWFkIG9mIG1faW1wbCBkaXJlY3RseS4KKyAgICAg
ICAgVXBkYXRlZCBiaW5kaW5nIGdlbmVyYXRvciBhY2NvcmRpbmdseS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCBiaW5kaW5nIHRlc3RzLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRh
dGlvbjo6aW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50
YXRpb246On5KU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uOjpKU0RPTVdyYXBwZXJXaXRoSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0
aW9uOjpyZWxlYXNlSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdG9yYWdlOjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjplbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3Vi
dGxlQ3J5cHRvOjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp2ZXJp
ZnkpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OndyYXBLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZXRQYXJlbnRDbGFzc05h
bWUpOgorICAgICAgICAoR2V0SW1wbENsYXNzTmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6
On5KU1Rlc3RBY3RpdmVET01PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdDo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dDo6fkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90KTog
RGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Ojp+SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEV2ZW50Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6fkpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdl
dDo6SlNUZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXQ6OmdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudFRhcmdldDo6fkpTVGVzdEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEV4Y2VwdGlvbjo6SlNUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RFeGNlcHRpb246On5KU1Rlc3RFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OkpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZTo6fkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6fkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6On5KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0
b3I6On5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljUmVhZG9ubHlBdHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYzo6fkpTVGVzdE5vbmRldGVybWluaXN0aWMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpKU1Rlc3RPYmopOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9i
ajo6fkpTVGVzdE9iaik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpOiBE
ZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6SlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp+SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VW
YWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp+SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RUeXBlZGVmczo6SlNUZXN0VHlwZWRlZnMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0VHlwZWRlZnM6OmdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RUeXBlZGVmczo6fkpTVGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNh
dHRyaWJ1dGU6OkpTYXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzYXR0cmlidXRlUmVh
ZG9ubHkpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0
dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGU6On5KU2F0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHk6OkpTcmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNyZWFkb25seUNvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25s
eTo6fkpTcmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6ZmluaXNoQ3Jl
YXRpb24pOiBEZWxldGVkLgorCiAyMDE1LTA5LTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgQmluZGluZyBnZW5lcmF0b3Igc2hvdWxkIG1h
a2UgbXV0YWJsZSBDYWNoZWRBdHRyaWJ1dGUgbWVtYmVyIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4IDg4ZGM1
NmQwMTZjMDQ2YTc3YzEyNzg5NTk5Y2E0OTUwMzhmZGMzYmEuLjlhZjg0NWMxODIwYjZhNDQ5MTg5
MzRlZTMxMDIxNWU2OGQ3NGQzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBKU0RP
TVN0cmluZ01hcDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3AKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RPTVN0cmluZ01hcCo+KG9iamVjdCk7CiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7Ci0g
ICAgdGhpc09iamVjdC0+bV9pbXBsLT5nZXROYW1lcyhuYW1lcyk7CisgICAgdGhpc09iamVjdC0+
aW1wbCgpLmdldE5hbWVzKG5hbWVzKTsKICAgICBzaXplX3QgbGVuZ3RoID0gbmFtZXMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbmFtZXNbaV0pKTsKQEAg
LTY1LDcgKzY1LDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIEpTRE9NU3RyaW5nTWFw
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NU3RyaW5nTWFwKj4oY2VsbCk7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gdGhpc09iamVj
dC0+bV9pbXBsLT5kZWxldGVJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5pbXBsKCkuZGVsZXRlSXRlbShwcm9wZXJ0eU5hbWVU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
bmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggOGRl
ZDk4MDE5N2JhNTY5NWQ5YTRkNjE2ZTI4NTQ2YWY0MTAxZDUwMi4uMmI0Njc3MGVhMTJmNjllZmNm
OTUwNjJkNmY3ZDYzYzVhZWMwY2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmgKQEAgLTQyLDEyICs0MiwyOCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSAKLSAgICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9i
YWxPYmplY3QtPnZtKCksIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGdsb2JhbE9iamVjdC0+
dm0oKSwgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgSW1wbGVtZW50YXRpb25D
bGFzcz4gY2xhc3MgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uIDogcHVibGljIEpTRE9N
V3JhcHBlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKworICAg
IEltcGxlbWVudGF0aW9uQ2xhc3MmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Cisg
ICAgfkpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbigpIHsgc3RkOjpleGNoYW5nZShtX2lt
cGwsIG51bGxwdHIpLT5kZXJlZigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBKU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb24oSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8SW1wbGVtZW50YXRpb25DbGFzcz4mJiBpbXBsKQor
ICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCisgICAgICAgICwgbV9pbXBs
KCZpbXBsLmxlYWtSZWYoKSkgeyB9CisKK3ByaXZhdGU6CisgICAgSW1wbGVtZW50YXRpb25DbGFz
cyogbV9pbXBsOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSlNE
T01XcmFwcGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2Vv
bG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHAKaW5kZXggNTI3ZDIxM2Q3MjM1MzEzZWNhZmI2ZWU3MjM3Yjc0YWVhNjkw
NTViMC4uZWJjNWJhN2FiNjMwY2ZhNTNkMDE1YjJjNmQzNDIzODk0NTI4MDkxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCBKU1ZhbHVlIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBB
U1NFUlQocG9zaXRpb25PcHRpb25zKTsKIAotICAgIG1faW1wbC0+Z2V0Q3VycmVudFBvc2l0aW9u
KHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFz
ZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAgICBpbXBsKCkuZ2V0Q3VycmVudFBv
c2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2su
cmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIH0KIApAQCAtMTM2LDcgKzEzNiw3IEBAIEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsKIAotICAgIGludCB3YXRjaElEID0g
bV9pbXBsLT53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlv
bkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMucmVsZWFzZSgpKTsKKyAg
ICBpbnQgd2F0Y2hJRCA9IGltcGwoKS53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVs
ZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMu
cmVsZWFzZSgpKTsKICAgICByZXR1cm4ganNOdW1iZXIod2F0Y2hJRCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwCmluZGV4IDQ5YTBlZmRjNDU4NWNkMjVkMWQyZTQ1YWMxMzg3MzQzM2Y5NTJhNDAu
LmIzMzY0ZDI2NDUxNDUyNmI1N2JmZWUwZWQxOGRmNWQ2ZDA0MGM4MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcApAQCAtNDcsMTcgKzQ3LDE3IEBAIEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0
OjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
fQotICAgIGlmIChpbmRleCA8IDAgfHwgKHVuc2lnbmVkKWluZGV4ID49IG1faW1wbC0+bGVuZ3Ro
KCkpIHsKKyAgICBpZiAoaW5kZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSBpbXBsKCkubGVu
Z3RoKCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5ERVhfU0laRV9FUlIp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKIAotICAgIHVuc2lnbmVkIG51
bUNvbHVtbnMgPSBtX2ltcGwtPmNvbHVtbk5hbWVzKCkuc2l6ZSgpOworICAgIHVuc2lnbmVkIG51
bUNvbHVtbnMgPSBpbXBsKCkuY29sdW1uTmFtZXMoKS5zaXplKCk7CiAgICAgdW5zaWduZWQgdmFs
dWVzSW5kZXggPSBpbmRleCAqIG51bUNvbHVtbnM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bUNvbHVtbnM7IGkrKykgewotICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSBt
X2ltcGwtPnZhbHVlcygpW3ZhbHVlc0luZGV4ICsgaV07CisgICAgICAgIGNvbnN0IFNRTFZhbHVl
JiB2YWx1ZSA9IGltcGwoKS52YWx1ZXMoKVt2YWx1ZXNJbmRleCArIGldOwogICAgICAgICBKU1Zh
bHVlIGpzVmFsdWU7CiAKICAgICAgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKQEAgLTc0LDcg
Kzc0LDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmc3RhdGUsIG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnREZWxldGUg
fCBSZWFkT25seSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBpbXBsKCkuY29sdW1uTmFtZXMoKVtpXSksIGpzVmFs
dWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHAKaW5kZXggM2M3MzRhNTA5ZGZiZjgxMWZmMjU1NWZiZDhkMjgwYWEwOTc4ZjQ0YS4u
OTVhOGRmY2U4NWEzMjZiYjMxNWIwZGYyYmVmMWU4NDQwYmExNTFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAg
LTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBt
X2ltcGwtPmV4ZWN1dGVTUUwoc3FsU3RhdGVtZW50LCBzcWxWYWx1ZXMsIGNhbGxiYWNrLnJlbGVh
c2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICBpbXBsKCkuZXhlY3V0ZVNR
TChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgY2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxi
YWNrLnJlbGVhc2UoKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggOWNjNTg1YmQ3ZWIxYWE2ZDljMDRiZDYyNGRiNjU1
YTA1ZDUxMzMxMS4uNTg1ZDcyNDdiNjFiYTA5MGQ0MWQwODYxNmU1MmYyNTEwZTNmNGQzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC02
OSw3ICs2OSw3IEBAIGJvb2wgSlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdGhpc09iamVjdC0+bV9pbXBsLT5yZW1vdmVJdGVt
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKKyAgICB0aGlzT2JqZWN0
LT5pbXBsKCkucmVtb3ZlSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTgzLDEyICs4MywxMiBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogewogICAgIEpTU3Rv
cmFnZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0b3JhZ2UqPihvYmplY3QpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPm1faW1w
bC0+bGVuZ3RoKGVjKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5pbXBsKCku
bGVuZ3RoKGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+a2V5KGksIGVjKSkpOwor
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHRo
aXNPYmplY3QtPmltcGwoKS5rZXkoaSwgZWMpKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcAppbmRleCA2OGU2ZDU2ODE5NzEwMDVkNTRhN2M1ODBkODBlMGIyOTZkMWI1
ZGExLi5mNWJhNGQzMDI5Y2Q2ODhmOTM1ZWZlMzBiNzlkNzliZTIyMzQ3ZjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBA
IC0xNTIsNyArMTUyLDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3Rh
dGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAogICAg
IGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0KSkgewotICAgICAgICBtX2lt
cGwtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUg
J2VuY3J5cHQnIikpOworICAgICAgICBpbXBsKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
S2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CiAgICAgICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQpAQCAtMjA1LDcgKzIwNSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlw
dG86OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRGVjcnlw
dCkpIHsKLSAgICAgICAgbV9pbXBsLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNh
Z2VzIGRvIG5vdCBpbmNsdWRlICdkZWNyeXB0JyIpKTsKKyAgICAgICAgaW1wbCgpLmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikp
OwogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KQEAgLTI1Nyw3ICsyNTcsNyBAQCBK
U1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlw
dG9LZXlVc2FnZVNpZ24pKSB7Ci0gICAgICAgIG1faW1wbC0+ZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnc2lnbiciKSk7CisgICAgICAgIGltcGwo
KS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdz
aWduJyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9F
UlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC0zMDksNyArMzA5
LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCFrZXktPmFs
bG93cyhDcnlwdG9LZXlVc2FnZVZlcmlmeSkpIHsKLSAgICAgICAgbV9pbXBsLT5kb2N1bWVudCgp
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnknIikpOwor
ICAgICAgICBpbXBsKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBu
b3QgaW5jbHVkZSAndmVyaWZ5JyIpKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
Tk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CkBAIC02NDYsNyArNjQ2LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVj
U3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKIAog
ICAgIGlmICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBLZXkpKSB7Ci0g
ICAgICAgIG1faW1wbC0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBu
b3QgaW5jbHVkZSAnd3JhcEtleSciKSk7CisgICAgICAgIGltcGwoKS5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVND
SUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC03MjgsNyArNzI4LDcgQEAgSlNWYWx1ZSBK
U1N1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwogCiAgICAgaWYgKCF1bndyYXBwaW5nS2V5LT5hbGxv
d3MoQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpKSB7Ci0gICAgICAgIG1faW1wbC0+ZG9jdW1lbnQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndW53cmFwS2V5JyIp
KTsKKyAgICAgICAgaW1wbCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMg
ZG8gbm90IGluY2x1ZGUgJ3Vud3JhcEtleSciKSk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCA2MmI1MTM1YWFlZDM2ZmI5NjI0ZTEzNjM4MGVkYjMyZDVlMTAwZjVh
Li41ZGZhYzM1ZGI0NzgyN2M1ZjlkZmQ3MjllOWVjOWI4NmMwYzk1NDQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTgw
LDcgKzE4MCw4IEBAIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUKICAgICBteSAkaW50ZXJmYWNlID0g
c2hpZnQ7CiAKICAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
TGVnYWN5UGFyZW50In0gaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTGVn
YWN5UGFyZW50In07Ci0gICAgcmV0dXJuICJKU0RPTVdyYXBwZXIiIHVubGVzcyAkaW50ZXJmYWNl
LT5wYXJlbnQ7CisgICAgcmV0dXJuICJKU0RPTVdyYXBwZXIiIHVubGVzcyBOZWVkc0ltcGxlbWVu
dGF0aW9uQ2xhc3MoJGludGVyZmFjZSk7CisgICAgcmV0dXJuICJKU0RPTVdyYXBwZXJXaXRoSW1w
bGVtZW50YXRpb248IiAuIEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZS0+bmFtZSkgLiAiPiIg
dW5sZXNzICRpbnRlcmZhY2UtPnBhcmVudDsKICAgICByZXR1cm4gIkpTIiAuICRpbnRlcmZhY2Ut
PnBhcmVudDsKIH0KIApAQCAtODQwLDYgKzg0MSwxMCBAQCBzdWIgR2V0SW1wbENsYXNzTmFtZQog
ICAgIG15ICRuYW1lID0gc2hpZnQ7CiAKICAgICByZXR1cm4gIkRPTVdpbmRvdyIgaWYgJG5hbWUg
ZXEgIkFic3RyYWN0VmlldyI7CisKKyAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJG5hbWUp
OworICAgIHJldHVybiAkc3ZnTmF0aXZlVHlwZSBpZiAkc3ZnTmF0aXZlVHlwZTsKKwogICAgIHJl
dHVybiAkbmFtZTsKIH0KIApAQCAtODgxLDkgKzg4Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICRoZWFkZXJJbmNsdWRlc3siU1ZHRWxlbWVudC5oIn0gPSAxIGlmICRjbGFzc05hbWUgPX4g
L15KU1NWRy87CiAKICAgICBteSAkaW1wbFR5cGUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZh
Y2VOYW1lKTsKLSAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUs
ICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGltcGxUeXBlKTsKLSAgICAk
aW1wbFR5cGUgPSAkc3ZnTmF0aXZlVHlwZSBpZiAkc3ZnTmF0aXZlVHlwZTsKLQorICAgIG15ICgk
c3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0g
R2V0U1ZHUHJvcGVydHlUeXBlcygkaW50ZXJmYWNlTmFtZSk7CiAgICAgbXkgJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlOwogICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSA9
ICRzdmdQcm9wZXJ0eVR5cGUgaWYgJHN2Z1Byb3BlcnR5VHlwZTsKICAgICAkc3ZnUHJvcGVydHlP
ckxpc3RQcm9wZXJ0eVR5cGUgPSAkc3ZnTGlzdFByb3BlcnR5VHlwZSBpZiAkc3ZnTGlzdFByb3Bl
cnR5VHlwZTsKQEAgLTEwMjcsNyArMTAzMCw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAg
aWYgKCEkaGFzUGFyZW50KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgfiR7Y2xhc3NOYW1lfSgpO1xuIik7CiAgICAgfQogCiAgICAgIyBDbGFz
cyBpbmZvCkBAIC0xMTg4LDEyICsxMTkwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQog
CiAgICAgaWYgKE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKSkgewotICAgICAg
ICBpZiAoISRoYXNQYXJlbnQpIHsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgJGltcGxUeXBlJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfVxuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IHN0
ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfVxuXG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcml2YXRlOlxuIik7Ci0gICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICRpbXBsVHlwZSogbV9pbXBsO1xuIik7Ci0gICAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmICgkaGFzUGFyZW50KSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsKCkgY29uc3RcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFt
ZSY+KEJhc2U6OmltcGwoKSk7XG4iKTsKQEAgLTIxMzgsOSArMjEzNSw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKCRjbGFzc05hbWUpIH07XG5cbiIpOwogCi0gICAgbXkgKCRzdmdQcm9wZXJ0
eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9w
ZXJ0eVR5cGVzKCRpbXBsVHlwZSk7Ci0gICAgJGltcGxUeXBlID0gJHN2Z05hdGl2ZVR5cGUgaWYg
JHN2Z05hdGl2ZVR5cGU7Ci0KKyAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9w
ZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGludGVyZmFj
ZU5hbWUpOwogICAgIG15ICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKICAgICAkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgPSAkc3ZnUHJvcGVydHlUeXBlIGlmICRzdmdQcm9w
ZXJ0eVR5cGU7CiAgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlID0gJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUgaWYgJHN2Z0xpc3RQcm9wZXJ0eVR5cGU7CkBAIC0yMTYzLDEyICsyMTU4LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSB7IH1cblxu
Iik7CiAgICAgIH1lbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFt
ZX06OiRjbGFzc05hbWUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwotICAgICAgICBpZiAoJGhh
c1BhcmVudCkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50
Q2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpXG4iKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDog
JHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKVxuIik7
Ci0gICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xh
c3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgIH0KQEAgLTIxOTYsMTMgKzIxODYsNiBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0LT4ke2NsYXNzTmFtZX06
On4ke2NsYXNzTmFtZX0oKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7Ci0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06On4ke2NsYXNz
TmFtZX0oKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAg
IGlmIChOZWVkc0ltcGxlbWVudGF0aW9uQ2xhc3MoJGludGVyZmFjZSkpIHsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJlbGVhc2VJbXBsKCk7XG4iKTsKLSAgICAgICAgfQot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCiAgICAgbXkgJGhh
c0dldHRlciA9IEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCRpbnRlcmZhY2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA5ZmYwOTMzZmI2MGFkNDI0
ZjE0MzllYzQ1YTEwYmMxMTM3MDU5OWEwLi5hMTY4MDg4OGM5Y2Y2OTQ1ZmYyYzJkNzU5M2YyZmRi
MTcyMGY1MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTM5LDgg
KzEzOSw3IEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpzX2lu
Zm8gPSB7ICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEFjdGl2
ZURPTU9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEFjdGl2ZURPTU9iamVj
dCkgfTsKIAogSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpKU1Rlc3RBY3RpdmVET01PYmplY3QoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0QWN0aXZlRE9NT2JqZWN0PiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNE
T01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RBY3RpdmVET01PYmplY3Q+KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CiAKQEAgLTE2MCwxMSArMTU5
LDYgQEAgdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp+SlNUZXN0QWN0aXZl
RE9NT2JqZWN0KCk7CiB9CiAKLUpTVGVzdEFjdGl2ZURPTU9iamVjdDo6fkpTVGVzdEFjdGl2ZURP
TU9iamVjdCgpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQogYm9vbCBKU1Rlc3RBY3RpdmVE
T01PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihv
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IDhjOTU4ODdiYzE0ZmQx
ODI3ZjNhOThiOTQ4MDllNmI4YzE0NjFjZjkuLjI0Y2M1NjFlMzEzZTFlNzFlOWY4NDU4M2MyZDc3
OThiODQ0ODcxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTI3LDkgKzI3
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1Rlc3RBY3RpdmVET01PYmpl
Y3QgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK2NsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdCA6
IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEFjdGl2ZURPTU9iamVj
dD4gewogcHVibGljOgotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgdHlwZWRl
ZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEFjdGl2ZURPTU9iamVjdD4gQmFz
ZTsKICAgICBzdGF0aWMgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RB
Y3RpdmVET01PYmplY3Q+JiYgaW1wbCkKICAgICB7CiAgICAgICAgIEpTVGVzdEFjdGl2ZURPTU9i
amVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RBY3RpdmVE
T01PYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpAQCAtNDIsNyArNDIs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRlc3RBY3RpdmVET01PYmplY3QqIHRvV3JhcHBlZChK
U0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpT
VGVzdEFjdGl2ZURPTU9iamVjdCgpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MiwxMSAr
NTEsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIFRlc3RBY3RpdmVE
T01PYmplY3QmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxl
YXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgVGVzdEFjdGl2ZURPTU9iamVjdCogbV9pbXBsOwogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0LmNwcAppbmRleCAwMzAzMGMwNTcyM2E5OGNkN2I3MzRkN2VlNWQ2NDc3Y2Y1
YThiMGE5Li4zYzFlODgzOTYwZTgwMmY5MzIyNjQ2OWEyMmVjNmYxMTdhMDFiNTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5jcHAKQEAgLTExOSw4ICsxMTksNyBAQCB2b2lkIEpTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdgogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0OjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KSB9OwogCiBKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3Q+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb248VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQogCkBA
IC0xNDAsMTEgKzEzOSw2IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6On5KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCgpOwogfQogCi1KU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6fkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0KCkKLXsKLSAgICByZWxlYXNlSW1wbCgpOwotfQotCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqPihiYXNl
VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAppbmRleCAwZDIzOWFmMDk4NWU4YjMwZDFmMmUxNDAy
YTc2YmRkMGMyMTkzYjNhLi44ZjRmMGE2NmM4NGFhYjlmZmEwZTczOGNkMGJkYWQwMTE2M2NhOTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0IDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFzcyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdCA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50
YXRpb248VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PiB7CiBwdWJs
aWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3Jh
cHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3Q+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdD4mJiBpbXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7
CkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogdG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotICAgIH5K
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCgpOwogCiAgICAgREVD
TEFSRV9JTkZPOwogCkBAIC01MCwxMSArNDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9
CiAKLSAgICBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QmIGltcGwo
KSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgc3Rk
OjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBtX2ltcGw7CiBwcm90
ZWN0ZWQ6CiAgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qo
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcAppbmRleCBiNWU4NTRkNGIxMzBkNzVmMjM2YmNmMGM0N2M0ZmMyZTlhMmQ4
NTVmLi42ZDI1MzM4MThiNzY0MTUwM2ZmOGU2OWI0ZjA4OTQ5ZTM3NmNiMDM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTEzMyw4ICsxMzMsNyBAQCB2b2lkIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnNfaW5mbyA9IHsgIlRlc3RD
dXN0b21OYW1lZEdldHRlciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RDdXN0b21OYW1lZEdldHRl
clRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKSB9Owog
CiBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXI+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RP
TVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEN1c3RvbU5hbWVkR2V0dGVyPihzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQogCkBAIC0xNTQsMTEgKzE1
Myw2IEBAIHZvaWQgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwq
IGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6On5KU1Rlc3RD
dXN0b21OYW1lZEdldHRlcigpOwogfQogCi1KU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6fkpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKCkKLXsKLSAgICByZWxlYXNlSW1wbCgpOwotfQotCiBib29sIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApp
bmRleCAyNGMwODBiZTFkYjBhNzg5MjNkYzk2YzhhNjljMjAzZDg5MjAwYjkzLi42YjRkOWY5Y2Mz
MjZhMGI3ZmQ4YTMxNDg0ODM2ODUyZmM5NWY5MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFz
cyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVt
ZW50YXRpb248VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBK
U0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRh
dGlvbjxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDdXN0b21OYW1lZEdldHRlcj4mJiBpbXBs
KQogICAgIHsKICAgICAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotICAgIH5KU1Rlc3RDdXN0b21O
YW1lZEdldHRlcigpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MywxMSArNTIsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIFRlc3RDdXN0b21OYW1lZEdldHRl
ciYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2b2lkIHJlbGVhc2VJbXBs
KCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVmKCk7IH0KLQotcHJpdmF0
ZToKLSAgICBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIG1faW1wbDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6OkludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGI4NzBmZDU2Y2FmOTIyOTAx
YWEyODgxMzgwNDE2ZmViNWU0NTA5MjguLmY2YTNjNjFiNzc1Y2MzMjQyNzk2MWU4Yjc5MzJiOTVl
NmY0NjM4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE3MCw4
ICsxNzAsNyBAQCB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9y
PiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0g
ICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxl
bWVudGF0aW9uPFRlc3RFdmVudENvbnN0cnVjdG9yPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGOjptb3ZlKGltcGwpKQogewogfQogCkBAIC0xOTEsMTEgKzE5MCw2IEBAIHZvaWQgSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp+SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcigpOwog
fQogCi1KU1Rlc3RFdmVudENvbnN0cnVjdG9yOjp+SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcigpCi17
Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25z
dHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDNmMWRiMjYxNWVlOTBj
MDA3ODk0YmQxNGJkNWU0MGU1NDA5ZTg2ODkuLmRjNzI4ZTVkNmQ5MTUyODhiY2VhY2NiODEyMmRi
YTM2MDRjMmQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtMjksOSAr
MjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTRGljdGlvbmFyeTsKIAotY2xh
c3MgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3Mg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50
YXRpb248VGVzdEV2ZW50Q29uc3RydWN0b3I+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9N
V3JhcHBlciBCYXNlOworICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9u
PFRlc3RFdmVudENvbnN0cnVjdG9yPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmIGltcGwpCiAgICAg
ewogICAgICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKSkgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGOjptb3ZlKGltcGwpKTsKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKICAgICBzdGF0aWMgVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6OkpTVmFs
dWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvcigpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MywxMSArNTIs
NiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIFRlc3RFdmVudENvbnN0
cnVjdG9yJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFz
ZUltcGwoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1w
cml2YXRlOgotICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBtX2ltcGw7CiBwcm90ZWN0ZWQ6CiAg
ICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAKaW5kZXggYjEwYTY3MDhjZWJlMjZlYTg2MDZjZTY4ZWI1MTA3MjQ5YjY0M2E5ZS4uODNi
MzBjZDQwYmQ4MmY4ZjlhOWM5NGRhNTMwYWI0ZjMyYmExNGEwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCkBAIC0xNDUsOCArMTQ1LDcgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50
VGFyZ2V0OjpzX2luZm8gPSB7ICJUZXN0RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZvLCAmSlNU
ZXN0RXZlbnRUYXJnZXRUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudFRhcmdl
dCkgfTsKIAogSlNUZXN0RXZlbnRUYXJnZXQ6OkpTVGVzdEV2ZW50VGFyZ2V0KFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEV2ZW50
VGFyZ2V0PiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0
aEltcGxlbWVudGF0aW9uPFRlc3RFdmVudFRhcmdldD4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMTY2LDExICsxNjUsNiBAQCB2b2lkIEpTVGVz
dEV2ZW50VGFyZ2V0OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3Qt
PkpTVGVzdEV2ZW50VGFyZ2V0Ojp+SlNUZXN0RXZlbnRUYXJnZXQoKTsKIH0KIAotSlNUZXN0RXZl
bnRUYXJnZXQ6On5KU1Rlc3RFdmVudFRhcmdldCgpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0K
LQogYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2
ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggYTIxYjdlZjky
ZGU3NzBmMTc0MGIxYThhZmQzN2EwYmFhZGE4OTE5Ny4uZDJiOTk4MzgzZTYxM2Y5NDQ1NTdjZTYw
MmYwM2Y5NTM2NDgxM2RlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTI3LDkgKzI3LDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1Rlc3RFdmVudFRhcmdldCA6IHB1
YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXQgOiBwdWJsaWMgSlNE
T01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RFdmVudFRhcmdldD4gewogcHVibGljOgot
ICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb248VGVzdEV2ZW50VGFyZ2V0PiBCYXNlOwogICAgIHN0YXRpYyBKU1Rl
c3RFdmVudFRhcmdldCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRUYXJnZXQ+JiYgaW1wbCkKICAg
ICB7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnQoKS0+ZmlyZUFsbCgiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3QiKTsKQEAgLTQ0LDcg
KzQ0LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7
Ci0gICAgfkpTVGVzdEV2ZW50VGFyZ2V0KCk7CiAKICAgICBERUNMQVJFX0lORk87CiAKQEAgLTU3
LDExICs1Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKLSAgICBUZXN0RXZlbnRU
YXJnZXQmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNl
SW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgVGVzdEV2ZW50VGFyZ2V0KiBtX2ltcGw7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMTU5ZmM3M2FkZjJmNGEzYjc2NzU0N2QyN2Ey
NmNjOTYxOWIxNTcxYS4uNDRiNjcxMWJlOTFhYjc4OWVhMjE5YWQ5NTYwNTI0OWEwZTk0ZjA1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEyOSw4ICsxMjksNyBAQCB2b2lkIEpTVGVzdEV4
Y2VwdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdEV4Y2VwdGlvbjo6c19pbmZvID0geyAiVGVzdEV4Y2VwdGlvbiIsICZCYXNlOjpzX2lu
Zm8sICZKU1Rlc3RFeGNlcHRpb25UYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFeGNl
cHRpb24pIH07CiAKIEpTVGVzdEV4Y2VwdGlvbjo6SlNUZXN0RXhjZXB0aW9uKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEV4Y2Vw
dGlvbj4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KQotICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkKKyAgICA6IEpTRE9NV3JhcHBlcldpdGhJ
bXBsZW1lbnRhdGlvbjxUZXN0RXhjZXB0aW9uPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKQogewogfQogCkBAIC0xNTAsMTEgKzE0OSw2IEBAIHZvaWQgSlNUZXN0RXhj
ZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTVGVz
dEV4Y2VwdGlvbjo6fkpTVGVzdEV4Y2VwdGlvbigpOwogfQogCi1KU1Rlc3RFeGNlcHRpb246On5K
U1Rlc3RFeGNlcHRpb24oKQotewotICAgIHJlbGVhc2VJbXBsKCk7Ci19Ci0KIGJvb2wgSlNUZXN0
RXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4ob2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uaAppbmRleCAzOGI0ZjZhNGZiODk0ZjI1NTM5MDZhNjY0Y2YyZmY1
YWRiMjhmZTgzLi4zZTE1NzBjMThlZTc2ZTg1ZmFhYTY0NTFlNjg0MDk2YmMwOTQ5ZDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5oCkBAIC0yOCw5ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSlNUZXN0RXhjZXB0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFzcyBK
U1Rlc3RFeGNlcHRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRl
c3RFeGNlcHRpb24+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwor
ICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RFeGNlcHRpb24+
IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEV4Y2VwdGlvbiogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXhj
ZXB0aW9uPiYmIGltcGwpCiAgICAgewogICAgICAgICBKU1Rlc3RFeGNlcHRpb24qIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXhjZXB0aW9uPihnbG9iYWxPYmpl
Y3QtPnZtKCkuaGVhcCkpIEpTVGVzdEV4Y2VwdGlvbihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGOjptb3ZlKGltcGwpKTsKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBU
ZXN0RXhjZXB0aW9uKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0M6OkpTQ2VsbCopOwotICAgIH5KU1Rlc3RFeGNlcHRpb24oKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIApAQCAtNTMsMTEgKzUyLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKLSAgICBUZXN0RXhjZXB0aW9uJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQot
ICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+
ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAgIFRlc3RFeGNlcHRpb24qIG1faW1wbDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IGFiODEyNzJk
NzM5MWI0ZGIyOGE5NmQ5NzUwYjczNmZhMzRlOGUzM2IuLjkxN2IzOGQ3NjAwYWQzOTg1OGExZWFl
MWEwMTU4ZmIyODQxYTc2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKQEAgLTExMiw4ICsxMTIsNyBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZSkgfTsKIAogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6SlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiYmIGltcGwpCi0gICAgOiBKU0RP
TVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVh
a1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQog
ewogfQogCkBAIC0xMzMsMTEgKzEzMiw2IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlOjp+SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSgpOwogfQogCi1KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjp+SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSgpCi17Ci0g
ICAgcmVsZWFzZUltcGwoKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5oCmluZGV4IGZlMzgwYTBhMGMzM2UwNGU3MmZmYWUyMDc1YzljZmU4YWNl
ZjIwYzYuLjkyOTMzYWE1MzA0M2UzNzExZTRmMWFmMGI5YTk0ZWE2MWE4ZmZkYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgOiBwdWJs
aWMgSlNET01XcmFwcGVyIHsKK2NsYXNzIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgOiBwdWJs
aWMgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
PiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVm
IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4g
QmFzZTsKICAgICBzdGF0aWMgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogY3JlYXRlKEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4mJiBpbXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92
ZShpbXBsKSk7CkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUoKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNTEsMTEgKzUwLDYg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZSYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2b2lkIHJlbGVh
c2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVmKCk7IH0KLQot
cHJpdmF0ZToKLSAgICBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogbV9pbXBsOwogcHJvdGVjdGVk
OgogICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKaW5kZXggZjJhOTM0MTU2NGJiYzAwNTcxNTIwNDE1YzE5NjFmYzhlYjkyYTNh
ZC4uNDk4YzczZmM3OTRhY2I1ZjQ2MGU5ODQzYTJlNjgwMDE2M2FhNjQwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKQEAgLTQxMCw4ICs0MTAsNyBAQCB2b2lkIEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVy
ZmFjZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RJ
bnRlcmZhY2VUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2UpIH07CiAK
IEpTVGVzdEludGVyZmFjZTo6SlNUZXN0SW50ZXJmYWNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEludGVyZmFjZT4mJiBpbXBs
KQotICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotICAgICwgbV9p
bXBsKCZpbXBsLmxlYWtSZWYoKSkKKyAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlv
bjxUZXN0SW50ZXJmYWNlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwp
KQogewogfQogCkBAIC00MzEsMTEgKzQzMCw2IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTVGVzdEludGVyZmFjZTo6
fkpTVGVzdEludGVyZmFjZSgpOwogfQogCi1KU1Rlc3RJbnRlcmZhY2U6On5KU1Rlc3RJbnRlcmZh
Y2UoKQotewotICAgIHJlbGVhc2VJbXBsKCk7Ci19Ci0KIGJvb2wgSlNUZXN0SW50ZXJmYWNlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4ob2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuaAppbmRleCBmMjBlZWYwOTlhYzkxOTE5OTQ5NjBjOGRjNWExMWY5YjU4ZmZmODNhLi42
YTYyNTAyYjk5ZThiYzkyNDZjNDBhZTU5NDhkNTM3ZjViNWY5NmNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5oCkBAIC0yOSw5ICsyOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBKU1Rlc3RJbnRlcmZhY2UgOiBwdWJsaWMgSlNET01XcmFwcGVyV2l0
aEltcGxlbWVudGF0aW9uPFRlc3RJbnRlcmZhY2U+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpT
RE9NV3JhcHBlciBCYXNlOworICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0
aW9uPFRlc3RJbnRlcmZhY2U+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZSogY3Jl
YXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxUZXN0SW50ZXJmYWNlPiYmIGltcGwpCiAgICAgewogICAgICAgICBKU1Rlc3RJ
bnRlcmZhY2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50
ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEludGVyZmFjZShzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdEludGVyZmFjZSgpOwogCiAg
ICAgREVDTEFSRV9JTkZPOwogCkBAIC03OSwxMSArNzgsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgSlNDOjpKU1ZhbHVlIHN1
cHBsZW1lbnRhbE1ldGhvZDMoSlNDOjpFeGVjU3RhdGUmKTsKICNlbmRpZgotICAgIFRlc3RJbnRl
cmZhY2UmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNl
SW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgVGVzdEludGVyZmFjZSogbV9pbXBsOwogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0NGY5Y2Q0MzFiOTZhMzdhZWIxNTQ1
YzVlODk0ZDEzZDAwYjg0ZWZmLi4zNjU5YjI0Zjc3YzFlNmJhNDJlZWRhMjA1NjI0MWJjY2NlMWRk
MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTE0
NiwxMCArMTQ2LDYgQEAgdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6fkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKCk7CiB9CiAKLUpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjp+SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoKQotewotfQotCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihi
YXNlVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCBj
YjhmZWNhNjAxYzdkZWZhOGRhYjIyNzk5YjcyMjA3YTU1MTFjNGZhLi5jY2IyMDQ0MGUxMjE5YzRk
NDdjMWQyNGIxMDZhMDhlMGRhZGQ2ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuaApAQCAtMzgsNyArMzgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0g
ICAgfkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKCk7CiAKICAgICBERUNMQVJFX0lORk87CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAzNTdl
ZGJhM2IyYjAxZmQxMGNhMDcxMWIyYjQxNDNjZDE4M2I2OWM0Li5iZGZmMTc2MWRhOWZlZTQ0NTJh
OTFiYjc0Y2NmZGJmMzQ5YjI2Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCkBAIC0xMjAsOCArMTIwLDcgQEAgdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvID0geyAiVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpIH07CiAKIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcj4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KQotICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkKKyAgICA6IEpTRE9NV3JhcHBl
cldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtMTQxLDExICsxNDAs
NiBAQCB2b2lkIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmRlc3Ryb3koSlNDOjpKU0Nl
bGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
fkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoKTsKIH0KIAotSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcjo6fkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoKQotewotICAgIHJlbGVh
c2VJbXBsKCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCBlMTY5MGI0M2M4MWJiODJhYTMyMmU2MzJkOGY5
YWNhZDMyNzNiNThiLi4xYzczMWMwZDBhNGEyMWMxZTNhMjdiMDFjYTEyNzY5YTgwMmI2MDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTI3LDkgKzI3
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyIDogcHVibGljIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gewogcHVibGljOgotICAgIHR5cGVkZWYgSlNET01XcmFw
cGVyIEJhc2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+
JiYgaW1wbCkKICAgICB7CiAgICAgICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpAQCAtNDEs
NyArNDEsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlw
ZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lciogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotICAgIH5KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKCk7CiAKICAgICBERUNMQVJFX0lORk87CiAKQEAgLTUxLDExICs1MCw2IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIm
IGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNlSW1wbCgp
IHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIG1faW1wbDsKIHByb3RlY3RlZDoKICAg
ICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBSZWY8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWRlYWQ2NzFlODRkMTliYjdiZjYzNTgw
MWVmMjhiMzJmM2UxOGM5Mi4uYjFjY2ViZTRhZWI1NDM1ZTczYjliMjFhZTkxMzNhNzc0ZjY2NTdm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTg1LDggKzE4NSw3
IEBAIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1w
bCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1f
aW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdE5hbWVkQ29uc3RydWN0b3I+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpCiB7CiB9CiAKQEAgLTIwNiwxMSArMjA1LDYgQEAgdm9pZCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpT
VGVzdE5hbWVkQ29uc3RydWN0b3I6On5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKCk7CiB9CiAKLUpT
VGVzdE5hbWVkQ29uc3RydWN0b3I6On5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKCkKLXsKLSAgICBy
ZWxlYXNlSW1wbCgpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQ
cm90b3R5cGUqPihiYXNlVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKaW5k
ZXggZTNhNTM2NjE4ODY1ZmMzNWZmZTYyYzUwNWYxZDI3YzMwYjVlMzkzYi4uYzQ3NTIxNjQ5MThl
ZmRiYzBhM2Q2NjgyOGE1YjZmOTNmZWY1NjQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5oCkBAIC0yNyw5ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdE5hbWVkQ29uc3RydWN0b3I+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9NV3Jh
cHBlciBCYXNlOworICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRl
c3ROYW1lZENvbnN0cnVjdG9yPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwpCiAgICAgewog
ICAgICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKTsKQEAgLTQxLDcgKzQxLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvcigpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MiwxMSArNTEsNiBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRO
YW1lZENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgVGVz
dE5hbWVkQ29uc3RydWN0b3ImIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAg
dm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJl
ZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGVzdE5hbWVkQ29uc3RydWN0b3IqIG1faW1wbDsKIHBy
b3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggYWYyZGJiYzk0ZmQ4Mzk1OGQ1NjEzNjg5
ZTg4YzBmZTk2Yjg0YzA2OS4uYThjYTRlMTc5YjYyNDNiYmQ4NWEyNGMxNmIzZGQwNDNjMzI3ZWU4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAtMTQxLDggKzE0MSw3
IEBAIHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OnNfaW5mbyA9
IHsgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROb25kZXRlcm1pbmlzdGljKSB9OwogCiBKU1Rlc3ROb25kZXRlcm1pbmlz
dGljOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5vbmRldGVybWluaXN0aWM+JiYgaW1w
bCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1f
aW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdE5vbmRldGVybWluaXN0aWM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpCiB7CiB9CiAKQEAgLTE2MiwxMSArMTYxLDYgQEAgdm9pZCBKU1Rlc3ROb25kZXRl
cm1pbmlzdGljOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpT
VGVzdE5vbmRldGVybWluaXN0aWM6On5KU1Rlc3ROb25kZXRlcm1pbmlzdGljKCk7CiB9CiAKLUpT
VGVzdE5vbmRldGVybWluaXN0aWM6On5KU1Rlc3ROb25kZXRlcm1pbmlzdGljKCkKLXsKLSAgICBy
ZWxlYXNlSW1wbCgpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAppbmRl
eCBjNWQ2NjMzMDBjYjI0MDkzZTM1MTM1ZDVkNWYxNjViN2MyNTRkMGE0Li43MzdjYjhmNDE0NGNj
OGNkNDYzOGU0NzJhZWU0MjJjMzViNWEyYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitjbGFzcyBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljIDogcHVibGljIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlv
bjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4gewogcHVibGljOgotICAgIHR5cGVkZWYgSlNET01XcmFw
cGVyIEJhc2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVz
dE5vbmRldGVybWluaXN0aWM+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE5vbmRldGVybWluaXN0
aWMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5vbmRldGVybWluaXN0aWM+JiYgaW1wbCkKICAgICB7CiAg
ICAgICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApKSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6
Om1vdmUoaW1wbCkpOwpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7
CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwotICAgIH5KU1Rlc3ROb25k
ZXRlcm1pbmlzdGljKCk7CiAKICAgICBERUNMQVJFX0lORk87CiAKQEAgLTUxLDExICs1MCw2IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgVGVzdE5vbmRldGVybWluaXN0
aWMmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCByZWxlYXNlSW1w
bCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9Ci0KLXByaXZh
dGU6Ci0gICAgVGVzdE5vbmRldGVybWluaXN0aWMqIG1faW1wbDsKIHByb3RlY3RlZDoKICAgICBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qq
LCBSZWY8VGVzdE5vbmRldGVybWluaXN0aWM+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE4N2Q3NzJj
NDg3NmY3YjlkNDQ2YTBhZTY2OTIzM2JmYTA5Y2VmNWUuLjg3MjMzNmUxNWM3ZGZlODE5M2Y4OTg2
OWYzZjMwODY4NGI2NjRmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03MDcsOCArNzA3LDcgQEAgdm9pZCBK
U1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RPYmo6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmSlNU
ZXN0T2JqVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqKSB9OwogCiBKU1Rlc3RP
Ymo6OkpTVGVzdE9iaihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RPYmo+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAg
OiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE9iaj4oc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAtNzI4LDExICs3MjcsNiBAQCB2
b2lkIEpTVGVzdE9iajo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0
LT5KU1Rlc3RPYmo6On5KU1Rlc3RPYmooKTsKIH0KIAotSlNUZXN0T2JqOjp+SlNUZXN0T2JqKCkK
LXsKLSAgICByZWxlYXNlSW1wbCgpOwotfQotCiBib29sIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE9iaio+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggM2EwNmM4MGIyNTIyZjU1
ZTA0NmY0MDc1ZTU3Y2E1MDI2Y2M3NmY0Yy4uYTQ3M2E4NDBjYzllNzVhZGY1MDhiNmQwNTAyNjA3
MmViMWQwZTRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEpTVGVzdE9iaiA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3MgSlNU
ZXN0T2JqIDogcHVibGljIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0T2JqPiB7
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpT
RE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0T2JqPiBCYXNlOwogICAgIHN0YXRpYyBK
U1Rlc3RPYmoqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE9iaj4mJiBpbXBsKQogICAgIHsKICAgICAgICAg
SlNUZXN0T2JqKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9i
aj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RPYmooc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURjo6bW92ZShpbXBsKSk7CkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgVGVzdE9iaiogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKLSAgICB+SlNUZXN0T2JqKCk7CiAKICAgICBERUNMQVJFX0lORk87
CiAKQEAgLTY1LDExICs2NCw2IEBAIHB1YmxpYzoKICAgICBKU0M6OkpTVmFsdWUgY3VzdG9tTWV0
aG9kKEpTQzo6RXhlY1N0YXRlJik7CiAgICAgSlNDOjpKU1ZhbHVlIGN1c3RvbU1ldGhvZFdpdGhB
cmdzKEpTQzo6RXhlY1N0YXRlJik7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjbGFzc01ldGhv
ZDIoSlNDOjpFeGVjU3RhdGUmKTsKLSAgICBUZXN0T2JqJiBpbXBsKCkgY29uc3QgeyByZXR1cm4g
Km1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBs
LCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAgIFRlc3RPYmoqIG1faW1wbDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmlu
ZGV4IDY2ZWYzZDUyMWIxZjgyYzZiYjk3N2M4ODUzYzJiZDliMjkyYTZmNzUuLmUxZDEzMzE5NDA3
ZmFiMWQ5OTQyMzg3OWI5MmQ2Y2I2YzUwNzkzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTIwNiw4ICsyMDYsNyBAQCB2b2lkIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpzX2luZm8gPSB7ICJU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykgfTsKIAogSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpCi0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNE
T01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQogCkBAIC0yMjcs
MTEgKzIyNiw2IEBAIHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpOwogfQogCi1KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp+SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycygpCi17Ci0g
ICAgcmVsZWFzZUltcGwoKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDExZTI5MTk5ODYyZTEyNWExNGZh
ZTUxZjc0MDVmNjQ5Njk0NWRiMWEuLjhhZGU1NzY0ZDY2ZjYxYTdiYjI2ZjA2ZDhmMGQ0NWI1M2I2
MTBkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAt
MjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK2NsYXNzIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgOiBwdWJsaWMgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0
aW9uPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBK
U0RPTVdyYXBwZXIgQmFzZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRh
dGlvbjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4mJiBpbXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7
CkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMoKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNTEsMTEgKzUwLDYgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2b2lkIHJlbGVh
c2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVmKCk7IH0KLQot
cHJpdmF0ZToKLSAgICBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogbV9pbXBsOwogcHJvdGVj
dGVkOgogICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBjYTEwZGY2ZmZhOTFkMjlh
OWUwODMwYzU3ZTRhODU1YWQ3ZWFmOWMwLi5kZjFjOTY1OTNiMzMxZmUxODIwMWUwNWEwZjdlNmE0
YmQ2ODQ0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0xMzUs
OCArMTM1LDcgQEAgdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6
c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1RhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnMpIH07CiAKIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVy
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkK
KyAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0T3ZlcnJpZGVCdWlsdGlu
cz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KIApAQCAt
MTU2LDExICsxNTUsNiBAQCB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmRlc3Ryb3koSlND
OjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6
fkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoKTsKIH0KIAotSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6
fkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoKQotewotICAgIHJlbGVhc2VJbXBsKCk7Ci19Ci0KIGJv
b2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgK
aW5kZXggMGM5YTdmMTRmYTcwZWU1MjkzNGQxZDZmZTBhMThiZjM1ZGE0NDYzMi4uZTRlMjAwYzdk
MDkzNjQ2YTFhYjdlOTEzZDdhZTYyMzdkZmEzYTkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5oCkBAIC0yNyw5ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3Mg
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50
YXRpb248VGVzdE92ZXJyaWRlQnVpbHRpbnM+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9N
V3JhcHBlciBCYXNlOworICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9u
PFRlc3RPdmVycmlkZUJ1aWx0aW5zPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCiAgICAg
ewogICAgICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKSkgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGOjptb3ZlKGltcGwpKTsKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMo
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNTQsMTEgKzUzLDYgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUg
PSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgVGVzdE92ZXJy
aWRlQnVpbHRpbnMmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCBy
ZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgVGVzdE92ZXJyaWRlQnVpbHRpbnMqIG1faW1wbDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Okhhc0ltcHVy
ZUdldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDQ3ZmNhNDQ4ZDU4ZWZiOGZjNGMxNGFkYmRl
ZjllOGQ2MWIzMDlhMDcuLmJhZGVhMGNhMzY3YWQxM2E4MGM5ZDdiMzAwNjcyMzhlZmY0ZTQzZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCkBAIC0xMzEsOCArMTMxLDcgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnNfaW5mbyA9IHsg
IlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSkg
fTsKIAogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
Ci0gICAgLCBtX2ltcGwoJmltcGwubGVha1JlZigpKQorICAgIDogSlNET01XcmFwcGVyV2l0aElt
cGxlbWVudGF0aW9uPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CiAKQEAgLTE1MiwxMSArMTUx
LDYgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjp+SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKCk7
CiB9CiAKLUpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6fkpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSgpCi17Ci0gICAgcmVsZWFzZUltcGwoKTsKLX0KLQog
RW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4
IGEzMjg3Yjg5NmQyYjI3ZWY2ODg3MjA5YmE2ODA3OTMyZTQxNzlkMjkuLmViOTI0NmIyZjQ0NDFh
N2M2MTI3ZDM0MzZiYmE5YmQxMWJmZjExNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTI5LDkgKzI5LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKK2NsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gewogcHVibGljOgotICAgIHR5cGVk
ZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVt
ZW50YXRpb248VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gQmFzZTsKICAgICBz
dGF0aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+JiYgaW1wbCkKICAgICB7CiAgICAg
ICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpAQCAt
NDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3Rv
dHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSgpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01Nywx
MSArNTYsNiBAQCBwdWJsaWM6CiAgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVu
a25vd24+IG1fY2FjaGVkUmVhZG9ubHlWYWx1ZTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAotICAgIFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAg
dm9pZCByZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJl
ZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogbV9pbXBsOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRl
eCA3MTdhMWZmOWY0NDk0ZjU3ZjY1ZjY1Y2NlMzU4NDM0YTkyN2NiMGRhLi5jOWVhZTQ3ZWMzODU5
ZDI5NDg2Yzc1MTAwNjMxYjEzNmU3NGYzMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTIx
NCw4ICsyMTQsNyBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRlZnM6OnNfaW5mbyA9IHsgIlRl
c3RUeXBlZGVmcyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RUeXBlZGVmc1RhYmxlLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzKSB9OwogCiBKU1Rlc3RUeXBlZGVmczo6SlNUZXN0
VHlwZWRlZnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxUZXN0VHlwZWRlZnM+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAg
OiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdFR5cGVkZWZzPihzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQogCkBAIC0yMzUsMTEgKzIzNCw2
IEBAIHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAg
dGhpc09iamVjdC0+SlNUZXN0VHlwZWRlZnM6On5KU1Rlc3RUeXBlZGVmcygpOwogfQogCi1KU1Rl
c3RUeXBlZGVmczo6fkpTVGVzdFR5cGVkZWZzKCkKLXsKLSAgICByZWxlYXNlSW1wbCgpOwotfQot
CiBib29sIEpTVGVzdFR5cGVkZWZzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAppbmRleCBiM2E1YWQ2NzY2YjA1ODVhYjIxNjNm
NTFiYWUyN2I0ZDU5MjY5Y2VmLi5mMmNlOTM2YjdhZGQ3MDUyN2NkNDM3OWZjMmEzZjA3N2U0NmEw
NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuaApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEpTVGVzdFR5cGVkZWZzIDogcHVibGljIEpTRE9NV3JhcHBlciB7Citj
bGFzcyBKU1Rlc3RUeXBlZGVmcyA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdFR5cGVkZWZzPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFz
ZTsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0VHlwZWRl
ZnM+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdFR5cGVkZWZzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RU
eXBlZGVmcz4mJiBpbXBsKQogICAgIHsKICAgICAgICAgSlNUZXN0VHlwZWRlZnMqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0VHlwZWRlZnM+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0VHlwZWRlZnMoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdU
Rjo6bW92ZShpbXBsKSk7CkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGVz
dFR5cGVkZWZzKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOwotICAgIH5KU1Rlc3RUeXBlZGVmcygpOwogCiAgICAgREVDTEFSRV9JTkZP
OwogCkBAIC01MiwxMSArNTEsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwot
ICAgIFRlc3RUeXBlZGVmcyYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuICptX2ltcGw7IH0KLSAgICB2
b2lkIHJlbGVhc2VJbXBsKCkgeyBzdGQ6OmV4Y2hhbmdlKG1faW1wbCwgbnVsbHB0ciktPmRlcmVm
KCk7IH0KLQotcHJpdmF0ZToKLSAgICBUZXN0VHlwZWRlZnMqIG1faW1wbDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmli
dXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJp
YnV0ZS5jcHAKaW5kZXggZGRjZjczZjlkMWE0MTRhM2I1MTVjZmExYmYzNjJmNWZiNDQ5OGFjNC4u
ODljNmQxYTU0Njc4MzlmNWJlMjVhNGQ3Zjc5OTc2YjFhNmJhODUxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3Bw
CkBAIC0xMTYsOCArMTE2LDcgQEAgdm9pZCBKU2F0dHJpYnV0ZVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTYXR0cmlidXRlOjpzX2luZm8gPSB7ICJh
dHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTYXR0cmli
dXRlKSB9OwogCiBKU2F0dHJpYnV0ZTo6SlNhdHRyaWJ1dGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxhdHRyaWJ1dGU+JiYgaW1wbCkK
LSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1w
bCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248
YXR0cmlidXRlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewog
fQogCkBAIC0xMzcsMTEgKzEzNiw2IEBAIHZvaWQgSlNhdHRyaWJ1dGU6OmRlc3Ryb3koSlNDOjpK
U0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNhdHRyaWJ1dGU6On5KU2F0dHJpYnV0ZSgp
OwogfQogCi1KU2F0dHJpYnV0ZTo6fkpTYXR0cmlidXRlKCkKLXsKLSAgICByZWxlYXNlSW1wbCgp
OwotfQotCiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKaW5kZXggNTc4ZTA1
ZmVlOWQ2ODE3MzY2MDhhZjliZDU2NWVjODFkZTU5ZDU2YS4uY2EzYjExMDMyNzE2OTAyYjEyYjI2
MmQxYmJhYTY0Y2QyMzI0ZWY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKQEAgLTI4LDkgKzI4LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU2F0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXIgeworY2xhc3MgSlNhdHRyaWJ1dGUgOiBwdWJsaWMgSlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uPGF0dHJpYnV0ZT4gewogcHVibGljOgotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJh
c2U7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248YXR0cmlidXRl
PiBCYXNlOwogICAgIHN0YXRpYyBKU2F0dHJpYnV0ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxhdHRyaWJ1dGU+
JiYgaW1wbCkKICAgICB7CiAgICAgICAgIEpTYXR0cmlidXRlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTYXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTYXR0cmlidXRlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwpA
QCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFBy
b3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBhdHRy
aWJ1dGUqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDOjpKU0NlbGwqKTsKLSAgICB+SlNhdHRyaWJ1dGUoKTsKIAogICAgIERFQ0xBUkVfSU5GTzsK
IApAQCAtNTIsMTEgKzUxLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAg
ICBhdHRyaWJ1dGUmIGltcGwoKSBjb25zdCB7IHJldHVybiAqbV9pbXBsOyB9Ci0gICAgdm9pZCBy
ZWxlYXNlSW1wbCgpIHsgc3RkOjpleGNoYW5nZShtX2ltcGwsIG51bGxwdHIpLT5kZXJlZigpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgYXR0cmlidXRlKiBtX2ltcGw7CiBwcm90ZWN0ZWQ6CiAgICAgSlNh
dHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxhdHRyaWJ1
dGU+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5jcHAKaW5kZXggZDAzZWNkMTYyMjhhNmY0OTBlODNkNTA5ODUzZmU0
NDFlYjBiYWZkOS4uNjczZDNjZjljYjZmZWIxMjVhODliYTBjMWU5ODJjZjY1MWFhMWY1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9u
bHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3Jl
YWRvbmx5LmNwcApAQCAtMTEyLDggKzExMiw3IEBAIHZvaWQgSlNyZWFkb25seVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTcmVhZG9ubHk6OnNfaW5m
byA9IHsgInJlYWRvbmx5IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U3JlYWRvbmx5KSB9OwogCiBKU3JlYWRvbmx5OjpKU3JlYWRvbmx5KFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8cmVhZG9ubHk+JiYgaW1w
bCkKLSAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1f
aW1wbCgmaW1wbC5sZWFrUmVmKCkpCisgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248cmVhZG9ubHk+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7
CiB9CiAKQEAgLTEzMywxMSArMTMyLDYgQEAgdm9pZCBKU3JlYWRvbmx5OjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTcmVhZG9ubHk6On5KU3JlYWRvbmx5KCk7
CiB9CiAKLUpTcmVhZG9ubHk6On5KU3JlYWRvbmx5KCkKLXsKLSAgICByZWxlYXNlSW1wbCgpOwot
fQotCiBFbmNvZGVkSlNWYWx1ZSBqc3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNPYmplY3QqIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU3JlYWRvbmx5UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTcmVh
ZG9ubHlQcm90b3R5cGUqPihiYXNlVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmgKaW5kZXggMjQ1ZWI3MWZiYWMzZjgy
MDAwNzI3MzhjNTg2YTQxYzUxZTQ4OTUxMi4uZmM0OGFmOGIzYWNlZTE1ODYwMGU0MTkyYjhjYmRl
YTM3Y2QyZWMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTcmVhZG9ubHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNyZWFkb25seS5oCkBAIC0yNyw5ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSlNyZWFkb25seSA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworY2xhc3Mg
SlNyZWFkb25seSA6IHB1YmxpYyBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248cmVhZG9u
bHk+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOworICAgIHR5cGVk
ZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPHJlYWRvbmx5PiBCYXNlOwogICAgIHN0
YXRpYyBKU3JlYWRvbmx5KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPHJlYWRvbmx5PiYmIGltcGwpCiAgICAgewog
ICAgICAgICBKU3JlYWRvbmx5KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTcmVhZG9ubHk+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNyZWFkb25seShzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKQEAgLTQxLDcgKzQxLDYgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgcmVhZG9ubHkqIHRvV3JhcHBlZChKU0M6
OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLSAgICB+
SlNyZWFkb25seSgpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC01MSwxMSArNTAsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHJlYWRvbmx5JiBpbXBsKCkgY29u
c3QgeyByZXR1cm4gKm1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IHN0ZDo6ZXhj
aGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAgIHJlYWRv
bmx5KiBtX2ltcGw7CiBwcm90ZWN0ZWQ6CiAgICAgSlNyZWFkb25seShKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPHJlYWRvbmx5PiYmKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>