<?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>177422</bug_id>
          
          <creation_ts>2017-09-24 18:50:46 -0700</creation_ts>
          <short_desc>[WebIDL] Remove GetterMayThrowException</short_desc>
          <delta_ts>2022-02-28 03:27:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1352107</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-24 18:50:46 -0700</bug_when>
    <thetext>[WebIDL] Remove GetterMayThrowException</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352113</commentid>
    <comment_count>1</comment_count>
      <attachid>321663</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-24 19:45:16 -0700</bug_when>
    <thetext>Created attachment 321663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352114</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-24 19:47:59 -0700</bug_when>
    <thetext>Attachment 321663 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMConvertBase.h:171:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMConvertBase.h:201:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352216</commentid>
    <comment_count>3</comment_count>
      <attachid>321663</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-25 09:12:53 -0700</bug_when>
    <thetext>Comment on attachment 321663
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMConvertBase.h:101
&gt; +template&lt;typename T, typename U&gt; inline auto toJSNewlyCreated(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::ThrowScope&amp;, U&amp;&amp;) -&gt; std::enable_if_t&lt;!WTF::IsTemplate&lt;std::decay_t&lt;U&gt;, ExceptionOr&gt;::value, JSC::JSValue&gt;;

WTF::IsTemplate&lt;std::decay_t&lt;U&gt;, ExceptionOr&gt;::value is used quite a lot.
Can we add a shorthand for it?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:-5248
&gt; -        assert(&quot;Attributes that throw exceptions are not supported with serializers yet.&quot;) if $attribute-&gt;extendedAttributes-&gt;{GetterMayThrowException} || $attribute-&gt;extendedAttributes-&gt;{MayThrowException};

Serializers will now be able to trigger exceptions without the binding generator noticing it.
Do we need to add any specific exception handling for serializers, like skip or rethrow?
Maybe add a FIXME for now.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:6565
&gt; +    my $mayThrowException = ref($context) eq &quot;IDLAttribute&quot; || $context-&gt;extendedAttributes-&gt;{MayThrowException};

Maybe we can remove mayThrowException declaration here since it is only used in one place.

&gt; Source/WebCore/bindings/scripts/test/TestObj.idl:171
&gt; +    attribute DOMString stringAttrWithGetterException;

Do we really need these anymore?

&gt; Source/WebCore/bindings/scripts/test/TestTypedefs.idl:72
&gt; +    attribute DOMString stringAttrWithGetterException;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352256</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-25 10:47:50 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 321663 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321663&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMConvertBase.h:101
&gt; &gt; +template&lt;typename T, typename U&gt; inline auto toJSNewlyCreated(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, JSC::ThrowScope&amp;, U&amp;&amp;) -&gt; std::enable_if_t&lt;!WTF::IsTemplate&lt;std::decay_t&lt;U&gt;, ExceptionOr&gt;::value, JSC::JSValue&gt;;
&gt; 
&gt; WTF::IsTemplate&lt;std::decay_t&lt;U&gt;, ExceptionOr&gt;::value is used quite a lot.
&gt; Can we add a shorthand for it?
&gt;

I will try.
 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:-5248
&gt; &gt; -        assert(&quot;Attributes that throw exceptions are not supported with serializers yet.&quot;) if $attribute-&gt;extendedAttributes-&gt;{GetterMayThrowException} || $attribute-&gt;extendedAttributes-&gt;{MayThrowException};
&gt; 
&gt; Serializers will now be able to trigger exceptions without the binding
&gt; generator noticing it.
&gt; Do we need to add any specific exception handling for serializers, like skip
&gt; or rethrow?
&gt; Maybe add a FIXME for now.

Yeah, I&apos;ll add a FIXME. It will assert at runtime right now. I need to rip out all the this stuff and add the new toJSON / [Default] stuff.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:6565
&gt; &gt; +    my $mayThrowException = ref($context) eq &quot;IDLAttribute&quot; || $context-&gt;extendedAttributes-&gt;{MayThrowException};
&gt; 
&gt; Maybe we can remove mayThrowException declaration here since it is only used
&gt; in one place.

It&apos;s used in two places, so I&apos;ll keep it for now.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/TestObj.idl:171
&gt; &gt; +    attribute DOMString stringAttrWithGetterException;
&gt; 
&gt; Do we really need these anymore?
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/TestTypedefs.idl:72
&gt; &gt; +    attribute DOMString stringAttrWithGetterException;
&gt; 
&gt; Ditto.

No. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352314</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-25 12:16:16 -0700</bug_when>
    <thetext>Committed r222454: &lt;http://trac.webkit.org/changeset/222454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353274</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:18:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/34692990&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321663</attachid>
            <date>2017-09-24 19:45:16 -0700</date>
            <delta_ts>2022-02-28 03:27:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177422-20170924194515.patch</filename>
            <type>text/plain</type>
            <size>105565</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE3LTA5LTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIEdldHRlck1h
eVRocm93RXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzc0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydEJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisKKyAgICAg
ICAgICAgIEFkZCBvdmVybG9hZHMgb2YgdG9KUyBhbmQgdG9KU05ld2x5Q3JlYXRlZCB0aGF0IHRh
a2UgVGhyb3dTY29wZXMgYW5kIGEgdmFsdWUgdGhhdAorICAgICAgICAgICAgaXMgbm90IGFuIEV4
Y2VwdGlvbk9yIChrZWVwaW5nIHRoZSBleGlzdGluZyBvdmVybG9hZHMgdGhhdCB0YWtlIGFuIEV4
Y2VwdGlvbk9yKS4KKyAgICAgICAgICAgIFRoaXMgYWxsb3dzIE5hdGl2ZVRvSlNWYWx1ZSB0byBu
b3QgbmVlZCB0byBrbm93IG9mIGEgY29udmVyc2lvbiBjYW4gdGhyb3csIGFzIHRoZQorICAgICAg
ICAgICAgYysrIHR5cGUgc3lzdGVtIHdpbGwgbm93IG1ha2UgdGhlIGRldGVybWluYXRpb24gZm9y
IGl0LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKE5hdGl2ZVRv
SlNWYWx1ZVVzaW5nUmVmZXJlbmNlcyk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVVc2luZ1Bv
aW50ZXJzKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisKKyAgICAgICAgICAgIEFsd2F5
cyBhc3N1bWUgYW4gZXhjZXB0aW9uIGNhbiBiZSB0aHJvd24gZm9yIGF0dHJpYnV0ZXMgbm93IHRo
YXQgdGhlIGNvbnZlcnRlcnMgd2lsbAorICAgICAgICAgICAgZG8gdGhlIHJpZ2h0IHRoaW5nIGJh
c2VkIG9uIHdoZXRoZXIgdGhlIHZhbHVlIGlzIGFuIEV4Y2VwdGlvbk9yIG9yIG5vdC4gQWxzbywg
cmVtb3ZlIAorICAgICAgICAgICAgJHN1cHByZXNzRXhjZXB0aW9uQ2hlY2sgYW5kICRleGNsdWRl
TnVsbGFiaWxpdHksIHRoZXkgd2VyZSBuZXZlciBiZWluZyBzZXQuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKworICAgICAgICAgICAgUmVtb3ZlIEdl
dHRlck1heVRocm93RXhjZXB0aW9uIGZyb20gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGV4dGVuZGVk
IGF0dHJpYnV0ZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Lmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGw6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5pZGw6CisgICAgICAgICogc3ZnL1NW
R0xlbmd0aC5pZGw6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmlkbDoKKyAgICAgICAg
KiB4bWwvWFBhdGhSZXN1bHQuaWRsOgorICAgICAgICAKKyAgICAgICAgICAgIFJlbW92ZSBHZXR0
ZXJNYXlUaHJvd0V4Y2VwdGlvbiBleHRlbmRlZCBhdHRyaWJ1dGUgZnJvbSBJREwgZmlsZXMuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsVHJhY2VyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorCisgICAg
ICAgICAgICBVcGRhdGUgdGVzdCByZXN1bHRzLgorCiAyMDE3LTA5LTI0ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ1NTIHJlZ2lvbnMgcmVsYXRl
ZCBmaWVsZHMgZnJvbSBSZW5kZXJTdHlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw4ICszMyw4IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIFNr
aXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgSURCUmVxdWVzdCA6IEV2ZW50VGFyZ2V0
IHsKLSAgICBbR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSAoSURC
Q3Vyc29yIG9yIElEQkRhdGFiYXNlIG9yIGFueSk/IHJlc3VsdDsKLSAgICBbR2V0dGVyTWF5VGhy
b3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01FeGNlcHRpb24/IGVycm9yOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSAoSURCQ3Vyc29yIG9yIElEQkRhdGFiYXNlIG9yIGFueSk/IHJl
c3VsdDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NRXhjZXB0aW9uPyBlcnJvcjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgKElEQk9iamVjdFN0b3JlIG9yIElEQkluZGV4IG9yIElEQkN1cnNv
cik/IHNvdXJjZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCVHJhbnNhY3Rpb24gdHJhbnNh
Y3Rpb247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQlJlcXVlc3RSZWFkeVN0YXRlIHJlYWR5
U3RhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaWRsCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1cGRhdGluZzsKICAg
CiAgICAgLy8gUmV0dXJucyB0aGUgdGltZSByYW5nZXMgYnVmZmVyZWQuCi0gICAgW0dldHRlck1h
eVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBidWZmZXJlZDsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJhbmdlcyBidWZmZXJlZDsKIAogICAgIC8vIEFw
cGxpZXMgYW4gb2Zmc2V0IHRvIG1lZGlhIHNlZ21lbnQgdGltZXN0YW1wcy4KICAgICBhdHRyaWJ1
dGUgZG91YmxlIHRpbWVzdGFtcE9mZnNldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5pZGwJKHJldmlzaW9uIDIyMjQzNykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNiBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUKIF0gaW50ZXJmYWNlIFNRTFJlc3VsdFNldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFNRTFJlc3VsdFNldFJvd0xpc3Qgcm93czsKLSAgICBbR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25d
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgaW5zZXJ0SWQ7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbG9uZyBpbnNlcnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBy
b3dzQWZmZWN0ZWQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydEJhc2UuaAkocmV2aXNpb24gMjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIs
MTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEpTQ29udmVydGVyOwogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKFUmJik7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUmLCBVJiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBVJiYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgRXhjZXB0aW9u
T3I8VT4mJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6VGhy
b3dTY29wZSYsIEV4Y2VwdGlvbk9yPFU+JiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
JiwgSlNET01HbG9iYWxPYmplY3QmLCBVJiYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
JiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBFeGNlcHRpb25PcjxVPiYm
KTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8
V1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxVPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZSwgSlND
OjpKU1ZhbHVlPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRv
IHRvSlMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5h
YmxlX2lmX3Q8IVdURjo6SXNUZW1wbGF0ZTxzdGQ6OmRlY2F5X3Q8VT4sIEV4Y2VwdGlvbk9yPjo6
dmFsdWUsIEpTQzo6SlNWYWx1ZT47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYXV0byB0b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6
OlRocm93U2NvcGUmLCBVJiYpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8V1RGOjpJc1RlbXBsYXRlPHN0
ZDo6ZGVjYXlfdDxVPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZSwgSlNDOjpKU1ZhbHVlPjsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBhdXRvIHRvSlMoSlNDOjpFeGVjU3Rh
dGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJikgLT4gc3RkOjpl
bmFibGVfaWZfdDwhV1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxVPiwgRXhjZXB0aW9uT3I+
Ojp2YWx1ZSwgSlNDOjpKU1ZhbHVlPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIFUmJikgLT4gc3RkOjplbmFibGVfaWZfdDxXVEY6
OklzVGVtcGxhdGU8c3RkOjpkZWNheV90PFU+LCBFeGNlcHRpb25Pcj46OnZhbHVlLCBKU0M6OkpT
VmFsdWU+OwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1dG8gdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpU
aHJvd1Njb3BlJiwgVSYmKSAtPiBzdGQ6OmVuYWJsZV9pZl90PCFXVEY6OklzVGVtcGxhdGU8c3Rk
OjpkZWNheV90PFU+LCBFeGNlcHRpb25Pcj46OnZhbHVlLCBKU0M6OkpTVmFsdWU+OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBib29sIG5lZWRzU3RhdGUgPSBKU0NvbnZlcnRlcjxUPjo6bmVlZHNT
dGF0ZSwgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IEpTQ29udmVydGVyPFQ+OjpuZWVkc0dsb2Jh
bE9iamVjdD4KIHN0cnVjdCBKU0NvbnZlcnRlck92ZXJsb2FkZXI7CkBAIC0xNDksNyArMTUyLDEy
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSAKICAgICByZXR1cm4g
SlNDb252ZXJ0ZXJPdmVybG9hZGVyPFQ+Ojpjb252ZXJ0KHN0YXRlLCBnbG9iYWxPYmplY3QsIHN0
ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4Y2VwdGlvbk9yPFU+JiYgdmFsdWUpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBVJiYgdmFsdWUpCit7CisgICAgcmV0dXJuIEpTQ29udmVydGVyPFQ+Ojpjb252ZXJ0TmV3
bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byB0b0pTKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBVJiYgdmFs
dWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8V1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxVPiwg
RXhjZXB0aW9uT3I+Ojp2YWx1ZSwgSlNDOjpKU1ZhbHVlPgogewogICAgIGlmIChVTkxJS0VMWSh2
YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRl
LCB0aHJvd1Njb3BlLCB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOwpAQCAtMTU5LDcgKzE2Nywx
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgCiAgICAgcmV0dXJu
IHRvSlM8VD4oc3RhdGUsIHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBFeGNlcHRpb25PcjxVPiYmIHZhbHVlKQordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1dG8gdG9KUyhKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6VGhyb3dTY29wZSYsIFUmJiB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwh
V1RGOjpJc1RlbXBsYXRlPHN0ZDo6ZGVjYXlfdDxVPiwgRXhjZXB0aW9uT3I+Ojp2YWx1ZSwgSlND
OjpKU1ZhbHVlPgoreworICAgIHJldHVybiB0b0pTPFQ+KHN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4o
dmFsdWUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGF1
dG8gdG9KUyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgVSYmIHZhbHVlKSAtPiBzdGQ6OmVu
YWJsZV9pZl90PFdURjo6SXNUZW1wbGF0ZTxzdGQ6OmRlY2F5X3Q8VT4sIEV4Y2VwdGlvbk9yPjo6
dmFsdWUsIEpTQzo6SlNWYWx1ZT4KIHsKICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwg
dmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpKTsKQEAgLTE2OSwxMiArMTgyLDEyIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSAKICAgICByZXR1cm4gdG9KUzxUPihzdGF0
ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIFUmJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGlu
ZSBhdXRvIHRvSlMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmLCBVJiYgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lm
X3Q8IVdURjo6SXNUZW1wbGF0ZTxzdGQ6OmRlY2F5X3Q8VT4sIEV4Y2VwdGlvbk9yPjo6dmFsdWUs
IEpTQzo6SlNWYWx1ZT4KIHsKLSAgICByZXR1cm4gSlNDb252ZXJ0ZXI8VD46OmNvbnZlcnROZXds
eUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7Cisg
ICAgcmV0dXJuIHRvSlM8VD4oc3RhdGUsIGdsb2JhbE9iamVjdCwgc3RkOjpmb3J3YXJkPFU+KHZh
bHVlKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhj
ZXB0aW9uT3I8VT4mJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIFUm
JiB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDxXVEY6OklzVGVtcGxhdGU8c3RkOjpkZWNheV90
PFU+LCBFeGNlcHRpb25Pcj46OnZhbHVlLCBKU0M6OkpTVmFsdWU+CiB7CiAgICAgaWYgKFVOTElL
RUxZKHZhbHVlLmhhc0V4Y2VwdGlvbigpKSkgewogICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24o
c3RhdGUsIHRocm93U2NvcGUsIHZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKSk7CkBAIC0xODQsNiAr
MTk3LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSAKICAgICBy
ZXR1cm4gdG9KU05ld2x5Q3JlYXRlZDxUPihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBhdXRvIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmLCBVJiYgdmFsdWUp
IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IVdURjo6SXNUZW1wbGF0ZTxzdGQ6OmRlY2F5X3Q8VT4sIEV4
Y2VwdGlvbk9yPjo6dmFsdWUsIEpTQzo6SlNWYWx1ZT4KK3sKKyAgICByZXR1cm4gdG9KU05ld2x5
Q3JlYXRlZDxUPihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsK
K30KKwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdENvbnZlcnRlciB7CiAg
ICAgdXNpbmcgUmV0dXJuVHlwZSA9IHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlwZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNTI0NSw4ICs1MjQ1LDYg
QEAgc3ViIEdlbmVyYXRlU2VyaWFsaXplckRlZmluaXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuIik7CiAKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEBzZXJpYWxpemVkQXR0cmli
dXRlcykgewotICAgICAgICBhc3NlcnQoIkF0dHJpYnV0ZXMgdGhhdCB0aHJvdyBleGNlcHRpb25z
IGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggc2VyaWFsaXplcnMgeWV0LiIpIGlmICRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0dldHRlck1heVRocm93RXhjZXB0aW9ufSB8fCAkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07Ci0KICAgICAgICAg
bXkgJG5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICBteSAkZ2V0RnVuY3Rpb25OYW1l
ID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byAke25hbWV9VmFsdWUg
PSAke2dldEZ1bmN0aW9uTmFtZX1HZXR0ZXIoc3RhdGUsIHRoaXNPYmplY3QsIHRocm93U2NvcGUp
O1xuIik7CkBAIC02NTM2LDE3ICs2NTM0LDE3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWVET01Db252
ZXJ0TmVlZHNHbG9iYWwKIAogc3ViIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcwogewot
ICAgIG15ICgkY29udGV4dCwgJGludGVyZmFjZSwgJHZhbHVlLCAkZ2xvYmFsT2JqZWN0UmVmZXJl
bmNlLCAkc3VwcHJlc3NFeGNlcHRpb25DaGVjaywgJGV4Y2x1ZGVOdWxsYWJpbGl0eSkgPSBAXzsK
KyAgICBteSAoJGNvbnRleHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJGdsb2JhbE9iamVjdFJlZmVy
ZW5jZSkgPSBAXzsKIAotICAgIHJldHVybiBOYXRpdmVUb0pTVmFsdWUoJGNvbnRleHQsICRpbnRl
cmZhY2UsICR2YWx1ZSwgInN0YXRlIiwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJHN1cHByZXNz
RXhjZXB0aW9uQ2hlY2ssICRleGNsdWRlTnVsbGFiaWxpdHkpOworICAgIHJldHVybiBOYXRpdmVU
b0pTVmFsdWUoJGNvbnRleHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgInN0YXRlIiwgJGdsb2JhbE9i
amVjdFJlZmVyZW5jZSk7CiB9CiAKICMgRklYTUU6IFdlIHNob3VsZCByZW1vdmUgTmF0aXZlVG9K
U1ZhbHVlVXNpbmdQb2ludGVycyBhbmQgY29tYmluZSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVy
ZW5jZXMgYW5kIE5hdGl2ZVRvSlNWYWx1ZQogc3ViIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRl
cnMKIHsKLSAgICBteSAoJGNvbnRleHQsICRpbnRlcmZhY2UsICR2YWx1ZSwgJGdsb2JhbE9iamVj
dFJlZmVyZW5jZSwgJHN1cHByZXNzRXhjZXB0aW9uQ2hlY2ssICRleGNsdWRlTnVsbGFiaWxpdHkp
ID0gQF87CisgICAgbXkgKCRjb250ZXh0LCAkaW50ZXJmYWNlLCAkdmFsdWUsICRnbG9iYWxPYmpl
Y3RSZWZlcmVuY2UpID0gQF87CiAKLSAgICByZXR1cm4gTmF0aXZlVG9KU1ZhbHVlKCRjb250ZXh0
LCAkaW50ZXJmYWNlLCAkdmFsdWUsICIqc3RhdGUiLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlLCAk
c3VwcHJlc3NFeGNlcHRpb25DaGVjaywgJGV4Y2x1ZGVOdWxsYWJpbGl0eSk7CisgICAgcmV0dXJu
IE5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4dCwgJGludGVyZmFjZSwgJHZhbHVlLCAiKnN0YXRlIiwg
JGdsb2JhbE9iamVjdFJlZmVyZW5jZSk7CiB9CiAKIHN1YiBJc1ZhbGlkQ29udGV4dEZvck5hdGl2
ZVRvSlNWYWx1ZQpAQCAtNjU1OCwxMyArNjU1NiwxMyBAQCBzdWIgSXNWYWxpZENvbnRleHRGb3JO
YXRpdmVUb0pTVmFsdWUKIAogc3ViIE5hdGl2ZVRvSlNWYWx1ZQogewotICAgIG15ICgkY29udGV4
dCwgJGludGVyZmFjZSwgJHZhbHVlLCAkc3RhdGVSZWZlcmVuY2UsICRnbG9iYWxPYmplY3RSZWZl
cmVuY2UsICRzdXBwcmVzc0V4Y2VwdGlvbkNoZWNrLCAkZXhjbHVkZU51bGxhYmlsaXR5KSA9IEBf
OworICAgIG15ICgkY29udGV4dCwgJGludGVyZmFjZSwgJHZhbHVlLCAkc3RhdGVSZWZlcmVuY2Us
ICRnbG9iYWxPYmplY3RSZWZlcmVuY2UpID0gQF87CiAKICAgICBhc3NlcnQoIkludmFsaWQgY29u
dGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0Rm9yTmF0aXZlVG9KU1ZhbHVlKCRjb250ZXh0
KTsKIAogICAgIG15ICRjb25kaXRpb25hbCA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDb25kaXRpb25hbH07CiAgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsKLSAgICBteSAk
bWF5VGhyb3dFeGNlcHRpb24gPSAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2V0dGVy
TWF5VGhyb3dFeGNlcHRpb259IHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlU
aHJvd0V4Y2VwdGlvbn0gJiYgISRzdXBwcmVzc0V4Y2VwdGlvbkNoZWNrOworICAgIG15ICRtYXlU
aHJvd0V4Y2VwdGlvbiA9IHJlZigkY29udGV4dCkgZXEgIklETEF0dHJpYnV0ZSIgfHwgJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKIAogICAgICMgV2Ug
Y291bGQgaW5zdGVhZCBvdmVybG9hZCBhIGZ1bmN0aW9uIHRvIHdvcmsgd2l0aCBvcHRpb25hbCBh
cyB3ZWxsIGFzIG5vbi1vcHRpb25hbCBudW1iZXJzLCBidXQgdGhpcwogICAgICMgaXMgc2xpZ2h0
bHkgYmV0dGVyIGJlY2F1c2UgaXQgZ3VhcmFudGVlcyB3ZSB3aWxsIGZhaWwgdG8gY29tcGlsZSBp
ZiB0aGUgSURMIGZpbGUgZG9lc24ndCBtYXRjaCB0aGUgQysrLgpAQCAtNjU4MSw3ICs2NTc5LDcg
QEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICAkdmFsdWUgPSAiQmluZGluZ1NlY3VyaXR5
OjpjaGVja1NlY3VyaXR5Rm9yTm9kZSgkc3RhdGVSZWZlcmVuY2UsICR2YWx1ZSkiOwogICAgIH0K
IAotICAgIG15ICRJRExUeXBlID0gJGV4Y2x1ZGVOdWxsYWJpbGl0eSA/IEdldElETFR5cGVFeGNs
dWRpbmdOdWxsYWJpbGl0eSgkaW50ZXJmYWNlLCAkdHlwZSkgOiBHZXRJRExUeXBlKCRpbnRlcmZh
Y2UsICR0eXBlKTsKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5
cGUpOwogCiAgICAgbXkgQGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKICAgICBwdXNoKEBjb252
ZXJzaW9uQXJndW1lbnRzLCAkc3RhdGVSZWZlcmVuY2UpIGlmIE5hdGl2ZVRvSlNWYWx1ZURPTUNv
bnZlcnROZWVkc1N0YXRlKCR0eXBlKSB8fCAkbWF5VGhyb3dFeGNlcHRpb247CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgko
cmV2aXNpb24gMjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTIwNiw5ICsyMDYsNiBAQAogICAgICAg
ICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAidmFs
dWVzIjogWyIiLCAiSW1wbCIsICJJbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0IiwgIkltcGxEb2N1
bWVudCIsICJJbXBsRWxlbWVudFJvb3QiLCAiSW1wbEZyYW1lIiwgIkltcGxPd25lck5vZGVSb290
IiwgIkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0KICAgICAgICAgfSwKLSAgICAgICAgIkdl
dHRlck1heVRocm93RXhjZXB0aW9uIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6
IFsiYXR0cmlidXRlIl0KLSAgICAgICAgfSwKICAgICAgICAgIkdsb2JhbCI6IHsKICAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVl
cyI6IFsiKiJdLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsOCAr
MTY3LDggQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBtZXRob2RXaXRoRXhjZXB0aW9uKCk7CiAgICAgW01heVRo
cm93RXhjZXB0aW9uXSBsb25nIG1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKCk7CiAg
ICAgW01heVRocm93RXhjZXB0aW9uXSBUZXN0T2JqIG1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5p
bmdPYmplY3QoKTsKLSAgICBbR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBsb25n
IGF0dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb247Ci0gICAgW0dldHRlck1heVRocm93RXhjZXB0
aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uOwor
ICAgIGF0dHJpYnV0ZSBsb25nIGF0dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb247CisgICAgYXR0
cmlidXRlIERPTVN0cmluZyBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbjsKIAogICAgIC8v
ICdDdXN0b20nIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAgIFtDdXN0b21dIGF0dHJpYnV0ZSBsb25n
ICAgICAgICAgICAgY3VzdG9tQXR0cjsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIGVudW0gVGVzdENv
bmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVd
IGF0dHJpYnV0ZSBsb25nIHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZTsKICAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGUsIFNldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gYXR0
cmlidXRlIGxvbmcgd2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGU7CiAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGF0dHJpYnV0ZSBUZXN0T2JqIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlOwotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBUZXN0T2JqIHdpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlczsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBUZXN0T2JqIHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZV0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOworICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBhdHRyaWJ1dGUgVGVzdE9iaiB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczsKICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCZTY3JpcHRTdGF0ZV0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZTsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCZTY3JpcHRTdGF0ZSxHZXR0ZXJNYXlUaHJvd0V4Y2Vw
dGlvbl0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCZTY3JpcHRTdGF0ZV0gYXR0cmlidXRlIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczsKICAgICBbQ2FsbFdpdGg9ICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0ICAmICBTY3JpcHRTdGF0ZSAgXSBhdHRyaWJ1dGUgVGVzdE9iaiB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZTsKIAogICAgIC8vIE9wdGlvbmFsIHBhcmFtZXRlcnMuCkBAIC0zOTMsNyArMzkzLDcgQEAgZW51
bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIGF0dHJpYnV0ZSBVU1ZT
dHJpbmc/IG51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGU7CiAgICAgYXR0cmlidXRl
IEJ5dGVTdHJpbmc/IG51bGxhYmxlQnl0ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlOwogCi0gICAg
W0dldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVTdHJpbmdW
YWx1ZTsKKyAgICBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVTdHJpbmdWYWx1ZTsKIAogICAgIC8v
IElkZW50aWZpZXJzIHdpdGggYSBsZWFkaW5nIHVuZGVyc2NvcmUsIHdoaWNoIHNob3VsZCBiZSBy
ZW1vdmVkLgogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAgICAgICAgICAgICAgX3JlYWRvbmx5
ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0VHlw
ZWRlZnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0VHlwZWRlZnMuaWRsCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNjgsOCArNjgsOCBAQAogCiAgICAgLy8gRXhjZXB0aW9ucwogICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBtZXRob2RXaXRoRXhjZXB0aW9uKCk7Ci0gICAgW0dldHRlck1heVRocm93RXhj
ZXB0aW9uXSBhdHRyaWJ1dGUgbG9uZyBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbjsKLSAgICBbR2V0
dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgc3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb247CisgICAgYXR0cmlidXRlIGxvbmcgYXR0cldpdGhHZXR0ZXJFeGNlcHRp
b247CisgICAgYXR0cmlidXRlIERPTVN0cmluZyBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bjsKIAogICAgIC8vIEJ1aWx0aW4gVHlwZWRlZnMKICAgICBhdHRyaWJ1dGUgQnVmZmVyU291cmNl
IGJ1ZmZlclNvdXJjZUF0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAkocmV2aXNpb24gMjIyNDM3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNN
YXBMaWtlU2l6ZUdldHRlCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEFueT4oZm9y
d2FyZFNpemVUb01hcExpa2Uoc3RhdGUsIHRoaXNPYmplY3QpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMQW55PihzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFNpemVUb01hcExpa2Uo
c3RhdGUsIHRoaXNPYmplY3QpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1JlYWRPbmx5TWFwTGlrZS5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNSZWFkT25s
eU1hcExpa2VTCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEFueT4oZm9yd2FyZFNp
emVUb01hcExpa2Uoc3RhdGUsIHRoaXNPYmplY3QpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMQW55PihzdGF0ZSwgdGhyb3dTY29wZSwgZm9yd2FyZFNpemVUb01hcExpa2Uoc3RhdGUs
IHRoaXNPYmplY3QpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjIyNDM3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0QWN0aXZlRE9NT2JqCiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZSgmc3RhdGUsIHRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCksIFRocm93U2Vj
dXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
TG9uZz4oaW1wbC5leGNpdGluZ0F0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TExvbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmV4Y2l0aW5nQXR0cigpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9u
IDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNBCiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJp
bmc+KHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucygpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5hdHRy
aWJ1dGVXaXRoQ0VSZWFjdGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjIy
LDcgKzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1IKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RhdHRyaWJ1dGV3aXRoY2VyZWFjdGlv
bnNBdHRyKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUs
IHRocm93U2NvcGUsIGltcGwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3Jl
OjpIVE1MTmFtZXM6OnJlZmxlY3RhdHRyaWJ1dGV3aXRoY2VyZWFjdGlvbnNBdHRyKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1MKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcj4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1w
bC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
SW50ZXJmYWNlPFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPj4oc3RhdGUsICp0aGlzT2JqZWN0
Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ2lmaWVyQXR0cmlidXRlKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1MKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGlt
cGwudmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3Rh
dGUsIHRocm93U2NvcGUsIGltcGwudmFsdWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxU
cmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkocmV2aXNpb24gMjIyNDM3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdENhbGxUcmFjZXJUZQogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKICAgICAgICAgQ2Fs
bFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgQVNDSUlMaXRlcmFsKCJ0ZXN0
QXR0cmlidXRlSW50ZXJmYWNlIikpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExCb29s
ZWFuPihpbXBsLnRlc3RBdHRyaWJ1dGVJbnRlcmZhY2UoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETEJvb2xlYW4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RBdHRyaWJ1dGVJ
bnRlcmZhY2UoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjYxLDcgKzI2MSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyVGUKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNp
bmdBY3RpdmUoKSkpCiAgICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VyQXR0cmlidXRl
KGltcGwsIEFTQ0lJTGl0ZXJhbCgidGVzdEF0dHJpYnV0ZVNwZWNpZmllZCIpKTsKLSAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlM8SURMQm9vbGVhbj4oaW1wbC50ZXN0QXR0cmlidXRlU3BlY2lmaWVk
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExCb29sZWFuPihzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC50ZXN0QXR0cmlidXRlU3BlY2lmaWVkKCkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q2Fs
bFRyYWNlclRlCiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQogICAgICAgICBDYWxsVHJhY2Vy
Ojp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCBBU0NJSUxpdGVyYWwoInRlc3RBdHRyaWJ1
dGVXaXRoVmFyaWFudCIpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5pb248SURM
Qm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9i
YWxPYmplY3QoKSwgaW1wbC50ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJp
bmc+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwu
dGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclRl
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExCb29sZWFuPihpbXBsLnRlc3RSZWFkb25seUF0dHJpYnV0ZSgpKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQm9vbGVhbj4oc3RhdGUsIHRocm93U2NvcGUsIGlt
cGwudGVzdFJlYWRvbmx5QXR0cmlidXRlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RET01KSVQuY3BwCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjI0LDcgKzYyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlB
dHQKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTPElETEFueT4oaW1wbC5hbnlBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExBbnk+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmFueUF0dHIoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNjM4LDcgKzYzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRCb29sZWEKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJvb2xlYW4+KGltcGwuYm9vbGVh
bkF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJvb2xlYW4+KHN0YXRlLCB0
aHJvd1Njb3BlLCBpbXBsLmJvb2xlYW5BdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTY1Miw3ICs2NTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0
ZUF0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUzxJRExCeXRlPihpbXBsLmJ5dGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExCeXRlPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5ieXRlQXR0cigpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC02NjYsNyArNjY2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QQogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0
ZXRBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExPY3RldD4oc3RhdGUsIHRo
cm93U2NvcGUsIGltcGwub2N0ZXRBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTY4MCw3ICs2ODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRB
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExTaG9ydD4oaW1wbC5zaG9ydEF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETFNob3J0PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5zaG9ydEF0dHIoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNjk0LDcgKzY5NCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ24KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVuc2lnbmVkU2hvcnQ+
KGltcGwudW5zaWduZWRTaG9ydEF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TFVuc2lnbmVkU2hvcnQ+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVuc2lnbmVkU2hvcnRBdHRy
KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0F0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihpbXBs
LmxvbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0ZSwg
dGhyb3dTY29wZSwgaW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC03MjIsNyArNzIyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2ln
bgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMVW5zaWduZWRMb25nPihpbXBsLnVuc2lnbmVkTG9uZ0F0dHIoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4oc3RhdGUsIHRocm93U2Nv
cGUsIGltcGwudW5zaWduZWRMb25nQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC03MzYsNyArNzM2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdM
bwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMTG9uZ0xvbmc+KGltcGwubG9uZ0xvbmdBdHRyKCkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExMb25nTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwubG9u
Z0xvbmdBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc1MCw3ICs3NTAsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduCiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExV
bnNpZ25lZExvbmdMb25nPihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwg
aW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC03NjQsNyArNzY0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0
QQogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMRmxvYXQ+KGltcGwuZmxvYXRBdHRyKCkpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExGbG9hdD4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuZmxvYXRBdHRyKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc3OCw3ICs3NzgsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExVbnJlc3RyaWN0ZWRG
bG9hdD4oaW1wbC51bnJlc3RyaWN0ZWRGbG9hdEF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETFVucmVzdHJpY3RlZEZsb2F0PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC51bnJl
c3RyaWN0ZWRGbG9hdEF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzkyLDcg
Kzc5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGUKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETERvdWJsZT4oaW1wbC5kb3VibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExEb3VibGU+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmRvdWJsZUF0dHIoKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODA2LDcgKzgwNiw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVucmVzdHJpY3RlZERvdWJs
ZT4oaW1wbC51bnJlc3RyaWN0ZWREb3VibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExVbnJlc3RyaWN0ZWREb3VibGU+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVucmVz
dHJpY3RlZERvdWJsZUF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODIwLDcg
KzgyMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHIKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuZG9tU3RyaW5nQXR0cigpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5k
b21TdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTgzNCw3ICs4MzQs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExCeXRlU3RyaW5nPihzdGF0ZSwgaW1wbC5ieXRlU3RyaW5nQXR0cigpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMQnl0ZVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuYnl0
ZVN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODQ4LDcgKzg0OCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHIKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TFVTVlN0cmluZz4oc3RhdGUsIGltcGwudXN2U3RyaW5nQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMVVNWU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC51c3ZTdHJp
bmdBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTg2Miw3ICs4NjIsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZUF0CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRl
cmZhY2U8Tm9kZT4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5ub2Rl
QXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+Pihz
dGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubm9kZUF0
dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODc2LDcgKzg3Niw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWEKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxl
PElETEJvb2xlYW4+PihpbXBsLmJvb2xlYW5OdWxsYWJsZUF0dHIoKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETEJvb2xlYW4+PihzdGF0ZSwgdGhyb3dTY29wZSwg
aW1wbC5ib29sZWFuTnVsbGFibGVBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTg5MCw3ICs4OTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZU51
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExCeXRlPj4oaW1wbC5ieXRlTnVsbGFibGVBdHRyKCkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExCeXRlPj4oc3RhdGUs
IHRocm93U2NvcGUsIGltcGwuYnl0ZU51bGxhYmxlQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC05MDQsNyArOTA0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVE9jdGV0TgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMT2N0ZXQ+PihpbXBsLm9jdGV0TnVs
bGFibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExP
Y3RldD4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm9jdGV0TnVsbGFibGVBdHRyKCkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTkxOCw3ICs5MTgsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUU2hvcnROCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExTaG9ydD4+
KGltcGwuc2hvcnROdWxsYWJsZUF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TE51bGxhYmxlPElETFNob3J0Pj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuc2hvcnROdWxsYWJs
ZUF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtOTMyLDcgKzkzMiw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ24KICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxh
YmxlPElETFVuc2lnbmVkU2hvcnQ+PihpbXBsLnVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETFVuc2lnbmVkU2hvcnQ+
PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC51bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTk0Niw3ICs5NDYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ051CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExMb25n
Pj4oaW1wbC5sb25nTnVsbGFibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExOdWxsYWJsZTxJRExMb25nPj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwubG9uZ051bGxhYmxl
QXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC05NjAsNyArOTYwLDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbgogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFi
bGU8SURMVW5zaWduZWRMb25nPj4oaW1wbC51bnNpZ25lZExvbmdOdWxsYWJsZUF0dHIoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETFVuc2lnbmVkTG9uZz4+KHN0
YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVuc2lnbmVkTG9uZ051bGxhYmxlQXR0cigpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVExvbmdMbwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMTG9uZ0xvbmc+
PihpbXBsLmxvbmdMb25nTnVsbGFibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExOdWxsYWJsZTxJRExMb25nTG9uZz4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmxvbmdM
b25nTnVsbGFibGVBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTk4OCw3ICs5
ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduCiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmdMb25nPj4oaW1wbC51bnNpZ25lZExvbmdMb25n
TnVsbGFibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJ
RExVbnNpZ25lZExvbmdMb25nPj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwudW5zaWduZWRMb25n
TG9uZ051bGxhYmxlQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDAyLDcg
KzEwMDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURmxvYXROCiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExOdWxsYWJsZTxJRExGbG9hdD4+KGltcGwuZmxvYXROdWxsYWJsZUF0dHIoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETEZsb2F0Pj4oc3RhdGUsIHRo
cm93U2NvcGUsIGltcGwuZmxvYXROdWxsYWJsZUF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVFVucmVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMVW5yZXN0cmljdGVkRmxvYXQ+Pihp
bXBsLnVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRGbG9hdD4+KHN0YXRlLCB0aHJvd1Nj
b3BlLCBpbXBsLnVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTEwMzAsNyArMTAzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVREb3VibGUKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETERvdWJsZT4+KGltcGwu
ZG91YmxlTnVsbGFibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxs
YWJsZTxJRExEb3VibGU+PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5kb3VibGVOdWxsYWJsZUF0
dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdAogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFi
bGU8SURMVW5yZXN0cmljdGVkRG91YmxlPj4oaW1wbC51bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJs
ZUF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETFVucmVz
dHJpY3RlZERvdWJsZT4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVucmVzdHJpY3RlZERvdWJs
ZU51bGxhYmxlQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDU4LDcgKzEw
NTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyCiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW1wbC5kb21TdHJpbmdOdWxsYWJs
ZUF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0
cmluZz4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmRvbVN0cmluZ051bGxhYmxlQXR0cigpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExC
eXRlU3RyaW5nPj4oc3RhdGUsIGltcGwuYnl0ZVN0cmluZ051bGxhYmxlQXR0cigpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+KHN0YXRlLCB0
aHJvd1Njb3BlLCBpbXBsLmJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMTA4Niw3ICsxMDg2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVFVzdlN0cgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4oc3Rh
dGUsIGltcGwudXN2U3RyaW5nTnVsbGFibGVBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExOdWxsYWJsZTxJRExVU1ZTdHJpbmc+PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC51
c3ZTdHJpbmdOdWxsYWJsZUF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTEw
MCw3ICsxMTAwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVOdQog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4oc3RhdGUsICp0aGlzT2Jq
ZWN0Lmdsb2JhbE9iamVjdCgpLCBpbXBsLm5vZGVOdWxsYWJsZUF0dHIoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+KHN0YXRlLCAq
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5ub2RlTnVsbGFibGVB
dHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RF
bmFibGVkQnlTZXQKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuZW5hYmxlZEJ5
U2V0dGluZ0F0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3Ry
aW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENv
bnN0cnUKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuYXR0cjEoKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIGlt
cGwuYXR0cjEoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjQ2LDcgKzI0Niw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnUKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERP
TVN0cmluZz4oc3RhdGUsIGltcGwuYXR0cjIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETERPTVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuYXR0cjIoKSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RFdmVudENvbnN0cnUKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwu
YXR0cjMoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUs
IHRocm93U2NvcGUsIGltcGwuYXR0cjMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEV4
Y2VwdGlvbk5hbQogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5uYW1lKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLm5hbWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkocmV2aXNpb24gMjIyNDM3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZQogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0
ZSwgaW1wbC5hU2VjcmV0QXR0cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExET01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmFTZWNyZXRBdHRyaWJ1dGUoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNyAr
MjQ3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdAogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5yZWd1bGFyQXR0cmlidXRlKCkpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBs
LnJlZ3VsYXJBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjc4LDcg
KzI3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3QKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwucHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSgp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLnB1YmxpY0Fu
ZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRl
Q29uZGl0aW9uYWxBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzQ3
LDcgKzM0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3QKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhy
b3dTY29wZSwgaW1wbC5lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMjI0Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYxLDcgKzQ2MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb24KIHsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMTG9uZz4oVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c1N0YXRpY1JlYWRPbmx5QXR0cigpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIFRl
c3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdGF0aWNSZWFkT25seUF0dHIoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VDb24KIHsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3Ry
aW5nPihzdGF0ZSwgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c1N0YXRpY0F0dHIoKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIFRl
c3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdGF0aWNBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTUxMyw3ICs1MTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlSW1wCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLmltcGxlbWVudHNT
dHIxKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCB0
aHJvd1Njb3BlLCBpbXBsLmltcGxlbWVudHNTdHIxKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTUzMCw3ICs1MzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlSW1wCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIy
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCB0aHJv
d1Njb3BlLCBpbXBsLmltcGxlbWVudHNTdHIyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTU5Nyw3ICs1OTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
SW1wCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9i
YWxPYmplY3QoKSwgaW1wbC5pbXBsZW1lbnRzTm9kZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMSW50ZXJmYWNlPE5vZGU+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIGltcGwuaW1wbGVtZW50c05vZGUoKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtNjMzLDcgKzYzMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VDb24KIHsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oV2ViQ29y
ZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgV2Vi
Q29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTY0OSw3ICs2NDksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETERPTVN0cmluZz4oc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbFN0YXRpY0F0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0
cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNjg1LDcg
KzY4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXAKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETERPTVN0cmluZz4oc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbFN0cjEoaW1wbCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJp
bmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxTdHIxKGltcGwpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03MDIsNyArNzAy
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cAogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMRE9NU3RyaW5nPihzdGF0ZSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVu
dGFsU3RyMihpbXBsKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4o
c3RhdGUsIHRocm93U2NvcGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bFN0cjIoaW1wbCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc2OSw3ICs3NjksNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwCiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJ
bnRlcmZhY2U8Tm9kZT4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgV2ViQ29y
ZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTm9kZShpbXBsKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBw
bGVtZW50YWxOb2RlKGltcGwpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC04MDYsNyAr
ODA2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVJlZgogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGF0dHJpYnV0ZUF0dHIpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGF0dHJpYnV0ZUF0dHIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJldmlzaW9u
IDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3
ICsxNjcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTGVhCiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLnJlYWRvbmx5KCkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnJlYWRv
bmx5KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAko
cmV2aXNpb24gMjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RO
YW1lZFNldHRlclcKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwudW5mb3JnZWFi
bGVBdHRyaWJ1dGUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4o
c3RhdGUsIHRocm93U2NvcGUsIGltcGwudW5mb3JnZWFibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgs
NyArMjk4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5hbWVkU2V0dGVyVwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC51bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29w
ZSwgaW1wbC51bmZvcmdlYWJsZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Tm9kZU5hbWVHZXR0
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLm5hbWUoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwubmFt
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24g
MjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNjIsNyArMjE2Miw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUwKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KGltcGwucmVh
ZE9ubHlMb25nQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oc3Rh
dGUsIHRocm93U2NvcGUsIGltcGwucmVhZE9ubHlMb25nQXR0cigpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqUmVhZE9ubHlTCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLnJlYWRP
bmx5U3RyaW5nQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5n
PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5yZWFkT25seVN0cmluZ0F0dHIoKSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMjE5MCw3ICsyMTkwLDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE9ialJlYWRPbmx5VAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pihz
dGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwucmVhZE9ubHlUZXN0T2JqQXR0
cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pihz
dGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwucmVhZE9u
bHlUZXN0T2JqQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMjAzLDcgKzIy
MDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0CiB7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9u
Z0F0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KHN0YXRlLCB0aHJv
d1Njb3BlLCBUZXN0T2JqOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpDb25zdHJ1Y3QKIHsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3Ry
aW5nPihzdGF0ZSwgVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgVGVzdE9iajo6c3Rh
dGljU3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMjU4LDcgKzIy
NTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHJHCiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KHN0YXRlLCBpbXBsLmVudW1BdHRy
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpF
bnVtVHlwZT4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmVudW1BdHRyKCkpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RPYmpCeXRlQXR0ckcKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJ5dGU+KGltcGwuYnl0ZUF0dHIoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJ5dGU+KHN0YXRlLCB0aHJvd1Njb3BlLCBp
bXBsLmJ5dGVBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIzMjMsNyArMjMy
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETE9jdGV0PihpbXBsLm9jdGV0QXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMT2N0ZXQ+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm9jdGV0QXR0cigpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0yMzU0LDcgKzIzNTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqU2hvcnRBdHRyCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExTaG9ydD4oaW1wbC5zaG9ydEF0dHIo
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNob3J0PihzdGF0ZSwgdGhyb3dTY29w
ZSwgaW1wbC5zaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjM4NSw3
ICsyMzg1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNsYW1wZWRTaAogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMQ2xhbXBBZGFwdG9yPElETFNob3J0Pj4oaW1wbC5jbGFtcGVkU2hvcnRBdHRyKCkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExDbGFtcEFkYXB0b3I8SURMU2hvcnQ+Pihz
dGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5jbGFtcGVkU2hvcnRBdHRyKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTI0MTYsNyArMjQxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpFbmZvcmNlUmEKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEVuZm9yY2VSYW5nZUFkYXB0b3I8SURMU2hv
cnQ+PihpbXBsLmVuZm9yY2VSYW5nZVNob3J0QXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMRW5mb3JjZVJhbmdlQWRhcHRvcjxJRExTaG9ydD4+KHN0YXRlLCB0aHJvd1Njb3Bl
LCBpbXBsLmVuZm9yY2VSYW5nZVNob3J0QXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC0yNDQ3LDcgKzI0NDcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVW5z
aWduZWRTCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExVbnNpZ25lZFNob3J0PihpbXBsLnVuc2lnbmVkU2hvcnRBdHRy
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExVbnNpZ25lZFNob3J0PihzdGF0ZSwg
dGhyb3dTY29wZSwgaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0yNDc4LDcgKzI0NzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqTG9uZ0F0dHJHCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihpbXBsLmxvbmdBdHRyKCkpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5sb25n
QXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNTA5LDcgKzI1MDksNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBCiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25n
TG9uZz4oaW1wbC5sb25nTG9uZ0F0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TExvbmdMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5sb25nTG9uZ0F0dHIoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU0MCw3ICsyNTQwLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4o
aW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMVW5zaWduZWRMb25nTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwudW5zaWduZWRMb25n
TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU3MSw3ICsyNTcxLDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dAogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
RE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ0F0dHIo
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjYwMiw3ICsyNjAyLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVVNWU3RyaW5n
PihzdGF0ZSwgaW1wbC51c3ZzdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExVU1ZTdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVzdnN0cmluZ0F0dHIoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjYzMyw3ICsyNjMzLDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPFRl
c3RPYmo+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwudGVzdE9iakF0
dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4o
c3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RP
YmpBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2NjQsNyArMjY2NCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVsbGEKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51
bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxP
YmplY3QoKSwgaW1wbC50ZXN0TnVsbGFibGVPYmpBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+PihzdGF0ZSwgKnRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwudGVzdE51bGxhYmxlT2JqQXR0
cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNjk1LDcgKzI2OTUsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqTGVuaWVudFRlCiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZh
Y2U8VGVzdE9iaj4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5sZW5p
ZW50VGVzdE9iakF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFj
ZTxUZXN0T2JqPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBpbXBsLmxlbmllbnRUZXN0T2JqQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC0yNzI2LDcgKzI3MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVW5mb3Jn
ZWFiCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLnVuZm9yZ2VhYmxlQXR0cigp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC51bmZvcmdlYWJsZUF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMjc0MCw3ICsyNzQwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmlu
Z0F0dAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4o
c3RhdGUsIGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0
cmluZz4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI3NzEsNyArMjc3MSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmcKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETFVTVlN0cmluZz4+KHN0YXRlLCBpbXBsLnVzdnN0
cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihzdGF0ZSwg
dGhyb3dTY29wZSwgaW1wbC51c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZygp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yODAyLDcgKzI4MDIsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0T2JqQnl0ZVN0cmluCiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExUcmVhdE51bGxB
c0VtcHR5QWRhcHRvcjxJRExCeXRlU3RyaW5nPj4oc3RhdGUsIGltcGwuYnl0ZVN0cmluZ0F0dHJU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExCeXRlU3RyaW5nPj4oc3RhdGUsIHRocm93U2Nv
cGUsIGltcGwuYnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI4MzMsNyArMjgzMyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdMb24KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFJlY29yZDxJRExET01TdHJp
bmcsIElETExvbmc+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwuc3Ry
aW5nTG9uZ1JlY29yZEF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFJlY29y
ZDxJRExET01TdHJpbmcsIElETExvbmc+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCksIHRocm93U2NvcGUsIGltcGwuc3RyaW5nTG9uZ1JlY29yZEF0dHIoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMjg2NCw3ICsyODY0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdE9ialVzdnN0cmluZwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMUmVjb3JkPElETFVTVlN0cmluZywgSURM
TG9uZz4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC51c3ZzdHJpbmdM
b25nUmVjb3JkQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMUmVjb3JkPElE
TFVTVlN0cmluZywgSURMTG9uZz4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwg
dGhyb3dTY29wZSwgaW1wbC51c3ZzdHJpbmdMb25nUmVjb3JkQXR0cigpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0yODk1LDcgKzI4OTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqVXN2c3RyaW5nCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExSZWNvcmQ8SURMQnl0ZVN0cmluZywgSURM
TG9uZz4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC51c3ZzdHJpbmdM
b25nUmVjb3JkQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMUmVjb3JkPElE
TEJ5dGVTdHJpbmcsIElETExvbmc+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwudXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMjkyNiw3ICsyOTI2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdE9ialN0cmluZ09iagogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMUmVjb3JkPElETERPTVN0cmluZywgSURM
SW50ZXJmYWNlPFRlc3RPYmo+Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBp
bXBsLnN0cmluZ09ialJlY29yZEF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TFJlY29yZDxJRExET01TdHJpbmcsIElETEludGVyZmFjZTxUZXN0T2JqPj4+KHN0YXRlLCAqdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdPYmpSZWNvcmRB
dHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI5NTcsNyArMjk1Nyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdOdWwKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFJlY29y
ZDxJRExET01TdHJpbmcsIElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+PihzdGF0
ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwuc3RyaW5nTnVsbGFibGVPYmpSZWNv
cmRBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExSZWNvcmQ8SURMRE9NU3Ry
aW5nLCBJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+Pj4oc3RhdGUsICp0aGlzT2Jq
ZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnN0cmluZ051bGxhYmxlT2JqUmVj
b3JkQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqRGljdGlvbmFyCiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExE
aWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFs
T2JqZWN0KCksIGltcGwuZGljdGlvbmFyeUF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+KHN0YXRlLCAqdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5kaWN0aW9uYXJ5QXR0cigpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMDE5LDcgKzMwMTksNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVECiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExEaWN0
aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpLCBpbXBsLm51bGxhYmxlRGljdGlvbmFyeUF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETE51bGxhYmxlPElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+
PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubnVs
bGFibGVEaWN0aW9uYXJ5QXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMDUw
LDcgKzMwNTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQW5ub3RhdGVkCiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExVbmlvbjxJRExET01TdHJpbmcsIElETENsYW1wQWRhcHRvcjxJRExMb25nPj4+
KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5hbm5vdGF0ZWRUeXBlSW5V
bmlvbkF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVuaW9uPElETERPTVN0
cmluZywgSURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2Jh
bE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmFubm90YXRlZFR5cGVJblVuaW9uQXR0cigpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMDgxLDcgKzMwODEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0T2JqQW5ub3RhdGVkCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExTZXF1ZW5jZTxJRExD
bGFtcEFkYXB0b3I8SURMTG9uZz4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCks
IGltcGwuYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExTZXF1ZW5jZTxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+PihzdGF0ZSwgKnRo
aXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuYW5ub3RhdGVkVHlwZUlu
U2VxdWVuY2VBdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMxMTIsNyArMzEx
Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpJbXBsZW1lbnQKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETEVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPj4oc3RhdGUsIGltcGwuaW1wbGVtZW50
YXRpb25FbnVtQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRW51bWVyYXRp
b248QWx0ZXJuYXRlRW51bU5hbWU+PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5pbXBsZW1lbnRh
dGlvbkVudW1BdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMxNDYsNyArMzE0
Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHQKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETEludGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
LCBpbXBsLnhtbE9iakF0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVy
ZmFjZTxUZXN0T2JqPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBpbXBsLnhtbE9iakF0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzE3
Nyw3ICszMTc3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZUdldAog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMQm9vbGVhbj4oaW1wbC5pc0NyZWF0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMQm9vbGVhbj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaXNDcmVhdGUoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzIwOCw3ICszMjA4LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihz
dGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0
dHIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMjM5LDcgKzMyMzksNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkCiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExVU1ZTdHJp
bmc+KHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdhdHRyQXR0cikpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExVU1ZTdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Zz
dHJpbmdhdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMyNzAsNyArMzI3
MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWQKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETExvbmc+KGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpy
ZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TExvbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0cikpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTMzMDEsNyArMzMwMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWQKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4oc3RkOjptYXgoMCwg
aW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVu
c2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
VW5zaWduZWRMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgc3RkOjptYXgoMCwgaW1wbC5nZXRJbnRl
Z3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdy
YWxhdHRyQXR0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMzMyLDcgKzMzMzIs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkCiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExCb29sZWFuPihpbXBsLmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMQm9vbGVhbj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaGFzQXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJv
b2xlYW5hdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMzNjMsNyArMzM2
Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWQKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTMzOTQsNyArMzM5NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWQKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVTVlN0cmluZz4oc3RhdGUsIGltcGwuZ2V0VVJM
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0dHIpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVVNWU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1
cmxhdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTM0MjUsNyArMzQyNSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWQKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TERPTVN0cmluZz4oc3RhdGUsIGltcGwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0cikpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBs
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0z
NDU2LDcgKzM0NTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVk
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExMb25nPihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuZ2V0SW50ZWdyYWxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0
cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTM0ODcsNyArMzQ4Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWQKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJvb2xlYW4+
KGltcGwuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMQm9vbGVhbj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuaGFzQXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29s
ZWFuQXR0ckF0dHIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zNTE4LDcgKzM1MTgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkCiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExET01TdHJpbmc+KHN0YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExET01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTM1NTAsNyArMzU1MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RPYmpFbmFibGVkQXQKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwu
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5lbmFibGVkQXRSdW50aW1lQXR0
cmlidXRlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTM1ODYsNyArMzU4Niw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmEKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEZs
b2F0MzJBcnJheT4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBpbXBsLnR5cGVk
QXJyYXlBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExGbG9hdDMyQXJyYXk+
KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50eXBl
ZEFycmF5QXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zNzUxLDcgKzM3NTEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwCiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExMb25nPihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShzdGF0ZSkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUoc3RhdGUpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0z
NzgyLDcgKzM3ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqV2l0aENhbGxX
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExMb25nPihpbXBsLndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKHN0YXRlKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KHN0YXRl
LCB0aHJvd1Njb3BlLCBpbXBsLndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRl
KHN0YXRlKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzgxNiw3ICszODE2LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcAogICAgIGlmIChVTkxJS0VM
WSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
SW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGlt
cGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKmNvbnRleHQpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+PihzdGF0ZSwgKnRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoKmNvbnRleHQpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC0zOTIxLDcgKzM5MjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwCiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KHN0YXRlLCAqdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmpl
Y3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTM5OTUsNyArMzk5NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpX
aXRoU2NyaXAKICAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oc3RhdGUsICp0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKHN0YXRlLCAqY29udGV4dCkpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KHN0YXRlLCAqdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShzdGF0ZSwgKmNvbnRleHQp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MDMwLDcgKzQwMzAsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uCiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihpbXBs
LmNvbmRpdGlvbmFsQXR0cjEoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+
KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtNDA2Nyw3ICs0MDY3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oaW1wbC5jb25kaXRpb25hbEF0
dHIyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dT
Y29wZSwgaW1wbC5jb25kaXRpb25hbEF0dHIyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTQxMDQsNyArNDEwNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb25k
aXRpb24KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KGltcGwuY29uZGl0aW9uYWxBdHRyMygpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuY29u
ZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MjMyLDcgKzQy
MzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0CiAgICAgaWYg
KEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1fY2FjaGVkQXR0cmlidXRlMS5nZXQo
KSkKICAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVlOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55PihpbXBsLmNh
Y2hlZEF0dHJpYnV0ZTEoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEFueT4oc3Rh
dGUsIHRocm93U2NvcGUsIGltcGwuY2FjaGVkQXR0cmlidXRlMSgpKTsKICAgICB0aGlzT2JqZWN0
Lm1fY2FjaGVkQXR0cmlidXRlMS5zZXQoc3RhdGUudm0oKSwgJnRoaXNPYmplY3QsIHJlc3VsdCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQyNDksNyArNDI0OSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHQKICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1
ZSA9IHRoaXNPYmplY3QubV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4g
Y2FjaGVkVmFsdWU7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExBbnk+KGltcGwuY2FjaGVkQXR0cmlidXRlMigpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1w
bC5jYWNoZWRBdHRyaWJ1dGUyKCkpOwogICAgIHRoaXNPYmplY3QubV9jYWNoZWRBdHRyaWJ1dGUy
LnNldChzdGF0ZS52bSgpLCAmdGhpc09iamVjdCwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtNDI2NCw3ICs0MjY0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
akFueUF0dHJpYgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55PihpbXBsLmFueUF0dHJpYnV0ZSgpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5hbnlB
dHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDI5NSw3ICs0Mjk1LDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dAogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
T2JqZWN0PihpbXBsLm9iamVjdEF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMT2JqZWN0PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5vYmplY3RBdHRyaWJ1dGUoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDMyNiw3ICs0MzI2LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREbwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPERv
Y3VtZW50Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBCaW5kaW5nU2VjdXJp
dHk6OmNoZWNrU2VjdXJpdHlGb3JOb2RlKHN0YXRlLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxEb2N1bWVudD4+KHN0YXRl
LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgQmluZGluZ1NlY3VyaXR5
OjpjaGVja1NlY3VyaXR5Rm9yTm9kZShzdGF0ZSwgaW1wbC5jb250ZW50RG9jdW1lbnQoKSkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzNDAsNyArNDM0MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG8KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxTVkdQ
b2ludD4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5tdXRhYmxlUG9p
bnQoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxTVkdQb2ludD4+
KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5tdXRh
YmxlUG9pbnQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM3MSw3ICs0MzcxLDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycgogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
TG9uZz4oaW1wbC5ibHVlYmVycnkoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExv
bmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmJsdWViZXJyeSgpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC00NDAyLDcgKzQ0MDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqRGVzY3JpcHRpCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihpbXBsLmRlc2NyaXB0aW9uKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1w
bC5kZXNjcmlwdGlvbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NDE2LDcgKzQ0
MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqSWRHZXR0ZXIoCiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExMb25nPihpbXBsLmlkKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25n
PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5pZCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC00NDQ3LDcgKzQ0NDcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqSGFz
aEdldHRlCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLmhhc2goKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIGlt
cGwuaGFzaCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NDYxLDcgKzQ0NjEsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFiCiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExM
b25nPihpbXBsLnJlcGxhY2VhYmxlQXR0cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0
ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NDg3LDcgKzQ0ODcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVECiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJs
ZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+PihpbXBsLm51bGxhYmxlRG91YmxlQXR0cmlidXRlKCkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRE
b3VibGU+PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZSgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NTAxLDcgKzQ1MDEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMCiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJ
RExMb25nPj4oaW1wbC5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETE51bGxhYmxlPElETExvbmc+PihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5u
dWxsYWJsZUxvbmdBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDUx
NSw3ICs0NTE1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQgog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMTnVsbGFibGU8SURMQm9vbGVhbj4+KGltcGwubnVsbGFibGVCb29sZWFuQXR0
cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExCb29s
ZWFuPj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwubnVsbGFibGVCb29sZWFuQXR0cmlidXRlKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ1MjksNyArNDUyOSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVMKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElE
TERPTVN0cmluZz4+KHN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PihzdGF0ZSwg
dGhyb3dTY29wZSwgaW1wbC5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC00NTQzLDcgKzQ1NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVMCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExMb25nPj4oaW1wbC5u
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMTnVsbGFibGU8SURMTG9uZz4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ1
NzQsNyArNDU3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVMK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbXBsLm51bGxhYmxl
U3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TE51bGxhYmxlPElETERPTVN0cmluZz4+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLm51bGxhYmxl
U3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
NDYwNSw3ICs0NjA1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
VQogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4oc3RhdGUsIGltcGwubnVsbGFi
bGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwubnVs
bGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC00NjM2LDcgKzQ2MzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVCCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExCeXRlU3RyaW5nPj4oc3RhdGUsIGlt
cGwubnVsbGFibGVCeXRlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETEJ5dGVTdHJpbmc+PihzdGF0ZSwgdGhyb3dTY29w
ZSwgaW1wbC5udWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC00Njk4LDcgKzQ2OTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqQXR0cmlidXRlCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBs
LmF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihz
dGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5hdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtNDcxMiw3ICs0NzEyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
akF0dHJpYnV0ZQogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+Pihz
dGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+PihzdGF0ZSwg
dGhyb3dTY29wZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NzQ2LDcgKzQ3NDYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0T2JqVGVzdFJlYWRPCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExQcm9taXNlPElETFZvaWQ+Pihz
dGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwudGVzdFJlYWRPbmx5Vm9pZFBy
b21pc2VBdHRyaWJ1dGUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFByb21pc2U8
SURMVm9pZD4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
aW1wbC50ZXN0UmVhZE9ubHlWb2lkUHJvbWlzZUF0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC00NzYwLDcgKzQ3NjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqVGVzdFJlYWRPCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExQcm9taXNlPElETEludGVyZmFjZTxUZXN0Tm9k
ZT4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwudGVzdFJlYWRPbmx5
UHJvbWlzZUF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMUHJvbWlz
ZTxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RSZWFkT25seVByb21pc2VBdHRyaWJ1dGUoKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDc3NCw3ICs0Nzc0LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3RO
b2RlPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBpbXBsLnB1dEZvcndhcmRz
QXR0cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8VGVz
dE5vZGU+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
NDgxMCw3ICs0ODEwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndh
cgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4+KHN0YXRlLCAq
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmli
dXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExJbnRlcmZh
Y2U8VGVzdE5vZGU+Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Nj
b3BlLCBpbXBsLnB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtNDg0Niw3ICs0ODQ2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ2lmaQogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVVNWU3RyaW5nPihzdGF0ZSwgaW1wbC5zdHJp
bmdpZmllckF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVVNWU3Ry
aW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00ODc3LDcgKzQ4NzcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+
KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5jb25kaXRpb25hbGx5UmVh
ZFdyaXRlQXR0cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZh
Y2U8Tm9kZT4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
aW1wbC5jb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTQ5MTIsNyArNDkxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb24KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxOb2RlPj4oc3RhdGUsICp0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBpbXBsLmNvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJl
YWRXcml0ZUF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50ZXJm
YWNlPE5vZGU+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUs
IGltcGwuY29uZGl0aW9uYWxBbmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ5NTEsNyArNDk1MSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb24KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KGltcGwuY29u
ZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuY29uZGl0aW9uYWxseUV4
cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00
OTgyLDcgKzQ5ODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9u
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExMb25nPihpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRy
aWJ1dGUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KHN0YXRlLCB0aHJv
d1Njb3BlLCBpbXBsLmNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUoKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNTAxMyw3ICs1MDEzLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oaW1wbC5jb25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyQXR0cmlidXRlKCkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5jb25kaXRp
b25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyQXR0cmlidXRlKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQuY3BwCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNl
UmVqZWMKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETFByb21pc2U8SURMQW55Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmds
b2JhbE9iamVjdCgpLCBpbXBsLnByb21pc2UoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETFByb21pc2U8SURMQW55Pj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLnByb21pc2UoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
MjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWMK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETEFueT4oaW1wbC5yZWFzb24oKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETEFueT4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwucmVhc29uKCkpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAJKHJldmlz
aW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW8KICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERP
TVN0cmluZz4oc3RhdGUsIGltcGwuZmlyc3RTdHJpbmdBdHRyaWJ1dGUoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuZmly
c3RTdHJpbmdBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjM4LDcg
KzIzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW8KICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETExvbmc+KGltcGwuc2Vjb25kTG9uZ0F0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuc2Vjb25kTG9uZ0F0
dHJpYnV0ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNjksNyArMjY5LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpbwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMSW50
ZXJmYWNlPFRlc3RFeGNlcHRpb24+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCks
IGltcGwudGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMSW50ZXJmYWNlPFRlc3RFeGNlcHRpb24+PihzdGF0ZSwgKnRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwudGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJp
YnV0ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpbwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5yZXN0
cmljdGVkRG91YmxlPihpbXBsLmZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZSgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5yZXN0cmljdGVkRG91YmxlPihzdGF0ZSwg
dGhyb3dTY29wZSwgaW1wbC5mb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUoKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW8KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KGltcGwuZmlmdGhM
b25nQXR0cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5maWZ0aExvbmdBdHRyaWJ1dGUoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemF0aW8KICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERvdWJsZT4oaW1wbC5zaXh0aFR5cGVkZWZBdHRy
aWJ1dGUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERvdWJsZT4oc3RhdGUsIHRo
cm93U2NvcGUsIGltcGwuc2l4dGhUeXBlZGVmQXR0cmlidXRlKCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWw+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwuc2V2ZW50
aERpcmVjdGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExJbnRlcmZhY2U8VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+PihzdGF0ZSwg
KnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc2V2ZW50aERpcmVj
dGx5U2VyaWFsaXphYmxlQXR0cmlidXRlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTQyNCw3ICs0MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlv
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRh
bmNlPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBpbXBsLmVpZ2h0aEluZGly
ZWN0bHlBdHRyaWJ1dGUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFj
ZTxUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2U+PihzdGF0ZSwgKnRoaXNPYmpl
Y3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZWlnaHRoSW5kaXJlY3RseUF0dHJp
YnV0ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0U2VyaWFsaXphdGlvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihpbXBsLmluaGVyaXRM
b25nQXR0cmlidXRlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5pbmhlcml0TG9uZ0F0dHJpYnV0ZSgpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0U2VyaWFsaXphdGlvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihpbXBsLmZpbmFsTG9uZ0F0dHJp
YnV0ZUZvbygpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRo
cm93U2NvcGUsIGltcGwuZmluYWxMb25nQXR0cmlidXRlRm9vKCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihpbXBsLmZpbmFsTG9uZ0F0dHJpYnV0ZUJh
cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oc3RhdGUsIHRocm93U2Nv
cGUsIGltcGwuZmluYWxMb25nQXR0cmlidXRlQmFyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2MKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCksIGltcGwudmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PihzdGF0ZSwgKnRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwudmFsdWUoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemVkU2MKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwu
cmVhZG9ubHlWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+KHN0YXRlLCAqdGhpc09iamVjdC5n
bG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5yZWFkb25seVZhbHVlKCkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjCiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlz
T2JqZWN0Lm1fY2FjaGVkVmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwuY2FjaGVkVmFsdWUoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIGltcGwuY2FjaGVkVmFsdWUoKSk7CiAgICAgdGhpc09iamVjdC5tX2NhY2hlZFZh
bHVlLnNldChzdGF0ZS52bSgpLCAmdGhpc09iamVjdCwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RT
ZXJpYWxpemVkU2MKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxNZXNzYWdlUG9y
dD4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIGltcGwucG9ydHMoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNlcXVlbmNlPElETEludGVyZmFjZTxNZXNzYWdl
UG9ydD4+PihzdGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGlt
cGwucG9ydHMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjk0LDcgKzI5NCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2MKICAgICBpZiAoSlNWYWx1
ZSBjYWNoZWRWYWx1ZSA9IHRoaXNPYmplY3QubV9jYWNoZWRSZWFkb25seVZhbHVlLmdldCgpKQog
ICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWU7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExTZXJpYWxpemVkU2NyaXB0
VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpLCBpbXBsLmNhY2hlZFJlYWRvbmx5VmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Pihz
dGF0ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuY2FjaGVk
UmVhZG9ubHlWYWx1ZSgpKTsKICAgICB0aGlzT2JqZWN0Lm1fY2FjaGVkUmVhZG9ubHlWYWx1ZS5z
ZXQoc3RhdGUudm0oKSwgJnRoaXNPYmplY3QsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RTdHJpbmdpZmllclIKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuaWRl
bnRpZmllcigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0
ZSwgdGhyb3dTY29wZSwgaW1wbC5pZGVudGlmaWVyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RTdHJpbmdpZmllclIKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwu
aWRlbnRpZmllcigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihz
dGF0ZSwgdGhyb3dTY29wZSwgaW1wbC5pZGVudGlmaWVyKCkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjIyNDM3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Vuc2kKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVuc2lnbmVkTG9uZ0xvbmc+KGltcGwudW5z
aWduZWRMb25nTG9uZ0F0dHIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVuc2ln
bmVkTG9uZ0xvbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRy
KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNTZXJpCiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExTZXJpYWxpemVk
U2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oc3RhdGUsICp0aGlzT2JqZWN0Lmds
b2JhbE9iamVjdCgpLCBpbXBsLnNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1w
bC5zZXJpYWxpemVkU2NyaXB0VmFsdWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
MzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHIK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oaW1wbC5hdHRy
aWJ1dGVXaXRoQ2xhbXAoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETENsYW1wQWRh
cHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuYXR0cmli
dXRlV2l0aENsYW1wKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTM5Myw3ICszOTMs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyCiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExDbGFtcEFkYXB0b3I8SURMTG9uZz4+KGltcGwuYXR0cmlidXRlV2l0aENsYW1wSW5UeXBlZGVm
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+
KHN0YXRlLCB0aHJvd1Njb3BlLCBpbXBsLmF0dHJpYnV0ZVdpdGhDbGFtcEluVHlwZWRlZigpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQnVmZgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5pb248SURMQXJyYXlC
dWZmZXJWaWV3LCBJRExBcnJheUJ1ZmZlcj4+KHN0YXRlLCAqdGhpc09iamVjdC5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC5idWZmZXJTb3VyY2VBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExVbmlvbjxJRExBcnJheUJ1ZmZlclZpZXcsIElETEFycmF5QnVmZmVyPj4oc3RhdGUsICp0
aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLmJ1ZmZlclNvdXJjZUF0
dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNTE3LDcgKzUxNyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0RvbVQKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVuc2lnbmVk
TG9uZ0xvbmc+KGltcGwuZG9tVGltZVN0YW1wQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMVW5zaWduZWRMb25nTG9uZz4oc3RhdGUsIHRocm93U2NvcGUsIGltcGwuZG9tVGlt
ZVN0YW1wQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwJKHJldmlzaW9uIDIyMjQzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdHlwZWRlZiAoCiAgICAg
W1B1dEZvcndhcmRzPWhyZWYsIFVuZm9yZ2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgTG9jYXRp
b24/IGxvY2F0aW9uOwogICAgIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgZG9tYWluOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcmVmZXJyZXI7Ci0gICAgW0dldHRlck1heVRocm93RXhj
ZXB0aW9uXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGNvb2tpZTsKKyAgICBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIGNvb2tpZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhc3RNb2RpZmll
ZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnRSZWFkeVN0YXRlIHJlYWR5U3RhdGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkocmV2aXNp
b24gMjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNzcsMTQgKzc3LDE0IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IE5vZGVMaXN0IGxhYmVsczsKIAogICAgIHZvaWQgc2VsZWN0KCk7Ci0gICAgW0ltcGxlbWVudGVk
QXM9c2VsZWN0aW9uU3RhcnRGb3JCaW5kaW5ncywgR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0
dHJpYnV0ZSBsb25nIHNlbGVjdGlvblN0YXJ0OwotICAgIFtJbXBsZW1lbnRlZEFzPXNlbGVjdGlv
bkVuZEZvckJpbmRpbmdzLCBHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gIGF0dHJpYnV0ZSBsb25n
IHNlbGVjdGlvbkVuZDsKLSAgICBbSW1wbGVtZW50ZWRBcz1zZWxlY3Rpb25EaXJlY3Rpb25Gb3JC
aW5kaW5ncywgR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNl
bGVjdGlvbkRpcmVjdGlvbjsKKyAgICBbSW1wbGVtZW50ZWRBcz1zZWxlY3Rpb25TdGFydEZvckJp
bmRpbmdzXSBhdHRyaWJ1dGUgbG9uZyBzZWxlY3Rpb25TdGFydDsKKyAgICBbSW1wbGVtZW50ZWRB
cz1zZWxlY3Rpb25FbmRGb3JCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgc2VsZWN0aW9uRW5kOwor
ICAgIFtJbXBsZW1lbnRlZEFzPXNlbGVjdGlvbkRpcmVjdGlvbkZvckJpbmRpbmdzXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHNlbGVjdGlvbkRpcmVjdGlvbjsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRSYW5nZVRleHQoRE9NU3RyaW5nIHJlcGxhY2VtZW50KTsKICAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc2V0UmFuZ2VUZXh0KERPTVN0cmluZyByZXBsYWNlbWVudCwgdW5z
aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIG9wdGlvbmFsIERPTVN0cmluZyBz
ZWxlY3Rpb25Nb2RlKTsKIAotICAgIFtJbXBsZW1lbnRlZEFzPXNldFNlbGVjdGlvblJhbmdlRm9y
QmluZGluZ3MsIE1heVRocm93RXhjZXB0aW9uXSAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShsb25n
IHN0YXJ0LCBsb25nIGVuZCwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CisgICAgW0lt
cGxlbWVudGVkQXM9c2V0U2VsZWN0aW9uUmFuZ2VGb3JCaW5kaW5ncywgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UobG9uZyBzdGFydCwgbG9uZyBlbmQsIG9wdGlvbmFs
IERPTVN0cmluZyBkaXJlY3Rpb24pOwogCiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgYWxpZ247CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgdXNlTWFwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjIyNDM3KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMCArOTks
MTAgQEAgdHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgdm9pZCByZWxlYXNlRXZl
bnRzKCk7IC8vIE5vdCBpbXBsZW1lbnRlZC4gQWxzbyBub3QgaW4gbW9kZXJuIHN0YW5kYXJkcy4g
RW1wdHkgZnVuY3Rpb24gbWF5IGhlbHAgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb250ZW50
LgogCiAgICAgLy8gV2ViU3RvcmFnZSAoaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvd2Vic3RvcmFnZS5odG1sI3RoZS1zZXNzaW9uc3RvcmFnZS1hdHRyaWJ1dGUpLgotICAg
IFtHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2Ugc2Vz
c2lvblN0b3JhZ2U7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2Ugc2Vzc2lvblN0b3Jh
Z2U7CiAKICAgICAvLyBXZWJTdG9yYWdlIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS93ZWJzdG9yYWdlLmh0bWwjdGhlLWxvY2Fsc3RvcmFnZS1hdHRyaWJ1dGUpLgotICAg
IFtHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIFN0b3JhZ2UgbG9j
YWxTdG9yYWdlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdG9yYWdlIGxvY2FsU3RvcmFnZTsK
IAogICAgIC8vIEV4dGVuc2lvbnMgZnJvbSB0aGUgQ1NTT00gc3BlY2lmaWNhdGlvbiAoaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNleHRlbnNpb25zLXRvLXRoZS13aW5kb3ctaW50ZXJm
YWNlKS4KICAgICBbTmV3T2JqZWN0XSBDU1NTdHlsZURlY2xhcmF0aW9uIGdldENvbXB1dGVkU3R5
bGUoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCBDU1NPTVN0cmluZz8gcHNldWRvRWxlbWVudCA9
IG51bGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCShyZXZpc2lvbiAyMjI0MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJhbWUsCiBdIGludGVyZmFj
ZSBIaXN0b3J5IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7
Ci0gICAgW0dldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgU2Nyb2xsUmVzdG9yYXRp
b24gc2Nyb2xsUmVzdG9yYXRpb247CisgICAgYXR0cmlidXRlIFNjcm9sbFJlc3RvcmF0aW9uIHNj
cm9sbFJlc3RvcmF0aW9uOwogICAgIFtDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbV0gcmVhZG9ubHkg
YXR0cmlidXRlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBzdGF0ZTsKIAogICAgIFtDYWxsV2l0aD1E
b2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCBiYWNrKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoLmlkbAkocmV2aXNpb24gMjIyNDM3KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xlbmd0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgaW50ZXJm
YWNlIFNWR0xlbmd0aCB7IAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19MRU5HVEhUWVBF
X1BDID0gMTA7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgdW5pdFR5
cGU7Ci0gICAgW0dldHRlck1heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXZhbHVlRm9y
QmluZGluZ3NdIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWU7CisgICAgW0ltcGxl
bWVudGVkQXM9dmFsdWVGb3JCaW5kaW5nc10gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2
YWx1ZTsKIAogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmll
ZFVuaXRzOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWVBc1N0cmluZzsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkocmV2aXNpb24gMjIyNDM3KQorKysgU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNzgs
NyArNzgsNyBAQCBlbnVtIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHsKICAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgb3ZlcnJpZGVNaW1lVHlwZShET01TdHJpbmcgbWltZSk7CiAgICAg
YXR0cmlidXRlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZTsKICAgICBb
Q2FjaGVkQXR0cmlidXRlLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcmVz
cG9uc2U7Ci0gICAgW0dldHRlck1heVRocm93RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIHJlc3BvbnNlVGV4dDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5n
IHJlc3BvbnNlVGV4dDsKICAgICAvLyBGSVhNRTogcmVzcG9uc2VYTUwgc2hvdWxkIGJlIGFubm90
YXRlZCB3aXRoIFtFeHBvc2VkPVdpbmRvd10uCi0gICAgW0dldHRlck1heVRocm93RXhjZXB0aW9u
XSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQ/IHJlc3BvbnNlWE1MOworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBEb2N1bWVudD8gcmVzcG9uc2VYTUw7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoUmVzdWx0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhSZXN1bHQuaWRsCShyZXZpc2lvbiAyMjI0MzcpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhSZXN1bHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTMgQEAKICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBGSVJTVF9PUkRFUkVEX05PREVfVFlQRSA9IDk7CiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVzdWx0VHlwZTsKLSAgICBbR2V0dGVy
TWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91Ymxl
IG51bWJlclZhbHVlOwotICAgIFtHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBzdHJpbmdWYWx1ZTsKLSAgICBbR2V0dGVyTWF5VGhyb3dFeGNlcHRp
b25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGJvb2xlYW5WYWx1ZTsKLSAgICBbR2V0dGVy
TWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlIHNpbmdsZU5vZGVWYWx1
ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBudW1iZXJWYWx1
ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0cmluZ1ZhbHVlOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGJvb2xlYW5WYWx1ZTsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgTm9kZSBzaW5nbGVOb2RlVmFsdWU7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBpbnZhbGlkSXRlcmF0b3JTdGF0ZTsKLSAgICBbR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25d
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNuYXBzaG90TGVuZ3RoOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNuYXBzaG90TGVuZ3RoOwogCiAgICAgW01h
eVRocm93RXhjZXB0aW9uXSBOb2RlIGl0ZXJhdGVOZXh0KCk7CiAgICAgW01heVRocm93RXhjZXB0
aW9uXSBOb2RlIHNuYXBzaG90SXRlbShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7
Cg==
</data>
<flag name="review"
          id="341628"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>