<?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>199888</bug_id>
          
          <creation_ts>2019-07-17 16:08:31 -0700</creation_ts>
          <short_desc>Add support for FinalizationRegistries</short_desc>
          <delta_ts>2020-07-20 14:04:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1553735</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-17 16:08:31 -0700</bug_when>
    <thetext>Add support for FinalizationGroups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553737</commentid>
    <comment_count>1</comment_count>
      <attachid>374345</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-07-17 16:09:38 -0700</bug_when>
    <thetext>Created attachment 374345
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672600</commentid>
    <comment_count>2</comment_count>
      <attachid>404585</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 13:37:48 -0700</bug_when>
    <thetext>Created attachment 404585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672603</commentid>
    <comment_count>3</comment_count>
      <attachid>404587</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 13:44:50 -0700</bug_when>
    <thetext>Created attachment 404587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672608</commentid>
    <comment_count>4</comment_count>
      <attachid>404589</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 13:55:25 -0700</bug_when>
    <thetext>Created attachment 404589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672630</commentid>
    <comment_count>5</comment_count>
      <attachid>404595</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 14:42:17 -0700</bug_when>
    <thetext>Created attachment 404595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672651</commentid>
    <comment_count>6</comment_count>
      <attachid>404602</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 15:11:09 -0700</bug_when>
    <thetext>Created attachment 404602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672678</commentid>
    <comment_count>7</comment_count>
      <attachid>404609</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 15:33:56 -0700</bug_when>
    <thetext>Created attachment 404609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672700</commentid>
    <comment_count>8</comment_count>
      <attachid>404615</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 16:00:49 -0700</bug_when>
    <thetext>Created attachment 404615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672737</commentid>
    <comment_count>9</comment_count>
      <attachid>404620</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 17:05:44 -0700</bug_when>
    <thetext>Created attachment 404620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672754</commentid>
    <comment_count>10</comment_count>
      <attachid>404620</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-17 17:45:53 -0700</bug_when>
    <thetext>Comment on attachment 404620
Patch

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

r=me

&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:936
&gt; +                531EE7BA22DE6BBB0030DA81 /* FinalizationRegistryPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 531EE7B922DE6BBB0030DA81 /* FinalizationRegistryPrototype.h */; };
&gt; +                5333BBDB2110F7D2007618EC /* DFGSpeculativeJIT32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86880F1B14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp */; };

Some indentation is broken?

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:60
&gt; +    macro(FinalizationRegistry) \

This list is alphabetical sorted, so please move it to &quot;F&quot;&apos;s section.

&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:2
&gt; + * Copyright (C) 2017-2019 Apple Inc. All rights reserved.

2020.

&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.h:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

Ditto.

&gt; Source/JavaScriptCore/runtime/FinalizationRegistryConstructor.cpp:2
&gt; + * Copyright (C) 2019 Apple, Inc. All rights reserved.

Ditto.

&gt; Source/JavaScriptCore/runtime/FinalizationRegistryConstructor.h:2
&gt; + * Copyright (C) 2019 Apple Inc. All rights reserved.

Ditto.

&gt; Source/JavaScriptCore/runtime/FinalizationRegistryConstructor.h:57
&gt; +static_assert(sizeof(FinalizationRegistryConstructor) == sizeof(InternalFunction));

Use STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(FinalizationRegistryConstructor, InternalFunction);

&gt; Source/JavaScriptCore/runtime/FinalizationRegistryPrototype.cpp:2
&gt; + * Copyright (C) 2019 Apple, Inc. All rights reserved.

2020.

&gt; Source/JavaScriptCore/runtime/FinalizationRegistryPrototype.cpp:49
&gt; +    putDirectWithoutTransition(vm, vm.propertyNames-&gt;toStringTagSymbol, jsString(vm, &quot;FinalizationRegistry&quot;), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);

Use JSC_TO_STRING_TAG_WITHOUT_TRANSITION

&gt; Source/JavaScriptCore/runtime/FinalizationRegistryPrototype.h:2
&gt; + * Copyright (C) 2019 Apple, Inc. All rights reserved.

Ditto.

&gt; Source/JavaScriptCore/runtime/IdentifierInlines.h:52
&gt; +        ASSERT_WITH_MESSAGE(!string.length() || string.impl()-&gt;isSymbol() || AtomStringImpl::isInAtomStringTable(string.impl()), &quot;The at&amp;omic string comes from an other thread!&quot;);

Let&apos;s remove it.

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.h:31
&gt; -#include &quot;JSObject.h&quot;
&gt; +#include &quot;IntlObject.h&quot;
&gt;  #include &lt;unicode/ureldatefmt.h&gt;
&gt;  
&gt;  namespace JSC {

Put `enum class RelevantExtensionKey : uint8_t;` forwarding instead.

&gt; Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp:2
&gt; + * Copyright (C) 2019 Apple, Inc. All rights reserved.

Ditto.

&gt; Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp:200
&gt; +    bool result = m_liveRegistrations.remove(token);
&gt; +    result |= m_deadRegistrations.remove(token);

Is it possible that the same token exists on live and dead at the same time? If it is not possible, can we skip `m_deadRegistrations.remove` when we already found and removed it in m_liveRegistrations?

&gt; Source/JavaScriptCore/runtime/JSFinalizationRegistry.h:74
&gt; +    static void destroy(JSCell*);

Because of IsoSubspace, we do not need to inherit JSDestructibleObject to make it destructible. Just define needsDestruction and use JSInternalFieldObjectImpl.

&gt; Source/JavaScriptCore/runtime/JSInternalFieldObjectImpl.h:80
&gt; +template&lt;unsigned passedNumberOfInternalFields = 1&gt;
&gt; +using JSDestructibleInternalFieldObjectImpl = JSInternalFieldObjectImpl&lt;passedNumberOfInternalFields, JSDestructibleObject&gt;;

Let&apos;s remove these changes since we do not need to use JSDestructibleObject because of IsoSubspace.

&gt; Source/JavaScriptCore/runtime/JSInternalFieldObjectImplInlines.h:37
&gt; +template&lt;unsigned passedNumberOfInternalFields, typename Base&gt;
&gt; +void JSInternalFieldObjectImpl&lt;passedNumberOfInternalFields, Base&gt;::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
&gt;  {
&gt;      auto* thisObject = jsCast&lt;JSInternalFieldObjectImpl*&gt;(cell);
&gt; -    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
&gt; +    ASSERT_GC_OBJECT_INHERITS(thisObject, Base::info());
&gt;      Base::visitChildren(thisObject, visitor);

Ditto.

&gt; Source/JavaScriptCore/runtime/StructureIDTable.cpp:36
&gt; +bool verbose = false;

Let&apos;s make it static constexpr bool verbose = false;

&gt; Source/JavaScriptCore/runtime/VM.cpp:1491
&gt; +DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(finalizationRegistrySpace, destructibleObjectHeapCellType.get(), JSFinalizationRegistry)

Let&apos;s define finalizationRegistryHeapCellType by using IsoHeapCellType::create and use it.
JSDestructibleObject is now discouraged.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlock.h:52
&gt; +    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;

I think we should use constexpr.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlock.h:87
&gt; +    static const bool needsDestruction = true;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672755</commentid>
    <comment_count>11</comment_count>
      <attachid>404620</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-17 17:48:32 -0700</bug_when>
    <thetext>Comment on attachment 404620
Patch

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

&gt; Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp:131
&gt; +    if (!vm.deferredWorkTimer-&gt;hasPendingWork(this) &amp;&amp; (readiedCell || deadCount(NoLockingNecessary))) {

Why not passing locker to deadCount?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673152</commentid>
    <comment_count>12</comment_count>
      <attachid>404620</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-20 11:46:32 -0700</bug_when>
    <thetext>Comment on attachment 404620
Patch

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

&gt;&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:936
&gt;&gt; +                5333BBDB2110F7D2007618EC /* DFGSpeculativeJIT32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86880F1B14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp */; };
&gt; 
&gt; Some indentation is broken?

I think it&apos;s that my editor doesn&apos;t use tabs... Not sure it matters one way or the other though.

&gt;&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:60
&gt;&gt; +    macro(FinalizationRegistry) \
&gt; 
&gt; This list is alphabetical sorted, so please move it to &quot;F&quot;&apos;s section.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:2
&gt;&gt; + * Copyright (C) 2017-2019 Apple Inc. All rights reserved.
&gt; 
&gt; 2020.

Whoop, fixed. I should really make a script to do this automatically...

&gt;&gt; Source/JavaScriptCore/runtime/FinalizationRegistryPrototype.cpp:49
&gt;&gt; +    putDirectWithoutTransition(vm, vm.propertyNames-&gt;toStringTagSymbol, jsString(vm, &quot;FinalizationRegistry&quot;), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
&gt; 
&gt; Use JSC_TO_STRING_TAG_WITHOUT_TRANSITION

Done.

&gt;&gt; Source/JavaScriptCore/runtime/IdentifierInlines.h:52
&gt;&gt; +        ASSERT_WITH_MESSAGE(!string.length() || string.impl()-&gt;isSymbol() || AtomStringImpl::isInAtomStringTable(string.impl()), &quot;The at&amp;omic string comes from an other thread!&quot;);
&gt; 
&gt; Let&apos;s remove it.

Whoops, done!

&gt;&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.h:31
&gt;&gt;  namespace JSC {
&gt; 
&gt; Put `enum class RelevantExtensionKey : uint8_t;` forwarding instead.

Good call, done.

&gt;&gt; Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp:131
&gt;&gt; +    if (!vm.deferredWorkTimer-&gt;hasPendingWork(this) &amp;&amp; (readiedCell || deadCount(NoLockingNecessary))) {
&gt; 
&gt; Why not passing locker to deadCount?

Whoops hold over from when I thought I didn&apos;t need the lock.

&gt;&gt; Source/JavaScriptCore/runtime/JSFinalizationRegistry.cpp:200
&gt;&gt; +    result |= m_deadRegistrations.remove(token);
&gt; 
&gt; Is it possible that the same token exists on live and dead at the same time? If it is not possible, can we skip `m_deadRegistrations.remove` when we already found and removed it in m_liveRegistrations?

Yeah, it&apos;s possible, the unregister token can be any JS value and can be used for more than one object at the same time.

&gt;&gt; Source/JavaScriptCore/runtime/JSInternalFieldObjectImpl.h:80
&gt;&gt; +using JSDestructibleInternalFieldObjectImpl = JSInternalFieldObjectImpl&lt;passedNumberOfInternalFields, JSDestructibleObject&gt;;
&gt; 
&gt; Let&apos;s remove these changes since we do not need to use JSDestructibleObject because of IsoSubspace.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/JSInternalFieldObjectImplInlines.h:37
&gt;&gt;      Base::visitChildren(thisObject, visitor);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/StructureIDTable.cpp:36
&gt;&gt; +bool verbose = false;
&gt; 
&gt; Let&apos;s make it static constexpr bool verbose = false;

Good catch, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1491
&gt;&gt; +DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(finalizationRegistrySpace, destructibleObjectHeapCellType.get(), JSFinalizationRegistry)
&gt; 
&gt; Let&apos;s define finalizationRegistryHeapCellType by using IsoHeapCellType::create and use it.
&gt; JSDestructibleObject is now discouraged.

Gotcha. Didn&apos;t know this was the new preferred mechanism, will change.

&gt;&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlock.h:52
&gt;&gt; +    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
&gt; 
&gt; I think we should use constexpr.

Yeah, I think this was a bad merge. Is there actually a difference though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673153</commentid>
    <comment_count>13</comment_count>
      <attachid>404733</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-20 11:46:37 -0700</bug_when>
    <thetext>Created attachment 404733
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673154</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-20 11:46:57 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 404733 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673156</commentid>
    <comment_count>15</comment_count>
      <attachid>404735</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-20 11:47:20 -0700</bug_when>
    <thetext>Created attachment 404735
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673157</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-20 11:48:02 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 404735 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673158</commentid>
    <comment_count>17</comment_count>
      <attachid>404736</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-20 11:49:18 -0700</bug_when>
    <thetext>Created attachment 404736
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673164</commentid>
    <comment_count>18</comment_count>
      <attachid>404738</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-20 12:01:42 -0700</bug_when>
    <thetext>Created attachment 404738
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673192</commentid>
    <comment_count>19</comment_count>
      <attachid>404747</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-20 13:01:18 -0700</bug_when>
    <thetext>Created attachment 404747
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673196</commentid>
    <comment_count>20</comment_count>
      <attachid>404748</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-20 13:10:46 -0700</bug_when>
    <thetext>Created attachment 404748
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673228</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-20 14:03:21 -0700</bug_when>
    <thetext>Committed r264617: &lt;https://trac.webkit.org/changeset/264617&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404748.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673230</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-20 14:04:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/65846843&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374345</attachid>
            <date>2019-07-17 16:09:38 -0700</date>
            <delta_ts>2020-07-17 13:37:47 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-199888-20190717160935.patch</filename>
            <type>text/plain</type>
            <size>82935</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTZjZmQyYTg0NGQ4MDZjNjIyZWM4MzIzYTA1YmIyMTYwNTBiOTNlLi5hYzk2MzdmZTU2ODNkNmZh
ZjM2ZTEyZjc0YTk3YWU2NmViNWNiOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxOS0wNy0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxpemF0aW9uR3JvdXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsRmluYWxpemVycyk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChydW5KU0MpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZl
cnJlZFRpbWVyLmNwcC4KKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OkRlZmVycmVk
V29ya1RpbWVyKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OmRvV29yayk6Cisg
ICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpydW5SdW5Mb29wKToKKyAgICAgICAgKEpT
Qzo6RGVmZXJyZWRXb3JrVGltZXI6OmFkZFBlbmRpbmdXb3JrKToKKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXb3JrVGltZXI6Omhhc1BlbmRpbmdXb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRX
b3JrVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKToKKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJy
ZWRXb3JrVGltZXI6OnNjaGVkdWxlV29ya1Nvb24pOgorICAgICAgICAqIHJ1bnRpbWUvRGVmZXJy
ZWRXb3JrVGltZXIuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvbWlzZURlZmVycmVkVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvbkdy
b3VwQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uR3Jv
dXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpGaW5hbGl6YXRp
b25Hcm91cENvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvbkdyb3VwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
RmluYWxpemF0aW9uR3JvdXApOgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxpemF0aW9uR3JvdXBD
b25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9taXNlRGVmZXJyZWRUaW1lci5oLgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxpemF0aW9uR3Jv
dXBQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uR3JvdXBQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Z2V0RmluYWxpemF0aW9u
R3JvdXApOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNGaW5hbGl6YXRpb25Hcm91cFJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jRmluYWxpemF0aW9uR3JvdXBVbnJlZ2lzdGVyKToK
KyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvbkdyb3VwUHJvdG90eXBlLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5o
LgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllcjo6SWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlv
bkdyb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uR3JvdXA6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25Hcm91cDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uR3JvdXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25Hcm91cDo6cmVnaXN0
ZXJUYXJnZXQpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvbkdyb3VwOjp1bnJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25Hcm91cDo6dG9TdHJpbmdOYW1lKToKKyAg
ICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uR3JvdXAuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpK
U1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlh
dGUpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5h
bCk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMTkt
MDctMTYgIEpvb25naHVuIFBhcmsgIDxwamgwNzE4QGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RL
XSBGaXggYSBidWlsZCB3YXJuaW5nIGluIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggODVhYmEyYTNmZWZkMDViYTA2ZmVmYTI0ZGNmNTU1Y2MyMmU2MDZiZC4uYmM2ZDY0
MDQ0ZmZhMmZmNGZhN2YxM2YwNzdiMWYxYmUwMzBiMjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0wNy0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxpemF0aW9uR3JvdXBzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAg
KFdURjo6VmVjdG9yOjp0YWtlKToKKwogMjAxOS0wNy0xNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBZb3JrIGZvbnQgZXJyb25lb3VzbHkg
Z2V0cyBzeW50aGV0aWMgYm9sZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJjYTU2NTU0Y2MzOGMxMGJkY2Y1ZTQ1
MGI1M2Y2N2ZiZGY4NTJlZjkuLmQwMzhiNTRkZWZkYWI5Mzk3YzY5NzMxMmYwOGU0NGUwNDdiNDVh
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0wNy0xNyAgS2VpdGggTWlsbGVy
ICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmlu
YWxpemF0aW9uR3JvdXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZWZhY3RvciB0aGluZ3MgZm9yIGNoYW5naW5nIFByb21pc2VEZWZlcnJlZFRpbWVy
IHRvIERlZmVycmVkV29ya1RpbWVyLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tcGlsZVN0
cmVhbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRl
U3RyZWFtaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmFkZFRpbWVy
U2V0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcDoKKwogMjAxOS0wNy0xNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXSExTTF0gRGVzdWdhciBmb3IgbG9vcHMgYW5kIHdoaWxlIGxvb3BzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDczZjZlZGVjZDc2M2I4N2RjNzQ3MGUwZGJj
YzhmODkwYzM0ZTM2M2YuLmFkY2YxMTQyYzQ0NzcxOGM2MWE3NTgyZDdlMjkwZjI4OGY3YmUwM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTYsMTIgKzkxNiwxNSBAQAogCQk1
MzBGREU3NTIxRkFCMDA2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBGREU3MzIxRkFBRkM2MDAwNTlENjUg
LyogdGVzdEluY2x1ZGVzLm0gKi87IH07CiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBX
YXNtT01HUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUz
MTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdh
c21QbGFuLmggKi87IH07CisJCTUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRp
b25Hcm91cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvbkdyb3VwUHJv
dG90eXBlLmggKi87IH07CiAJCTUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCAqLzsgfTsKIAkJNTMzM0JCREMyMTEwRjdEOTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZl
SklULmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
RUM5REMyMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgKi87IH07CiAJ
CTUzMzNCQkREMjExMEY3RTEwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjRDMTQzNTNC
MjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLzsgfTsKKwkJNTMzRDA3NDQy
MkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvbkdyb3VwQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0QwNzQzMjJDMkQ3OTcw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yLmggKi87IH07CisJCTUzM0Qw
NzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvbkdyb3VwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0NjIyQzJEOUQxMDA0RDJG
RTIgLyogSlNGaW5hbGl6YXRpb25Hcm91cC5oICovOyB9OwogCQk1MzQxRkM3MjFEQUMzNDNDMDBF
N0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2Fz
bUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8q
IEpTUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MzQ2Mzg3NTFF
NzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZURlZmVycmVkVGltZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAv
KiBQcm9taXNlRGVmZXJyZWRUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdv
cmtUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTM0ODZCQjcxQzE3OTVD
MzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0
OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJD
QjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3
NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwpAQCAtMzQ0MCw2ICszNDQzLDcgQEAK
IAkJNTJEMTMwOEYyMjFDRTAzQTAwOUM4MzZDIC8qIGZvby5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9IGZvby5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTJGNkMzNUIxRTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNkMzNUMxRTcxRUIwODAwODFGNEND
IC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHBhdGggPSBqcy9XZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzAw
NzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25Hcm91cC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0ZpbmFsaXphdGlvbkdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTMwQTYzNDAxRkEzRTMxQzAwMjZBNTQ1IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlc0NvY29hLnR4dDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTMwQTYzNDExRkEzRTMxRDAwMjZBNTQ1IC8qIFNvdXJjZXMudHh0ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFNvdXJjZXMudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MzBBNjZBRDFGQTNFNzc3MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0NC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTQ0LmNwcDsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5p
ZmllZFNvdXJjZTE0NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpA
QCAtMzQ2MywxNCArMzQ2NywxOSBAQAogCQk1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2Fz
bVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVBsYW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdh
c21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21QbGFu
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4
MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGgg
PSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUz
MUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmluYWxpemF0aW9u
R3JvdXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uR3JvdXBQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzI2MzFCMzIxODc3
N0E1MDA3QjgxOTEgLyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJj
ZWNvZGUubW9kdWxlLW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNt
T3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PcHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFs
aXphdGlvbkdyb3VwQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluYWxpemF0aW9uR3Jv
dXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzNEMDc0NTIy
QzJEODdGMDA0RDJGRTIgLyogRmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpTRmluYWxp
emF0aW9uR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaW5hbGl6YXRpb25Hcm91cC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQxRkM3MTFEQUMz
NDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dh
c21Cb3VuZHNDaGVja1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDYz
ODcwMUU3MENGM0QwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1J1bkxvb3BUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzQ2Mzg3MjFFNzBEMDE1MDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyog
UHJvbWlzZURlZmVycmVkVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvbWlzZURlZmVycmVkVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0
NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIFByb21pc2VEZWZlcnJlZFRpbWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb21pc2VEZWZlcnJlZFRpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8q
IERlZmVycmVkV29ya1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
ZmVycmVkV29ya1RpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNDYzODc2
MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFdvcmtUaW1lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBK
U1R5cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNU
eXBlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIxQzcy
NDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1R5
cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODI0LDYg
KzY4MzMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VD
YWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBl
LmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5o
ICovLAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5j
cHAgKi8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVy
LmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oICovLAogCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1
bWVudHMuY3BwICovLAogCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1
bWVudHMuaCAqLywKQEAgLTY4NzEsNiArNjg4MiwxMCBAQAogCQkJCTE0NzM0MUU5MURDMkNGMjUw
MEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5jcHAgKi8sCiAJCQkJMTQ3MzQxQ0IxREMwMkQ3MjAw
QUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmggKi8sCiAJCQkJRTM1QTBCOUMyMjBBRDg3QTAwQUM0
NDc0IC8qIEV4ZWN1dGFibGVCYXNlSW5saW5lcy5oICovLAorCQkJCTUzM0QwNzQ1MjJDMkQ4N0Yw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1MzNE
MDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3Rvci5oICov
LAorCQkJCTUzMUVFN0JDMjJERTZFQzYwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25Hcm91cFByb3Rv
dHlwZS5jcHAgKi8sCisJCQkJNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlv
bkdyb3VwUHJvdG90eXBlLmggKi8sCiAJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZs
b2F0MzJBcnJheS5oICovLAogCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0
QXJyYXkuaCAqLywKIAkJCQlCQzI2ODBDMDBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgKi8sCkBAIC03MDA3LDYgKzcwMjIsOCBAQAogCQkJCTBGN0RGMTM5MUUyOTcx
MEUwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAgKi8sCiAJ
CQkJMEY3REYxM0ExRTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmggKi8sCiAJCQkJQTdCNEFDQUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFj
cm9zLmggKi8sCisJCQkJNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9u
R3JvdXAuY3BwICovLAorCQkJCTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXph
dGlvbkdyb3VwLmggKi8sCiAJCQkJNzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRB
cnJheS5jcHAgKi8sCiAJCQkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJh
eS5oICovLAogCQkJCTBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5o
ICovLApAQCAtNzIwNyw4ICs3MjI0LDYgQEAKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEg
LyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQ
cm9ncmFtRXhlY3V0YWJsZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQ
cm9taXNlRGVmZXJyZWRUaW1lci5jcHAgKi8sCi0JCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMx
IC8qIFByb21pc2VEZWZlcnJlZFRpbWVyLmggKi8sCiAJCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdB
Mjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQw
MDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLApAQCAtODkxMyw2ICs4OTI4LDcg
QEAKIAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZDNzEyREYxN0NEODc3QzAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8q
IERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM0NjM4NzUxRTcwRERF
QzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNE
QTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkJCNzNCQjFERUY4NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVm
Zm9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERl
c3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTQ5LDYgKzkxNjUsOCBAQAogCQkJ
CTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUMzQzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMzRDA3NDQyMkMyRDc5
NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvbkdyb3VwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25Hcm91cFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZs
b2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0
IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAw
QUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtOTQ2NCw2ICs5NDgyLDcgQEAK
IAkJCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTUzM0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXph
dGlvbkdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTg5Mzc3OTFEQ0FCNTczMDBGOEQ0RkIg
LyogSlNGaXhlZEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFCMDBB
N0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYwMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzUz
LDcgKzk3NzIsNiBAQAogCQkJCURDNjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJ
RC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8qIFByb2dy
YW1Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFBMjlC
QSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4NzUxRTcw
RERFQzAwRjEyQUMxIC8qIFByb21pc2VEZWZlcnJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwRTFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKaW5kZXggZWU1NGFkOWJjNzgxMTgyYWRiOTY5NWM2M2MyOWJiYzFmYzAzZTE4OC4uZmY3Mjc1
YzhjYmMyMGYzNGNiZTIzZWQxMTk5ZTMwYWM4Yzc0YzBkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dApAQCAtNzY3LDYgKzc2Nyw4IEBAIHJ1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKIHJ1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKIHJ1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCiBy
dW50aW1lL0V4ZWN1dGFibGVCYXNlLmNwcAorcnVudGltZS9GaW5hbGl6YXRpb25Hcm91cENvbnN0
cnVjdG9yLmNwcAorcnVudGltZS9GaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZS5jcHAKIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcApAQCAtODIxLDYgKzgyMyw3IEBA
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHAKIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuY3BwCitydW50aW1lL0pTRmluYWxpemF0aW9uR3JvdXAuY3BwCiBydW50aW1lL0pT
Rml4ZWRBcnJheS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5jcHAKQEAgLTkwNSw3ICs5MDgsNyBAQCBydW50aW1lL09iamVjdFRvU3RyaW5n
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogcnVudGltZS9PcGVyYXRpb25zLmNwcAog
cnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKLXJ1bnRp
bWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwCitydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNw
cAogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCiBydW50aW1lL1Byb3BlcnR5U2xvdC5j
cHAKIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKaW5kZXggYTAxYjVhMmI0YWVmZDNlNTI5Njk3N2E1YzgzODQwNDJlNWEyOTU2YS4uYWM5YWUy
M2UwZTU5YTgyNDZmNTMxZDQzZDYyOWQzYWYwYjAxN2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNl
dC5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uR3JvdXAuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVmlydHVhbE1hY2hpbmVJbnRl
cm5hbC5oIgpAQCAtNjI3LDYgKzYyOCw4IEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsRmluYWxpemVycygpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8SlNXZWFrT2JqZWN0UmVmPigqdm0oKS0+bV93ZWFrT2JqZWN0UmVmU3BhY2UpOwogICAg
IGlmICh2bSgpLT5tX2Vycm9ySW5zdGFuY2VTcGFjZSkKICAgICAgICAgZmluYWxpemVNYXJrZWRV
bmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0oKS0+bV9lcnJvckluc3Rh
bmNlU3BhY2UpOworICAgIGlmICh2bSgpLT5tX2ZpbmFsaXphdGlvbkdyb3VwU3BhY2UpCisgICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25H
cm91cD4oKnZtKCktPm1fZmluYWxpemF0aW9uR3JvdXBTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgaWYgKHZtKCktPm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCmluZGV4IGU2ZTIzZjAyMDllNGQ3
MmFiMTY2OTZlNmIzODBmOWRkZmE4N2U3YTguLjhhNDE5YTI0NDRlNzQyZTVhN2Q1NzRiMzdjM2M3
MWQ0MTk2YTdhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApA
QCAtNzQsNiArNzQsMTEgQEAgcHVibGljOgogICAgICAgICBET01HQ091dHB1dCwKICAgICB9Owog
CisgICAgZW51bSBjbGFzcyBWaXNpdE1vZGUgeworICAgICAgICBWaXNpdENoaWxkcmVuLAorICAg
ICAgICBPdXRwdXRDb25zdHJhaW50cworICAgIH07CisKICAgICBTbG90VmlzaXRvcihIZWFwJiwg
Q1N0cmluZyBjb2RlTmFtZSk7CiAgICAgflNsb3RWaXNpdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKaW5kZXggZDRmYTIyMmM3MjFjZjRhN2U3MWFkNDc4NmY5ODQxMTEyNDFlMTg1Mi4uYTJlYzQx
NzQ2YTJhYzY5YWU1YWRkYzA5NTcwMTllZWE1YzU4NjI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgotI2luY2x1
ZGUgIlByb21pc2VEZWZlcnJlZFRpbWVyLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIu
aCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFwQWNj
ZXNzU2NvcGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCkBAIC0yOTc1LDcgKzI5
NzUsNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sIGlzV29y
a2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBmdW5jKHZtLCBnbG9iYWxPYmplY3QsIHN1
Y2Nlc3MpOwogICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICB9Ci0gICAgdm0ucHJv
bWlzZURlZmVycmVkVGltZXItPnJ1blJ1bkxvb3AoKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDNl
NmY1MWMwNDY5M2JkZmYyMWU3Yjk4Y2NiMDFmZTYxMjZmN2MxYjYuLmU1ZDliZTE3ZjgwYmE4NWM4
NWRhNmRjMzhhYmEyYTg5OWVmZGJmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNTQsNiArNTQsNyBAQAogICAgIG1hY3Jv
KFN0cmluZykgXAogICAgIG1hY3JvKFN5bWJvbCkgXAogICAgIG1hY3JvKFdlYWtSZWYpIFwKKyAg
ICBtYWNybyhGaW5hbGl6YXRpb25Hcm91cCkgXAogICAgIG1hY3JvKF9fZGVmaW5lR2V0dGVyX18p
IFwKICAgICBtYWNybyhfX2RlZmluZVNldHRlcl9fKSBcCiAgICAgbWFjcm8oX19sb29rdXBHZXR0
ZXJfXykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJy
ZWRXb3JrVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRX
b3JrVGltZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNTBhMjdiNjEyYjdiYTk3MjdmZDgzYTUwOTdhY2Qz
YWJjNmQ4MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgorCisjaW5jbHVkZSAiSlNQcm9taXNlRGVm
ZXJyZWQuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKyNp
bmNsdWRlIDx3dGYvTG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK25hbWVzcGFjZSBEZWZlcnJlZFdvcmtUaW1lckludGVybmFsIHsKK3N0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKworRGVmZXJyZWRXb3JrVGltZXI6OkRl
ZmVycmVkV29ya1RpbWVyKFZNJiB2bSkKKyAgICA6IEJhc2UoJnZtKQoreworfQorCit2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0mIHZtKQoreworICAgIEFTU0VSVCh2bS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBj
YW5jZWxUaW1lcigpOworICAgIGlmICghbV9ydW5UYXNrcykgeworICAgICAgICBtX3Rhc2tMb2Nr
LnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKCFtX3Rhc2tz
LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtl
TGFzdCgpOworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2
ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwor
CisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMu
CisgICAgICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpIHsKKyAgICAg
ICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KKyAgICAg
ICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVlOworICAgICAgICAgICAgbV90YXNr
TG9jay51bmxvY2soKTsgCisKKyAgICAgICAgICAgIHRhc2soKTsKKyAgICAgICAgICAgIHZtLmRy
YWluTWljcm90YXNrcygpOworCisgICAgICAgICAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICAg
ICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5M
b29wV2hlbkFsbFRpY2tldHNGaW5pc2gpIHsKKyNpZiBVU0UoQ0YpCisgICAgICAgIENGUnVuTG9v
cFN0b3Aodm0ucnVuTG9vcCgpKTsKKyNlbHNlCisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5z
dG9wKCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBtX3Rhc2tMb2NrLnVubG9jaygpOworfQorCit2
b2lkIERlZmVycmVkV29ya1RpbWVyOjpydW5SdW5Mb29wKCkKK3sKKyAgICBBU1NFUlQoIW1fYXBp
TG9jay0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisjaWYgVVNFKENG
KQorICAgIEFTU0VSVChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gbV9hcGlMb2NrLT52bSgpLT5y
dW5Mb29wKCkpOworI2VuZGlmCisgICAgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRz
RmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5zaXplKCkpIHsKKyNpZiBV
U0UoQ0YpCisgICAgICAgIENGUnVuTG9vcFJ1bigpOworI2Vsc2UKKyAgICAgICAgUnVuTG9vcDo6
cnVuKCk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmFkZFBl
bmRpbmdXb3JrKFZNJiB2bSwgVGlja2V0IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYm
IGRlcGVuZGVuY2llcykKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQ
SUxvY2soKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQp
OworCisgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4oKSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAg
ICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRp
bmcgbmV3IHBlbmRpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAg
ZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7CisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVy
Ym9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVy
KHRpY2tldCkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3Rvcihk
ZXBlbmRlbmNpZXMpOworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoYXV0byogcHJv
bWlzZSA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlRGVmZXJyZWQqPih2bSwgdGlja2V0KSkKKyAg
ICAgICAgcHJvbWlzZS0+cHJvbWlzZUFzeW5jUGVuZGluZygpOworI2VuZGlmCit9CisKK2Jvb2wg
RGVmZXJyZWRXb3JrVGltZXI6Omhhc1BlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQpCit7CisgICAg
QVNTRVJUKHRpY2tldC0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Cisg
ICAgcmV0dXJuIG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBE
ZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tl
dCwgSlNDZWxsKiBkZXBlbmRlbmN5KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCktPmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VSVChtX3BlbmRpbmdUaWNrZXRz
LmNvbnRhaW5zKHRpY2tldCkpOworCisgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRz
LmdldCh0aWNrZXQpOworICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7Cit9
CisKK2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCB0aWNr
ZXQpCit7CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQ
SUxvY2soKSk7CisgICAgYm9vbCByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLnJlbW92ZSh0aWNr
ZXQpOworCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3Jr
VGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVy
KHRpY2tldCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtU
aW1lcjo6c2NoZWR1bGVXb3JrU29vbihUaWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxl
ZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJl
KDBfcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlMWVhN2I1YjYx
MGM2MTIyNmY0OGRkNzRlNmQ3MzI0MDEwZDI0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSlNSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIK
KworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2VE
ZWZlcnJlZDsKK2NsYXNzIFZNOworY2xhc3MgSlNDZWxsOworCitjbGFzcyBEZWZlcnJlZFdvcmtU
aW1lciA6IHB1YmxpYyBKU1J1bkxvb3BUaW1lciB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9
IEpTUnVuTG9vcFRpbWVyOworCisgICAgRGVmZXJyZWRXb3JrVGltZXIoVk0mKTsKKworICAgIHZv
aWQgZG9Xb3JrKFZNJikgb3ZlcnJpZGU7CisKKyAgICB1c2luZyBUaWNrZXQgPSBKU0NlbGwqOwor
ICAgIHZvaWQgYWRkUGVuZGluZ1dvcmsoVk0mLCBUaWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxs
Pj4mJiBkZXBlbmRlbmNpZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUGVuZGlu
Z1dvcmsoVGlja2V0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0RlcGVuZGFuY3lJ
blBlbmRpbmdXb3JrKFRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKKyAgICAvLyBKU1Byb21p
c2VEZWZlcnJlZCBzaG91bGQgaGFuZGxlIGNhbmNlbGluZyB3aGVuIHRoZSBwcm9taXNlIGlzIHJl
c29sdmVkIG9yIHJlamVjdGVkIGZvciBwcm9taXNlcy4KKyAgICBib29sIGNhbmNlbFBlbmRpbmdX
b3JrKFRpY2tldCk7CisKKyAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB2
b2lkIHNjaGVkdWxlV29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworCisgICAgdm9pZCBzdG9wUnVu
bmluZ1Rhc2tzKCkgeyBtX3J1blRhc2tzID0gZmFsc2U7IH0KKworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcnVuUnVuTG9vcCgpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8VGlja2V0LCBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdUaWNrZXRzOworICAgIExvY2sgbV90YXNr
TG9jazsKKyAgICBib29sIG1fcnVuVGFza3MgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0
b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2ggeyBmYWxzZSB9OworICAgIGJvb2wgbV9jdXJy
ZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07CisgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VGlja2V0
LCBUYXNrPj4gbV90YXNrczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25Hcm91cENv
bnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmVhYzAwZGZhYTViMWZhOWE3NzM2Y2JjNzNkOThj
OWNhMDJmZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3Rvci5oIgorCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U09iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvbkdyb3VwLmgiCisjaW5j
bHVkZSAiRmluYWxpemF0aW9uR3JvdXBQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBGaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoRmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3RvcikgfTsKKwordm9pZCBGaW5hbGl6
YXRpb25Hcm91cENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEZpbmFsaXphdGlv
bkdyb3VwUHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sICJGaW5hbGl6YXRpb25Hcm91cCJfcywgTmFtZVZpc2liaWxpdHk6OlZpc2libGUsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXph
dGlvbkdyb3VwKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0RmluYWxpemF0aW9uR3JvdXAoRXhlY1N0YXRlKik7CisKK0ZpbmFsaXphdGlv
bkdyb3VwQ29uc3RydWN0b3I6OkZpbmFsaXphdGlvbkdyb3VwQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEZpbmFs
aXphdGlvbkdyb3VwLCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25Hcm91cCkKK3sKK30KKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXphdGlvbkdyb3VwKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJGaW5hbGl6YXRpb25Hcm91cCIpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0RmluYWxpemF0aW9uR3JvdXAoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKHZt
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJGaXJzdCBh
cmd1bWVudCB0byBGaW5hbGl6YXRpb25Hcm91cCBzaG91bGQgYmUgYSBmdW5jdGlvbiJfcyk7CisK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEludGVybmFsRnVuY3Rp
b24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBTdHJ1Y3R1cmUq
IGZpbmFsaXphdGlvbkdyb3VwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+Zmlu
YWxpemF0aW9uR3JvdXBTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNGaW5hbGl6YXRpb25Hcm91cDo6Y3JlYXRlKHZtLCBmaW5hbGl6YXRpb25H
cm91cFN0cnVjdHVyZSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpKSk7
Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMwNGU4YzY2
MTIxODRiYjkyZWQ5ZDc5ODcyYmQxZTY3MmUzYzRhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvbkdyb3VwQ29uc3RydWN0b3IuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBGaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZTsKKworY2xh
c3MgRmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKwor
ICAgIHN0YXRpYyBGaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRmluYWxpemF0aW9uR3JvdXBQcm90b3R5cGUqIHByb3RvdHlw
ZSwgR2V0dGVyU2V0dGVyKikKKyAgICB7CisgICAgICAgIEZpbmFsaXphdGlvbkdyb3VwQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0
aW9uR3JvdXBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEZpbmFsaXphdGlvbkdyb3VwQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgcHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRmluYWxpemF0aW9uR3JvdXBDb25z
dHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBG
aW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZSopOworfTsKKworc3RhdGljX2Fzc2VydChzaXplb2Yo
RmluYWxpemF0aW9uR3JvdXBDb25zdHJ1Y3RvcikgPT0gc2l6ZW9mKEludGVybmFsRnVuY3Rpb24p
KTsKKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5h
bGl6YXRpb25Hcm91cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFkODA2MzA5MjBk
YzUyOTNiMTIzOWYxYTE5NDczZjIyMjJkMzQ3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvbkdyb3VwUHJvdG90eXBlLmNwcApAQCAt
MCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uR3JvdXBQcm90
b3R5cGUuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uR3JvdXAuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBGaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZTo6c19pbmZvID0geyAiRmlu
YWxpemF0aW9uR3JvdXAiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEZpbmFsaXphdGlvbkdyb3VwUHJvdG90eXBlKSB9OworCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNGaW5hbGl6YXRpb25Hcm91cFJlZ2lz
dGVyKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
dG9GdW5jRmluYWxpemF0aW9uR3JvdXBVbnJlZ2lzdGVyKEV4ZWNTdGF0ZSopOworCit2b2lkIEZp
bmFsaXphdGlvbkdyb3VwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICAvLyBGSVhNRTogV2UgY2Fu
J3QgbWFrZSB0aGlzIGEgcHJvcGVydHkgbmFtZSBiZWNhdXNlIGl0J3MgYSByZXNldmVyZWQgd29y
ZCBpbiBDKysuLi4KKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFsaXph
dGlvbkdyb3VwUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInVucmVnaXN0ZXIiKSwgcHJvdG9GdW5j
RmluYWxpemF0aW9uR3JvdXBVbnJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2
bSwgIkZpbmFsaXphdGlvbkdyb3VwIiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpT
RmluYWxpemF0aW9uR3JvdXAqIGdldEZpbmFsaXphdGlvbkdyb3VwKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtF
TFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uR3JvdXAgZnVuY3Rpb24gb24gbm9uLW9iamVj
dCJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8qIGdyb3Vw
ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvbkdyb3VwKj4odm0sIGFzT2JqZWN0KHZhbHVl
KSk7CisgICAgaWYgKExJS0VMWShncm91cCkpCisgICAgICAgIHJldHVybiBncm91cDsKKworICAg
IHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uR3Jv
dXAgZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uR3JvdXAgb2JqZWN0Il9zKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1
bmNGaW5hbGl6YXRpb25Hcm91cFJlZ2lzdGVyKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvbkdyb3VwKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0
IGFzIHRoZSB0YXJnZXQiX3MpOworCisgICAgSlNWYWx1ZSB1bnJlZ2lzdGVyVG9rZW4gPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDIpOworICAgIGlmICghdW5yZWdpc3RlclRva2VuLmlzVW5kZWZpbmVk
KCkgfHwgIXVucmVnaXN0ZXJUb2tlbi5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0
IGFzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7CisKKyAgICBncm91cC0+cmVnaXN0ZXJU
YXJnZXQodm0sIHRhcmdldC5nZXRPYmplY3QoKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgdW5y
ZWdpc3RlclRva2VuKTsKKyAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uR3JvdXBVbnJl
Z2lzdGVyKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvbkdyb3VwKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IGlmIChhdXRvKiB0b2tlbiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBncm91cC0+dW5yZWdpc3Rl
cih2bSwgdG9rZW4pOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihy
ZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVucmVnaXN0cmF0
aW9uIHRva2VuIl9zKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uR3JvdXBQcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ZDkzMzk0ZTM1MjQ5MWVmNDRkZjg1ZTY2ODA5MjFhYjI5YjM3MGFhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uR3JvdXBQcm90b3R5
cGUuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvbkdyb3VwUHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05v
bkZpbmFsT2JqZWN0OworCisgICAgc3RhdGljIEZpbmFsaXphdGlvbkdyb3VwUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEZpbmFsaXphdGlvbkdyb3VwUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRpb25Hcm91cFByb3Rv
dHlwZT4odm0uaGVhcCkpIEZpbmFsaXphdGlvbkdyb3VwUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBGaW5hbGl6YXRpb25Hcm91cFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7IH0KKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRl
eCA0NWI3ZWM4YzJiNThiNGZjNmNjYzU5Y2E2NjgwOTc1N2JjNDk3OTIzLi5lNjYyNDRhYzA5ZWM1
ODc3YWExYzZmNWQ5OWUxNTA0MjhhNmMyNmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5l
IElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9tU3RyaW5n
JiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21TdHJpbmdUYWJs
ZShleGVjKTsKICAgICBpZiAoIXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmluZy5pbXBsKCktPmlzU3ltYm9sKCkgfHwg
QXRvbVN0cmluZ0ltcGw6OmlzSW5BdG9tU3RyaW5nVGFibGUoc3RyaW5nLmltcGwoKSksICJUaGUg
YXRvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0aCgpIHx8IHN0cmluZy5pbXBsKCktPmlzU3lt
Ym9sKCkgfHwgQXRvbVN0cmluZ0ltcGw6OmlzSW5BdG9tU3RyaW5nVGFibGUoc3RyaW5nLmltcGwo
KSksICJUaGUgYXQmb21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25Hcm91cC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvbkdyb3VwLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZGRmMjRkYjIyNTY5YjE1MjEzMGZkYTZjZTU1YjU1MGFkYjM4YTYyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25Hcm91cC5j
cHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9u
R3JvdXAuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdv
cmtUaW1lci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTRmluYWxp
emF0aW9uR3JvdXA6OnNfaW5mbyA9IHsgIldlYWtSZWYiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmluYWxpemF0aW9uR3JvdXApIH07CisK
K3ZvaWQgSlNGaW5hbGl6YXRpb25Hcm91cDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVj
dCogY2FsbGJhY2spCit7CisgICAgQVNTRVJUKGNhbGxiYWNrLT5pc0Z1bmN0aW9uKHZtKSk7Cisg
ICAgbV9jYWxsYmFjay5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25Hcm91cDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisKKyAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTRmluYWxpemF0aW9uR3JvdXAqPihjZWxsKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2NhbGxiYWNrKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
dGhpc09iamVjdC0+Y2VsbExvY2soKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyIDogdGhp
c09iamVjdC0+bV9yZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0
aW9uIDogaXRlci52YWx1ZSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlv
bi5ob2xkaW5ncyk7CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9uR3JvdXA6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKworICAgIC8vIFRPRE86IERvIHdlIG5lZWQg
dG8gaG9sZCB0aGUgbG9jayBoZXJlPyBEb2VzIHRoZSBtdXRhdG9yIHJ1biB3aGlsZSB3ZSBhcmUg
ZmluYWxpemluZz8KKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworCisg
ICAgYm9vbCBuZWVkc1NjaGVkdWxpbmcgPSBmYWxzZTsKKyAgICBhdXRvIGNsZWFyVGFyZ2V0c0lm
Tm90TWFya2VkID0gWyZdIChSZWdpc3RyYXRpb25zJiByZWdpc3RyYXRpb25zKSB7CisgICAgICAg
IGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogcmVnaXN0cmF0aW9ucykgeworICAgICAgICAgICAg
aWYgKHZtLmhlYXAuaXNNYXJrZWQocmVnaXN0cmF0aW9uLnRhcmdldC5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBuZWVkc1NjaGVkdWxpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlZ2lz
dHJhdGlvbi50YXJnZXQuY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07
CisKKyAgICBjb25zdCBhdXRvJiBub1JlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5hZGQo
bm9VbnJlZ2lzdHJhdGlvbktleSgpLCBSZWdpc3RyYXRpb25zKCkpLml0ZXJhdG9yOworICAgIGNs
ZWFyVGFyZ2V0c0lmTm90TWFya2VkKG5vUmVnaXN0cmF0aW9uLT52YWx1ZSk7CisKKyAgICAvLyBU
aGlzIGlzIG9rIGJlY2F1c2UgSGFzaE1hcCBvbmx5IHJlc2l6ZXMgYXQgdGhlIGFmdGVyIHJlbW92
aW5nIGV2ZXJ5dGhpbmcuCisgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZUlmKFsmXSAoYXV0byYg
YnVja2V0KSAtPiBib29sIHsKKyAgICAgICAgaWYgKGJ1Y2tldC5rZXkgIT0gbm9VbnJlZ2lzdHJh
dGlvbktleSgpKQorICAgICAgICAgICAgY2xlYXJUYXJnZXRzSWZOb3RNYXJrZWQoYnVja2V0LnZh
bHVlKTsKKworICAgICAgICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShidWNrZXQua2V5
KTsKKyAgICAgICAgYm9vbCBrZXlJc0RlYWQgPSBrZXkuaXNDZWxsKCkgJiYgIXZtLmhlYXAuaXNN
YXJrZWQoa2V5LmFzQ2VsbCgpKTsKKyAgICAgICAgaWYgKGtleUlzRGVhZCkKKyAgICAgICAgICAg
IG5vUmVnaXN0cmF0aW9uLT52YWx1ZS5hcHBlbmRWZWN0b3IoV1RGTW92ZShidWNrZXQudmFsdWUp
KTsKKworICAgICAgICByZXR1cm4ga2V5SXNEZWFkOworICAgIH0pOworCisgICAgaWYgKG5lZWRz
U2NoZWR1bGluZykgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dv
cmsodm0sIHRoaXMsIHsgU3Ryb25nKHZtLCB0aGlzKSB9KTsKKyAgICAgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24odGhpcywgW3RoaXNdICgpIHsKKworICAgICAgICAg
ICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZUlmKFsmXSAoYXV0byYgYnVja2V0KSAtPiBib29sIHsK
KworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBKU0ZpbmFs
aXphdGlvbkdyb3VwOjpyZWdpc3RlclRhcmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpT
VmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9rZW4pCit7CisgICAgQVNTRVJUKHRva2VuLmlzT2Jq
ZWN0KCkgfHwgdG9rZW4uaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKGVuY29kZWRKU1VuZGVm
aW5lZCgpID09IG5vVW5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVn
aXN0cmF0aW9ucy5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHRva2VuKSwgUmVnaXN0cmF0aW9ucygpKTsK
KyAgICAgICAgRGF0YSByZWdpc3RyYXRpb247CisgICAgICAgIHJlZ2lzdHJhdGlvbi50YXJnZXQu
c2V0V2l0aG91dFdyaXRlQmFycmllcih0YXJnZXQpOworICAgICAgICByZWdpc3RyYXRpb24uaG9s
ZGluZ3Muc2V0V2l0aG91dFdyaXRlQmFycmllcihob2xkaW5ncyk7CisgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgfQorICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMpOworfQorCitib29sIEpTRmluYWxpemF0aW9uR3Jv
dXA6OnVucmVnaXN0ZXIoVk0mLCBKU09iamVjdCogdG9rZW4pCit7CisgICAgLy8gV2UgZG9uJ3Qg
bmVlZCB0byB3cml0ZSBiYXJyaWVyIG91cnNlbHZlcyBoZXJlIGJlY2F1c2Ugbm90aGluZyBuZXcg
bmVlZHMgdG8gYmUgc2Nhbm5lZC4KKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2Nr
KCkpOworICAgIHJldHVybiBtX3JlZ2lzdHJhdGlvbnMucmVtb3ZlKEpTVmFsdWU6OmVuY29kZSh0
b2tlbikpOworfQorCitTdHJpbmcgSlNGaW5hbGl6YXRpb25Hcm91cDo6dG9TdHJpbmdOYW1lKGNv
bnN0IEpTQzo6SlNPYmplY3QqLCBFeGVjU3RhdGUqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9z
OworfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25Hcm91cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25Hcm91cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4NjM1YzQyMGRkN2EwMzdlYWE3N2FmZWIw
ZTkwYmMxMmRhZGY5OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0ZpbmFsaXphdGlvbkdyb3VwLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0ZpbmFsaXph
dGlvbkdyb3VwIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3Rh
dGljIEpTRmluYWxpemF0aW9uR3JvdXAqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU09iamVjdCogY2FsbGJhY2spCisgICAgeworICAgICAgICBKU0ZpbmFsaXphdGlvbkdy
b3VwKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRmluYWxpemF0aW9u
R3JvdXA+KHZtLmhlYXApKSBKU0ZpbmFsaXphdGlvbkdyb3VwKHZtLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxiYWNrKTsKKyAgICAgICAgcmV0
dXJuIGluc3RhbmNlOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmZpbmFsaXphdGlvbkdyb3VwU3BhY2U8
bW9kZT4oKTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
CisgICAgYm9vbCB1bnJlZ2lzdGVyKFZNJiwgSlNPYmplY3QqIHRva2VuKTsKKyAgICAvLyB0b2tl
biBzaG91bGQgYmUgYSBKU09iamVjdCBvciB1bmRlZmluZWQuCisgICAgdm9pZCByZWdpc3RlclRh
cmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUg
dG9rZW4pOworCitwcml2YXRlOgorICAgIEpTRmluYWxpemF0aW9uR3JvdXAoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U09iamVjdCogY2FsbGJhY2spOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29u
c3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKKworICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9jYWxsYmFjazsKKworICAgIHN0cnVjdCBEYXRhIHsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpT
T2JqZWN0PiB0YXJnZXQ7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBob2xkaW5nczsK
KyAgICB9OworICAgIHVzaW5nIFJlZ2lzdHJhdGlvbnMgPSBWZWN0b3I8RGF0YSwgMT47CisKKyAg
ICAvLyB1c2VycyBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IGFzIHRoZSB1bnJlZ2lzdHJhdGlvbiBr
ZXkgc28gd2UgY2FuIHVzZSB1bmRlZmluZWQgZm9yIG9uZXMgdGhhdCBkb24ndCBoYXZlIGEga2V5
IG9yIHdob3NlIGtleSBoYXMgYmVlbiBjb2xsZWN0ZWQuCisgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIG5vVW5yZWdpc3RyYXRpb25LZXkoKSB7IHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsg
fTsKKworICAgIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIFZlY3RvcjxEYXRhLCAxPj4gbV9yZWdp
c3RyYXRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDFhNTdlZjNkY2Zl
OTE5ZTcwYjM3ZmE3ZTM0ODU0YTEzZTkwNTNmYWUuLjBmYjE1OWVlYmZlOTA0MGM4NDg3ODA1NDVm
MjdlNmRlNTI0NjQzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAKICNpbmNsdWRlICJFcnJvckNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFeGNlcHRp
b24uaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25Hcm91cENvbnN0cnVjdG9yLmgiCisjaW5jbHVk
ZSAiRmluYWxpemF0aW9uR3JvdXBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNlNzFiMWE4MDZiZDlmYzdkNTY2
NDNhNWY5ODhmMTFlLi43MDc5ODEwMTA5MDBjMWU5NTg3MWY5MzdhOTkxNzM1YTM1MGVmYWU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAg
LTEzNiw2ICsxMzYsOCBAQCBjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9IHRy
dWU7CiAgICAgbWFjcm8oSlNQcm9taXNlLCBwcm9taXNlLCBwcm9taXNlLCBKU1Byb21pc2UsIFBy
b21pc2UsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhCaWdJbnQs
IGJpZ0ludCwgYmlnSW50T2JqZWN0LCBCaWdJbnRPYmplY3QsIEJpZ0ludCwgb2JqZWN0LCBPcHRp
b25zOjp1c2VCaWdJbnQoKSkgXAogICAgIG1hY3JvKFdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RS
ZWYsIHdlYWtPYmplY3RSZWYsIEpTV2Vha09iamVjdFJlZiwgV2Vha1JlZiwgb2JqZWN0LCBPcHRp
b25zOjp1c2VXZWFrUmVmcygpKSBcCisgICAgbWFjcm8oRmluYWxpemF0aW9uR3JvdXAsIGZpbmFs
aXphdGlvbkdyb3VwLCBmaW5hbGl6YXRpb25Hcm91cCwgSlNGaW5hbGl6YXRpb25Hcm91cCwgRmlu
YWxpemF0aW9uR3JvdXAsIG9iamVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXAorCiAKICNk
ZWZpbmUgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUobWFjcm8pIFwKICAg
ICBtYWNybyhTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0ZXJhdG9yLCBK
U1N0cmluZ0l0ZXJhdG9yLCBTdHJpbmdJdGVyYXRvciwgaXRlcmF0b3IsIHR5cGVFeHBvc2VkQnlE
ZWZhdWx0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VEZWZlcnJlZC5jcHAKaW5kZXggZDRjYWQwYjBmNTllNWZlOWZmYThiMTcyOTkxODc3NGViZWYx
MGRkZi4uYjMxNzhiMzkwZjVmMmEwZmI5YzM0OGY4YTA2NWUzOTY2YzEyN2E1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCi0jaW5jbHVk
ZSAiUHJvbWlzZURlZmVycmVkVGltZXIuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTA5LDE0ICsxMDksMTQgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGNhbGxGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb24sIEpT
VmFsdWUgdmFsdWUKIHZvaWQgSlNQcm9taXNlRGVmZXJyZWQ6OnJlc29sdmUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGNhbGxGdW5jdGlvbihleGVjLCBtX3Jlc29sdmUu
Z2V0KCksIHZhbHVlKTsKLSAgICBib29sIHdhc1BlbmRpbmcgPSBleGVjLT52bSgpLnByb21pc2VE
ZWZlcnJlZFRpbWVyLT5jYW5jZWxQZW5kaW5nUHJvbWlzZSh0aGlzKTsKKyAgICBib29sIHdhc1Bl
bmRpbmcgPSBleGVjLT52bSgpLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0
aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHdhc1BlbmRpbmcsIHdhc1BlbmRpbmcgPT0gbV9wcm9t
aXNlSXNBc3luY1BlbmRpbmcpOwogfQogCiB2b2lkIEpTUHJvbWlzZURlZmVycmVkOjpyZWplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJlYXNvbikKIHsKICAgICBjYWxsRnVuY3Rpb24oZXhl
YywgbV9yZWplY3QuZ2V0KCksIHJlYXNvbik7Ci0gICAgYm9vbCB3YXNQZW5kaW5nID0gZXhlYy0+
dm0oKS5wcm9taXNlRGVmZXJyZWRUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhpcyk7Cisg
ICAgYm9vbCB3YXNQZW5kaW5nID0gZXhlYy0+dm0oKS5kZWZlcnJlZFdvcmtUaW1lci0+Y2FuY2Vs
UGVuZGluZ1dvcmsodGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRCh3YXNQZW5kaW5nLCB3YXNQZW5k
aW5nID09IG1fcHJvbWlzZUlzQXN5bmNQZW5kaW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjNkMzFiYWYwZmRiYjg0YTQ3Yjc0MTcxZGU0ZTkwZjVm
MTY1MDVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJv
bWlzZURlZmVycmVkVGltZXIuaCIKLQotI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCi0j
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSA8d3Rm
L0xvY2tlci5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1uYW1lc3BhY2UgUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Ci19Ci0KLVByb21pc2VEZWZlcnJlZFRpbWVyOjpQcm9taXNl
RGVmZXJyZWRUaW1lcihWTSYgdm0pCi0gICAgOiBCYXNlKCZ2bSkKLXsKLX0KLQotdm9pZCBQcm9t
aXNlRGVmZXJyZWRUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkKLXsKLSAgICBBU1NFUlQodm0uY3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgbV90YXNrTG9jay5sb2NrKCk7Ci0gICAg
Y2FuY2VsVGltZXIoKTsKLSAgICBpZiAoIW1fcnVuVGFza3MpIHsKLSAgICAgICAgbV90YXNrTG9j
ay51bmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHdoaWxlICghbV90YXNr
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFr
ZUxhc3QoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5h
bDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24gcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQp
KTsKLQotICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHByb21p
c2VzLgotICAgICAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlja2V0KSkgewot
ICAgICAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgot
ICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRydWU7Ci0gICAgICAgICAgICBt
X3Rhc2tMb2NrLnVubG9jaygpOyAKLQotICAgICAgICAgICAgdGFzaygpOwotICAgICAgICAgICAg
dm0uZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICAgICAgICAgIG1fdGFza0xvY2subG9jaygpOwot
ICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IGZhbHNlOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0
b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBD
RlJ1bkxvb3BTdG9wKHZtLnJ1bkxvb3AoKSk7Ci0jZWxzZQotICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgbV90YXNrTG9jay51bmxvY2soKTsK
LX0KLQotdm9pZCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6cnVuUnVuTG9vcCgpCi17Ci0gICAgQVNT
RVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwot
I2lmIFVTRShDRikKLSAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IG1fYXBpTG9j
ay0+dm0oKS0+cnVuTG9vcCgpKTsKLSNlbmRpZgotICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVu
QWxsUHJvbWlzZXNGaW5pc2ggPSB0cnVlOwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXpl
KCkpIHsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9vcFJ1bigpOwotI2Vsc2UKLSAgICAg
ICAgUnVuTG9vcDo6cnVuKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KLXZvaWQgUHJvbWlzZURlZmVy
cmVkVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKFZNJiB2bSwgSlNQcm9taXNlRGVmZXJyZWQqIHRp
Y2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykKLXsKLSAgICBBU1NF
UlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKLSAgICAgICAgQVNTRVJUKGRl
cGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX3Bl
bmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwotICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVm
ZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6
ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0gICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ry
b25nPEpTQ2VsbD4odm0sIHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gV1RGTW92ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGFMb2dM
bklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IGRl
cGVuZGVuY2llcyBmb3IgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLSAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsKLSAgICB9
Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdGlja2V0LT5wcm9taXNlQXN5bmNQZW5kaW5nKCk7Ci0j
ZW5kaWYKLX0KLQotYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6aGFzUGVuZGluZ1Byb21pc2Uo
SlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLT5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICByZXR1cm4gbV9wZW5kaW5nUHJv
bWlzZXMuY29udGFpbnModGlja2V0KTsKLX0KLQotYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6
aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldCwg
SlNDZWxsKiBkZXBlbmRlbmN5KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCktPmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdQcm9taXNlcy5j
b250YWlucyh0aWNrZXQpKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMu
Z2V0KHRpY2tldCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKLX0K
LQotYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9t
aXNlRGVmZXJyZWQqIHRpY2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLT5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1By
b21pc2VzLnJlbW92ZSh0aWNrZXQpOwotCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxv
Z0xuSWYoUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyBw
cm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6c2NoZWR1bGVXb3JrU29vbihKU1Byb21pc2VE
ZWZlcnJlZCogdGlja2V0LCBUYXNrJiYgdGFzaykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3Rhc2tMb2NrKTsKLSAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBX
VEZNb3ZlKHRhc2spKSk7Ci0gICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1
bm5pbmdUYXNrKQotICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21p
c2VEZWZlcnJlZFRpbWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MmViNjRi
M2E3MDc5Y2ExOWJlZmIzOGJmY2IxYWYzZDA2MDM1OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCi0KLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNQcm9taXNlRGVmZXJyZWQ7
Ci1jbGFzcyBWTTsKLWNsYXNzIEpTQ2VsbDsKLQotY2xhc3MgUHJvbWlzZURlZmVycmVkVGltZXIg
OiBwdWJsaWMgSlNSdW5Mb29wVGltZXIgewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU1J1
bkxvb3BUaW1lcjsKLQotICAgIFByb21pc2VEZWZlcnJlZFRpbWVyKFZNJik7Ci0KLSAgICB2b2lk
IGRvV29yayhWTSYpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBhZGRQZW5kaW5nUHJvbWlzZShWTSYs
IEpTUHJvbWlzZURlZmVycmVkKiwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2ll
cyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQZW5kaW5nUHJvbWlzZShKU1Byb21p
c2VEZWZlcnJlZCogdGlja2V0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZURlZmVycmVkKiB0aWNrZXQsIEpTQ2VsbCog
ZGVwZW5kZW5jeSk7Ci0gICAgLy8gSlNQcm9taXNlRGVmZXJyZWQgc2hvdWxkIGhhbmRsZSBjYW5j
ZWxpbmcgd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBvciByZWplY3RlZC4KLSAgICBib29s
IGNhbmNlbFBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZURlZmVycmVkKik7Ci0KLSAgICB1c2luZyBU
YXNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAgICB2b2lkIHNjaGVkdWxlV29ya1Nvb24oSlNQcm9t
aXNlRGVmZXJyZWQqLCBUYXNrJiYpOwotCi0gICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tzKCkgeyBt
X3J1blRhc2tzID0gZmFsc2U7IH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuUnVu
TG9vcCgpOwotCi1wcml2YXRlOgotICAgIEhhc2hNYXA8SlNQcm9taXNlRGVmZXJyZWQqLCBWZWN0
b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdQcm9taXNlczsKLSAgICBMb2NrIG1fdGFza0xv
Y2s7Ci0gICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9zaG91bGRTdG9w
UnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2N1cnJl
bnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8c3RkOjp0dXBsZTxKU1Byb21p
c2VEZWZlcnJlZCosIFRhc2s+PiBtX3Rhc2tzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMjVlZjk0NWNiZTVhNzQ0NWMyY2E3
Y2UwNjI2YzJmOTg4NGE3YzIxMC4uMGZjZTAyZmIwZjliNTczNjg3ZGFhNTgzM2Q0MzM0YjM3NTc5
ZDQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODEsNiArODEsNyBA
QAogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uR3JvdXAuaCIKICNpbmNsdWRlICJK
U0ZpeGVkQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaCIKQEAgLTEyMCw3ICsxMjEsNyBAQAogI2luY2x1ZGUgIlByb2Zp
bGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
UHJvZ3JhbUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQcm9taXNlRGVmZXJyZWRUaW1lci5oIgor
I2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNo
VGFibGUuaCIKICNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5n
RnV6emVyQWdlbnQuaCIKQEAgLTI5Miw3ICsyOTMsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0b3BFbnRyeUZy
YW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQot
ICAgICwgcHJvbWlzZURlZmVycmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9taXNlRGVmZXJy
ZWRUaW1lcj4oKnRoaXMpKQorICAgICwgZGVmZXJyZWRXb3JrVGltZXIoc3RkOjptYWtlX3VuaXF1
ZTxEZWZlcnJlZFdvcmtUaW1lcj4oKnRoaXMpKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1U
eXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5l
dyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBl
bXB0eUxpc3QobmV3IEFyZ0xpc3QpCkBAIC00ODQsNyArNDg1LDcgQEAgVk06On5WTSgpCiAgICAg
YXV0byBkZXN0cnVjdGlvbkxvY2tlciA9IGhvbGRMb2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQo
KSk7CiAgICAgCiAgICAgR2lnYWNhZ2U6OnJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhw
cmltaXRpdmVHaWdhY2FnZURpc2FibGVkQ2FsbGJhY2ssIHRoaXMpOwotICAgIHByb21pc2VEZWZl
cnJlZFRpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CisgICAgZGVmZXJyZWRXb3JrVGltZXItPnN0
b3BSdW5uaW5nVGFza3MoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKFdhc206
OldvcmtsaXN0KiB3b3JrbGlzdCA9IFdhc206OmV4aXN0aW5nV29ya2xpc3RPck51bGwoKSkKICAg
ICAgICAgd29ya2xpc3QtPnN0b3BBbGxQbGFuc0ZvckNvbnRleHQod2FzbUNvbnRleHQpOwpAQCAt
MTI1MSw2ICsxMjUyLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCBkZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKQogRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1dlYWtNYXApCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2Vha1NldCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhmaW5hbGl6YXRpb25Hcm91cFNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTRmluYWxpemF0aW9uR3JvdXApCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1dlYWtPYmplY3RSZWYpCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBkZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE9iakNDYWxsYmFja0Z1bmN0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggODI0NjJlMWRmZmExNWM4NjhlYThhN2Q3
ZjYyOTQ3MDFiMDhiMWI3YS4uNWI0ZTQ4ZjIyMjYxMGM0OGRiZWYyYTgyNThhMmE5ZjU1MmJlYzlh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMjksNyArMTI5LDcgQEAgY2xh
c3MgSlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZTsKIGNsYXNzIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGU7Ci1jbGFzcyBQcm9taXNlRGVmZXJyZWRUaW1lcjsKK2NsYXNzIERlZmVycmVkV29y
a1RpbWVyOwogY2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhwQ2FjaGU7CiBjbGFzcyBSZWdpc3Rl
cjsKQEAgLTQwMyw2ICs0MDMsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihlcnJvckluc3RhbmNlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihuYXRpdmVTdGRGdW5jdGlvblNwYWNlKQogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlSZXZva2VTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFsaXphdGlvbkdyb3VwU3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrU2V0U3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrTWFwU3BhY2UpCkBAIC01NTAsNyAr
NTUxLDcgQEAgcHVibGljOgogICAgIFN0cm9uZzxKU0NlbGw+IG1fc2VudGluZWxTZXRCdWNrZXQ7
CiAgICAgU3Ryb25nPEpTQ2VsbD4gbV9zZW50aW5lbE1hcEJ1Y2tldDsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1lcj4gcHJvbWlzZURlZmVycmVkVGltZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPERlZmVycmVkV29ya1RpbWVyPiBkZWZlcnJlZFdvcmtUaW1lcjsKICAg
ICAKICAgICBKU0NlbGwqIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3Q7CiAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJ
bmZvIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmNwcAppbmRleCBlZTgzNDdlNTAwZDI5MTk4MGI0ZGUxN2E2MGMwYWMwMTdmNmM3
ZjI4Li43NTc1Nzc2MjQ5ZmZmZDY2OGIyY2RhMjE1OGQ1OTQ2YjlhM2RiNmVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRlICJPYmpl
Y3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJQcm9taXNl
RGVmZXJyZWRUaW1lci5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVk
ZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJX
YXNtQkJRUGxhbi5oIgpAQCAtMTQwLDEwICsxNDAsMTAgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1i
bHlNb2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VE
ZWYKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRl
bmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKIAotICAgIHZt
LnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RG
TW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGlu
Z1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpN
b2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNy
ZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBnbG9i
YWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNj
aGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0g
V1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgICAgICBKU1ZhbHVlIG1vZHVs
ZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0sIGV4ZWMsIGdsb2JhbE9iamVj
dC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKQEAgLTIy
MiwxMSArMjIyLDExIEBAIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXCiAgICAgLy8gVGhlIGluc3Rh
bmNlIGtlZXBzIHRoZSBtb2R1bGUgYWxpdmUuCiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJv
bmc8SlNDZWxsPih2bSwgaW5zdGFuY2UpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9u
ZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1l
ci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7
CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBX
VEZNb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIC8vIE5vdGU6IFRoaXMgY29tcGxldGlvbiB0YXNr
IG1heSBvciBtYXkgbm90IGdldCBjYWxsZWQgaW1tZWRpYXRlbHkuCiAgICAgbW9kdWxlLT5tb2R1
bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgp
LCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJvbWlz
ZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25N
b2RlLCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7
CiAgICAgICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jayA9IFdURk1vdmUocmVm
Q29kZUJsb2NrKTsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29y
a1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwg
cmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3ZlKGNvZGVC
bG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1
bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2Jq
ZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUo
Y29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBp
bnN0YW5jZS0+Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsRXhlYygpOwogICAgICAgICAgICAgcmVz
b2x2ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBj
b2RlQmxvY2sucmVsZWFzZU5vbk51bGwoKSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSk7CiAg
ICAgICAgIH0pOwpAQCAtMjQzLDEzICsyNDMsMTMgQEAgc3RhdGljIHZvaWQgY29tcGlsZUFuZElu
c3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHIK
ICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNp
ZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICBkZXBlbmRl
bmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBtb2R1bGVLZXlDZWxsKSk7Ci0gICAgdm0u
cHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZN
b3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5n
V29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGV4ZWMsIGJ1
ZmZlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGV4ZWMsIHNjb3Bl
LCBwcm9taXNlKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21D
b250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpD
YWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2Jh
bE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoV2FzbTo6TW9kdWxlOjpW
YWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZURl
ZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9i
amVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3Vs
dCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNl
LCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RG
TW92ZShyZXN1bHQpLCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dICgpIG11dGFibGUg
ewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAg
ICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9k
dWxlOjpjcmVhdGVTdHViKHZtLCBleGVjLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxl
U3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CkBAIC0yODAsMTAgKzI4MCwxMCBAQCBzdGF0
aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBKU1Byb21pcwogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5j
aWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9i
amVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2Jh
bE9iamVjdCkpOwotICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlz
ZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdv
cmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVz
KSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBX
VEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5
cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9k
dWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJv
bWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGlt
cG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgRXhlY1N0YXRlKiBl
eGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBl
eGVjLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUo
cmVzdWx0KSk7CkBAIC0zNTcsNyArMzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMKIAog
ICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21p
c2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmso
dm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKQogICAgICAg
ICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1p
bmcoZ2xvYmFsT2JqZWN0LCBleGVjLCBwcm9taXNlLCBleGVjLT5hcmd1bWVudCgwKSk7CkBAIC0z
OTMsNyArMzkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUlu
c3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwoRXhlY1N0YXRlKgogICAgICAgICAgICAgICAgIFZl
Y3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgICAgICAgICAgICAgIGRlcGVu
ZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogICAgICAg
ICAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9i
amVjdCkpOwotICAgICAgICAgICAgICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5k
aW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICAgICAg
ICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2Us
IFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0
dHA6Ly93ZWJraXQub3JnL2IvMTg0ODg4PiBpZiB0aGVyZSdzIGFuIGltcG9ydE9iamVjdCBhbmQg
aXQgY29udGFpbnMgYSBNZW1vcnksIHRoZW4gd2UgY2FuIGNvbXBpbGUgdGhlIG1vZHVsZSB3aXRo
IHRoZSByaWdodCBtZW1vcnkgdHlwZSAoZmFzdCBvciBub3QpIGJ5IGxvb2tpbmcgYXQgdGhlIG1l
bW9yeSdzIHR5cGUuCiAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIGV4ZWMsIHBy
b21pc2UsIGV4ZWMtPmFyZ3VtZW50KDApLCBpbXBvcnRPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCmluZGV4
IDk5NTA2NTY0ZTg4MjMwZmYzYmRkMWY2ZGMwZmIxNGQ4MzhlNjAyMDkuLjVlY2UwZDkxZWJkZDNm
MzUyZmE0NjhmZjc5YWVkOGY5Y2EwYWExYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKQEAgLTI5LDcgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2lu
Y2x1ZGUgIlByb21pc2VEZWZlcnJlZFRpbWVyLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGlt
ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCiAj
aW5jbHVkZSAiV2FzbUZvcm1hdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCBlNGUxYjYyODg1NDExNTdhMjRiZGIz
YjA2Yjg4YWI1NjVjOTRlNDEyLi43MTk4NjAzYmY5MmVhMTFlZjNmMTY5ZTAyNjE0Nzk1MmJhZGUy
NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9WZWN0b3IuaApAQCAtNzQ2LDcgKzc0NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJlbW92
ZUxhc3QoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyAgICBUIHRh
a2UodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChhdChpKSwgbGFzdCgpKTsK
KyAgICAgICAgcmV0dXJuIHRha2VMYXN0KCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gYm9vbCBjb250YWlucyhjb25zdCBVJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gc2l6ZV90IGZpbmQoY29uc3QgVSYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE1hdGNoRnVuY3Rpb24+IHNpemVfdCBmaW5kTWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlvbiYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKaW5kZXggZGIwYzFkYzc2ZjhhMjg5NzA0NWVlMmNmYzkxOTIzZDU4ZGYxYjZmOS4uMDJkZDk1
ZDE4MTEwZmY5ODRlMjYzZjdjZDc0Y2E5MGFlZGUwZGJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBACiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTV2ViQXNzZW1ibHkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9NaWNyb3Rhc2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlRGVmZXJy
ZWRUaW1lci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC00NDAsOCArNDQw
LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkUKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAKLSAgICBBU1NFUlQodm0ucHJvbWlzZURlZmVycmVkVGltZXItPmhhc1BlbmRpbmdQcm9taXNl
KHByb21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZURlZmVycmVkVGltZXItPmhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOworICAgIEFTU0VS
VCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsocHJvbWlzZSkpOworICAgIEFT
U0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsocHJv
bWlzZSwgZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpZiAoYXV0byBpbnB1dFJlc3BvbnNlID0gSlNG
ZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJjZSkpIHsKICAgICAgICAgaGFuZGxlUmVz
cG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmplY3QsIGV4ZWMsIGlucHV0UmVzcG9uc2Us
IHByb21pc2UsIFtwcm9taXNlXSAoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CkBAIC00NTgsOSArNDU4LDkgQEAgdm9pZCBK
U0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFtaW5nKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlMKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKLSAgICBBU1NF
UlQodm0ucHJvbWlzZURlZmVycmVkVGltZXItPmhhc1BlbmRpbmdQcm9taXNlKHByb21pc2UpKTsK
LSAgICBBU1NFUlQodm0ucHJvbWlzZURlZmVycmVkVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRp
bmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOwotICAgIEFTU0VSVCh2bS5wcm9taXNl
RGVmZXJyZWRUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgaW1w
b3J0ZWRPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRp
bmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0Rl
cGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOworICAgIEFTU0VS
VCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsocHJvbWlz
ZSwgaW1wb3J0ZWRPYmplY3QpKTsKIAogICAgIGlmIChhdXRvIGlucHV0UmVzcG9uc2UgPSBKU0Zl
dGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2bSwgc291cmNlKSkgewogICAgICAgICBoYW5kbGVSZXNw
b25zZU9uU3RyZWFtaW5nQWN0aW9uKGdsb2JhbE9iamVjdCwgZXhlYywgaW5wdXRSZXNwb25zZSwg
cHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydGVkT2JqZWN0XSAoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDZmNzVkMTYxNTliNzBlNjUyODE4MjIzMWJhNTVkNDIyNTZjYmJhYjEuLmExNWQzZTE1MDkx
MWYxYWE4M2EyNzNmZWY5OGY3ODBlNGY1MDhjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00Miw3ICs0Miw3
IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VEZWZlcnJlZFRp
bWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmFk
ZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTgogCiAgICAg
cHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7CiAgICAgcHJv
Y2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vz
c1RpbWVyKG1fdm0tPnByb21pc2VEZWZlcnJlZFRpbWVyLmdldCgpKTsKKyAgICBwcm9jZXNzVGlt
ZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIuZ2V0KCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGlt
ZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCkBAIC0yNjMsNyArMjYzLDcg
QEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlv
bihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW0KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFw
LmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVk
ZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlRGVm
ZXJyZWRUaW1lci5nZXQoKSk7CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1Rp
bWVyLmdldCgpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1
Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwCmluZGV4IGJjZDk0ZTZhYzA0MDNhY2Q2YTU0YmFjNDFmYWI0MWU1YmY1NTI3
ZGEuLmEwOWE2ZWQzOWQ5Nzk4YzAzMGIyN2E1YjNhNDI1MzBiMmYzYjcwZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGlt
ZXIuaD4KIAogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPGdsaWIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAxY2Vl
OWViMzQyMWNkOTlhNTZjODg2MGI4ZWNkZDQ1OTZmODBkMmRlLi45ZDE2YTZhY2ZkYTIxYzk2YTBl
MzgxOTk1M2RiYjA4NTMzOTY0MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
TG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VEZWZlcnJlZFRpbWVyLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404585</attachid>
            <date>2020-07-17 13:37:48 -0700</date>
            <delta_ts>2020-07-17 13:44:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717133747.patch</filename>
            <type>text/plain</type>
            <size>229069</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjM1NmM3MTJkMDExNGY3ZjUwZWM0YzRkYTA2YmI0MzhjMjkzYTI4Li5lMDFjM2JmZTg4NDAxMTQ2
OTJhOTYwMGQ1NGY2ZjI1Y2NhZWNhNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvbkdyb3VwcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNBUElH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgIChmdW5jdGlvblNldFRpbWVvdXQpOgorICAgICAgICAoZnVuY3Rpb25GaW5h
bGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCk6CisgICAgICAgIChmdW5jdGlvbkZpbmFsaXphdGlv
blJlZ2lzdHJ5RGVhZENvdW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY2hlY2tVbmNh
dWdodEV4Y2VwdGlvbik6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChHbG9i
YWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3ApOgorICAgICAgICAo
cnVuSlNDKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAuCisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1Rp
bWVyOjpEZWZlcnJlZFdvcmtUaW1lcik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
Ojpkb1dvcmspOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCk6
CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayk6CisgICAg
ICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayk6CisgICAgICAgIChK
U0M6OkRlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAg
ICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKToKKyAgICAgICAgKiBy
dW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAqIHJ1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBy
dW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OmdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6cHJv
dG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OnByb3Rv
RnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlND
OjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpydW5GaW5hbGl6YXRpb25DbGVhbnVwKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgor
ICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KToKKyAgICAgICAgKEpT
Qzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVhZENvdW50KToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pT
RmluYWxpemF0aW9uUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdo
dEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdGFja092ZXJmbG93RnJhbWVDYWxs
ZWUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBTZXRXYXRjaHBvaW50U2V0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldEFkZFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUpvaW5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCYXNl
Pjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdElt
cGw8cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpk
ZWFsbG9jYXRlSUQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlNb2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjppbnN0
YW50aWF0ZSk6CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAg
IChKU0M6OndlYkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAg
KEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMC0wNy0xMyAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBTb3Vy
Y2VQcm92aWRlciBhbmQgYWRkIGNhbGxlciByZWxhdGl2ZSBsb2FkIHNjcmlwdCB0byBqc2MuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYzFmMDE5MGFhMzNhNjRjYmU3NTZmMzk3MGZlOWY1YjBlODJmMTQxYS4u
NmUwZTQ1NWU5NWE5NzUxMmQyMzFiNjRlYmZjZTcyOTM5OGU0NjM0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25Hcm91cHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRo
aW5ncyBmb3IgY2hhbmdpbmcgUHJvbWlzZURlZmVycmVkVGltZXIgdG8gRGVmZXJyZWRXb3JrVGlt
ZXIuCisKKyAgICAgICAgQWxzbywgYWRkIGdsb2JhbE9iamVjdCBob29rIGZvciByZXBvcnRpbmcg
dW5jYXVnaHQgZXhjZXB0aW9ucyBmcm9tIEpTQydzCisgICAgICAgIHJ1bmxvb3AgY2FsbGJhY2tz
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93QmFzZTo6Y29tcGlsZVN0cmVhbWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFtaW5nKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKwogMjAyMC0wNy0xMyAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGUuY29tPgogCiAgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uIGRvZXMgbm90IG9i
c2VydmUgbWFuaXB1bGF0ZWQgdGV4dCBhZnRlciB1cGRhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFjNDcyNTZl
YzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uNGFiNTQ3ZTlkZTBkZjhlYTQ3MTQ1ZjJhZmQ1OWZmNTY1
M2NiMzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9i
amVjdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
SlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVs
bHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxs
cHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWpl
Y3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAg
ICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0
cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBkNjFhYWM3ZTQ1
YzUzNzIwNWE4YWNhN2UwOGVmZDY5NGNiZWRjNDIzLi5kN2Q0ZDg5OGZkNDJmMGYyNTRhNzQ5MGJh
OTMyZTY4ZGI1ODU5ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElH
bG9iYWxPYmplY3QubW0KQEAgLTY0LDYgKzY0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAg
ICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1bGVMb2Fk
ZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG1vZHVsZUxvYWRlckV2YWx1YXRlLCAv
LyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25U
cmFja2VyCisgICAgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxs
cHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5n
CiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNGNkNzRjMjUyMmVhMmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1Zi4u
YTI2YTk5NzUyNTJkMDY1NDY2YmZhNjFhNWI1YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTkzMSwxNiArOTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIwMDYw
MDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMEZERTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMu
bSAqLzsgfTsKIAkJNTMxMUJENEIxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFFQTU4
MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAw
QUY3QTBCIC8qIFdhc21QbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsgfTsK
LQkJNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0
QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAwNzYx
OEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9OworICAgICAgICAgICAgICAgIDUzMTgwNDVDMjJF
QUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0
cmFjdFZhbHVlLmggKi87IH07CisgICAgICAgICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAwMzBE
QTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyog
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1
MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUzMzNC
QkRDMjExMEY3RDkwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAyQjJB
RDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0UxMDA3
NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgKi87IH07Ci0JCTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBD
aGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRP
U1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hl
Y2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUzMzhFQkEzMjNBQjA0QjgwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJp
bGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMz
OEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87IH07
Ci0JCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFE
QUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAgICAg
ICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnku
aCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNr
VmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRp
bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2
Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJB
QzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZCQjcx
QzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlw
ZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KyAgICAgICAgICAgICAgICA1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3Jr
VGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAgNTM0
ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8q
IEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFD
NzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0Mx
QkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAw
NzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRFMDM0
RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vz
c0Nhc2UuaCAqLzsgfTsKQEAgLTM1OTcsNiArMzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4Njgw
MDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkFs
bG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFFQjA4
MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBw
YXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5QUNC
MyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlu
YWxpemF0aW9uUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBB
NjM0MDFGQTNFMzFDMDAyNkE1NDUgLyogU291cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTb3VyY2VzQ29jb2EudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzBBNjM0MTFGQTNFMzFEMDAyNkE1NDUgLyogU291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gU291cmNlcy50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2NkFE
MUZBM0U3NzcwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0
LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3ICsz
NjI2LDIyIEBACiAJCTUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0VmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAwNEE3
MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFjdFZh
bHVlLmNwcDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3QjgxOTEg
LyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9kdWxl
LW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhp
dFNpZGVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3BvaW50
T1NSRXhpdFNpZGVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RUJB
MjIzQUIwNEEzMDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0aCA9
IGZ0bC9GVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUy
IC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2Fz
bUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQz
QzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNt
Qm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3
MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFBy
b21pc2VUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNlVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAwRjEy
QUMxIC8qIFByb21pc2VUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcm9taXNlVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzQ4
NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworICAgICAgICAgICAgICAgIDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdv
cmtUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdvcmtU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZFMDBG
MTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVk
QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAv
KiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIx
QzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3Rz
L1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkw
MjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvVHlw
ZWRBcnJheUNUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYgKzcx
NDMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNo
ZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNw
cCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICov
LAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5jcHAg
Ki8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmgg
Ki8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmli
dXRlcy5oICovLAogCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0
eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1l
bnRzLmNwcCAqLywKQEAgLTcxODQsMTEgKzcxOTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJDRjI1
MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuY3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJENzIw
MEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0EwMEFD
NDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlubGluZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJEQUE3
MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6
emVyQWdlbnQuY3BwICovLAogCQkJCUNFQ0ZBRDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFz
ZWRGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFMjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICovLAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2RTUy
MCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBG
aW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRFNkVD
NjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJCQk1
MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
aCAqLywKIAkJCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8s
CisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJ
CUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlBN0E4
QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgwQzAw
RTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMjY4
MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03MzQ1
LDcgKzczNjIsMTMgQEAKIAkJCQkwRjdERjEzOTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUwMDk1
OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3QjRB
Q0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2NkMx
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRp
b25SZWdpc3RyeS5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0Qw
NzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBK
U0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0Zp
eGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVk
QXJyYXkuaCAqLywKKwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5
LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICovLAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBG
NyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyog
SlNGdW5jdGlvbi5oICovLApAQCAtNzU0NCw5ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1NUYy
ODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBB
QTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQw
MEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUwNkUw
MEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3BwICovLAotCQkJCTUzNDYzODc0MUU3MERERUMwMEYx
MkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLywKLQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYg
LyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAg
Ki8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5o
ICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oICovLAogCQkJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAq
LywKQEAgLTkyODYsNiArOTMwNyw3IEBACiAJCQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0IC8q
IERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkzQyAv
KiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTA2
ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMw
MDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFGQTMy
MjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC05NTI2LDkgKzk1NDgsMTEgQEAKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZCMTAw
MjJCRjZEIC8qIEZhc3RKSVRQZXJtaXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzND
NTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2Vk
RnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFMjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRG
dXp6ZXJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMwMDVB
QjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJCQjAw
MzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0
IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAw
NUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VB
OUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3MURC
NUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1Nyw3
ICs5ODgxLDggQEAKIAkJCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBv
cnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUzM0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEYy
QjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklu
bGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURDNjA1
QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8qIFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VU
aW1lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFBy
b3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMg
LyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIzMTU1
QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0
YzI3MDUuLjJhMjg3YTdmZGRiMDgwNGYzYjYwMTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc4Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2VwdGlv
blNjb3BlLmNwcAogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJhc2Vk
RnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKK3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlRHVtcC5jcHAKQEAgLTg1MCw2ICs4NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcuY3Bw
CiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGguY3Bw
CiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGltZS9K
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAogcnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVudGlt
ZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTkz
Miw3ICs5MzUsNyBAQCBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3Bw
CiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuY3BwCi1ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRpbWUv
RGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKIHJ1
bnRpbWUvUHJvcGVydHlTbG90LmNwcAogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBlZGQ1ZDdhZjkxYjVjZTBlNDQzNjExZGQ1ZTZk
ODI2YjllNTQxMWY1Li44MGU4N2ZjM2YwZGJjN2UxOTJhZWY4ZTkyN2VhYzVlZDJhMDk1ZDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIK
ICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJK
U1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2MTIs
OCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4o
KnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5j
ZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVy
cm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5t
X2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAo
dm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDU0ODEyY2QyNTk0MTBkOGViNTE0ZWU3MWFlNDVkZDUyNWMwOGY4YzQuLjRkMjkwNmU1Y2U0NmFi
NDQ4NThiMDI2NmRiMTQxM2ExNGNkYTViODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQ29tcGlsZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUgIkNv
bXBsZXRpb24uaCIKICNpbmNsdWRlICJDb25maWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRX
b3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRl
ICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKQEAgLTU2LDcgKzU4LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRh
YmFzZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFw
QWNjZXNzU2NvcGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
U3RhY2tWaXNpdG9yLmgiCkBAIC0xNTUsNiArMTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIHsKIAorI2RlZmluZSBFWElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVSTl9X
SVRIX1ZBTFVFIHN0YXRpYyB2b2lkIGpzY0V4aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0Rm9y
QXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBXb3Jr
ZXJzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21tYW5k
TGluZSYsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNrRXhj
ZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24s
IEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBjaGVj
a0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0
aW9uLCBKU1ZhbHVlLCBjb25zdCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBjbGFz
cyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1Ymxp
YzoKQEAgLTMwMiw3ICszMDUsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJl
Z2lzdHJ5TGl2ZUNvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVh
ZENvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2Ft
cGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDggKzU0
NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFs
bFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFpbk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWluTWlj
cm90YXNrcywgMCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwg
ZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNl
dFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVvdXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50IiwgZnVu
Y3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFsaXph
dGlvblJlZ2lzdHJ5RGVhZENvdW50LCAwKTsKKyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAiZ2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAic2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZCwg
MSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUsIDEp
OwpAQCAtNjM4LDYgKzY0OCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIgbW9k
dWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1
ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1
bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwg
SlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVh
dGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwg
SlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIHJl
cG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRp
b24qKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxPYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KTsKIApAQCAtNjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9
IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAgbnVs
bHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVq
ZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAog
ICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVT
dHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIxODcs
NiArMjIwMCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5N
aWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhNRTog
VGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBkb24n
dCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sgPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7Cisg
ICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsK
KworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBsb29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRlciBi
ZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBzY2hlZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2bS5k
ZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOworICAg
IHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2FsbGJh
Y2tdIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNrLT5n
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisg
ICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsYmFjaywganNVbmRlZmluZWQoKSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2VlIHRo
aXMuLi4iKTsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3Jr
KGNhbGxiYWNrKTsKKyAgICB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFz
ZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9u
UmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5hbGl6
YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lzdHJ5
Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0cnkt
PmNlbGxMb2NrKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxp
emF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChsb2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0g
anNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBp
cyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQobG9j
a2VyKSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJp
dFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNWQUxV
RTY0KQpAQCAtMjYwNSwxMCArMjY2NywxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiAKICAgICAvLyBXZSBjYW4ndCB1c2UgZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2luZyBj
b2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dzCiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRpb24g
SGFuZGxpbmcKLSAgICBpbnQgcmVzID0gMDsKKyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNTOwog
ICAgIFRSWQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQVChy
ZXMgPSAzKQorICAgIEVYQ0VQVChyZXMgPSBFWElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6ZVN0
YXRzQXRFbmRPZlRlc3RpbmcoKTsKICAgICBpZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZPUl9J
TlBVVF9UT19FWElUIikpIHsKICAgICAgICAgV1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigpOwpA
QCAtMjY3OSw3ICsyNzQxLDcgQEAgc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhDRVBU
SU9OCiB9CiAKLXN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5lJiBv
cHRpb25zKQorc3RhdGljIGJvb2wgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFuZExp
bmUmIG9wdGlvbnMpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5hbWUg
PSBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRpb25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTI3MTEsNyArMjc3Myw3IEBAIHN0YXRpYyBib29sIGNo
ZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4Y2Vw
dGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhh
c0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1
Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwg
Y29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBAIC0yNzMwLDYgKzI3OTIsMTUgQEAgc3RhdGljIHZv
aWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0
RmlsZSwgYm9vbCBoYXMKICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNhdWdo
dEV4Y2VwdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDogSlNW
YWx1ZSgpLCBvcHRpb25zKTsKIH0KIAordm9pZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0
RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCk7CisgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlvbi0+
dmFsdWUoKSk7CisgICAgYm9vbCBoaWRlTm9SZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRlTm9S
ZXR1cm4pCisgICAgICAgIGpzY0V4aXQoRVhJVF9FWENFUFRJT04pOworfQorCiBzdGF0aWMgdm9p
ZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUm
IG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlwdHMg
PSBvcHRpb25zLm1fc2NyaXB0czsKQEAgLTMxNjQsNyArMzIzNSw3IEBAIGludCBydW5KU0MoY29u
c3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMp
CiAgICAgICAgIGZ1bmModm0sIGdsb2JhbE9iamVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZtLmRy
YWluTWljcm90YXNrcygpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxvb3Ao
KTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAgICAg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50ZXJh
Y3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZDNhZDIxZTViYzk3ZWE5NDUw
YzZjZTBiNmY3ZTBjNjI1MTdjOTE5OS4uZWNkMDczY2QzZGYyMGU1YTljZmM2ZDIzZTY1ZGU0YWUw
MDQzZTc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJ
dGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJBcnJheSBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoQXJyYXlJdGVyYXRvclByb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNz
SW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBcnJheSBJdGVyYXRvciBQ
cm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUpIH07CiAKIHZvaWQgQXJyYXlJdGVyYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZiYS4u
NzAxZDY3NDdiZGJhZGRjODgyZTBmZmM0MTRjMWE1NzA4MWY5MDUzNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01Nyw2ICs1
Nyw3IEBACiAgICAgbWFjcm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oU3ltYm9sKSBcCiAgICAgbWFj
cm8oV2Vha1JlZikgXAorICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAgbWFj
cm8oX19kZWZpbmVHZXR0ZXJfXykgXAogICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18pIFwKICAg
ICBtYWNybyhfX2xvb2t1cEdldHRlcl9fKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyNDU5YTQyN2U2
MjRjMGQ4YmNmNGE3MWJkOWRlN2RhOWUzYTBmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsxLDE2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisKKyNp
bmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
bmFtZXNwYWNlIERlZmVycmVkV29ya1RpbWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQorCitEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3JrVGlt
ZXIoVk0mIHZtKQorICAgIDogQmFzZSh2bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1l
cjo6ZG9Xb3JrKFZNJiB2bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7CisgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIoKTsK
KyAgICBpZiAoIW1fcnVuVGFza3MpIHsKKyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAg
ICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2lu
ZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1heSBo
YXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3BlbmRp
bmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRhc2tz
IHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVu
bmluZ1Rhc2sgPSB0cnVlOworICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisKKyAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBjYW4g
cmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVyZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3luY2hy
b25vdXNKU0V4ZWN1dGlvbigpOworCisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAoRXhj
ZXB0aW9uKiBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAg
ICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3AoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0uZXhj
ZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKKworICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7
CisgICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRT
dG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoKSB7CisjaWYgVVNFKENGKQorICAgICAgICBD
RlJ1bkxvb3BTdG9wKHZtLnJ1bkxvb3AoKSk7CisjZWxzZQorICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOworI2VuZGlmCisgICAgfQorCisgICAgbV90YXNrTG9jay51bmxvY2soKTsK
K30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgpCit7CisgICAgQVNTRVJU
KCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworI2lm
IFVTRShDRikKKyAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IG1fYXBpTG9jay0+
dm0oKS0+cnVuTG9vcCgpKTsKKyNlbmRpZgorICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxs
VGlja2V0c0ZpbmlzaCA9IHRydWU7CisgICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuc2l6ZSgpKSB7
CisjaWYgVVNFKENGKQorICAgICAgICBDRlJ1bkxvb3BSdW4oKTsKKyNlbHNlCisgICAgICAgIFJ1
bkxvb3A6OnJ1bigpOworI2VuZGlmCisgICAgfQorfQorCit2b2lkIERlZmVycmVkV29ya1RpbWVy
OjphZGRQZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlND
ZWxsPj4mJiBkZXBlbmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXBlbmRlbmNp
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkgIT0g
dGlja2V0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5hZGQodGlja2V0
LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkg
eworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3Nl
LCAiQWRkaW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAg
ICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7Cisg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5h
bDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVj
dG9yKGRlcGVuZGVuY2llcyk7CisgICAgfQorfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpo
YXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCku
Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0dXJuIG1fcGVuZGluZ1Rp
Y2tldHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFz
RGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5
KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSk7CisK
KyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRpY2tldCk7CisgICAgcmV0
dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtU
aW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQodGlj
a2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGJvb2wgcmVz
dWx0ID0gbV9wZW5kaW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKworICAgIGlmIChyZXN1bHQp
CisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2Us
ICJDYW5jZWxpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbihU
aWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rh
c2tMb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZN
b3ZlKHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5p
bmdUYXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJy
ZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29y
a1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZjZjZjOWNiMzM0NjJjMTJkYTI2NTAwN2VmMWNkOTU2ZjJh
OTE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNSdW5M
b29wVGltZXIuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2U7
CitjbGFzcyBWTTsKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVm
ZXJyZWRXb3JrVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGltZXIgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKKworICAgIHZvaWQgZG9Xb3JrKFZNJikg
ZmluYWw7CisKKyAgICB1c2luZyBUaWNrZXQgPSBKU09iamVjdCo7CisgICAgdm9pZCBhZGRQZW5k
aW5nV29yayhWTSYsIFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2ll
cyk7CisgICAgYm9vbCBoYXNQZW5kaW5nV29yayhUaWNrZXQpOworICAgIGJvb2wgaGFzRGVwZW5k
YW5jeUluUGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpOworICAgIGJvb2wg
Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKKworICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2
b2lkKCk+OworICAgIHZvaWQgc2NoZWR1bGVXb3JrU29vbihUaWNrZXQsIFRhc2smJik7CisKKyAg
ICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBmYWxzZTsgfQorCisgICAg
dm9pZCBydW5SdW5Mb29wKCk7CisKKyAgICBzdGF0aWMgUmVmPERlZmVycmVkV29ya1RpbWVyPiBj
cmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJy
ZWRXb3JrVGltZXIodm0pKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGVmZXJyZWRXb3JrVGlt
ZXIoVk0mKTsKKworICAgIExvY2sgbV90YXNrTG9jazsKKyAgICBib29sIG1fcnVuVGFza3MgeyB0
cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07Cisg
ICAgRGVxdWU8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tzOworICAgIEhhc2hNYXA8
VGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdUaWNrZXRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2Yzk2ZWI4NGMwMzQ0ZTQ3OWQwNDFhZTY2YjQ5Mzk2Mjk2OThkN2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
SXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpIH07CisKK3ZvaWQgRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiX3MsIE5hbWVBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworCitGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSwgY29uc3RydWN0
RmluYWxpemF0aW9uUmVnaXN0cnkpCit7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RmluYWxpemF0
aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZpbmFsaXphdGlvblJlZ2lz
dHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQg
PSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIGZpbmFs
aXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpID09IG5ld1Rh
cmdldAorICAgICAgICA/IGdsb2JhbE9iamVjdC0+ZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1
cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxtKHZtLCBuZXdUYXJnZXQp
LT5maW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUodm0sIGZp
bmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLmdldE9iamVjdCgpKSkpOworfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZjZTRjNTYzZjgyY2NlODRlN2E5ZjE4ZjZjNWYzMzAwYWU0MjQ4NmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGU7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisKKyAgICBzdGF0aWMgRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciop
CisgICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3I+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3Rv
dHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUqKTsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9u
KSk7CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2Yy
MDNmNzNmYTk3YTAwNmZhNDVjNmM0YmFjM2NhODY3NDUxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9G
dW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxp
emF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisK
K3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIC8vIFdl
IGNhbid0IG1ha2UgdGhpcyBhIHByb3BlcnR5IG5hbWUgYmVjYXVzZSBpdCdzIGEgcmVzZXZlcmVk
IHdvcmQgaW4gQysrLi4uCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZWdpc3RlciIpLCBwcm90
b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNT
dHJpbmcodm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCitBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKFVOTElL
RUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIG5v
bi1vYmplY3QiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRv
KiBncm91cCA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHZtLCBhc09i
amVjdCh2YWx1ZSkpOworICAgIGlmIChMSUtFTFkoZ3JvdXApKQorICAgICAgICByZXR1cm4gZ3Jv
dXA7CisKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFsaXphdGlvblJlZ2lzdHJ5
IG9iamVjdCJfcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSh2
bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciByZXF1aXJl
cyBhbiBvYmplY3QgYXMgdGhlIHRhcmdldCJfcyk7CisKKyAgICBKU1ZhbHVlIGhvbGRpbmdzID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoc2FtZVZhbHVlKGdsb2JhbE9iamVjdCwg
dGFyZ2V0LCBob2xkaW5ncykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciBleHBlY3RzIHRoZSB0YXJnZXQgb2JqZWN0IGFuZCB0
aGUgaG9sZGluZ3MgcGFyYW1ldGVyIGFyZSBub3QgdGhlIHNhbWUuIE90aGVyd2lzZSwgdGhlIHRh
cmdldCBjYW4gbmV2ZXIgYmUgY29sbGVjdGVkIl9zKTsKKworICAgIEpTVmFsdWUgdW5yZWdpc3Rl
clRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAgICBpZiAoIXVucmVnaXN0ZXJUb2tl
bi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworCisgICAg
Z3JvdXAtPnJlZ2lzdGVyVGFyZ2V0KHZtLCB0YXJnZXQuZ2V0T2JqZWN0KCksIGhvbGRpbmdzLCB1
bnJlZ2lzdGVyVG9rZW4pOworICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3Ry
eVVucmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGdyb3VwID0gZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChhdXRv
KiB0b2tlbiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBncm91cC0+dW5yZWdpc3Rlcih2bSwgdG9r
ZW4pOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsK
KyAgICB9CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVucmVnaXN0cmF0aW9uIHRv
a2VuIl9zKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NDRkZjhkZDI4YjM4YjM4ZDcwNzFjMjYyNzAyZjJmNDgxYzlmOGFkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKKyAgICB7IH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCopOworfTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllcklubGluZXMuaAppbmRleCAxOGU4OGQ3YzBjZTRlZTIxMjlhMzdkODIwMjY4YWNm
NjM2MGY1MmFlLi4xYzVmZGY1MGJkMDU4OWI3NmNhZGE0OGY3ZmY1OTAzZDcxMjU4OTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoVk0mIHZtLCBj
b25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVu
dEF0b21TdHJpbmdUYWJsZSh2bSk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5p
c1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmluZ1RhYmxlKHN0cmluZy5p
bXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcu
aW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmluZ1RhYmxl
KHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0Jm9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIg
dGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0
cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNjOWUxMjBiZDgwN2E1NTljNTIwNjg4ZDgyYzk0MDA0Y2ZmNDM2
Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiRGVmZXJyZWRXb3Jr
VGltZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpzX2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdp
c3RyeSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkgfTsKKworU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTRmluYWxpemF0aW9uUmVnaXN0cnkqIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogY2FsbGJhY2spCit7CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pih2
bS5oZWFwKSkgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSh2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxiYWNrKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7
Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU09iamVjdCogY2FsbGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIEFTU0VSVChjYWxsYmFjay0+aXNDYWxsYWJsZSh2bSkpOworICAgIGF1dG8gdmFsdWVzID0g
aW5pdGlhbFZhbHVlcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZh
bHVlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEJhc2U6OmludGVybmFsRmllbGQoaW5kZXgp
LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWVzW2luZGV4XSk7CisgICAgaW50ZXJuYWxGaWVs
ZChGaWVsZDo6Q2FsbGJhY2spLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY2FsbGJhY2spOworfQor
Cit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGws
IHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Kj4oY2VsbCk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRoaXNPYmpl
Y3QtPmNlbGxMb2NrKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3Qt
Pm1fbGl2ZVJlZ2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24g
OiBpdGVyLnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0aW9uLmhv
bGRpbmdzKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiB0aGlzT2JqZWN0
LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZChyZWdpc3Ry
YXRpb24uaG9sZGluZ3MpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3Qt
Pm1fZGVhZFJlZ2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBob2xkaW5ncyA6IGl0
ZXIudmFsdWUpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisgICAgfQor
ICAgIGZvciAoYXV0byYgaG9sZGluZ3MgOiB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25E
ZWFkKQorICAgICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisKKyAgICBzaXplX3QgdG90
YWxCdWZmZXJTaXplc0luQnl0ZXMgPSB0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zLmNh
cGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9u
cyk6OktleVZhbHVlUGFpclR5cGUpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRo
aXNPYmplY3QtPm1fbGl2ZVJlZ2lzdHJhdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlw
ZSh0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKTo6S2V5VmFsdWVQYWlyVHlwZSk7Cisg
ICAgdG90YWxCdWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0
aW9uTGl2ZS5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fbm9VbnJl
Z2lzdHJhdGlvbkxpdmUudGFrZUxhc3QoKSkpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVz
ICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuY2FwYWNpdHkoKSAqIHNpemVv
ZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkp
KTsKKyAgICB2aXNpdG9yLnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodG90YWxC
dWZmZXJTaXplc0luQnl0ZXMpOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRl
c3Ryb3koSlNDZWxsKiB0YWJsZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5Kj4odGFibGUpLT5+SlNGaW5hbGl6YXRpb25SZWdpc3RyeSgpOworfQorCit2b2lkIEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworCisgICAgYXV0byByZW1v
dmVGcm9tVmVjdG9yID0gW10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHBvc2l0aW9uKSB7CisgICAg
ICAgIHN0ZDo6c3dhcCh2ZWN0b3JbcG9zaXRpb25dLCB2ZWN0b3IubGFzdCgpKTsKKyAgICAgICAg
cmV0dXJuIHZlY3Rvci50YWtlTGFzdCgpOworICAgIH07CisKKyAgICBib29sIHJlYWRpZWRDZWxs
ID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9VbnJlZ2lzdHJhdGlv
bkxpdmUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFtX25vVW5yZWdpc3RyYXRpb25M
aXZlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJrZWQobV9ub1Vu
cmVnaXN0cmF0aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5hc0NlbGwoKSkpOworICAgICAgICBp
ZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9ub1VucmVnaXN0cmF0aW9uTGl2ZVtpXS50YXJnZXQpKSB7
CisgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVj
dG9yKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUsIGkpLmhvbGRpbmdzKTsKKyAgICAgICAgICAgIHJl
YWRpZWRDZWxsID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbGl2ZVJlZ2lzdHJh
dGlvbnMucmVtb3ZlSWYoWyZdIChhdXRvJiBidWNrZXQpIC0+IGJvb2wgeworICAgICAgICBBU1NF
UlQoYnVja2V0LnZhbHVlLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCBrZXlJc0RlYWQgPSAhdm0u
aGVhcC5pc01hcmtlZChidWNrZXQua2V5KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGJ1Y2tldC52YWx1ZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKCFidWNr
ZXQudmFsdWVbaV0uaG9sZGluZ3MuZ2V0KCkuaXNDZWxsKCkgfHwgdm0uaGVhcC5pc01hcmtlZChi
dWNrZXQudmFsdWVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAgICAgICAgIGlm
ICghdm0uaGVhcC5pc01hcmtlZChidWNrZXQudmFsdWVbaV0udGFyZ2V0KSkgeworICAgICAgICAg
ICAgICAgIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgICAgIG1fbm9VbnJlZ2lzdHJh
dGlvbkRlYWQuYXBwZW5kKHJlbW92ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKS5ob2xkaW5n
cyk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZGVh
ZExpc3QgPSBtX2RlYWRSZWdpc3RyYXRpb25zLmFkZChidWNrZXQua2V5LCBEZWFkUmVnaXN0cmF0
aW9ucygpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVhZExpc3QuaXRlcmF0b3ItPnZhbHVlLmFw
cGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9sZGluZ3MpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGtleUlzRGVhZCkKKyAgICAgICAgICAgICAgICBtX25vVW5yZWdpc3Ry
YXRpb25MaXZlLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuICFidWNrZXQudmFsdWUuc2l6ZSgpOworICAgIH0pOwor
CisgICAgaWYgKCF2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykgJiYg
KHJlYWRpZWRDZWxsIHx8IGRlYWRDb3VudChOb0xvY2tpbmdOZWNlc3NhcnkpKSkgeworICAgICAg
ICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHRoaXMsIHsgfSk7Cisg
ICAgICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykp
OworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbih0aGlzLCBb
dGhpc10geworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMt
Pmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgICAgICAgICAgdGhpcy0+cnVuRmluYWxpemF0aW9uQ2xlYW51cChnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRo
aXMpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB3aGlsZSAoSlNWYWx1ZSB2YWx1ZSA9IHRha2VE
ZWFkSG9sZGluZ3NWYWx1ZSgpKSB7CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7
CisgICAgICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3Qs
IGNhbGxiYWNrKCksIGFyZ3MsICJUaGlzIHNob3VsZCBub3QgYmUgdmlzaWJsZTogcGxlYXNlIHJl
cG9ydCBhIGJ1ZyB0byBidWdzLndlYmtpdC5vcmciKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9Cit9CisKK0pTVmFsdWUgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGNlbGxMb2NrKCkpOworICAgIEpTVmFsdWUgcmVzdWx0OworICAgIGlmIChtX25vVW5y
ZWdpc3RyYXRpb25EZWFkLnNpemUoKSkKKyAgICAgICAgcmVzdWx0ID0gbV9ub1VucmVnaXN0cmF0
aW9uRGVhZC50YWtlTGFzdCgpLmdldCgpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIGl0ZXIg
PSBtX2RlYWRSZWdpc3RyYXRpb25zLmJlZ2luKCk7CisgICAgICAgIGlmIChpdGVyID09IG1fZGVh
ZFJlZ2lzdHJhdGlvbnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICBBU1NFUlQoaXRlci0+dmFsdWUuc2l6ZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gaXRlci0+
dmFsdWUudGFrZUxhc3QoKS5nZXQoKTsKKyAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5zaXplKCkp
CisgICAgICAgICAgICBtX2RlYWRSZWdpc3RyYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9CisK
KyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9FTkFCTEVEKSB7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaXRlciA6IG1fZGVhZFJlZ2lzdHJhdGlvbnMpCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpdGVyLnZhbHVlLnNpemUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpyZWdpc3RlclRhcmdldChWTSYgdm0sIEpT
T2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9rZW4pCit7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBSZWdpc3RyYXRpb24gcmVn
aXN0cmF0aW9uOworICAgIHJlZ2lzdHJhdGlvbi50YXJnZXQgPSB0YXJnZXQ7CisgICAgcmVnaXN0
cmF0aW9uLmhvbGRpbmdzLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoaG9sZGluZ3MpOworICAgIGlm
ICh0b2tlbi5pc1VuZGVmaW5lZCgpKQorICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25MaXZlLmFw
cGVuZChXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIHJl
c3VsdCA9IG1fbGl2ZVJlZ2lzdHJhdGlvbnMuYWRkKGpzU2VjdXJlQ2FzdDxKU09iamVjdCo+KHZt
LCB0b2tlbiksIExpdmVSZWdpc3RyYXRpb25zKCkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmFwcGVuZChXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOworICAgIH0KKyAgICB2bS5oZWFw
LndyaXRlQmFycmllcih0aGlzKTsKK30KKworYm9vbCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyKFZNJiwgSlNPYmplY3QqIHRva2VuKQoreworICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gd3JpdGUgYmFycmllciBvdXJzZWx2ZXMgaGVyZSBiZWNhdXNlIHdlIHdpbGwgb25seSBwb2lu
dCB0byBsZXNzIHRoaW5ncyBhZnRlciB0aGlzIGZpbmlzaGVzLgorICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soY2VsbExvY2soKSk7CisgICAgYm9vbCByZXN1bHQgPSBtX2xpdmVSZWdpc3RyYXRp
b25zLnJlbW92ZSh0b2tlbik7CisgICAgcmVzdWx0IHw9IG1fZGVhZFJlZ2lzdHJhdGlvbnMucmVt
b3ZlKHRva2VuKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3NpemVfdCBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5OjpsaXZlQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25MaXZlLnNpemUoKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2xpdmVSZWdpc3RyYXRpb25zKQorICAgICAgICBjb3VudCAr
PSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKworc2l6ZV90IEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4m
KQoreworICAgIHNpemVfdCBjb3VudCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuc2l6ZSgpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IG1fZGVhZFJlZ2lzdHJhdGlvbnMpCisgICAgICAg
IGNvdW50ICs9IGl0ZXIudmFsdWUuc2l6ZSgpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitT
dHJpbmcgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTQzo6SlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopCit7CisgICAgcmV0dXJuICJPYmplY3QiX3M7Cit9CisK
K30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzkwNTFiZmEwYThjNjc2MzhmMDMxMTc0YzQz
YjA2NWI0MTI2YTI5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTRmluYWxpemF0aW9uUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVj
dGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwxPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IEpTRGVzdHJ1Y3RpYmxlSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT47CisKKyAgICBlbnVt
IGNsYXNzIEZpZWxkIDogdWludDhfdCB7IAorICAgICAgICBDYWxsYmFjaywKKyAgICB9OworCisg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2Fw
YWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCBpbmxp
bmVDYXBhY2l0eSA9PSAwVSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZTxt
b2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9m
SW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsg
eworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgIH0gfTsKKyAgICB9CisKKyAgICBjb25z
dCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQpIGNvbnN0
IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxk
KSk7IH0KKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmll
bGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZp
ZWxkKSk7IH0KKworICAgIEpTT2JqZWN0KiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIGpzQ2Fz
dDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6OkNhbGxiYWNrKS5nZXQoKSk7IH0KKwor
ICAgIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
LCBKU09iamVjdCogY2FsbGJhY2spOworICAgIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
KiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUpOworCisgICAgdm9pZCBydW5GaW5hbGl6YXRpb25DbGVhbnVwKEpTR2xvYmFsT2Jq
ZWN0Kik7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseShWTSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisg
ICAgSlNWYWx1ZSB0YWtlRGVhZEhvbGRpbmdzVmFsdWUoKTsKKworICAgIGJvb2wgdW5yZWdpc3Rl
cihWTSYsIEpTT2JqZWN0KiB0b2tlbik7CisgICAgLy8gdG9rZW4gc2hvdWxkIGJlIGEgSlNPYmpl
Y3Qgb3IgdW5kZWZpbmVkLgorICAgIHZvaWQgcmVnaXN0ZXJUYXJnZXQoVk0mLCBKU09iamVjdCog
dGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKTsKKworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBsaXZlQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+Jik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGRlYWRDb3VudChjb25zdCBMb2NrZXI8SlNDZWxs
TG9jaz4mKTsKKworcHJpdmF0ZToKKyAgICBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAg
IHsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNPYmplY3QqIGNhbGxiYWNrKTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1l
KGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKKworICAgIHN0cnVjdCBSZWdpc3Ry
YXRpb24geworICAgICAgICBKU09iamVjdCogdGFyZ2V0OworICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4gaG9sZGluZ3M7CisgICAgfTsKKworICAgIHVzaW5nIExpdmVSZWdpc3RyYXRpb25z
ID0gVmVjdG9yPFJlZ2lzdHJhdGlvbj47CisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGUgdGFyZ2V0
IGFueW1vcmUgc2luY2Ugd2Uga25vdyBpdCdzIGRlYWQuCisgICAgdXNpbmcgRGVhZFJlZ2lzdHJh
dGlvbnMgPSBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PjsKKworICAgIC8vIE5vdGUgdGhh
dCB3ZSBkb24ndCBib3RoZXIgcHV0dGluZyBhIHdyaXRlIGJhcnJpZXIgb24gdGhlIGtleSBvciB0
YXJnZXQgYmVjYXVzZSB0aGV5IGFyZSB3ZWFrbHkgcmVmZXJlbmNlZC4KKyAgICBIYXNoTWFwPEpT
T2JqZWN0KiwgTGl2ZVJlZ2lzdHJhdGlvbnM+IG1fbGl2ZVJlZ2lzdHJhdGlvbnM7CisgICAgSGFz
aE1hcDxKU09iamVjdCosIERlYWRSZWdpc3RyYXRpb25zPiBtX2RlYWRSZWdpc3RyYXRpb25zOwor
ICAgIExpdmVSZWdpc3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmU7CisgICAgRGVhZFJl
Z2lzdHJhdGlvbnMgbV9ub1VucmVnaXN0cmF0aW9uRGVhZDsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCAzZWEzMGRiOWUyZTRkNTM4ZGE4ZjIzMmNmODliOWU0Yzk4MjM3MDA2Li5h
ZjY2ODNlNWNlMTMzZGVmMGE3MDRkOTZhZDdjOGQwNzc4ODU0ZWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC02MSw2ICs2MSw4
IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIgpAQCAtOTksNiArMTAxLDcgQEAKICNpbmNsdWRlICJKU0RhdGFWaWV3LmgiCiAjaW5j
bHVkZSAiSlNEYXRhVmlld1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKKyNp
bmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgpAQCAtMzg3LDYgKzM5MCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
R2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxwdHIs
IC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwg
Ly8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9u
VHJhY2tlcgorICAgIG51bGxwdHIsIC8vIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExv
b3AKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21w
aWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAgLTIx
OTksNiArMjIwMywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhSZWY8
TWljcm90YXNrPiYmIHRhc2spCiAgICAgdm0oKS5xdWV1ZU1pY3JvdGFzaygqdGhpcywgV1RGTW92
ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0
aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sK
KyAgICBkYXRhTG9nTG4oIlVuY2F1Z2h0IEV4Y2VwdGlvbiBhdCBydW4gbG9vcDogIiwgZXhjZXB0
aW9uLT52YWx1ZSgpKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0RGVidWdnZXIoRGVi
dWdnZXIqIGRlYnVnZ2VyKQogewogICAgIG1fZGVidWdnZXIgPSBkZWJ1Z2dlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRkYzMwYjgy
ZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjQ3NGZkZTY0ZmY2Y2FlMjgzZTk5ZTQ2
ZWVjODA1MDgxYmMwZjliYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMTM4LDYgKzEzOCw4IEBAIGNvbnN0ZXhwciBib29sIHR5cGVF
eHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBtYWNybyhKU1Byb21pc2UsIHByb21pc2UsIHBy
b21pc2UsIEpTUHJvbWlzZSwgUHJvbWlzZSwgb2JqZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCkg
XAogICAgIG1hY3JvKEJpZ0ludCwgYmlnSW50LCBiaWdJbnRPYmplY3QsIEJpZ0ludE9iamVjdCwg
QmlnSW50LCBvYmplY3QsIE9wdGlvbnM6OnVzZUJpZ0ludCgpKSBcCiAgICAgbWFjcm8oV2Vha09i
amVjdFJlZiwgd2Vha09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgSlNXZWFrT2JqZWN0UmVmLCBX
ZWFrUmVmLCBvYmplY3QsIE9wdGlvbnM6OnVzZVdlYWtSZWZzKCkpIFwKKyAgICBtYWNybyhGaW5h
bGl6YXRpb25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJlZ2lz
dHJ5LCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LCBGaW5hbGl6YXRpb25SZWdpc3RyeSwgb2JqZWN0
LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisKIAogI2RlZmluZSBGT1JfRUFDSF9CVUlMVElO
X0RFUklWRURfSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIG1hY3JvKFN0cmluZ0l0ZXJhdG9y
LCBzdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIEpTU3RyaW5nSXRlcmF0b3IsIFN0cmlu
Z0l0ZXJhdG9yLCBpdGVyYXRvciwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKQEAgLTIyNyw2ICsy
MjksOSBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgdm9p
ZCAoKlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlz
ZSosIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CiAgICAgUHJvbWlzZVJlamVjdGlvblRy
YWNrZXJQdHIgcHJvbWlzZVJlamVjdGlvblRyYWNrZXI7CiAKKyAgICB0eXBlZGVmIHZvaWQgKCpS
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyKShKU0dsb2JhbE9iamVjdCosIEV4
Y2VwdGlvbiopOworICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIgcmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKKwogICAgIHR5cGVkZWYgU3RyaW5nICgq
RGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAgRGVmYXVsdExhbmd1YWdlRnVuY3Rp
b25QdHIgZGVmYXVsdExhbmd1YWdlOwogCkBAIC00NTMsMjEgKzQ1OCw2IEBAIHB1YmxpYzoKICAg
ICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKICAgICBSZWdFeHBHbG9iYWxEYXRhIG1fcmVnRXhw
R2xvYmFsRGF0YTsKIAotICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBj
b25zdCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQotCi0gICAg
SW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgp
IHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElu
bGluZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyBy
ZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdh
dGNocG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9p
bnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9p
bnRTZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnRT
ZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkgeyBy
ZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYg
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hw
b2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9pbnRT
ZXQoKSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1cm4gbV9udW1i
ZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7Ci0gICAgfQogICAgIC8vIElmIHRoaXMgaGFzbid0IGJl
ZW4gaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2NvbAogICAg
IC8vIGlzIG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5lV2F0Y2hw
b2ludFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7CkBAIC00OTQsNiAr
NDg0LDIzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90eXBl
QWRkV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90eXBl
VG9TdHJpbmdXYXRjaHBvaW50OwogCitwdWJsaWM6CisgICAgSlNDYWxsZWUqIHN0YWNrT3ZlcmZs
b3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVl
LmdldCgpOyB9CisKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwSXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Cisg
ICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQoKSB7IHJldHVybiBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Cisg
ICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwU2V0V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1f
bWFwU2V0V2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEFkZFdh
dGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEFkZFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxp
bmVXYXRjaHBvaW50U2V0JiBhcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJy
YXlKb2luV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldDsg
fQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCgp
CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7CisgICAg
ICAgIHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsKKyAgICB9CisKICAgICBi
b29sIGlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUo
KTsKICAgICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNl
cnZhYmxlKCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5k
Tm9uT2JzZXJ2YWJsZSgpOwpAQCAtODI0LDYgKzgzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKFZNJiB2bSwgSlNPYmplY3QqIGZ1bmN0aW9uKSB7
IG1fdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suc2V0KHZtLCBmdW5jdGlvbik7IH0KICAgICBK
U09iamVjdCogdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3Vu
aGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLmdldCgpOyB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBv
cnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9u
Kik7CisKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KIAogICAgIEpT
T2JqZWN0KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJp
bmdNb2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oCmluZGV4IGUyNTdhMWRmNjAwYjJhOGVkNDc1
YjdlODkzNmU4NGNhNDg1YjI1YjEuLjZmMDc4MTBlZTA2NjQxZDQwNDIzOWMzNDQyZTkwMTMxMWJl
ODhlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgKQEAgLTMwLDEyICszMCwxMSBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIC8vIFRoaXMgaXMgdXNlZCBmb3Igc2hhcmluZyBpbnRlcmZhY2UgYW5kIGltcGxl
bWVudGF0aW9uLiBJdCBzaG91bGQgbm90IGhhdmUgaXRzIG93biBjbGFzc0luZm8uCi10ZW1wbGF0
ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzID0gMT4KLWNsYXNzIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Cit0ZW1wbGF0
ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzID0gMSwgdHlwZW5hbWUgQmFz
ZSA9IEpTTm9uRmluYWxPYmplY3Q+CitjbGFzcyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsIDog
cHVibGljIEJhc2UgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKLSAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSBwYXNzZWROdW1iZXJP
ZkludGVybmFsRmllbGRzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgpAQCAtNzYsNCArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVy
PFVua25vd24+IG1faW50ZXJuYWxGaWVsZHNbbnVtYmVyT2ZJbnRlcm5hbEZpZWxkc10geyB9Owog
fTsKIAordGVtcGxhdGU8dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDE+
Cit1c2luZyBKU0Rlc3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsID0gSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDxwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzLCBKU0Rlc3RydWN0
aWJsZU9iamVjdD47CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJ
bmxpbmVzLmgKaW5kZXggOGYwM2M4YTZkYjFiZDU3NTBlNjg1OThlMjFjOWFlMWIzMTNjODVlMS4u
ZTZhNjFlMWQ5YmQ0MWIzOWJiYTYwOTM3ZmU4NWRhOWIxODRmZDhmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRP
YmplY3RJbXBsSW5saW5lcy5oCkBAIC0yOSwxMSArMjksMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXRlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ci12b2lk
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3RlbXBs
YXRlPHVuc2lnbmVkIHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMsIHR5cGVuYW1lIEJhc2U+
Cit2b2lkIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkcywgQmFzZT46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBC
YXNlOjppbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9pbnRlcm5hbEZpZWxk
cywgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlLmNwcAppbmRleCA4ODMwODNlY2I3NjdkMDg4M2Y5YTQ5MjFmMzk5ZjU5
MDg4MTNjZmRmLi40ZjM0YjZiNDljYTg5ZTY2OGNiOWEyNjcxMDMyM2NhZTE3ODY0YjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKQEAgLTI3LDExICsy
NywxMSBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVz
LmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIKICNpbmNs
dWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgotI2lu
Y2x1ZGUgIlByb21pc2VUaW1lci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTY4LDcgKzE2
OCw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBjYWxsRnVuY3Rpb24obGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCksIHRoaXMs
IHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5jYW5jZWxQZW5kaW5nUHJvbWlzZSh0aGlzKTsKKyAg
ICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+Y2FuY2VsUGVuZGluZ1dvcmsodGhpcyk7CiB9CiAKIHZv
aWQgSlNQcm9taXNlOjpyZWplY3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBKU1Byb21pc2U6OnJlamVj
dChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cmVq
ZWN0UHJvbWlzZUZ1bmN0aW9uKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5jYW5j
ZWxQZW5kaW5nUHJvbWlzZSh0aGlzKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+Y2FuY2Vs
UGVuZGluZ1dvcmsodGhpcyk7CiB9CiAKIHZvaWQgSlNQcm9taXNlOjpyZWplY3RBc0hhbmRsZWQo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODYxYzQzNzU5NmYyMjI0ZGU4NTQ2MzY5NTFlOTgyNjQwODUw
MWE4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIu
aCIKLQotI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgotI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIK
LSNpbmNsdWRlICJWTS5oIgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgewotCi1uYW1lc3BhY2UgUHJvbWlzZVRpbWVySW50ZXJuYWwgewotc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZlcmJvc2UgPSBmYWxzZTsKLX0KLQotUHJvbWlzZVRpbWVyOjpQcm9taXNlVGltZXIo
Vk0mIHZtKQotICAgIDogQmFzZSh2bSkKLXsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OmRvV29y
ayhWTSYgdm0pCi17Ci0gICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwotICAgIG1fdGFza0xvY2subG9jaygpOwotICAgIGNhbmNlbFRpbWVyKCk7Ci0gICAgaWYg
KCFtX3J1blRhc2tzKSB7Ci0gICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRha2VMYXN0KCk7Ci0gICAgICAgIGRhdGFM
b2dMbklmKFByb21pc2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotCi0gICAgICAgIC8vIFdlIG1heSBoYXZlIGFs
cmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCi0gICAgICAgIGlmIChtX3BlbmRpbmdQcm9t
aXNlcy5jb250YWlucyh0aWNrZXQpKSB7Ci0gICAgICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBy
dW4gbm93IHRvIHNjaGVkdWxlIHdvcmsuCi0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdU
YXNrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7IAotCi0gICAgICAg
ICAgICB0YXNrKCk7Ci0gICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKLQotICAgICAg
ICAgICAgbV90YXNrTG9jay5sb2NrKCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdU
YXNrID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9wZW5kaW5nUHJvbWlz
ZXMuaXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2gp
IHsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9vcFN0b3Aodm0ucnVuTG9vcCgpKTsKLSNl
bHNlCi0gICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7Ci0jZW5kaWYKLSAgICB9Ci0K
LSAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6cnVuUnVu
TG9vcCgpCi17Ci0gICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKCkpOwotI2lmIFVTRShDRikKLSAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpID09IG1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKLSNlbmRpZgotICAgIG1fc2hv
dWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggPSB0cnVlOwotICAgIGlmIChtX3Bl
bmRpbmdQcm9taXNlcy5zaXplKCkpIHsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9vcFJ1
bigpOwotI2Vsc2UKLSAgICAgICAgUnVuTG9vcDo6cnVuKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0K
LXZvaWQgUHJvbWlzZVRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShWTSYgdm0sIEpTUHJvbWlzZSog
dGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKQotewotICAgIEFT
U0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQotICAgICAgICBBU1NFUlQo
ZGVwZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tldCk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1f
cGVuZGluZ1Byb21pc2VzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Ci0g
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VU
aW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6ICIsIFJh
d1BvaW50ZXIodGlja2V0KSk7Ci0gICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpT
Q2VsbD4odm0sIHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RG
TW92ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFBy
b21pc2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9y
IHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7Ci0gICAgfQotfQotCi1ib29sIFBy
b21pc2VUaW1lcjo6aGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAg
QVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAg
ICByZXR1cm4gbV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlja2V0KTsKLX0KLQotYm9vbCBQ
cm9taXNlVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlj
a2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nUHJvbWlz
ZXMuY29udGFpbnModGlja2V0KSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21p
c2VzLmdldCh0aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7
Ci19Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2Uq
IHRpY2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdBUElMb2NrKCkpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMucmVtb3Zl
KHRpY2tldCk7Ci0KLSAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNl
VGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVy
KHRpY2tldCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6
OnNjaGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiB0aWNrZXQsIFRhc2smJiB0YXNrKQotewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOwotICAgIG1fdGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKLSAgICBpZiAoIWlzU2NoZWR1bGVk
KCkgJiYgIW1fY3VycmVudGx5UnVubmluZ1Rhc2spCi0gICAgICAgIHNldFRpbWVVbnRpbEZpcmUo
MF9zKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb21pc2VUaW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTRk
MGYyOWFlMmQyOGNmM2U0MDRiZWZiNTQ2ZjUzY2QwYmJhZTliLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiSlNSdW5Mb29wVGltZXIuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKLQotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1Byb21pc2U7Ci1jbGFzcyBWTTsK
LWNsYXNzIEpTQ2VsbDsKLQotY2xhc3MgUHJvbWlzZVRpbWVyIGZpbmFsIDogcHVibGljIEpTUnVu
TG9vcFRpbWVyIHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNSdW5Mb29wVGltZXI7Ci0K
LSAgICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOwotCi0gICAgdm9pZCBhZGRQZW5kaW5nUHJvbWlz
ZShWTSYsIEpTUHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNl
KiB0aWNrZXQpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzRGVwZW5kYW5jeUluUGVu
ZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7Ci0gICAg
Ly8gSlNQcm9taXNlIHNob3VsZCBoYW5kbGUgY2FuY2VsaW5nIHdoZW4gdGhlIHByb21pc2UgaXMg
cmVzb2x2ZWQgb3IgcmVqZWN0ZWQuCi0gICAgYm9vbCBjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1By
b21pc2UqKTsKLQotICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHZvaWQg
c2NoZWR1bGVXb3JrU29vbihKU1Byb21pc2UqLCBUYXNrJiYpOwotCi0gICAgdm9pZCBzdG9wUnVu
bmluZ1Rhc2tzKCkgeyBtX3J1blRhc2tzID0gZmFsc2U7IH0KLQotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcnVuUnVuTG9vcCgpOwotCi0gICAgc3RhdGljIFJlZjxQcm9taXNlVGltZXI+IGNy
ZWF0ZShWTSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9taXNl
VGltZXIodm0pKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUHJvbWlzZVRpbWVyKFZNJik7Ci0K
LSAgICBIYXNoTWFwPEpTUHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGlu
Z1Byb21pc2VzOwotICAgIExvY2sgbV90YXNrTG9jazsKLSAgICBib29sIG1fcnVuVGFza3MgeyB0
cnVlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNo
IHsgZmFsc2UgfTsKLSAgICBib29sIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9Owot
ICAgIFZlY3RvcjxzdGQ6OnR1cGxlPEpTUHJvbWlzZSosIFRhc2s+PiBtX3Rhc2tzOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlEVGFibGUuY3BwCmluZGV4IGFjYjM0YzlkM2RiMjZlNThhNjFmZmRiMzE3MTdh
NTFlNjgzMWZjNWQuLjM4NTdiNzUwZTIyYmY3OTI2ZDBlY2YzZDQ3OTYyMDk4NTQ1ZDdkM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUu
Y3BwCkBAIC0zMiw2ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVF
NjQpCiAKK25hbWVzcGFjZSBTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWwgeworYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7Cit9CisKIFN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUoKQogICAg
IDogbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+KHNfaW5pdGlhbFNp
emUpKQogICAgICwgbV9zaXplKDEpCkBAIC0xNjEsMTEgKzE2NSwxNCBAQCBTdHJ1Y3R1cmVJRCBT
dHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHRh
YmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzID0gZW5jb2RlKHN0cnVj
dHVyZSwgcmVzdWx0KTsKICAgICBtX3NpemUrKzsKICAgICBBU1NFUlQoIWlzTnVrZWQocmVzdWx0
KSk7CisKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2Us
ICJBbGxvY2F0ZWQgU3RydWN0dXJlSUQgIiwgcmVzdWx0LCAiIGZvciBTdHJ1Y3R1cmUgIiwgUmF3
UG9pbnRlcihzdHJ1Y3R1cmUpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFN0cnVj
dHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQpCiB7CisgICAgZGF0YUxvZ0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVy
bmFsOjp2ZXJib3NlLCAiRGVhbGxvY2F0ZWQgU3RydWN0dXJlSUQgIiwgc3RydWN0dXJlSUQpOwog
ICAgIEFTU0VSVChzdHJ1Y3R1cmVJRCAhPSBzX3VudXNlZElEKTsKICAgICB1aW50MzJfdCBzdHJ1
Y3R1cmVJbmRleCA9IHN0cnVjdHVyZUlEID4+IHNfbnVtYmVyT2ZFbnRyb3B5Qml0czsKICAgICBB
U1NFUlQoc3RydWN0dXJlSW5kZXggJiYgc3RydWN0dXJlSW5kZXggPCBzX21heGltdW1OdW1iZXJP
ZlN0cnVjdHVyZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGNhMGUx
Yzg5ZWMxNjZlZjVkOWI4M2ExOTcxMDQ2NWY2ZGQxOWMxNjQuLjM3NTQ5MzAzYzk5MzIyNDk2YTM2
YzI2YWJhMDU3NmM1ZGY4YjQzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKICNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCisj
aW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJFcnJv
ckluc3RhbmNlLmgiCkBAIC04OCw2ICs4OSw3IEBACiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNp
bmNsdWRlICJKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTEzMyw3
ICsxMzUsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9n
cmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRl
ICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2lu
Y2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVkZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5o
IgpAQCAtMzY3LDcgKzM2OCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICAsIGNsaWVudERhdGEobnVsbHB0cikKICAgICAsIHRvcEVudHJ5RnJhbWUobnVs
bHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCi0gICAgLCBw
cm9taXNlVGltZXIoUHJvbWlzZVRpbWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgZGVmZXJyZWRX
b3JrVGltZXIoRGVmZXJyZWRXb3JrVGltZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2F0b21T
dHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJp
bmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVs
bHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKQEAgLTU3MSw3ICs1NzIsNyBAQCBW
TTo6flZNKCkKICAgICBhdXRvIGRlc3RydWN0aW9uTG9ja2VyID0gaG9sZExvY2soc19kZXN0cnVj
dGlvbkxvY2sucmVhZCgpKTsKICAgICAKICAgICBHaWdhY2FnZTo6cmVtb3ZlUHJpbWl0aXZlRGlz
YWJsZUNhbGxiYWNrKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjaywgdGhpcyk7Ci0g
ICAgcHJvbWlzZVRpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CisgICAgZGVmZXJyZWRXb3JrVGlt
ZXItPnN0b3BSdW5uaW5nVGFza3MoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYg
KFdhc206OldvcmtsaXN0KiB3b3JrbGlzdCA9IFdhc206OmV4aXN0aW5nV29ya2xpc3RPck51bGwo
KSkKICAgICAgICAgd29ya2xpc3QtPnN0b3BBbGxQbGFuc0ZvckNvbnRleHQod2FzbUNvbnRleHQp
OwpAQCAtMTQ3MCw2ICsxNDcxLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYWtNYXBTcGFjZSwgd2Vha01hcEhlYXBDZWxsVHlwZS5nZXQoKSwKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1dpdGhTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCBkZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCiAjaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpD
Q2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24p
IC8vIEhhc2g6MHgxMGY2MTBiOApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWRm
OGNmZWVmNTFlYmM1NTdmZmY2ODE0ZGEwOTU5NGMwMTU2ZWQ2Yy4uMDBjNmJjMWE4MTc5NmZjMDhh
ZWM0ZTAxZmQ3ODMyNzU0NTI5ODBiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKIGNsYXNzIE9iakNDYWxs
YmFja0Z1bmN0aW9uOwotY2xhc3MgUHJvbWlzZVRpbWVyOworY2xhc3MgRGVmZXJyZWRXb3JrVGlt
ZXI7CiBjbGFzcyBSZWdFeHA7CiBjbGFzcyBSZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwpA
QCAtNTUxLDYgKzU1MSw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIod2Vha09iamVjdFJlZlNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIod2Vha01hcFNwYWNlKQpAQCAtNzEwLDggKzcxMSw4IEBAIHB1YmxpYzoKICAg
ICBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+IG1fc2xvd0JvdW5kRXhlY3V0YWJsZTsKICAgICBXZWFr
PE5hdGl2ZUV4ZWN1dGFibGU+IG1fc2xvd0NhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsKIAot
ICAgIFJlZjxQcm9taXNlVGltZXI+IHByb21pc2VUaW1lcjsKLSAgICAKKyAgICBSZWY8RGVmZXJy
ZWRXb3JrVGltZXI+IGRlZmVycmVkV29ya1RpbWVyOworCiAgICAgSlNDZWxsKiBjdXJyZW50bHlE
ZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY3VycmVudGx5
RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mbyB7IG51bGxwdHIgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAppbmRleCA1ZGE2
OTZkNjk3ZGQ0NzUwNWQ3ZGM1MmI2MDZlMzE3NzRhNGUyNjVkLi5hZjQyZDhkNTcwOWYyMDZhN2E3
ODcwOGY2NWQ3ZTUwYjU1OGU2MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXV4
aWxpYXJ5QmFycmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCisjaW5jbHVk
ZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIgpAQCAt
NDEsNyArNDIsNiBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJQ
cm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKQEAgLTEzNCwxMCArMTM0
LDEwIEBAIHN0YXRpYyB2b2lkIHdlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+
PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2
bSwgZ2xvYmFsT2JqZWN0KSk7CiAKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9t
aXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVk
V29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNp
ZXMpKTsKIAogICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQs
IFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNr
VHlwZT4oW3Byb21pc2UsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0
aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5z
Y2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGdsb2JhbE9iamVj
dCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNW
YWx1ZSBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92
ZShyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
IHsKQEAgLTIxNCwxMSArMjE0LDExIEBAIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlCiAgICAgLy8g
VGhlIGluc3RhbmNlIGtlZXBzIHRoZSBtb2R1bGUgYWxpdmUuCiAgICAgZGVwZW5kZW5jaWVzLmFw
cGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW5zdGFuY2UpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGlt
ZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykp
OworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwg
V1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKICAgICAvLyBOb3RlOiBUaGlzIGNvbXBsZXRpb24gdGFz
ayBtYXkgb3IgbWF5IG5vdCBnZXQgY2FsbGVkIGltbWVkaWF0ZWx5LgogICAgIG1vZHVsZS0+bW9k
dWxlKCkuY29tcGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUo
KSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlwZT4oW3Byb21p
c2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9u
TW9kZSwgJnZtXSAoUmVmPFdhc206OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUg
ewogICAgICAgICBSZWZQdHI8V2FzbTo6Q29kZUJsb2NrPiBjb2RlQmxvY2sgPSBXVEZNb3ZlKHJl
ZkNvZGVCbG9jayk7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihw
cm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZl
S2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJl
c29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2RlQmxv
Y2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICByZXNvbHZlKHZtLCBn
bG9iYWxPYmplY3QsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgY29k
ZUJsb2NrLnJlbGVhc2VOb25OdWxsKCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUpOwogICAg
ICAgICB9KTsKQEAgLTIzMywxMyArMjMzLDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0
YW50aWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzCiAg
ICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVz
LmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7CiAgICAgZGVwZW5kZW5j
aWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgbW9kdWxlS2V5Q2VsbCkpOwotICAgIHZtLnBy
b21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5k
ZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBw
cm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNv
dXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZ2xvYmFsT2JqZWN0LCBidWZm
ZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChnbG9iYWxPYmplY3Qs
IHNjb3BlLCBwcm9taXNlKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZt
Lndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9k
dWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGws
IGdsb2JhbE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoV2FzbTo6TW9k
dWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJv
bWlzZVRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmpl
Y3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQp
LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
aW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAg
ICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6
OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1v
ZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKQEAgLTI2OCwxMCArMjY4LDEwIEBAIHN0YXRpYyB2b2lk
IHdlYkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAg
ICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7
CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0
KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwg
V1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVu
ZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNt
OjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSks
IGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBp
bXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9u
UmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hl
ZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVj
dCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
aW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZt
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2Vi
QXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKQEAgLTMzOSw3ICszMzksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWlu
Z0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBk
ZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwg
Z2xvYmFsT2JqZWN0KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2
bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtU
aW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7
CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21w
aWxlU3RyZWFtaW5nKQogICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKCktPmNvbXBpbGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9i
agogICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwog
ICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGds
b2JhbE9iamVjdCkpOwogICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25n
PEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwotICAgICAgICAgICAgICAgIHZtLnByb21pc2VU
aW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVz
KSk7CisgICAgICAgICAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3Jr
KHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzE4NDg4OD4gaWYgdGhlcmUncyBhbiBpbXBv
cnRPYmplY3QgYW5kIGl0IGNvbnRhaW5zIGEgTWVtb3J5LCB0aGVuIHdlIGNhbiBjb21waWxlIHRo
ZSBtb2R1bGUgd2l0aCB0aGUgcmlnaHQgbWVtb3J5IHR5cGUgKGZhc3Qgb3Igbm90KSBieSBsb29r
aW5nIGF0IHRoZSBtZW1vcnkncyB0eXBlLgogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+aW5zdGFudGlhdGVTdHJlYW1pbmcoZ2xvYmFsT2Jq
ZWN0LCBwcm9taXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBpbXBvcnRPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVC
bG9jay5oCmluZGV4IDQ4OTQ5YmY2ZWMyODBmZWYyNzNmMDQwNmVkMWNkMTA3ZDljNTVjZjIuLjgx
N2Y3OTQ3MDY4MzhlMThhNDIwNTk4YjJlNzI4NTVjYTI1ZTRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKQEAg
LTI4LDggKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJDYWxs
TGlua0luZm8uaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpT
Q2FzdC5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFBsYW47CiBjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKIAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjcmVhdGUoVk0m
LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTg0LDcgKzg0LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiwgUmVmPFdh
c206OkNvZGVCbG9jaz4mJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGI0YTA1ODMzY2Uz
NzhiMjYzNWE3OWEzN2Y0YjdiNDkyYjdlOWRjY2IuLmEzNGY1Nzc1MWFhNTU2Nzk1ZTkyZTBkMTUy
YTE2NjQ2NjJmNmI2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKQEAgLTIyOSw2ICsyMjksMTEgQEAgdm9pZCBKU0RPTUdsb2JhbE9i
amVjdDo6cHJvbWlzZVJlamVjdGlvblRyYWNrZXIoSlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2Jq
ZWN0LAogICAgIH0KIH0KIAordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRF
eGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6
RXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2Jq
ZWN0LCBleGNlcHRpb24pOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxG
cmFtZSkKIHsKICAgICBjbGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGQyOTg1
OGNmYTRiMGJlMGQ2MjEzOTBhODNkNzZkNWE4NTBiOWQyODAuLjczODY3ZDZhYjJlNWI0ZGJiNzBi
NzBhOWEzNjA5NDg0OWYwY2VlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICBKU0J1
aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucyYgYnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkgeyByZXR1
cm4gbV9idWlsdGluSW50ZXJuYWxGdW5jdGlvbnM7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2Vw
dGlvbiopOwogCiBwdWJsaWM6CiAgICAgfkpTRE9NR2xvYmFsT2JqZWN0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA4ODMyMTNlOTA2
MWYzOGI4YmI0MzM1NzliMjk4NjA5ODc3ODRlNzgyLi5hY2VhNzY2YWYxYzdkNWZlZWFlMTdhNjlm
OWUzYjM1Y2RlZTlhODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvZGVCbG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1Rp
bWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWljcm90YXNrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRp
bWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03OCw2
ICs3OCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1w
b3J0TWV0YVByb3BlcnRpZXMsCiAgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRlLAogICAgICZwcm9t
aXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKICAgICAmZGVmYXVsdExhbmd1YWdlLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAmY29tcGlsZVN0cmVhbWluZywKQEAgLTQ0Myw4ICs0NDQsOCBAQCB2b2lkIEpTRE9NV2luZG93
QmFzZTo6Y29tcGlsZVN0cmVhbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SgogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJU
KHZtLnByb21pc2VUaW1lci0+aGFzUGVuZGluZ1Byb21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VS
VCh2bS5wcm9taXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2Us
IGdsb2JhbE9iamVjdCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVu
ZGluZ1dvcmsocHJvbWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFz
RGVwZW5kYW5jeUluUGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBp
ZiAoYXV0byBpbnB1dFJlc3BvbnNlID0gSlNGZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNv
dXJjZSkpIHsKICAgICAgICAgaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxP
YmplY3QsIGlucHV0UmVzcG9uc2UsIHByb21pc2UsIFtwcm9taXNlXSAoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVT
aXplKSBtdXRhYmxlIHsKQEAgLTQ2MSw5ICs0NjIsOSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6
aW5zdGFudGlhdGVTdHJlYW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
UwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJUKHZtLnBy
b21pc2VUaW1lci0+aGFzUGVuZGluZ1Byb21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VSVCh2bS5w
cm9taXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2Jh
bE9iamVjdCkpOwotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBl
bmRpbmdQcm9taXNlKHByb21pc2UsIGltcG9ydGVkT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRl
ZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29yayhwcm9taXNlKSk7CisgICAgQVNTRVJUKHZt
LmRlZmVycmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBn
bG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGltcG9ydGVkT2JqZWN0KSk7CiAKICAgICBpZiAo
YXV0byBpbnB1dFJlc3BvbnNlID0gSlNGZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJj
ZSkpIHsKICAgICAgICAgaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmpl
Y3QsIGlucHV0UmVzcG9uc2UsIHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRlZE9iamVjdF0gKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggNTM3NmU4MGQwMDA1
Mzc3NjI1ODJhYTI1YmU5MWQxMmE4ZjU5N2VjNC4uYzQ0ZjJmYjNhMGIwNWRhYWIxYThhOWUyZjg5
YjUyZDg1MWViNDM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNjUsNiArNjUsNyBAQCBjb25zdCBHbG9i
YWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZQogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1l
dGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAm
cHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxl
U3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
Y3BwCmluZGV4IDA5NjVhODZjNDE4YmU2MWU2MmUxZmZkYWM2Y2ZlOGJhZjZiNGQ2ZWUuLmIxNGI4
MTU0MmRiODg5ZWM2ZDI1OWJjNWI3MGVmMmE1MDk5Yzk2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAt
NTcsNiArNTcsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibAogICAgIG51bGxwdHIsIC8vIG1v
ZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9k
dWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJl
cG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwK
ICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFu
dGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOTMxY2VlNzc3OWJmOTYxNDM4ZTgyMDE1MGM3
YTdmOGFiNDY3NTU0Ny4uNzE2YjFhNjliOGVlYzFkYTY0NzIwMWE0MzI2OTJiMzM4OTdlYjc4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTM3LDEyICszNywxMiBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVD
bGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJl
ZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Ryb25nSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTIsNyAr
MjUyLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphZGRUaW1lclNldE5vdGlmaWNh
dGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck4KIAogICAgIHByb2Nlc3NUaW1lcihtX3Zt
LT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5o
ZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9t
aXNlVGltZXIucHRyKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1l
ci5wdHIoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJT
ZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxs
YmFjayBjYWxsYmFjaykKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRp
bQogCiAgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7
CiAgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0g
ICAgcHJvY2Vzc1RpbWVyKG1fdm0tPnByb21pc2VUaW1lci5wdHIoKSk7CisgICAgcHJvY2Vzc1Rp
bWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGVjMDdhYzQ2MzUwZDJh
MzQyOWVhMDk4NzRlM2ZkZjJkZmRhOWU0NTEuLjY2ZWNkNTM2ZjgxM2QwMjljNDk3ZjFhZWE3ZjIx
OWVkZmM3NWIzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApA
QCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogCiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVk
ZSA8Z2xpYi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IDU5ZTYwYzVlNjBlN2M5ZjlkNmE0MjhjMmY5NGFiMDY1NGFl
MjkxOTIuLmZmMWY2NGU3MTNiZmI0MTIwODkxZThlNjcxNjhjYjM2NjI4MGUwNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAK
QEAgLTM3LDExICszNywxMSBAQAogI2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50LmgiCiAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9F
eGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJv
bWlzZVRpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDAxZDYyOWE4NmVkOGNjY2YyMGQ4YmJmODIz
M2NhYjU0YzYwOTdkNy4uODE4NzMxNmM0YjQ1NzU4ZGFhMDkyNjhhZTBmZTM1MzYxYzc4ODU1ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9t
aWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25H
cm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
anMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanM6IEFkZGVkLgor
ICAgICAgICAobWFrZVdlYWtSZWYpOgorICAgICAgICAodHVybkV2ZW50TG9vcCk6CisgICAgICAg
IChhc3luYyB0ZXN0KToKKyAgICAgICAgKiBqcy91bnRpdGxlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sOiBBZGRlZC4K
KwogMjAyMC0wNy0xMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDbGVhbiB1cCBTb3VyY2VQcm92aWRlciBhbmQgYWRkIGNhbGxlciByZWxhdGl2ZSBs
b2FkIHNjcmlwdCB0byBqc2MuY3BwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZk
NjY1M2JhOTA5YzFiMmRjOGRhZTAxZDEwMmVhNDkzZWI2OTg5YjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3Ry
eS5qcwpAQCAtMCwwICsxLDQ5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9
dHJ1ZSIpCisKK2FzeW5jVGVzdFN0YXJ0KDEpOwordmFyIG9iamVjdHMgPSBbXTsKK3ZhciB3ZWFr
UmVmcyA9IFtdOwordmFyIGZpbmFsaXplckNhbGxlZCA9IGZhbHNlOwordmFyIGZpbmFsaXphdGlv
blJlZ2lzdHJ5ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IGZpbmFsaXplckNhbGxl
ZCA9IHRydWUpOworZnVuY3Rpb24gbWFrZVdlYWtSZWYoKSB7IHJldHVybiBuZXcgV2Vha1JlZih7
IGZvbzogMSB9KTsgfQorbm9JbmxpbmUobWFrZVdlYWtSZWYpOworCitsZXQgbG9vcENvdW50ID0g
MTAwMDsKK2Z1bmN0aW9uIHR1cm5FdmVudExvb3AoKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNl
KGZ1bmN0aW9uKHJlc29sdmUpIHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAg
ICAgICBnYygpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9LCAwKTsKKyAgICB9
KTsKK30KKwordmFyIGk7Cithc3luYyBmdW5jdGlvbiB0ZXN0KCkgeworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgbG9vcENvdW50OyBpKyspIHsKKyAgICAgICAgbGV0IHdlYWsgPSBtYWtlV2Vha1Jl
ZigpOworICAgICAgICB3ZWFrUmVmcy5wdXNoKHdlYWspOworICAgICAgICBvYmplY3RzLnB1c2go
d2Vhay5kZXJlZigpKTsKKyAgICAgICAgZmluYWxpemF0aW9uUmVnaXN0cnkucmVnaXN0ZXIod2Vh
ay5kZXJlZigpKTsKKyAgICB9CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7CisKKyAgICBz
aG91bGRCZUZhbHNlKGBmaW5hbGl6ZXJDYWxsZWRgKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbG9v
cENvdW50OyBpKyspCisgICAgICAgIHNob3VsZEJlKGB3ZWFrUmVmc1tpXS5kZXJlZigpYCwgYG9i
amVjdHNbaV1gKTsKKworICAgIG9iamVjdHMubGVuZ3RoID0gMDsKKyAgICBvYmplY3RzID0gbnVs
bDsKKworICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsKKyAgICAvLyBXZSBuZWVkIHRvIHR1cm4g
dGhlIGV2ZW50IGxvb3AgYWdhaW4gc2luY2UgRlIgbWF5IG5vdCBoYXZlIGNhbGxlZCB0aGUgY2Fs
bGJhY2sgaW4gdGhlIGxhc3QgdHVybi4KKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7CisKKyAg
ICBzaG91bGRCZVRydWUoYGZpbmFsaXplckNhbGxlZGApOworICAgIHNob3VsZEJlVHJ1ZShgd2Vh
a1JlZnMuc29tZSgod2Vha1JlZikgPT4gd2Vha1JlZi5kZXJlZigpID09PSBudWxsKWApOworCisg
ICAgYXN5bmNUZXN0UGFzc2VkKCk7Cit9CisKK3Rlc3QoKS5jYXRjaChlID0+IGRlYnVnKGUpKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3VudGl0bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy91bnRpdGxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMGUxY2I3MDVhOWQ3NzkwODA0YzY5ODUyN2M4
NDMyMTNkNGFkNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy91bnRpdGxlZC5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VXZWFr
UmVmcz10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb24tcmVnaXN0cnkuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5h
bGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZp
bmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2NhNjVjMzhkMjQ4
MmU3ZjI5ZGE3YjE1YjZlYWIyNjNmMmExOTRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMDA3IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK1BBU1MgZmluYWxpemVyQ2FsbGVkIGlzIGZhbHNlCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyBmaW5hbGl6ZXJDYWxsZWQgaXMgdHJ1ZQorUEFTUyB3
ZWFrUmVmcy5zb21lKCh3ZWFrUmVmKSA9PiB3ZWFrUmVmLmRlcmVmKCkgPT09IG51bGwpIGlzIHRy
dWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdp
c3RyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQxZDdjZjQ3ZDRhMzQxNjk4YmQwZDU1ZWQ2YTg4OTBiZmU0MTI3NDkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJl
Z2lzdHJ5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0t
LXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTQyYzQ3Y2U1MTJjYmJmZjgxY2Q0Y2VlMjU5MzJiOGI4
ZWM4M2ZhNi4uZTM1ZGExY2ExMTNlZDY4NGRkMTY3YjFlYzJjYTAyOThmNTE2YWY1ZSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMTYgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvbkdyb3VwcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmVzb3Vy
Y2VzL3Y4LW1qc3VuaXQuanM6IEFkZGVkLgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9y
KToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcm90b3R5cGUudG9TdHJpbmcpOgor
ICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoY2xhc3NPZik6CisgICAgICAgIChWYWx1ZU9mKToK
KyAgICAgICAgKHByZXR0eVByaW50ZWQpOgorICAgICAgICAocHJldHR5UHJpbnRlZEFycmF5RWxl
bWVudCk6CisgICAgICAgIChmYWlsV2l0aE1lc3NhZ2UpOgorICAgICAgICAoZm9ybWF0RmFpbHVy
ZVRleHQpOgorICAgICAgICAoZmFpbCk6CisgICAgICAgIChkZWVwT2JqZWN0RXF1YWxzKToKKyAg
ICAgICAgKGRlZXBFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0U2FtZSk6CisgICAgICAgIChhc3Nl
cnROb3RTYW1lKToKKyAgICAgICAgKGFzc2VydEVxdWFscyk6CisgICAgICAgIChhc3NlcnROb3RF
cXVhbHMpOgorICAgICAgICAoYXNzZXJ0RXF1YWxzRGVsdGEpOgorICAgICAgICAoYXNzZXJ0QXJy
YXlFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0UHJvcGVydGllc0VxdWFsKToKKyAgICAgICAgKGFz
c2VydFRvU3RyaW5nRXF1YWxzKToKKyAgICAgICAgKGFzc2VydFRydWUpOgorICAgICAgICAoYXNz
ZXJ0RmFsc2UpOgorICAgICAgICAoYXNzZXJ0TnVsbCk6CisgICAgICAgIChhc3NlcnROb3ROdWxs
KToKKyAgICAgICAgKGV4ZWN1dGVDb2RlKToKKyAgICAgICAgKGNoZWNrRXhjZXB0aW9uKToKKyAg
ICAgICAgKGFzc2VydFRocm93cyk6CisgICAgICAgIChhc3NlcnRUaHJvd3NFcXVhbHMpOgorICAg
ICAgICAoYXNzZXJ0VGhyb3dzQXN5bmMpOgorICAgICAgICAoYXNzZXJ0SW5zdGFuY2VvZik6Cisg
ICAgICAgIChhc3NlcnREb2VzTm90VGhyb3cpOgorICAgICAgICAoYXNzZXJ0VW5yZWFjaGFibGUp
OgorICAgICAgICAoYXNzZXJ0Q29udGFpbnMpOgorICAgICAgICAoYXNzZXJ0TWF0Y2hlcyk6Cisg
ICAgICAgIChjb25jYXRlbmF0ZUVycm9ycyk6CisgICAgICAgIChhc3NlcnRQcm9taXNlUmVzdWx0
KToKKyAgICAgICAgKE9wdGltaXphdGlvblN0YXR1cyk6CisgICAgICAgIChhc3NlcnRVbm9wdGlt
aXplZCk6CisgICAgICAgIChhc3NlcnRPcHRpbWl6ZWQpOgorICAgICAgICAoaXNOZXZlck9wdGlt
aXplTGl0ZU1vZGUpOgorICAgICAgICAoaXNOZXZlck9wdGltaXplKToKKyAgICAgICAgKGlzQWx3
YXlzT3B0aW1pemUpOgorICAgICAgICAoaXNJbnRlcnByZXRlZCk6CisgICAgICAgIChpc09wdGlt
aXplZCk6CisgICAgICAgIChpc1R1cmJvRmFubmVkKToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRp
b25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAt
ZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRfZnVu
Yyk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVh
bG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3Ry
ZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanM6IEFkZGVkLgorICAgICAgICAo
VGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RGaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoVGVzdENv
bnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxlKToKKyAgICAgICAg
KFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXND
bGVhbnVwKToKKyAgICAgICAgKFRlc3RSZWdpc3RlclRhcmdldEFuZEhvbGRpbmdzU2FtZVZhbHVl
KToKKyAgICAgICAgKFRlc3RSZWdpc3RlcldpdGhvdXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6Cisg
ICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSk6CisgICAgICAgIChUZXN0
VW5yZWdpc3RlcldpdGhOb25GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0V2Vh
a1JlZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCk6CisgICAgICAgIChUZXN0V2Vha1JlZldpdGhQ
cm94eSk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFr
cmVmLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKHNldFRpbWVv
dXQpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xk
aW5ncy1hbGl2ZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChs
ZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0
cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC5jbGVhbnVwMCk6CisgICAgICAgIChsZXQuY2xlYW51cDEpOgorICAgICAgICAobGV0
LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFs
aXphdGlvbi1yZWdpc3RyaWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAg
ICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1yZWVudHJhbnQt
Z2MtZnJvbS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5yZWVudHJhbnRfZ2MpOgor
ICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6
YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzOiBBZGRlZC4KKyAgICAgICAgKGkucmVnaXN0
cmllcy5wdXNoLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChyZWdpc3RyaWVz
LmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanM6IEFk
ZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6
CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qczogQWRkZWQu
CisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAg
ICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qczogQWRkZWQuCisg
ICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAg
ICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanM6IEFkZGVkLgorICAgICAg
ICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICog
c3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzOiBBZGRlZC4KKyAgICAgICAg
KGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0
cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qczogQWRkZWQuCisgICAgICAgIChs
ZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJl
c3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToK
KyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC13ZWFrLXVu
cmVnaXN0ZXJ0b2tlbi5qczogQWRkZWQuCisgICAgICAgIChGUi5uZXcuRmluYWxpemF0aW9uUmVn
aXN0cnkpOgorICAgICAgICAodHJ5QWdhaW4pOgorCiAyMDIwLTA3LTEzICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIFNvdXJjZVByb3Zp
ZGVyIGFuZCBhZGQgY2FsbGVyIHJlbGF0aXZlIGxvYWQgc2NyaXB0IHRvIGpzYy5jcHAKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0LmpzIGIvSlNUZXN0cy9z
dHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc3NDYxZjc0YzkwMjIz
MjFmYzYwZTY4NmY3OTVkNTBlMzkyOTgxNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3Jlc291cmNlcy92OC1tanN1bml0LmpzCkBAIC0wLDAgKzEsODA5IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8v
ICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8g
ICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIE1qc1VuaXRBc3NlcnRpb25FcnJvcihtZXNzYWdl
KSB7CisgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7CisgIC8vIFRlbXBvcmFyaWx5IGluc3RhbGwg
YSBjdXN0b20gc3RhY2sgdHJhY2UgZm9ybWF0dGVyIGFuZCByZXN0b3JlIHRoZQorICAvLyBwcmV2
aW91cyB2YWx1ZS4KKyAgbGV0IHByZXZQcmVwYXJlU3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVT
dGFja1RyYWNlOworICB0cnkgeworICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gTWpzVW5p
dEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlOworICAgIC8vIFRoaXMgYWxsb3dzIGZl
dGNoaW5nIHRoZSBzdGFjayB0cmFjZSB1c2luZyBUcnlDYXRjaDo6U3RhY2tUcmFjZS4KKyAgICB0
aGlzLnN0YWNrID0gbmV3IEVycm9yKCJNanNVbml0QXNzZXJ0aW9uRXJyb3IiKS5zdGFjazsKKyAg
fSBmaW5hbGx5IHsKKyAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXZQcmVwYXJlU3Rh
Y2tUcmFjZTsKKyAgfQorfQorCisvKgorICogVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGluIGFsbCBt
aW5pIGpzdW5pdCB0ZXN0IGNhc2VzLiAgVGhlIHRlc3QKKyAqIGZyYW1ld29yayBleHBlY3RzIGxp
bmVzIHRoYXQgc2lnbmFsIGZhaWxlZCB0ZXN0cyB0byBzdGFydCB3aXRoCisgKiB0aGUgZi13b3Jk
IGFuZCBpZ25vcmUgYWxsIG90aGVyIGxpbmVzLgorICovCisKK01qc1VuaXRBc3NlcnRpb25FcnJv
ci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLm1lc3Nh
Z2UgKyAiXG5cblN0YWNrOiAiICsgdGhpcy5zdGFjazsKK307CisKKworLy8gRXhwZWN0ZWQgYW5k
IGZvdW5kIHZhbHVlcyB0aGUgc2FtZSBvYmplY3RzLCBvciB0aGUgc2FtZSBwcmltaXRpdmUKKy8v
IHZhbHVlcy4KKy8vIEZvciBrbm93biBwcmltaXRpdmUgdmFsdWVzLCBwbGVhc2UgdXNlIGFzc2Vy
dEVxdWFscy4KK3ZhciBhc3NlcnRTYW1lOworCisvLyBJbnZlcnNlIG9mIGFzc2VydFNhbWUuCit2
YXIgYXNzZXJ0Tm90U2FtZTsKKworLy8gRXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlcyBhcmUgaWRl
bnRpY2FsIHByaW1pdGl2ZSB2YWx1ZXMgb3IgZnVuY3Rpb25zCisvLyBvciBzaW1pbGFybHkgc3Ry
dWN0dXJlZCBvYmplY3RzIChjaGVja2luZyBpbnRlcm5hbCBwcm9wZXJ0aWVzCisvLyBvZiwgZS5n
LiwgTnVtYmVyIGFuZCBEYXRlIG9iamVjdHMsIHRoZSBlbGVtZW50cyBvZiBhcnJheXMKKy8vIGFu
ZCB0aGUgcHJvcGVydGllcyBvZiBub24tQXJyYXkgb2JqZWN0cykuCit2YXIgYXNzZXJ0RXF1YWxz
OworCisvLyBEZWVwIGVxdWFsaXR5IHByZWRpY2F0ZSB1c2VkIGJ5IGFzc2VydEVxdWFscy4KK3Zh
ciBkZWVwRXF1YWxzOworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIGFyZSBub3QgaWRl
bnRpY2FsIHByaW1pdGl2ZSB2YWx1ZXMgb3IgZnVuY3Rpb25zCisvLyBvciBzaW1pbGFybHkgc3Ry
dWN0dXJlZCBvYmplY3RzIChjaGVja2luZyBpbnRlcm5hbCBwcm9wZXJ0aWVzCisvLyBvZiwgZS5n
LiwgTnVtYmVyIGFuZCBEYXRlIG9iamVjdHMsIHRoZSBlbGVtZW50cyBvZiBhcnJheXMKKy8vIGFu
ZCB0aGUgcHJvcGVydGllcyBvZiBub24tQXJyYXkgb2JqZWN0cykuCit2YXIgYXNzZXJ0Tm90RXF1
YWxzOworCisvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1
ZSBpcyB3aXRoaW4gY2VydGFpbiB0b2xlcmFuY2UuCit2YXIgYXNzZXJ0RXF1YWxzRGVsdGE7CisK
Ky8vIFRoZSBmb3VuZCBvYmplY3QgaXMgYW4gQXJyYXkgd2l0aCB0aGUgc2FtZSBsZW5ndGggYW5k
IGVsZW1lbnRzCisvLyBhcyB0aGUgZXhwZWN0ZWQgb2JqZWN0LiBUaGUgZXhwZWN0ZWQgb2JqZWN0
IGRvZXNuJ3QgbmVlZCB0byBiZSBhbiBBcnJheSwKKy8vIGFzIGxvbmcgYXMgaXQncyAiYXJyYXkt
aXNoIi4KK3ZhciBhc3NlcnRBcnJheUVxdWFsczsKKworLy8gVGhlIGZvdW5kIG9iamVjdCBtdXN0
IGhhdmUgdGhlIHNhbWUgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIGFzIHRoZQorLy8gZXhwZWN0ZWQg
b2JqZWN0LiBUaGUgdHlwZSBvZiBvYmplY3QgaXNuJ3QgY2hlY2tlZC4KK3ZhciBhc3NlcnRQcm9w
ZXJ0aWVzRXF1YWw7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBzdHJpbmcgY29udmVyc2lvbiBvZiB0
aGUgZm91bmQgdmFsdWUgaXMgZXF1YWwgdG8KKy8vIHRoZSBleHBlY3RlZCBzdHJpbmcuIE9ubHkg
a2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHBsZWFzZQorLy8gY2hlY2sgdGhlIHJl
YWwgc3RydWN0dXJlIG9mIHRoZSBmb3VuZCB2YWx1ZS4KK3ZhciBhc3NlcnRUb1N0cmluZ0VxdWFs
czsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIHRydWUuIFVzZSB3aXRoIGJv
b2xlYW4gZXhwcmVzc2lvbnMKKy8vIGZvciB0ZXN0cyB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGVpciBv
d24gYXNzZXJ0WFhYIGZ1bmN0aW9uLgordmFyIGFzc2VydFRydWU7CisKKy8vIENoZWNrcyB0aGF0
IHRoZSBmb3VuZCB2YWx1ZSBpcyBmYWxzZS4KK3ZhciBhc3NlcnRGYWxzZTsKKworLy8gQ2hlY2tz
IHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIG51bGwuIEtlcHQgZm9yIGhpc3RvcmljYWwgY29tcGF0
aWJpbGl0eSwKKy8vIHBsZWFzZSBqdXN0IHVzZSBhc3NlcnRFcXVhbHMobnVsbCwgZXhwZWN0ZWQp
LgordmFyIGFzc2VydE51bGw7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyAq
bm90KiBudWxsLgordmFyIGFzc2VydE5vdE51bGw7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNz
ZWQgZnVuY3Rpb24gb3IgZXZhbCBjb2RlIHRocm93cyBhbiBleGNlcHRpb24uCisvLyBUaGUgb3B0
aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlvbiBjb25zdHJ1Y3RvciB0aGF0IHRo
ZQorLy8gdGhyb3duIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qgd2l0aCAiaW5zdGFuY2Vv
ZiIuCisvLyBUaGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBtZXNzYWdlIHR5cGUgc3Ry
aW5nIG9yIFJlZ0V4cCBvYmplY3QgdGhhdCBpcworLy8gY29tcGFyZWQgdG8gdGhlIG1lc3NhZ2Ug
b2YgdGhlIHRocm93biBleGNlcHRpb24uCit2YXIgYXNzZXJ0VGhyb3dzOworCisvLyBBc3NlcnQg
dGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRocm93cyBhbiBleGNlcHRpb24uCisvLyBUaGUgZXhj
ZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgc2Vjb25kIGFyZ3VtZW50IHVzaW5nIGFzc2Vy
dEVxdWFscy4KK3ZhciBhc3NlcnRUaHJvd3NFcXVhbHM7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBw
YXNzZWQgcHJvbWlzZSBkb2VzIG5vdCByZXNvbHZlLCBidXQgZXZlbnR1YWxseSB0aHJvd3MgYW4K
Ky8vIGV4Y2VwdGlvbi4gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBpcyBhbiBleGNlcHRp
b24gY29uc3RydWN0b3IgdGhhdCB0aGUKKy8vIHRocm93biBleGNlcHRpb24gaXMgY2hlY2tlZCBh
Z2FpbnN0IHdpdGggImluc3RhbmNlb2YiLgorLy8gVGhlIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50
IGlzIGEgbWVzc2FnZSB0eXBlIHN0cmluZyBvciBSZWdFeHAgb2JqZWN0IHRoYXQgaXMKKy8vIGNv
bXBhcmVkIHRvIHRoZSBtZXNzYWdlIG9mIHRoZSB0aHJvd24gZXhjZXB0aW9uLgordmFyIGFzc2Vy
dFRocm93c0FzeW5jOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9uIG9yIGV2
YWwgY29kZSBkb2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCit2YXIgYXNzZXJ0RG9lc05vdFRo
cm93OworCisvLyBBc3NlcnRzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9m
IHRoZSBjb25zdHJ1Y3RvciBwYXNzZWQKKy8vIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuCit2YXIg
YXNzZXJ0SW5zdGFuY2VvZjsKKworLy8gQXNzZXJ0IHRoYXQgdGhpcyBjb2RlIGlzIG5ldmVyIGV4
ZWN1dGVkIChpLmUuLCBhbHdheXMgZmFpbHMgaWYgZXhlY3V0ZWQpLgordmFyIGFzc2VydFVucmVh
Y2hhYmxlOworCisvLyBBc3NlcnQgdGhhdCB0aGUgZnVuY3Rpb24gY29kZSBpcyAobm90KSBvcHRp
bWl6ZWQuICBJZiAibm8gc3luYyIgaXMgcGFzc2VkCisvLyBhcyBzZWNvbmQgYXJndW1lbnQsIHdl
IGRvIG5vdCB3YWl0IGZvciB0aGUgY29uY3VycmVudCBvcHRpbWl6YXRpb24gdGhyZWFkIHRvCisv
LyBmaW5pc2ggd2hlbiBwb2xsaW5nIGZvciBvcHRpbWl6YXRpb24gc3RhdHVzLgorLy8gT25seSB3
b3JrcyB3aXRoIC0tYWxsb3ctbmF0aXZlcy1zeW50YXguCit2YXIgYXNzZXJ0T3B0aW1pemVkOwor
dmFyIGFzc2VydFVub3B0aW1pemVkOworCisvLyBBc3NlcnQgdGhhdCBhIHN0cmluZyBjb250YWlu
cyBhbm90aGVyIGV4cGVjdGVkIHN1YnN0cmluZy4KK3ZhciBhc3NlcnRDb250YWluczsKKworLy8g
QXNzZXJ0IHRoYXQgYSBzdHJpbmcgbWF0Y2hlcyBhIGdpdmVuIHJlZ2V4LgordmFyIGFzc2VydE1h
dGNoZXM7CisKKy8vIEFzc2VydCB0aGF0IGEgcHJvbWlzZSByZXNvbHZlcyBvciByZWplY3RzLgor
Ly8gUGFyYW1ldGVyczoKKy8vIHtwcm9taXNlfSAtIHRoZSBwcm9taXNlCisvLyB7c3VjY2Vzc30g
LSBvcHRpb25hbCAtIGEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBv
ZiB0aGUKKy8vICAgICAgICAgICAgIHJlc29sdmluZyBwcm9taXNlLgorLy8gIHtmYWlsfSAtICAg
b3B0aW9uYWwgLSBhIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQgb2Yg
dGhlCisvLyAgICAgICAgICAgICByZWplY3RpbmcgcHJvbWlzZS4gSWYgdGhlIHByb21pc2UgaXMg
cmVqZWN0ZWQgYnV0IG5vIHtmYWlsfQorLy8gICAgICAgICAgICAgY2FsbGJhY2sgaXMgc2V0LCB0
aGUgZXJyb3IgaXMgcHJvcGFnYXRlZCBvdXQgb2YgdGhlIHByb21pc2UKKy8vICAgICAgICAgICAg
IGNoYWluLgordmFyIGFzc2VydFByb21pc2VSZXN1bHQ7CisKK3ZhciBwcm9taXNlVGVzdENoYWlu
OwordmFyIHByb21pc2VUZXN0Q291bnQgPSAwOworCisvLyBUaGVzZSBiaXRzIG11c3QgYmUgaW4g
c3luYyB3aXRoIGJpdHMgZGVmaW5lZCBpbiBSdW50aW1lX0dldE9wdGltaXphdGlvblN0YXR1cwor
dmFyIFY4T3B0aW1pemF0aW9uU3RhdHVzID0geworICBrSXNGdW5jdGlvbjogMSA8PCAwLAorICBr
TmV2ZXJPcHRpbWl6ZTogMSA8PCAxLAorICBrQWx3YXlzT3B0aW1pemU6IDEgPDwgMiwKKyAga01h
eWJlRGVvcHRlZDogMSA8PCAzLAorICBrT3B0aW1pemVkOiAxIDw8IDQsCisgIGtUdXJib0Zhbm5l
ZDogMSA8PCA1LAorICBrSW50ZXJwcmV0ZWQ6IDEgPDwgNiwKKyAga01hcmtlZEZvck9wdGltaXph
dGlvbjogMSA8PCA3LAorICBrTWFya2VkRm9yQ29uY3VycmVudE9wdGltaXphdGlvbjogMSA8PCA4
LAorICBrT3B0aW1pemluZ0NvbmN1cnJlbnRseTogMSA8PCA5LAorICBrSXNFeGVjdXRpbmc6IDEg
PDwgMTAsCisgIGtUb3Btb3N0RnJhbWVJc1R1cmJvRmFubmVkOiAxIDw8IDExLAorICBrTGl0ZU1v
ZGU6IDEgPDwgMTIsCisgIGtNYXJrZWRGb3JEZW9wdGltaXphdGlvbjogMSA8PCAxMywKK307CisK
Ky8vIFJldHVybnMgdHJ1ZSBpZiAtLWxpdGUtbW9kZSBpcyBvbiBhbmQgd2UgY2FuJ3QgZXZlciB0
dXJuIG9uIG9wdGltaXphdGlvbi4KK3ZhciBpc05ldmVyT3B0aW1pemVMaXRlTW9kZTsKKworLy8g
UmV0dXJucyB0cnVlIGlmIC0tbm8tb3B0IG1vZGUgaXMgb24uCit2YXIgaXNOZXZlck9wdGltaXpl
OworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1hbHdheXMtb3B0IG1vZGUgaXMgb24uCit2YXIgaXNB
bHdheXNPcHRpbWl6ZTsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGluIGlu
dGVycHJldGVkLgordmFyIGlzSW50ZXJwcmV0ZWQ7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBnaXZl
biBmdW5jdGlvbiBpcyBvcHRpbWl6ZWQuCit2YXIgaXNPcHRpbWl6ZWQ7CisKKy8vIFJldHVybnMg
dHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpcyBjb21waWxlZCBieSBUdXJib0Zhbi4KK3ZhciBpc1R1
cmJvRmFubmVkOworCisvLyBNb25rZXktcGF0Y2hhYmxlIGFsbC1wdXJwb3NlIGZhaWx1cmUgaGFu
ZGxlci4KK3ZhciBmYWlsV2l0aE1lc3NhZ2U7CisKKy8vIFJldHVybnMgdGhlIGZvcm1hdHRlZCBm
YWlsdXJlIHRleHQuICBVc2VkIGJ5IHRlc3QtYXN5bmMuanMuCit2YXIgZm9ybWF0RmFpbHVyZVRl
eHQ7CisKKy8vIFJldHVybnMgYSBwcmV0dHktcHJpbnRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgdGhlIHBhc3NlZCB2YWx1ZS4KK3ZhciBwcmV0dHlQcmludGVkOworCisoZnVuY3Rpb24gKCkg
eyAgLy8gU2NvcGUgZm9yIHV0aWxpdHkgZnVuY3Rpb25zLgorCisgIHZhciBPYmplY3RQcm90b3R5
cGVUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CisgIHZhciBOdW1iZXJQcm90
b3R5cGVWYWx1ZU9mID0gTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgQm9vbGVhblBy
b3RvdHlwZVZhbHVlT2YgPSBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgU3RyaW5n
UHJvdG90eXBlVmFsdWVPZiA9IFN0cmluZy5wcm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIERhdGVQ
cm90b3R5cGVWYWx1ZU9mID0gRGF0ZS5wcm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIFJlZ0V4cFBy
b3RvdHlwZVRvU3RyaW5nID0gUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZzsKKyAgdmFyIEFycmF5
UHJvdG90eXBlRm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoOworICB2YXIgQXJyYXlQ
cm90b3R5cGVKb2luID0gQXJyYXkucHJvdG90eXBlLmpvaW47CisgIHZhciBBcnJheVByb3RvdHlw
ZU1hcCA9IEFycmF5LnByb3RvdHlwZS5tYXA7CisgIHZhciBBcnJheVByb3RvdHlwZVB1c2ggPSBB
cnJheS5wcm90b3R5cGUucHVzaDsKKworICB2YXIgQmlnSW50UHJvdG90eXBlVmFsdWVPZjsKKyAg
Ly8gVE9ETyhuZWlzKTogUmVtb3ZlIHRyeS1jYXRjaCBvbmNlIEJpZ0ludHMgYXJlIGVuYWJsZWQg
YnkgZGVmYXVsdC4KKyAgdHJ5IHsKKyAgICBCaWdJbnRQcm90b3R5cGVWYWx1ZU9mID0gQmlnSW50
LnByb3RvdHlwZS52YWx1ZU9mOworICB9IGNhdGNoIChlKSB7fQorCisgIGZ1bmN0aW9uIGNsYXNz
T2Yob2JqZWN0KSB7CisgICAgLy8gQXJndW1lbnQgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmlu
ZWQuCisgICAgdmFyIHN0cmluZyA9IE9iamVjdFByb3RvdHlwZVRvU3RyaW5nLmNhbGwob2JqZWN0
KTsKKyAgICAvLyBTdHJpbmcgaGFzIGZvcm1hdCBbb2JqZWN0IDxDbGFzc05hbWU+XS4KKyAgICBy
ZXR1cm4gc3RyaW5nLnN1YnN0cmluZyg4LCBzdHJpbmcubGVuZ3RoIC0gMSk7CisgIH0KKworCisg
IGZ1bmN0aW9uIFZhbHVlT2YodmFsdWUpIHsKKyAgICBzd2l0Y2ggKGNsYXNzT2YodmFsdWUpKSB7
CisgICAgICBjYXNlICJOdW1iZXIiOgorICAgICAgICByZXR1cm4gTnVtYmVyUHJvdG90eXBlVmFs
dWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkJpZ0ludCI6CisgICAgICAgIHJldHVybiBC
aWdJbnRQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiU3RyaW5nIjoK
KyAgICAgICAgcmV0dXJuIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAg
ICBjYXNlICJCb29sZWFuIjoKKyAgICAgICAgcmV0dXJuIEJvb2xlYW5Qcm90b3R5cGVWYWx1ZU9m
LmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiRGF0ZSI6CisgICAgICAgIHJldHVybiBEYXRlUHJv
dG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICB9CisgIH0KKworCisgIHByZXR0eVByaW50ZWQgPSBmdW5jdGlvbiBwcmV0
dHlQcmludGVkKHZhbHVlKSB7CisgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHsKKyAgICAgIGNh
c2UgInN0cmluZyI6CisgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7CisgICAg
ICBjYXNlICJiaWdpbnQiOgorICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKSArICJuIjsKKyAg
ICAgIGNhc2UgIm51bWJlciI6CisgICAgICAgIGlmICh2YWx1ZSA9PT0gMCAmJiAoMSAvIHZhbHVl
KSA8IDApIHJldHVybiAiLTAiOworICAgICAgICAvLyBGQUxMVEhST1VHSC4KKyAgICAgIGNhc2Ug
ImJvb2xlYW4iOgorICAgICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgIGNhc2UgImZ1bmN0aW9u
IjoKKyAgICAgIGNhc2UgInN5bWJvbCI6CisgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpOwor
ICAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4g
Im51bGwiOworICAgICAgICB2YXIgb2JqZWN0Q2xhc3MgPSBjbGFzc09mKHZhbHVlKTsKKyAgICAg
ICAgc3dpdGNoIChvYmplY3RDbGFzcykgeworICAgICAgICAgIGNhc2UgIk51bWJlciI6CisgICAg
ICAgICAgY2FzZSAiQmlnSW50IjoKKyAgICAgICAgICBjYXNlICJTdHJpbmciOgorICAgICAgICAg
IGNhc2UgIkJvb2xlYW4iOgorICAgICAgICAgIGNhc2UgIkRhdGUiOgorICAgICAgICAgICAgcmV0
dXJuIG9iamVjdENsYXNzICsgIigiICsgcHJldHR5UHJpbnRlZChWYWx1ZU9mKHZhbHVlKSkgKyAi
KSI7CisgICAgICAgICAgY2FzZSAiUmVnRXhwIjoKKyAgICAgICAgICAgIHJldHVybiBSZWdFeHBQ
cm90b3R5cGVUb1N0cmluZy5jYWxsKHZhbHVlKTsKKyAgICAgICAgICBjYXNlICJBcnJheSI6Cisg
ICAgICAgICAgICB2YXIgbWFwcGVkID0gQXJyYXlQcm90b3R5cGVNYXAuY2FsbCgKKyAgICAgICAg
ICAgICAgICB2YWx1ZSwgcHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCk7CisgICAgICAgICAgICB2
YXIgam9pbmVkID0gQXJyYXlQcm90b3R5cGVKb2luLmNhbGwobWFwcGVkLCAiLCIpOworICAgICAg
ICAgICAgcmV0dXJuICJbIiArIGpvaW5lZCArICJdIjsKKyAgICAgICAgICBjYXNlICJVaW50OEFy
cmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQ4QXJyYXkiOgorICAgICAgICAgIGNhc2UgIkludDE2
QXJyYXkiOgorICAgICAgICAgIGNhc2UgIlVpbnQxNkFycmF5IjoKKyAgICAgICAgICBjYXNlICJV
aW50MzJBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50MzJBcnJheSI6CisgICAgICAgICAgY2Fz
ZSAiRmxvYXQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJGbG9hdDY0QXJyYXkiOgorICAgICAg
ICAgICAgdmFyIGpvaW5lZCA9IEFycmF5UHJvdG90eXBlSm9pbi5jYWxsKHZhbHVlLCAiLCIpOwor
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdENsYXNzICsgIihbIiArIGpvaW5lZCArICJdKSI7Cisg
ICAgICAgICAgY2FzZSAiT2JqZWN0IjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKCIgKyBTdHJpbmcodmFs
dWUpICsgIikiOworICAgICAgICB9CisgICAgICAgIC8vIGNsYXNzT2YoKSByZXR1cm5lZCAiT2Jq
ZWN0Ii4KKyAgICAgICAgdmFyIG5hbWUgPSB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lOworICAgICAg
ICBpZiAobmFtZSkgcmV0dXJuIG5hbWUgKyAiKCkiOworICAgICAgICByZXR1cm4gIk9iamVjdCgp
IjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAiLS0gdW5rbm93biB2YWx1ZSAtLSI7
CisgICAgfQorICB9CisKKworICBmdW5jdGlvbiBwcmV0dHlQcmludGVkQXJyYXlFbGVtZW50KHZh
bHVlLCBpbmRleCwgYXJyYXkpIHsKKyAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGlu
ZGV4IGluIGFycmF5KSkgcmV0dXJuICIiOworICAgIHJldHVybiBwcmV0dHlQcmludGVkKHZhbHVl
KTsKKyAgfQorCisKKyAgZmFpbFdpdGhNZXNzYWdlID0gZnVuY3Rpb24gZmFpbFdpdGhNZXNzYWdl
KG1lc3NhZ2UpIHsKKyAgICB0aHJvdyBuZXcgTWpzVW5pdEFzc2VydGlvbkVycm9yKG1lc3NhZ2Up
OworICB9CisKKyAgZm9ybWF0RmFpbHVyZVRleHQgPSBmdW5jdGlvbihleHBlY3RlZFRleHQsIGZv
dW5kLCBuYW1lX29wdCkgeworICAgIHZhciBtZXNzYWdlID0gIkZhaWwiICsgInVyZSI7CisgICAg
aWYgKG5hbWVfb3B0KSB7CisgICAgICAvLyBGaXggdGhpcyB3aGVuIHdlIGRpdGNoIHRoZSBvbGQg
dGVzdCBydW5uZXIuCisgICAgICBtZXNzYWdlICs9ICIgKCIgKyBuYW1lX29wdCArICIpIjsKKyAg
ICB9CisKKyAgICB2YXIgZm91bmRUZXh0ID0gcHJldHR5UHJpbnRlZChmb3VuZCk7CisgICAgaWYg
KGV4cGVjdGVkVGV4dC5sZW5ndGggPD0gNDAgJiYgZm91bmRUZXh0Lmxlbmd0aCA8PSA0MCkgewor
ICAgICAgbWVzc2FnZSArPSAiOiBleHBlY3RlZCA8IiArIGV4cGVjdGVkVGV4dCArICI+IGZvdW5k
IDwiICsgZm91bmRUZXh0ICsgIj4iOworICAgIH0gZWxzZSB7CisgICAgICBtZXNzYWdlICs9ICI6
XG5leHBlY3RlZDpcbiIgKyBleHBlY3RlZFRleHQgKyAiXG5mb3VuZDpcbiIgKyBmb3VuZFRleHQ7
CisgICAgfQorICAgIHJldHVybiBtZXNzYWdlOworICB9CisKKyAgZnVuY3Rpb24gZmFpbChleHBl
Y3RlZFRleHQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIHJldHVybiBmYWlsV2l0aE1lc3NhZ2Uo
Zm9ybWF0RmFpbHVyZVRleHQoZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQpKTsKKyAgfQor
CisKKyAgZnVuY3Rpb24gZGVlcE9iamVjdEVxdWFscyhhLCBiKSB7CisgICAgdmFyIGFQcm9wcyA9
IE9iamVjdC5rZXlzKGEpOworICAgIGFQcm9wcy5zb3J0KCk7CisgICAgdmFyIGJQcm9wcyA9IE9i
amVjdC5rZXlzKGIpOworICAgIGJQcm9wcy5zb3J0KCk7CisgICAgaWYgKCFkZWVwRXF1YWxzKGFQ
cm9wcywgYlByb3BzKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFQcm9wcy5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKCFkZWVwRXF1YWxz
KGFbYVByb3BzW2ldXSwgYlthUHJvcHNbaV1dKSkgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisKKworICBkZWVwRXF1YWxzID0g
ZnVuY3Rpb24gZGVlcEVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpIHsKKyAgICAgIC8v
IENoZWNrIGZvciAtMC4KKyAgICAgIGlmIChhID09PSAwKSByZXR1cm4gKDEgLyBhKSA9PT0gKDEg
LyBiKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAodHlwZW9mIGEgIT09IHR5
cGVvZiBiKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKHR5cGVvZiBhID09PSAibnVtYmVyIikgcmV0
dXJuIGlzTmFOKGEpICYmIGlzTmFOKGIpOworICAgIGlmICh0eXBlb2YgYSAhPT0gIm9iamVjdCIg
JiYgdHlwZW9mIGEgIT09ICJmdW5jdGlvbiIpIHJldHVybiBmYWxzZTsKKyAgICAvLyBOZWl0aGVy
IGEgbm9yIGIgaXMgcHJpbWl0aXZlLgorICAgIHZhciBvYmplY3RDbGFzcyA9IGNsYXNzT2YoYSk7
CisgICAgaWYgKG9iamVjdENsYXNzICE9PSBjbGFzc09mKGIpKSByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG9iamVjdENsYXNzID09PSAiUmVnRXhwIikgeworICAgICAgLy8gRm9yIFJlZ0V4cCwganVz
dCBjb21wYXJlIHBhdHRlcm4gYW5kIGZsYWdzIHVzaW5nIGl0cyB0b1N0cmluZy4KKyAgICAgIHJl
dHVybiBSZWdFeHBQcm90b3R5cGVUb1N0cmluZy5jYWxsKGEpID09PQorICAgICAgICAgICAgIFJl
Z0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwoYik7CisgICAgfQorICAgIC8vIEZ1bmN0aW9ucyBh
cmUgb25seSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcy4KKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09
ICJGdW5jdGlvbiIpIHJldHVybiBmYWxzZTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09ICJBcnJh
eSIpIHsKKyAgICAgIHZhciBlbGVtZW50Q291bnQgPSAwOworICAgICAgaWYgKGEubGVuZ3RoICE9
PSBiLmxlbmd0aCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFkZWVwRXF1YWxz
KGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiU3RyaW5nIiB8fCBvYmplY3RDbGFzcyA9
PT0gIk51bWJlciIgfHwKKyAgICAgIG9iamVjdENsYXNzID09PSAiQmlnSW50IiB8fCBvYmplY3RD
bGFzcyA9PT0gIkJvb2xlYW4iIHx8CisgICAgICBvYmplY3RDbGFzcyA9PT0gIkRhdGUiKSB7Cisg
ICAgICBpZiAoVmFsdWVPZihhKSAhPT0gVmFsdWVPZihiKSkgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gZGVlcE9iamVjdEVxdWFscyhhLCBiKTsKKyAgfQorCisgIGFzc2VydFNhbWUg
PSBmdW5jdGlvbiBhc3NlcnRTYW1lKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICBp
ZiAoT2JqZWN0LmlzKGV4cGVjdGVkLCBmb3VuZCkpIHJldHVybjsKKyAgICBmYWlsKHByZXR0eVBy
aW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICB9OworCisgIGFzc2VydE5vdFNh
bWUgPSBmdW5jdGlvbiBhc3NlcnROb3RTYW1lKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpIHsK
KyAgICBpZiAoIU9iamVjdC5pcyhleHBlY3RlZCwgZm91bmQpKSByZXR1cm47CisgICAgZmFpbCgi
bm90IHNhbWUgYXMgIiArIHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQp
OworICB9CisKKyAgYXNzZXJ0RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKGV4cGVjdGVk
LCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICBpZiAoIWRlZXBFcXVhbHMoZm91bmQsIGV4cGVjdGVk
KSkgeworICAgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0
KTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0Tm90RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0Tm90
RXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICBpZiAoZGVlcEVxdWFscyhm
b3VuZCwgZXhwZWN0ZWQpKSB7CisgICAgICBmYWlsKCJub3QgZXF1YWxzIHRvICIgKyBwcmV0dHlQ
cmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBh
c3NlcnRFcXVhbHNEZWx0YSA9CisgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbHNEZWx0YShleHBl
Y3RlZCwgZm91bmQsIGRlbHRhLCBuYW1lX29wdCkgeworICAgIGlmIChNYXRoLmFicyhleHBlY3Rl
ZCAtIGZvdW5kKSA+IGRlbHRhKSB7CisgICAgICBmYWlsKHByZXR0eVByaW50ZWQoZXhwZWN0ZWQp
ICsgIiArLSAiICsgcHJldHR5UHJpbnRlZChkZWx0YSksIGZvdW5kLCBuYW1lX29wdCk7CisgICAg
fQorICB9OworCisKKyAgYXNzZXJ0QXJyYXlFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRBcnJheUVx
dWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgdmFyIHN0YXJ0ID0gIiI7Cisg
ICAgaWYgKG5hbWVfb3B0KSB7CisgICAgICBzdGFydCA9IG5hbWVfb3B0ICsgIiAtICI7CisgICAg
fQorICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5sZW5ndGgsIGZvdW5kLmxlbmd0aCwgc3RhcnQg
KyAiYXJyYXkgbGVuZ3RoIik7CisgICAgaWYgKGV4cGVjdGVkLmxlbmd0aCA9PT0gZm91bmQubGVu
Z3RoKSB7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgKytpKSB7
CisgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZFtpXSwgZm91bmRbaV0sCisgICAgICAgICAg
ICAgICAgICAgICBzdGFydCArICJhcnJheSBlbGVtZW50IGF0IGluZGV4ICIgKyBpKTsKKyAgICAg
IH0KKyAgICB9CisgIH07CisKKworICBhc3NlcnRQcm9wZXJ0aWVzRXF1YWwgPSBmdW5jdGlvbiBh
c3NlcnRQcm9wZXJ0aWVzRXF1YWwoZXhwZWN0ZWQsIGZvdW5kLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9vcHQpIHsKKyAgICAv
LyBDaGVjayBwcm9wZXJ0aWVzIG9ubHkuCisgICAgaWYgKCFkZWVwT2JqZWN0RXF1YWxzKGV4cGVj
dGVkLCBmb3VuZCkpIHsKKyAgICAgIGZhaWwoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCk7Cisg
ICAgfQorICB9OworCisKKyAgYXNzZXJ0VG9TdHJpbmdFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRU
b1N0cmluZ0VxdWFscyhleHBlY3RlZCwgZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9vcHQpIHsKKyAgICBpZiAoZXhwZWN0
ZWQgIT09IFN0cmluZyhmb3VuZCkpIHsKKyAgICAgIGZhaWwoZXhwZWN0ZWQsIGZvdW5kLCBuYW1l
X29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0VHJ1ZSA9IGZ1bmN0aW9uIGFzc2VydFRy
dWUodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgYXNzZXJ0RXF1YWxzKHRydWUsIHZhbHVlLCBuYW1l
X29wdCk7CisgIH07CisKKworICBhc3NlcnRGYWxzZSA9IGZ1bmN0aW9uIGFzc2VydEZhbHNlKHZh
bHVlLCBuYW1lX29wdCkgeworICAgIGFzc2VydEVxdWFscyhmYWxzZSwgdmFsdWUsIG5hbWVfb3B0
KTsKKyAgfTsKKworCisgIGFzc2VydE51bGwgPSBmdW5jdGlvbiBhc3NlcnROdWxsKHZhbHVlLCBu
YW1lX29wdCkgeworICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgeworICAgICAgZmFpbCgibnVsbCIs
IHZhbHVlLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0Tm90TnVsbCA9IGZ1
bmN0aW9uIGFzc2VydE5vdE51bGwodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVlID09
PSBudWxsKSB7CisgICAgICBmYWlsKCJub3QgbnVsbCIsIHZhbHVlLCBuYW1lX29wdCk7CisgICAg
fQorICB9OworCisgIGZ1bmN0aW9uIGV4ZWN1dGVDb2RlKGNvZGUpIHsKKyAgICBpZiAodHlwZW9m
IGNvZGUgPT09ICdmdW5jdGlvbicpICByZXR1cm4gY29kZSgpOworICAgIGlmICh0eXBlb2YgY29k
ZSA9PT0gJ3N0cmluZycpIHJldHVybiBldmFsKGNvZGUpOworICAgIGZhaWxXaXRoTWVzc2FnZSgK
KyAgICAgICAgJ0dpdmVuIGNvZGUgaXMgbmVpdGhlciBmdW5jdGlvbiBub3Igc3RyaW5nLCBidXQg
JyArICh0eXBlb2YgY29kZSkgKworICAgICAgICAnOiA8JyArIHByZXR0eVByaW50ZWQoY29kZSkg
KyAnPicpOworICB9CisKKyAgZnVuY3Rpb24gY2hlY2tFeGNlcHRpb24oZSwgdHlwZV9vcHQsIGNh
dXNlX29wdCkgeworICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBhc3Nl
cnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9mIHR5cGVfb3B0KTsKKyAgICAgIGFzc2VydEluc3Rh
bmNlb2YoZSwgdHlwZV9vcHQpOworICAgIH0KKyAgICAvLyBpZ25vcmUgY2F1c2Vfb3B0IGJlY2F1
c2Ugb3VyIGVycm9yIG1lc3NhZ2VzIGFyZSBub3QgdGhlIHNhbWUgYXMgVjgncworICAgIHJldHVy
bjsKKyAgICBpZiAoUmVnRXhwICE9PSB1bmRlZmluZWQgJiYgY2F1c2Vfb3B0IGluc3RhbmNlb2Yg
UmVnRXhwKSB7CisgICAgICBhc3NlcnRNYXRjaGVzKGNhdXNlX29wdCwgZS5tZXNzYWdlLCAnRXJy
b3IgbWVzc2FnZScpOworICAgIH0gZWxzZSBpZiAoY2F1c2Vfb3B0ICE9PSB1bmRlZmluZWQpIHsK
KyAgICAgIGFzc2VydEVxdWFscyhjYXVzZV9vcHQsIGUubWVzc2FnZSwgJ0Vycm9yIG1lc3NhZ2Un
KTsKKyAgICB9CisgIH0KKworICBhc3NlcnRUaHJvd3MgPSBmdW5jdGlvbiBhc3NlcnRUaHJvd3Mo
Y29kZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4g
MSAmJiB0eXBlX29wdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoJ2lu
dmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgdW5rbm93biB0eXBlX29wdCBnaXZlbicpOworICAg
IH0KKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdHlwZV9vcHQgIT09
ICdmdW5jdGlvbicpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgKKyAgICAgICAgICAnaW52YWxp
ZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCBtYXliZSB5b3Ugd2FudCBhc3NlcnRUaHJvd3NFcXVhbHMn
KTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgIGV4ZWN1dGVDb2RlKGNvZGUpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgIGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpOwor
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsZXQgbXNnID0gJ0RpZCBub3QgdGhyb3cgZXhjZXB0
aW9uJzsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlX29wdC5uYW1lICE9
PSB1bmRlZmluZWQpCisgICAgICBtc2cgKz0gJywgZXhwZWN0ZWQgJyArIHR5cGVfb3B0Lm5hbWU7
CisgICAgZmFpbFdpdGhNZXNzYWdlKG1zZyk7CisgIH07CisKKyAgYXNzZXJ0VGhyb3dzRXF1YWxz
ID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzRXF1YWxzKGZ1biwgdmFsKSB7CisgICAgdHJ5IHsKKyAg
ICAgIGZ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGFzc2VydFNhbWUodmFsLCBlKTsK
KyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZmFpbFdpdGhNZXNzYWdlKCdEaWQgbm90IHRocm93
IGV4Y2VwdGlvbiwgZXhwZWN0ZWQgJyArIHByZXR0eVByaW50ZWQodmFsKSk7CisgIH07CisKKyAg
YXNzZXJ0VGhyb3dzQXN5bmMgPSBmdW5jdGlvbiBhc3NlcnRUaHJvd3NBc3luYyhwcm9taXNlLCB0
eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5
cGVfb3B0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgnaW52YWxpZCB1
c2Ugb2YgYXNzZXJ0VGhyb3dzLCB1bmtub3duIHR5cGVfb3B0IGdpdmVuJyk7CisgICAgfQorICAg
IGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0eXBlX29wdCAhPT0gJ2Z1bmN0
aW9uJykgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdpbnZhbGlkIHVzZSBv
ZiBhc3NlcnRUaHJvd3MsIG1heWJlIHlvdSB3YW50IGFzc2VydFRocm93c0VxdWFscycpOworICAg
IH0KKyAgICBsZXQgbXNnID0gJ1Byb21pc2UgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24nOworICAg
IGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVfb3B0Lm5hbWUgIT09IHVuZGVmaW5l
ZCkKKyAgICAgIG1zZyArPSAnLCBleHBlY3RlZCAnICsgdHlwZV9vcHQubmFtZTsKKyAgICByZXR1
cm4gYXNzZXJ0UHJvbWlzZVJlc3VsdCgKKyAgICAgICAgcHJvbWlzZSwKKyAgICAgICAgLy8gVXNl
IHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhlIHBy
b21pc2UKKyAgICAgICAgLy8gY2hhaW4uCisgICAgICAgIHJlcyA9PiBzZXRUaW1lb3V0KF8gPT4g
ZmFpbCgnPHRocm93PicsIHJlcywgbXNnKSwgMCksCisgICAgICAgIGUgPT4gY2hlY2tFeGNlcHRp
b24oZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkpOworICB9OworCisgIGFzc2VydEluc3RhbmNlb2Yg
PSBmdW5jdGlvbiBhc3NlcnRJbnN0YW5jZW9mKG9iaiwgdHlwZSkgeworICAgIGlmICghKG9iaiBp
bnN0YW5jZW9mIHR5cGUpKSB7CisgICAgICB2YXIgYWN0dWFsVHlwZU5hbWUgPSBudWxsOworICAg
ICAgdmFyIGFjdHVhbENvbnN0cnVjdG9yID0gb2JqICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihv
YmopLmNvbnN0cnVjdG9yOworICAgICAgaWYgKHR5cGVvZiBhY3R1YWxDb25zdHJ1Y3RvciA9PT0g
J2Z1bmN0aW9uJykgeworICAgICAgICBhY3R1YWxUeXBlTmFtZSA9IGFjdHVhbENvbnN0cnVjdG9y
Lm5hbWUgfHwgU3RyaW5nKGFjdHVhbENvbnN0cnVjdG9yKTsKKyAgICAgIH0KKyAgICAgIGZhaWxX
aXRoTWVzc2FnZSgKKyAgICAgICAgICAnT2JqZWN0IDwnICsgcHJldHR5UHJpbnRlZChvYmopICsg
Jz4gaXMgbm90IGFuIGluc3RhbmNlIG9mIDwnICsKKyAgICAgICAgICAodHlwZS5uYW1lIHx8IHR5
cGUpICsgJz4nICsKKyAgICAgICAgICAoYWN0dWFsVHlwZU5hbWUgPyAnIGJ1dCBvZiA8JyArIGFj
dHVhbFR5cGVOYW1lICsgJz4nIDogJycpKTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0RG9lc05v
dFRocm93ID0gZnVuY3Rpb24gYXNzZXJ0RG9lc05vdFRocm93KGNvZGUsIG5hbWVfb3B0KSB7Cisg
ICAgdHJ5IHsKKyAgICAgIGV4ZWN1dGVDb2RlKGNvZGUpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgIGlmIChlIGluc3RhbmNlb2YgTWpzVW5pdEFzc2VydGlvbkVycm9yKSB0aHJvdyBlOworICAg
ICAgZmFpbFdpdGhNZXNzYWdlKCJ0aHJldyBhbiBleGNlcHRpb246ICIgKyAoZS5tZXNzYWdlIHx8
IGUpKTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0VW5yZWFjaGFibGUgPSBmdW5jdGlvbiBhc3Nl
cnRVbnJlYWNoYWJsZShuYW1lX29wdCkgeworICAgIC8vIEZpeCB0aGlzIHdoZW4gd2UgZGl0Y2gg
dGhlIG9sZCB0ZXN0IHJ1bm5lci4KKyAgICB2YXIgbWVzc2FnZSA9ICJGYWlsIiArICJ1cmU6IHVu
cmVhY2hhYmxlIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAgIG1lc3NhZ2UgKz0gIiAtICIg
KyBuYW1lX29wdDsKKyAgICB9CisgICAgZmFpbFdpdGhNZXNzYWdlKG1lc3NhZ2UpOworICB9Owor
CisgIGFzc2VydENvbnRhaW5zID0gZnVuY3Rpb24oc3ViLCB2YWx1ZSwgbmFtZV9vcHQpIHsKKyAg
ICBpZiAodmFsdWUgPT0gbnVsbCA/IChzdWIgIT0gbnVsbCkgOiB2YWx1ZS5pbmRleE9mKHN1Yikg
PT0gLTEpIHsKKyAgICAgIGZhaWwoImNvbnRhaW5zICciICsgU3RyaW5nKHN1YikgKyAiJyIsIHZh
bHVlLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisgIGFzc2VydE1hdGNoZXMgPSBmdW5jdGlv
bihyZWdleHAsIHN0ciwgbmFtZV9vcHQpIHsKKyAgICBpZiAoIShyZWdleHAgaW5zdGFuY2VvZiBS
ZWdFeHApKSB7CisgICAgICByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cCk7CisgICAgfQorICAg
IGlmICghc3RyLm1hdGNoKHJlZ2V4cCkpIHsKKyAgICAgIGZhaWwoInNob3VsZCBtYXRjaCAnIiAr
IHJlZ2V4cCArICInIiwgc3RyLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisgIGZ1bmN0aW9u
IGNvbmNhdGVuYXRlRXJyb3JzKHN0YWNrLCBleGNlcHRpb24pIHsKKyAgICAvLyBJZiB0aGUgZXhj
ZXB0aW9uIGRvZXMgbm90IGNvbnRhaW4gYSBzdGFjayB0cmFjZSwgd3JhcCBpdCBpbiBhIG5ldyBF
cnJvci4KKyAgICBpZiAoIWV4Y2VwdGlvbi5zdGFjaykgZXhjZXB0aW9uID0gbmV3IEVycm9yKGV4
Y2VwdGlvbik7CisKKyAgICAvLyBJZiB0aGUgZXhjZXB0aW9uIGFscmVhZHkgcHJvdmlkZXMgYSBz
cGVjaWFsIHN0YWNrIHRyYWNlLCB3ZSBkbyBub3QgbW9kaWZ5CisgICAgLy8gaXQuCisgICAgaWYg
KHR5cGVvZiBleGNlcHRpb24uc3RhY2sgIT09ICdzdHJpbmcnKSB7CisgICAgICByZXR1cm4gZXhj
ZXB0aW9uOworICAgIH0KKyAgICBleGNlcHRpb24uc3RhY2sgPSBzdGFjayArICdcblxuJyArIGV4
Y2VwdGlvbi5zdGFjazsKKyAgICByZXR1cm4gZXhjZXB0aW9uOworICB9CisKKyAgYXNzZXJ0UHJv
bWlzZVJlc3VsdCA9IGZ1bmN0aW9uKHByb21pc2UsIHN1Y2Nlc3MsIGZhaWwpIHsKKyAgICBpZiAo
c3VjY2VzcyAhPT0gdW5kZWZpbmVkKSBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9mIHN1
Y2Nlc3MpOworICAgIGlmIChmYWlsICE9PSB1bmRlZmluZWQpIGFzc2VydEVxdWFscygnZnVuY3Rp
b24nLCB0eXBlb2YgZmFpbCk7CisgICAgYXNzZXJ0SW5zdGFuY2VvZihwcm9taXNlLCBQcm9taXNl
KTsKKyAgICBjb25zdCBzdGFjayA9IChuZXcgRXJyb3IoKSkuc3RhY2s7CisKKyAgICB2YXIgdGVz
dF9wcm9taXNlID0gcHJvbWlzZS50aGVuKAorICAgICAgICByZXN1bHQgPT4geworICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBpZiAoLS1wcm9taXNlVGVzdENvdW50ID09IDApIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkg
c3VjY2VzcyhyZXN1bHQpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8v
IFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRo
ZSBwcm9taXNlCisgICAgICAgICAgICAvLyBjaGFpbi4KKyAgICAgICAgICAgIHNldFRpbWVvdXQo
XyA9PiB7CisgICAgICAgICAgICAgIHRocm93IGNvbmNhdGVuYXRlRXJyb3JzKHN0YWNrLCBlKTsK
KyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgcmVz
dWx0ID0+IHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKC0tcHJvbWlzZVRlc3RD
b3VudCA9PSAwKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmIChmYWls
ID09PSB1bmRlZmluZWQpIHRocm93IHJlc3VsdDsKKyAgICAgICAgICAgIGZhaWwocmVzdWx0KTsK
KyAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0
byB0aHJvdyB0aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAg
ICAgICAgLy8gY2hhaW4uCisgICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4geworICAgICAgICAg
ICAgICB0aHJvdyBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZSk7CisgICAgICAgICAgICB9LCAw
KTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgaWYgKCFwcm9taXNlVGVzdENoYWlu
KSBwcm9taXNlVGVzdENoYWluID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgLy8gd2FpdFVudGls
RG9uZSBpcyBpZGVtcG90ZW50LgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICsrcHJvbWlzZVRlc3RDb3VudDsKKyAgICByZXR1cm4gcHJvbWlzZVRlc3RDaGFpbi50aGVuKHRl
c3RfcHJvbWlzZSk7CisgIH07CisKKyAgdmFyIE9wdGltaXphdGlvblN0YXR1c0ltcGwgPSB1bmRl
ZmluZWQ7CisKKyAgdmFyIE9wdGltaXphdGlvblN0YXR1cyA9IGZ1bmN0aW9uKGZ1biwgc3luY19v
cHQpIHsKKyAgICBpZiAoT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9PT0gdW5kZWZpbmVkKSB7Cisg
ICAgICB0cnkgeworICAgICAgICBPcHRpbWl6YXRpb25TdGF0dXNJbXBsID0gbmV3IEZ1bmN0aW9u
KAorICAgICAgICAgICAgImZ1biIsICJzeW5jIiwgInJldHVybiAlR2V0T3B0aW1pemF0aW9uU3Rh
dHVzKGZ1biwgc3luYyk7Iik7CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRocm93IG5l
dyBFcnJvcigibmF0aXZlcyBzeW50YXggbm90IGFsbG93ZWQiKTsKKyAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIE9wdGltaXphdGlvblN0YXR1c0ltcGwoZnVuLCBzeW5jX29wdCk7CisgIH0KKwor
ICBhc3NlcnRVbm9wdGltaXplZCA9IGZ1bmN0aW9uIGFzc2VydFVub3B0aW1pemVkKAorICAgICAg
ZnVuLCBzeW5jX29wdCwgbmFtZV9vcHQsIHNraXBfaWZfbWF5YmVfZGVvcHRlZCA9IHRydWUpIHsK
KyAgICBpZiAoc3luY19vcHQgPT09IHVuZGVmaW5lZCkgc3luY19vcHQgPSAiIjsKKyAgICB2YXIg
b3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmNfb3B0KTsKKyAgICAvLyBU
ZXN0cyB0aGF0IHVzZSBhc3NlcnRVbm9wdGltaXplZCgpIGRvIG5vdCBtYWtlIHNlbnNlIGlmIC0t
YWx3YXlzLW9wdAorICAgIC8vIG9wdGlvbiBpcyBwcm92aWRlZC4gU3VjaCB0ZXN0cyBtdXN0IGFk
ZCAtLW5vLWFsd2F5cy1vcHQgdG8gZmxhZ3MgY29tbWVudC4KKyAgICBhc3NlcnRGYWxzZSgob3B0
X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtBbHdheXNPcHRpbWl6ZSkgIT09IDAsCisg
ICAgICAgICAgICAgICAgInRlc3QgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIC0tYWx3YXlzLW9w
dCIpOworICAgIGFzc2VydFRydWUoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5r
SXNGdW5jdGlvbikgIT09IDAsIG5hbWVfb3B0KTsKKyAgICBpZiAoc2tpcF9pZl9tYXliZV9kZW9w
dGVkICYmCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua01heWJl
RGVvcHRlZCkgIT09IDApIHsKKyAgICAgIC8vIFdoZW4gLS1kZW9wdC1ldmVyeS1uLXRpbWVzIGZs
YWcgaXMgc3BlY2lmaWVkIGl0J3Mgbm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICAgIC8vIHRoYXQg
cGFydGljdWxhciBmdW5jdGlvbiBpcyBzdGlsbCBkZW9wdGltaXplZCwgc28ga2VlcCBydW5uaW5n
IHRoZSB0ZXN0CisgICAgICAvLyB0byBzdHJlc3MgdGVzdCB0aGUgZGVvcHRpbWl6ZXIuCisgICAg
ICByZXR1cm47CisgICAgfQorICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAsIG5hbWVfb3B0KTsKKyAgfQorCisgIGFzc2Vy
dE9wdGltaXplZCA9IGZ1bmN0aW9uIGFzc2VydE9wdGltaXplZCgKKyAgICAgIGZ1biwgc3luY19v
cHQsIG5hbWVfb3B0LCBza2lwX2lmX21heWJlX2Rlb3B0ZWQgPSB0cnVlKSB7CisgICAgaWYgKHN5
bmNfb3B0ID09PSB1bmRlZmluZWQpIHN5bmNfb3B0ID0gIiI7CisgICAgdmFyIG9wdF9zdGF0dXMg
PSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jX29wdCk7CisgICAgLy8gVGVzdHMgdGhhdCB1
c2UgYXNzZXJ0T3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgZm9yIExpdGUgbW9kZSB3aGVy
ZQorICAgIC8vIG9wdGltaXphdGlvbiBpcyBhbHdheXMgZGlzYWJsZWQsIGV4cGxpY2l0bHkgZXhp
dCB0aGUgdGVzdCB3aXRoIGEgd2FybmluZy4KKyAgICBpZiAob3B0X3N0YXR1cyAmIFY4T3B0aW1p
emF0aW9uU3RhdHVzLmtMaXRlTW9kZSkgeworICAgICAgcHJpbnQoIldhcm5pbmc6IFRlc3QgdXNl
cyBhc3NlcnRPcHRpbWl6ZWQgaW4gTGl0ZSBtb2RlLCBza2lwcGluZyB0ZXN0LiIpOworICAgICAg
dGVzdFJ1bm5lci5xdWl0KDApOworICAgIH0KKyAgICAvLyBUZXN0cyB0aGF0IHVzZSBhc3NlcnRP
cHRpbWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBpZiAtLW5vLW9wdAorICAgIC8vIG9wdGlvbiBp
cyBwcm92aWRlZC4gU3VjaCB0ZXN0cyBtdXN0IGFkZCAtLW9wdCB0byBmbGFncyBjb21tZW50Lgor
ICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua05ldmVy
T3B0aW1pemUpICE9PSAwLAorICAgICAgICAgICAgICAgICJ0ZXN0IGRvZXMgbm90IG1ha2Ugc2Vu
c2Ugd2l0aCAtLW5vLW9wdCIpOworICAgIGFzc2VydFRydWUoCisgICAgICAgIChvcHRfc3RhdHVz
ICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAnc2hv
dWxkIGJlIGEgZnVuY3Rpb246ICcgKyBuYW1lX29wdCk7CisgICAgaWYgKHNraXBfaWZfbWF5YmVf
ZGVvcHRlZCAmJgorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtN
YXliZURlb3B0ZWQpICE9PSAwKSB7CisgICAgICAvLyBXaGVuIC0tZGVvcHQtZXZlcnktbi10aW1l
cyBmbGFnIGlzIHNwZWNpZmllZCBpdCdzIG5vIGxvbmdlciBndWFyYW50ZWVkCisgICAgICAvLyB0
aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgc3RpbGwgb3B0aW1pemVkLCBzbyBrZWVwIHJ1bm5p
bmcgdGhlIHRlc3QKKyAgICAgIC8vIHRvIHN0cmVzcyB0ZXN0IHRoZSBkZW9wdGltaXplci4KKyAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0VHJ1ZSgKKyAgICAgICAgKG9wdF9zdGF0dXMg
JiBWOE9wdGltaXphdGlvblN0YXR1cy5rT3B0aW1pemVkKSAhPT0gMCwKKyAgICAgICAgJ3Nob3Vs
ZCBiZSBvcHRpbWl6ZWQ6ICcgKyBuYW1lX29wdCk7CisgIH0KKworICBpc05ldmVyT3B0aW1pemVM
aXRlTW9kZSA9IGZ1bmN0aW9uIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlKCkgeworICAgIHZhciBv
cHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVy
biAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtMaXRlTW9kZSkgIT09IDA7Cisg
IH0KKworICBpc05ldmVyT3B0aW1pemUgPSBmdW5jdGlvbiBpc05ldmVyT3B0aW1pemUoKSB7Cisg
ICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXModW5kZWZpbmVkLCAiIik7Cisg
ICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua05ldmVyT3B0aW1p
emUpICE9PSAwOworICB9CisKKyAgaXNBbHdheXNPcHRpbWl6ZSA9IGZ1bmN0aW9uIGlzQWx3YXlz
T3B0aW1pemUoKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXModW5k
ZWZpbmVkLCAiIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0
dXMua0Fsd2F5c09wdGltaXplKSAhPT0gMDsKKyAgfQorCisgIGlzSW50ZXJwcmV0ZWQgPSBmdW5j
dGlvbiBpc0ludGVycHJldGVkKGZ1bikgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0
aW9uU3RhdHVzKGZ1biwgIiIpOworICAgIGFzc2VydFRydWUoKG9wdF9zdGF0dXMgJiBWOE9wdGlt
aXphdGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICAgICAgICAibm90IGEg
ZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1
cy5rT3B0aW1pemVkKSA9PT0gMCAmJgorICAgICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1p
emF0aW9uU3RhdHVzLmtJbnRlcnByZXRlZCkgIT09IDA7CisgIH0KKworICBpc09wdGltaXplZCA9
IGZ1bmN0aW9uIGlzT3B0aW1pemVkKGZ1bikgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1p
emF0aW9uU3RhdHVzKGZ1biwgIiIpOworICAgIGFzc2VydFRydWUoKG9wdF9zdGF0dXMgJiBWOE9w
dGltaXphdGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICAgICAgICAibm90
IGEgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0
YXR1cy5rT3B0aW1pemVkKSAhPT0gMDsKKyAgfQorCisgIGlzVHVyYm9GYW5uZWQgPSBmdW5jdGlv
biBpc1R1cmJvRmFubmVkKGZ1bikgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9u
U3RhdHVzKGZ1biwgIiIpOworICAgIGFzc2VydFRydWUoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICAgICAgICAibm90IGEgZnVu
Y3Rpb24iKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5r
T3B0aW1pemVkKSAhPT0gMCAmJgorICAgICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0
aW9uU3RhdHVzLmtUdXJib0Zhbm5lZCkgIT09IDA7CisgIH0KKworICAvLyBDdXN0b20gVjgtc3Bl
Y2lmaWMgc3RhY2sgdHJhY2UgZm9ybWF0dGVyIHRoYXQgaXMgdGVtcG9yYXJpbHkgaW5zdGFsbGVk
IG9uCisgIC8vIHRoZSBFcnJvciBvYmplY3QuCisgIE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVw
YXJlU3RhY2tUcmFjZSA9IGZ1bmN0aW9uKGVycm9yLCBzdGFjaykgeworICAgIC8vIFRyaWdnZXIg
ZGVmYXVsdCBmb3JtYXR0aW5nIHdpdGggcmVjdXJzaW9uLgorICAgIHRyeSB7CisgICAgICAvLyBG
aWx0ZXItb3V0IGFsbCBidXQgdGhlIGZpcnN0IG1qc3VuaXQgZnJhbWUuCisgICAgICBsZXQgZmls
dGVyZWRTdGFjayA9IFtdOworICAgICAgbGV0IGluTWpzdW5pdCA9IHRydWU7CisgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBmcmFtZSA9
IHN0YWNrW2ldOworICAgICAgICBpZiAoaW5NanN1bml0KSB7CisgICAgICAgICAgbGV0IGZpbGUg
PSBmcmFtZS5nZXRGaWxlTmFtZSgpOworICAgICAgICAgIGlmICghZmlsZSB8fCAhZmlsZS5lbmRz
V2l0aCgibWpzdW5pdC5qcyIpKSB7CisgICAgICAgICAgICBpbk1qc3VuaXQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIC8vIFB1c2ggdGhlIGxhc3QgbWpzdW5pdCBmcmFtZSwgdHlwaWNhbGx5IGNvbnRh
aW5pbmcgdGhlIGFzc2VydGlvbgorICAgICAgICAgICAgLy8gZnVuY3Rpb24uCisgICAgICAgICAg
ICBpZiAoaSA+IDApIEFycmF5UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIHN0YWNr
W2ktMV0pOworICAgICAgICAgICAgQXJyYXlQcm90b3R5cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFj
aywgc3RhY2tbaV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorICAgICAgICBBcnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBmcmFtZSk7
CisgICAgICB9CisgICAgICBzdGFjayA9IGZpbHRlcmVkU3RhY2s7CisKKyAgICAgIC8vIEluZmVy
IGZ1bmN0aW9uIG5hbWVzIGFuZCBjYWxjdWxhdGUge21heF9uYW1lX2xlbmd0aH0KKyAgICAgIGxl
dCBtYXhfbmFtZV9sZW5ndGggPSAwOworICAgICAgQXJyYXlQcm90b3R5cGVGb3JFYWNoLmNhbGwo
c3RhY2ssIGVhY2ggPT4geworICAgICAgICBsZXQgbmFtZSA9IGVhY2guZ2V0RnVuY3Rpb25OYW1l
KCk7CisgICAgICAgIGlmIChuYW1lID09IG51bGwpIG5hbWUgPSAiIjsKKyAgICAgICAgaWYgKGVh
Y2guaXNFdmFsKCkpIHsKKyAgICAgICAgICBuYW1lID0gbmFtZTsKKyAgICAgICAgfSBlbHNlIGlm
IChlYWNoLmlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgIG5hbWUgPSAibmV3ICIgKyBuYW1l
OworICAgICAgICB9IGVsc2UgaWYgKGVhY2guaXNOYXRpdmUoKSkgeworICAgICAgICAgIG5hbWUg
PSAibmF0aXZlICIgKyBuYW1lOworICAgICAgICB9IGVsc2UgaWYgKCFlYWNoLmlzVG9wbGV2ZWwo
KSkgeworICAgICAgICAgIG5hbWUgPSBlYWNoLmdldFR5cGVOYW1lKCkgKyAiLiIgKyBuYW1lOwor
ICAgICAgICB9CisgICAgICAgIGVhY2gubmFtZSA9IG5hbWU7CisgICAgICAgIG1heF9uYW1lX2xl
bmd0aCA9IE1hdGgubWF4KG5hbWUubGVuZ3RoLCBtYXhfbmFtZV9sZW5ndGgpCisgICAgICB9KTsK
KworICAgICAgLy8gRm9ybWF0IHN0YWNrIGZyYW1lcy4KKyAgICAgIHN0YWNrID0gQXJyYXlQcm90
b3R5cGVNYXAuY2FsbChzdGFjaywgZWFjaCA9PiB7CisgICAgICAgIGxldCBmcmFtZSA9ICIgICAg
YXQgIiArIGVhY2gubmFtZS5wYWRFbmQobWF4X25hbWVfbGVuZ3RoKTsKKyAgICAgICAgbGV0IGZp
bGVOYW1lID0gZWFjaC5nZXRGaWxlTmFtZSgpOworICAgICAgICBpZiAoZWFjaC5pc0V2YWwoKSkg
cmV0dXJuIGZyYW1lICsgIiAiICsgZWFjaC5nZXRFdmFsT3JpZ2luKCk7CisgICAgICAgIGZyYW1l
ICs9ICIgIiArIChmaWxlTmFtZSA/IGZpbGVOYW1lIDogIiIpOworICAgICAgICBsZXQgbGluZT0g
ZWFjaC5nZXRMaW5lTnVtYmVyKCk7CisgICAgICAgIGZyYW1lICs9ICIgIiArIChsaW5lID8gbGlu
ZSA6ICIiKTsKKyAgICAgICAgbGV0IGNvbHVtbiA9IGVhY2guZ2V0Q29sdW1uTnVtYmVyKCk7Cisg
ICAgICAgIGZyYW1lICs9IChjb2x1bW4gPyAiOiIgKyBjb2x1bW4gOiAiIik7CisgICAgICAgIHJl
dHVybiBmcmFtZTsKKyAgICAgIH0pOworICAgICAgcmV0dXJuICIiICsgZXJyb3IubWVzc2FnZSAr
ICJcbiIgKyBBcnJheVByb3RvdHlwZUpvaW4uY2FsbChzdGFjaywgIlxuIik7CisgICAgfSBjYXRj
aCAoZSkge307CisgICAgcmV0dXJuIGVycm9yLnN0YWNrOworICB9Cit9KSgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTg3NTAwMTg1NzU5YzcyZTZhY2IzMmRiMjY2YzY3NWVhMzQ1ZTU0MQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMK
QEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQor
CisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVu
dGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIg
cmVsYXRpdmUiKTsKK2xldCBSZWFsbSA9IHsgY3JlYXRlOiAkLmNyZWF0ZVJlYWxtLCBldmFsOiAo
ciwgcykgPT4gJC5ldmFsU2NyaXB0LmNhbGwociwgcykgIH07CisKK2xldCByID0gUmVhbG0uY3Jl
YXRlKCk7CisKK2xldCBjbGVhbnVwID0gUmVhbG0uZXZhbChyLCAidmFyIHN0b3JlZF9nbG9iYWw7
IGZ1bmN0aW9uIGNsZWFudXAoKSB7IHN0b3JlZF9nbG9iYWwgPSBnbG9iYWxUaGlzOyB9IGNsZWFu
dXA7Iik7CitsZXQgcmVhbG1fZ2xvYmFsX3RoaXMgPSBSZWFsbS5ldmFsKHIsICJnbG9iYWxUaGlz
Iik7CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8g
Q3JlYXRlIGFuIG9iamVjdCBhbmQgYSByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVn
aXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhh
dCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAg
ICAgICBmZy5yZWdpc3RlcihvYmplY3QpOworICAgIH0KK30pKCk7CisKK2djKCk7CisKKy8vIEFz
c2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW4gaXRzIFJlYWxtLgor
bGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBsZXQgc3RvcmVkX2dsb2JhbCA9IFJl
YWxtLmV2YWwociwgInN0b3JlZF9nbG9iYWw7Iik7CisgIGFzc2VydE5vdEVxdWFscyhzdG9yZWRf
Z2xvYmFsLCBnbG9iYWxUaGlzKTsKKyAgYXNzZXJ0RXF1YWxzKHN0b3JlZF9nbG9iYWwsIHJlYWxt
X2dsb2JhbF90aGlzKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFs
bS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVh
bG0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmQ0ZDAyNDdlMjcxMGRhNDg1YzkyNTcyYWJhOWMyNzZjZGVmMzVh
ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJv
bS1kaWZmZXJlbnQtcmVhbG0uanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBh
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1l
eHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgt
bWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKK2xldCBSZWFsbSA9IHsgY3JlYXRlOiAk
LmNyZWF0ZVJlYWxtLCBldmFsOiAociwgcykgPT4gJC5ldmFsU2NyaXB0LmNhbGwociwgcykgIH07
CisKK2xldCByID0gUmVhbG0uY3JlYXRlKCk7CisKK2xldCBjbGVhbnVwID0gUmVhbG0uZXZhbChy
LCAidmFyIHN0b3JlZF9nbG9iYWw7IGxldCBjbGVhbnVwID0gbmV3IFByb3h5KGZ1bmN0aW9uKCkg
eyBzdG9yZWRfZ2xvYmFsID0gZ2xvYmFsVGhpczt9LCB7fSk7IGNsZWFudXAiKTsKK2xldCByZWFs
bV9nbG9iYWxfdGhpcyA9IFJlYWxtLmV2YWwociwgImdsb2JhbFRoaXMiKTsKKworbGV0IGZnID0g
bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0
IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3Qg
bmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkg
a2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdpc3Rlcihv
YmplY3QsICJob2xkaW5ncyIpOworICAgIH0KK30pKCk7CisKK2djKCk7CisKKy8vIEFzc2VydCB0
aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW4gaXRzIFJlYWxtLgorbGV0IHRp
bWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBsZXQgc3RvcmVkX2dsb2JhbCA9IFJlYWxtLmV2
YWwociwgInN0b3JlZF9nbG9iYWw7Iik7CisgIGFzc2VydE5vdEVxdWFscyhzdG9yZWRfZ2xvYmFs
LCBnbG9iYWxUaGlzKTsKKyAgYXNzZXJ0RXF1YWxzKHN0b3JlZF9nbG9iYWwsIHJlYWxtX2dsb2Jh
bF90aGlzKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcyBiL0pTVGVz
dHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDU2MTZhNTAyMWFjYTc1NTFjODExOWViNjFlZmU5NDdiNTEyYzNjMQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanMKQEAg
LTAsMCArMSwxNTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1q
c3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0
RmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeSgoKSA9PiB7fSk7CisgIGFzc2VydEVxdWFscyhmZy50b1N0cmluZygpLCAiW29iamVjdCBG
aW5hbGl6YXRpb25SZWdpc3RyeV0iKTsKKyAgYXNzZXJ0Tm90U2FtZShmZy5fX3Byb3RvX18sIE9i
amVjdC5wcm90b3R5cGUpOworICBhc3NlcnRTYW1lKGZnLl9fcHJvdG9fXy5fX3Byb3RvX18sIE9i
amVjdC5wcm90b3R5cGUpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RGaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24oKSB7CisgIGxldCBjYXVnaHQgPSBmYWxzZTsK
KyAgbGV0IG1lc3NhZ2UgPSAiIjsKKyAgdHJ5IHsKKyAgICBsZXQgZiA9IEZpbmFsaXphdGlvblJl
Z2lzdHJ5KCgpID0+IHt9KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIG1lc3NhZ2UgPSBlLm1lc3Nh
Z2U7CisgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgfSBmaW5hbGx5IHsKKyAgICBhc3NlcnRUcnVlKGNh
dWdodCk7CisgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0aW9u
UmVnaXN0cnlDbGVhbnVwTm90Q2FsbGFibGUoKSB7CisgIGxldCBtZXNzYWdlID0gIkZpbmFsaXph
dGlvblJlZ2lzdHJ5OiBjbGVhbnVwIG11c3QgYmUgY2FsbGFibGUiOworICBhc3NlcnRUaHJvd3Mo
KCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKTsgfSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFsaXph
dGlvblJlZ2lzdHJ5KDEpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3Mo
KCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkobnVsbCk7IH0sIFR5cGVF
cnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXph
dGlvblJlZ2lzdHJ5V2l0aENhbGxhYmxlUHJveHlBc0NsZWFudXAoKSB7CisgIGxldCBoYW5kbGVy
ID0ge307CisgIGxldCBvYmogPSAoKSA9PiB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9i
aiwgaGFuZGxlcik7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShwcm94eSk7
Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5V2l0
aE5vbkNhbGxhYmxlUHJveHlBc0NsZWFudXAoKSB7CisgIGxldCBtZXNzYWdlID0gIkZpbmFsaXph
dGlvblJlZ2lzdHJ5OiBjbGVhbnVwIG11c3QgYmUgY2FsbGFibGUiOworICBsZXQgaGFuZGxlciA9
IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRs
ZXIpOworICBhc3NlcnRUaHJvd3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVn
aXN0cnkocHJveHkpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsKKworKGZ1bmN0aW9u
IFRlc3RSZWdpc3RlcldpdGhOb25PYmplY3RUYXJnZXQoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBtZXNzYWdlID0gIkZpbmFsaXphdGlv
blJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3RlcjogdGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0IjsK
KyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKDEsICJob2xkaW5ncyIpLCBUeXBlRXJy
b3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIoZmFsc2UsICJo
b2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
cmVnaXN0ZXIoImZvbyIsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3Nl
cnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIoU3ltYm9sKCksICJob2xkaW5ncyIpLCBUeXBlRXJy
b3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIobnVsbCwgImhv
bGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5y
ZWdpc3Rlcih1bmRlZmluZWQsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSko
KTsKKworKGZ1bmN0aW9uIFRlc3RSZWdpc3RlcldpdGhQcm94eSgpIHsKKyAgbGV0IGhhbmRsZXIg
PSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5k
bGVyKTsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAg
ZmcucmVnaXN0ZXIocHJveHkpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RSZWdpc3RlclRhcmdl
dEFuZEhvbGRpbmdzU2FtZVZhbHVlKCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVn
aXN0cnkoKCkgPT4ge30pOworICBsZXQgb2JqID0ge2E6IDF9OworICAvLyBTYW1lVmFsdWUodGFy
Z2V0LCBob2xkaW5ncykgbm90IG9rCisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3Rlcihv
YmosIG9iaiksIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICJGaW5hbGl6YXRpb25SZWdpc3Ry
eS5wcm90b3R5cGUucmVnaXN0ZXI6IHRhcmdldCBhbmQgaG9sZGluZ3MgbXVzdCBub3QgYmUgc2Ft
ZSIpOworICBsZXQgaG9sZGluZ3MgPSB7YTogMX07CisgIGZnLnJlZ2lzdGVyKG9iaiwgaG9sZGlu
Z3MpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RSZWdpc3RlcldpdGhvdXRGaW5hbGl6YXRpb25S
ZWdpc3RyeSgpIHsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEZpbmFsaXphdGlvblJlZ2lzdHJ5LnBy
b3RvdHlwZS5yZWdpc3Rlci5jYWxsKHt9LCB7fSwgImhvbGRpbmdzIiksIFR5cGVFcnJvcik7Cisg
IC8vIERvZXMgbm90IHRocm93OgorICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnko
KCkgPT4ge30pOworICBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXIuY2Fs
bChmZywge30sICJob2xkaW5ncyIpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVy
V2l0aE5vbkV4aXN0ZW50S2V5KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoKCkgPT4ge30pOworICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoeyJrIjogIndoYXRl
dmVyIn0pOworICBhc3NlcnRGYWxzZShzdWNjZXNzKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0
VW5yZWdpc3RlcldpdGhOb25GaW5hbGl6YXRpb25SZWdpc3RyeSgpIHsKKyAgYXNzZXJ0VGhyb3dz
KCgpID0+IEZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS51bnJlZ2lzdGVyLmNhbGwoe30s
IHt9KSwKKyAgICAgICAgICAgICAgIFR5cGVFcnJvcik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVz
dFVucmVnaXN0ZXJXaXRoTm9uT2JqZWN0VW5yZWdpc3RlclRva2VuKCkgeworICBsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBhc3NlcnRUaHJvd3MoKCkgPT4g
ZmcudW5yZWdpc3RlcigxKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVu
cmVnaXN0ZXIoQmlnSW50KDEpKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZn
LnVucmVnaXN0ZXIoJ29uZScpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
dW5yZWdpc3RlcihTeW1ib2woKSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBm
Zy51bnJlZ2lzdGVyKHRydWUpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
dW5yZWdpc3RlcihmYWxzZSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51
bnJlZ2lzdGVyKHVuZGVmaW5lZCksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBm
Zy51bnJlZ2lzdGVyKG51bGwpLCBUeXBlRXJyb3IpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RX
ZWFrUmVmQ29uc3RydWN0b3IoKSB7CisgIGxldCB3ciA9IG5ldyBXZWFrUmVmKHt9KTsKKyAgYXNz
ZXJ0RXF1YWxzKHdyLnRvU3RyaW5nKCksICJbb2JqZWN0IFdlYWtSZWZdIik7CisgIGFzc2VydE5v
dFNhbWUod3IuX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKKworICBsZXQgZGVyZWZfZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3IuX19wcm90b19fLCAiZGVyZWYi
KTsKKyAgYXNzZXJ0RXF1YWxzKHRydWUsIGRlcmVmX2Rlc2MuY29uZmlndXJhYmxlKTsKKyAgYXNz
ZXJ0RXF1YWxzKGZhbHNlLCBkZXJlZl9kZXNjLmVudW1lcmFibGUpOworICBhc3NlcnRFcXVhbHMo
ImZ1bmN0aW9uIiwgdHlwZW9mIGRlcmVmX2Rlc2MudmFsdWUpOworfSkoKTsKKworKGZ1bmN0aW9u
IFRlc3RXZWFrUmVmQ29uc3RydWN0b3JXaXRoTm9uT2JqZWN0KCkgeworICBsZXQgbWVzc2FnZSA9
ICJXZWFrUmVmOiB0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiOworICBhc3NlcnRUaHJvd3MoKCkg
PT4gbmV3IFdlYWtSZWYoKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgp
ID0+IG5ldyBXZWFrUmVmKDEpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3Mo
KCkgPT4gbmV3IFdlYWtSZWYoZmFsc2UpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRU
aHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoImZvbyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBh
c3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoU3ltYm9sKCkpLCBUeXBlRXJyb3IsIG1lc3Nh
Z2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYobnVsbCksIFR5cGVFcnJvciwg
bWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZih1bmRlZmluZWQpLCBU
eXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RXZWFrUmVmQ29uc3Ry
dWN0b3JDYWxsQXNGdW5jdGlvbigpIHsKKyAgbGV0IGNhdWdodCA9IGZhbHNlOworICBsZXQgbWVz
c2FnZSA9ICIiOworICB0cnkgeworICAgIGxldCBmID0gV2Vha1JlZih7fSk7CisgIH0gY2F0Y2gg
KGUpIHsKKyAgICBtZXNzYWdlID0gZS5tZXNzYWdlOworICAgIGNhdWdodCA9IHRydWU7CisgIH0g
ZmluYWxseSB7CisgICAgYXNzZXJ0VHJ1ZShjYXVnaHQpOworICB9Cit9KSgpOworCisoZnVuY3Rp
b24gVGVzdFdlYWtSZWZXaXRoUHJveHkoKSB7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBv
YmogPSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGxldCB3
ciA9IG5ldyBXZWFrUmVmKHByb3h5KTsKK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1hbmQtd2Vha3JlZi5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZGE4
YTBjOWZlZmM5ZDFkZTI2OTViMjNkNTIwMTQyOGZiMjZiMjMKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1hbmQtd2Vha3JlZi5qcwpAQCAt
MCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsZWQgPSBmYWxzZTsKK2xldCBjbGVhbnVwID0gZnVu
Y3Rpb24oaG9sZGluZ3MpIHsKKyAgbGV0IGhvbGRpbmdzX2xpc3QgPSBbXTsKKyAgaG9sZGluZ3Nf
bGlzdC5wdXNoKGhvbGRpbmdzKTsKKyAgYXNzZXJ0RXF1YWxzKDEsIGhvbGRpbmdzX2xpc3QubGVu
Z3RoKTsKKyAgYXNzZXJ0RXF1YWxzKCJob2xkaW5ncyIsIGhvbGRpbmdzX2xpc3RbMF0pOworICBj
bGVhbnVwX2NhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShjbGVhbnVwKTsKK2xldCB3ZWFrX3JlZnMgPSBbXTsKKyhmdW5jdGlvbigpIHsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgbyA9IHt9OworICAg
ICAgICB3ZWFrX3JlZnMucHVzaChuZXcgV2Vha1JlZihvKSk7CisgICAgICAgIGZnLnJlZ2lzdGVy
KG8sICJob2xkaW5ncyIpOworICAgIH0KK30pKCk7CisKKy8vIFNpbmNlIHRoZSBXZWFrUmVmIHdh
cyBjcmVhdGVkIGR1cmluZyB0aGlzIHR1cm4sIGl0IGlzIG5vdCBjbGVhcmVkIGJ5IEdDLiBUaGUK
Ky8vIHBvaW50ZXIgaW5zaWRlIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeSBpcyBub3QgY2xlYXJl
ZCBlaXRoZXIsIHNpbmNlIHRoZSBXZWFrUmVmCisvLyBrZWVwcyB0aGUgdGFyZ2V0IG9iamVjdCBh
bGl2ZS4KK2djKCk7CisoZnVuY3Rpb24oKSB7CisgICAgd2Vha19yZWZzLmZvckVhY2goKHdlYWtf
cmVmKSA9PiBhc3NlcnRFcXVhbHMoIm9iamVjdCIsIHR5cGVvZih3ZWFrX3JlZi5kZXJlZigpKSkp
OworfSkoKTsKKworLy8gVHJpZ2dlciBnYyBpbiBuZXh0IHRhc2sKK3NldFRpbWVvdXQoKCkgPT4g
eworICAgIGdjKCk7CisKKyAgICAvLyBDaGVjayB0aGF0IGNsZWFudXAgY2FsbGJhY2sgd2FzIGNh
bGxlZCBpbiBhIGZvbGxvdyB1cCB0YXNrCisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAg
IGFzc2VydFRydWUoY2xlYW51cF9jYWxsZWQpOworICAgICAgICBhc3NlcnRUcnVlKHdlYWtfcmVm
cy5zb21lKCh3ZWFrX3JlZikgPT4gd2Vha19yZWYuZGVyZWYoKSA9PT0gbnVsbCkpOworICAgIH0s
IDApOworfSwgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25y
ZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwMmM0
YmI4ZWU4NGUwMTBiNzRkNmRlYjM1YTBjZmFjZjE2ZDQ5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2
ZS5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9
MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5j
cmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNh
bGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsZWQgPSBmYWxzZTsKK2xldCBob2xk
aW5nc19saXN0ID0gW107CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGFz
c2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKyAgaG9sZGluZ3NfbGlzdC5wdXNoKGhvbGRpbmdz
KTsKKyAgY2xlYW51cF9jYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0
aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQgbzEgPSB7fTsKK2xldCBob2xkaW5ncyA9IHsnYSc6
ICd0aGlzIGlzIHRoZSBob2xkaW5ncyBvYmplY3QnfTsKKworLy8gSWduaXRpb24gaG9sZHMgcmVm
ZXJlbmNlcyB0byBvYmplY3RzIGluIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZXNlIHdpbGwgYmUK
Ky8vIHJlbGVhc2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGV4aXRzLiBTbyBvbmx5IGFjY2VzcyBvIGlu
c2lkZSBhIGZ1bmN0aW9uIHRvCisvLyBwcmV2ZW50IGFueSByZWZlcmVuY2VzIHRvIG9iamVjdHMg
aW4gdGVtcG9yYXJ5IHJlZ2lzdGVycyB3aGVuIGEgZ2MgaXMKKy8vIHRyaWdnZXJlZC4KKygoKSA9
PiB7ZmcucmVnaXN0ZXIobzEsIGhvbGRpbmdzKTt9KSgpCisKK2djKCk7Cithc3NlcnRGYWxzZShj
bGVhbnVwX2NhbGxlZCk7CisKKy8vIERyb3AgdGhlIGxhc3QgcmVmZXJlbmNlcyB0byBvMS4KKygo
KSA9PiB7bzEgPSBudWxsO30pKCkKKworLy8gRHJvcCB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhl
IGhvbGRpbmdzLiBUaGUgRmluYWxpemF0aW9uUmVnaXN0cnkga2VlcHMgaXQKKy8vIGFsaXZlLCBz
byB0aGUgY2xlYW51cCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhcyBub3JtYWwuCitob2xkaW5n
cyA9IG51bGw7CitnYygpOworYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQpOworCitsZXQgdGlt
ZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydFRydWUoY2xlYW51cF9jYWxsZWQpOwor
ICBhc3NlcnRFcXVhbHMoaG9sZGluZ3NfbGlzdC5sZW5ndGgsIDEpOworICBhc3NlcnRFcXVhbHMo
aG9sZGluZ3NfbGlzdFswXS5hLCAidGhpcyBpcyB0aGUgaG9sZGluZ3Mgb2JqZWN0Iik7Cit9CisK
K3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10
aW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LXNjaGVkdWxl
ZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDhjOTYzOTc1ZDJl
Y2ZiODc3NjU5MmNkYjU1ZmU4NTM3Mjc5YzIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRp
cGxlLXRpbWVzLmpzCkBAIC0wLDAgKzEsODUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VX
ZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdj
IC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisvLyBGbGFnczogLS1uby1zdHJlc3MtZmx1c2gtYnl0
ZWNvZGUKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRp
dmUiKTsKKworbGV0IGNsZWFudXAwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAwXzBfaG9s
ZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAwXzFfaG9sZGluZ3NfY291bnQgPSAwOworCits
ZXQgY2xlYW51cDFfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cDFfMF9ob2xkaW5nc19jb3Vu
dCA9IDA7CitsZXQgY2xlYW51cDFfMV9ob2xkaW5nc19jb3VudCA9IDA7CisKK2xldCBjbGVhbnVw
MCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGlmIChob2xkaW5nc1tob2xkaW5ncy5sZW5ndGgg
LSAxXSA9PSAiMCIpCisgICAgKytjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50OworICBlbHNlCisg
ICAgKytjbGVhbnVwMF8xX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXAwX2NhbGxfY291bnQ7
Cit9CisKK2xldCBjbGVhbnVwMSA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGlmIChob2xkaW5n
c1tob2xkaW5ncy5sZW5ndGggLSAxXSA9PSAiMCIpCisgICAgKytjbGVhbnVwMV8wX2hvbGRpbmdz
X2NvdW50OworICBlbHNlCisgICAgKytjbGVhbnVwMV8xX2hvbGRpbmdzX2NvdW50OworICArK2Ns
ZWFudXAxX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZzAgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoY2xlYW51cDApOworbGV0IGZnMSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVw
MSk7CisKKy8vIFJlZ2lzdGVyIDEgd2VhayByZWZlcmVuY2UgZm9yIGVhY2ggRmluYWxpemF0aW9u
UmVnaXN0cnkgYW5kIGtpbGwgdGhlIG9iamVjdHMgdGhleSBwb2ludCB0by4KKyhmdW5jdGlvbigp
IHsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAvLyBUaGUgb2JqZWN0
cyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2ls
bCB0aGVtLgorICAgIGxldCBvYmplY3RzID0gW107CisgICAgb2JqZWN0c1swXSA9IHt9OworICAg
IG9iamVjdHNbMV0gPSB7fTsKKworICAgIGZnMC5yZWdpc3RlcihvYmplY3RzWzBdLCAiaG9sZGlu
Z3MwLTAiKTsKKyAgICBmZzEucmVnaXN0ZXIob2JqZWN0c1sxXSwgImhvbGRpbmdzMS0wIik7CisK
KyAgICAvLyBEcm9wIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3RzLgorICAgIG9iamVjdHMg
PSBbXTsKKyAgfQorfSkoKTsKKworLy8gV2lsbCBzY2hlZHVsZSBib3RoIGZnMCBhbmQgZmcxIGZv
ciBjbGVhbnVwLgorZ2MoKTsKKworLy8gQmVmb3JlIHRoZSBjbGVhbnVwIHRhc2sgaGFzIGEgY2hh
bmNlIHRvIHJ1biwgZG8gdGhlIHNhbWUgdGhpbmcgYWdhaW4sIHNvIGJvdGgKKy8vIEZpbmFsaXph
dGlvblJlZ2lzdHJpZXMgYXJlIChhZ2Fpbikgc2NoZWR1bGVkIGZvciBjbGVhbnVwLiBUaGlzIGhh
cyB0byBiZSBhIElJRkUgZnVuY3Rpb24KKy8vIChzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxs
IHRoZSBvYmplY3RzKSBzbyB3ZSBjYW5ub3QgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uCisvLyBhcyBi
ZWZvcmUuCisoZnVuY3Rpb24oKSB7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7
CisgICAgbGV0IG9iamVjdHMgPSBbXTsKKyAgICBvYmplY3RzWzBdID0ge307CisgICAgb2JqZWN0
c1sxXSA9IHt9OworICAgIGZnMC5yZWdpc3RlcihvYmplY3RzWzBdLCAiaG9sZGluZ3MwLTEiKTsK
KyAgICBmZzEucmVnaXN0ZXIob2JqZWN0c1sxXSwgImhvbGRpbmdzMS0xIik7CisgICAgb2JqZWN0
cyA9IFtdOworICB9Cit9KSgpOworCitnYygpOworCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rp
b24oKSB7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF9jYWxsX2NvdW50KTsKKyAgYXNz
ZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwXzBfaG9sZGluZ3NfY291bnQpOworICBhc3NlcnROb3RF
cXVhbHMoMCwgY2xlYW51cDBfMV9ob2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygw
LCBjbGVhbnVwMV9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxXzBf
aG9sZGluZ3NfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfMF9ob2xkaW5n
c19jb3VudCk7Cit9CisKKy8vIEdpdmUgdGhlIGNsZWFudXAgdGFzayBhIGNoYW5jZSB0byBydW4u
CitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy92OC1tdWx0aXBsZS1kaXJ0eS1maW5hbGl6YXRpb24tcmVnaXN0cmllcy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmExMDczYTAzMWRiMDZjY2QzMDI2ZDhmMjRmMTI3ZmFkZGI4OThhYzQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1maW5hbGl6YXRpb24t
cmVnaXN0cmllcy5qcwpAQCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
V2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1n
YyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0
LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50MSA9IDA7
CitsZXQgY2xlYW51cF9jYWxsX2NvdW50MiA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhv
bGRpbmdzKSB7CisgICAgaWYgKGhvbGRpbmdzID09PSAiaG9sZGluZ3MxIikKKyAgICAgICAgKytj
bGVhbnVwX2NhbGxfY291bnQxOworICAgIGVsc2UgaWYgKGhvbGRpbmdzID09PSAiaG9sZGluZ3My
IikKKyAgICAgICAgKytjbGVhbnVwX2NhbGxfY291bnQyOworICAgIGVsc2UKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCk7Cit9CisKK2xldCBmZzEgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnko
Y2xlYW51cCk7CitsZXQgZmcyID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOwor
CisvLyBDcmVhdGUgdHdvIG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4gRmluYWxpemF0aW9u
UmVnaXN0cmllcy4gVGhlIG9iamVjdHMgbmVlZAorLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBz
byB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0MSA9IHt9
OworICAgICAgICBmZzEucmVnaXN0ZXIob2JqZWN0MSwgImhvbGRpbmdzMSIpOworCisgICAgICAg
IGxldCBvYmplY3QyID0ge307CisgICAgICAgIGZnMi5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGlu
Z3MyIik7CisgICAgfQorICAgIC8vIG9iamVjdDEgYW5kIG9iamVjdDIgZ28gb3V0IG9mIHNjb3Bl
LgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIGRpc2NvdmVyIGRpcnR5IFdlYWtDZWxscyBhbmQg
c2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2Nv
dW50MSk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50Mik7CisKKy8vIEFzc2Vy
dCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5j
ID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3Vu
dDEpOworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQyKTsKK30KKwor
c2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
djgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXJlZW50
cmFudC1nYy1mcm9tLWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE5N2RhYTRkMWQyNjUyNDgyMjAy
ZDExYjViMmNiYzQ1Y2IyNzIxMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4
LXJlZW50cmFudC1nYy1mcm9tLWNsZWFudXAuanMKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAyMCB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFr
LXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNhbGxlZCA9
IGZhbHNlOworbGV0IHJlZW50cmFudF9nYyA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICAgZ2Mo
KTsKKyAgICBjYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVn
aXN0cnkocmVlbnRyYW50X2djKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTA7ICsraSkKKyAgICAgICAgZmcucmVnaXN0ZXIoe30sIDQyKTsKK30pKCk7CisKK2dj
KCk7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0VHJ1ZShjYWxsZWQpOwor
fSwgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3MtZmluYWxpemF0aW9u
cmVnaXN0cnktZGlydHktZW5xdWV1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5h
bGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMjRlMmNkM2Vj
NzZkNWM4OTUxY2QyZmEwYTUxYTg1ZmQwODA5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy92OC1zdHJlc3MtZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHktZW5xdWV1ZS5qcwpA
QCAtMCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDIwIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1zdHJlc3MtY29tcGFjdGlvbiAtLWV4cG9zZS1nYworCisvLyBUZXN0IHRo
YXQgdGhlIGRpcnR5IEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgdGhhdCBhcmUgZW5xdWV1ZWQgZHVy
aW5nIEdDIGhhdmUKKy8vIHRoZWlyIHNsb3RzIGNvcnJlY3RseSByZWNvcmRlZCBieSB0aGUgR0Mu
CisKKy8vIDEpIENyZWF0ZSBtYW55IEpTRmluYWxpemF0aW9uUmVnaXN0cnkgb2JqZWN0cyBzbyB0
aGF0IHRoZXkgc3BhbiBzZXZlcmFsIHBhZ2VzCisvLyAocGFnZSBzaXplIGlzIDI1NmtiKS4KK2xl
dCByZWdpc3RyaWVzID0gW107Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMjQgKiA4OyBpKyspIHsK
KyAgcmVnaXN0cmllcy5wdXNoKG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSkpOwor
fQorCisvLyAyKSBGb3JjZSB0d28gR0NzIHRvIGVuc3VyZSB0aGF0IEpTRmluYWxpemF0b25SZWdp
c3RyeSBvYmplY3RzIGFyZSB0ZW51cmVkLgorZ2MoKTsKK2djKCk7CisKKy8vIDMpIEluIGEgZnVu
Y3Rpb246IGNyZWF0ZSBhIGR1bW15IHRhcmdldCBhbmQgcmVnaXN0ZXIgaXQgaW4gYWxsCisvLyBK
U0ZpbmFsaXphdG9uUmVnaXN0cnkgb2JqZWN0cy4KKyhmdW5jdGlvbigpIHsKKyAgbGV0IGdhcmJh
Z2UgPSB7fTsKKyAgcmVnaXN0cmllcy5mb3JFYWNoKChmcikgPT4geworICAgIGZyLnJlZ2lzdGVy
KGdhcmJhZ2UsIDQyKTsKKyAgfSk7CisgIGdhcmJhZ2UgPSBudWxsOworfSkoKTsKKworLy8gNCkg
T3V0c2lkZSB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIHRhcmdldCBpcyB1bnJlYWNoYWJsZTogZm9y
Y2UgR0MgdG8gY29sbGVjdAorLy8gdGhlIG9iamVjdC4KK2djKCk7CisKKy8vIDUpIEZvcmNlIGFu
b3RoZXIgR0MgdG8gdGVzdCB0aGF0IHRoZSBzbG90IHdhcyBjb3JyZWN0bHkgdXBkYXRlZC4KK2dj
KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJj
NjBjZmRhNzdmMGFmY2ExYjVjYjlmZGRhZmVhYzBkOTA3NTBiYgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcwpAQCAtMCwwICsxLDM4IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAy
MDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1o
YXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCits
b2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCits
ZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGlu
Z3MpIHsKKyAgICBhc3NlcnRFcXVhbHMoaG9sZGluZ3MsIHVuZGVmaW5lZCk7CisgICAgKytjbGVh
bnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShj
bGVhbnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZp
bmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzIHRvIGJlIGluc2lkZQorLy8gYSBj
bG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkg
eworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmpl
Y3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0KTsKKyAgICB9Cit9KSgpOworCisv
LyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgc2NoZWR1bGUgY2xl
YW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8g
QXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0
X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxs
X2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkNzJiMGY4
YjNiYjhlYmE2OTBhMTYwZDE2MzhkMzllNDNmNDcyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFudXAuanMKQEAgLTAsMCArMSw0NyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQg
MjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0t
aGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKwor
bG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKwor
bGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRp
bmdzKSB7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MiLCBob2xkaW5ncyk7CisgICsrY2xlYW51
cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xl
YW51cCk7CitsZXQga2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworLy8gQ3JlYXRlIGFu
IG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUg
b2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJl
bGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVn
aXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiLCBrZXkpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMg
R0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0IGFuZCBzY2hlZHVsZSBjbGVhbnVwLgor
Z2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQg
dGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9
IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQp
OworICAgIGxldCBvbGRfY2xlYW51cF9jYWxsX2NvdW50ID0gY2xlYW51cF9jYWxsX2NvdW50Owor
CisgICAgLy8gVW5yZWdpc3RlciBhbiBhbHJlYWR5IGNsZWFuZWQtdXAgd2VhayByZWZlcmVuY2Uu
CisgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisgICAgLy8gU2luY2Ugd2Ug
bWF5IG5vdCBjb2xsZWN0IGV2ZXJ5dGhpbmcgd2UgZG9uJ3Qga25vdyB3aGF0IHN1Y2Nlc3Mgd2ls
bCBiZSB1bmxpa2UgdjguCisgICAgLy8gYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7CisKKyAgICAvLyBB
c3NlcnQgdGhhdCBpdCBkaWRuJ3QgZG8gYW55dGhpbmcuCisgICAgc2V0VGltZW91dCgoKSA9PiB7
IGFzc2VydEVxdWFscyhvbGRfY2xlYW51cF9jYWxsX2NvdW50LCBjbGVhbnVwX2NhbGxfY291bnQp
OyB9LCAwKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qcyBiL0pTVGVzdHMv
c3RyZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNkMWUz
ZWM2YTNhZWJmYzc4NzZjN2RkYWY3ZDdkYjhjMTUzZmVhZAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFudXAuanMKQEAgLTAsMCArMSw0
MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmln
aHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6
IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcg
LS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5q
cyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7Cits
ZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICsrY2xlYW51cF9jYWxsX2NvdW50
OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQg
a2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQg
cmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRz
CisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwg
dGhlbSEKKworKGZ1bmN0aW9uKCkgeworICBsZXQgb2JqZWN0ID0ge307CisgIGZnLnJlZ2lzdGVy
KG9iamVjdCwgIm15IGhvbGRpbmdzIiwga2V5KTsKKworICAvLyBDbGVhciB0aGUgV2Vha0NlbGwg
YmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgaXQuCisgIGxldCBzdWNjZXNz
ID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworCisgIC8vIG9i
amVjdCBnb2VzIG91dCBvZiBzY29wZS4KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWlt
IHRoZSB0YXJnZXQgb2JqZWN0LgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxf
Y291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3b24ndCBiZSBj
YWxsZWQsIHNpbmNlIHdlIGNhbGxlZCB1bnJlZ2lzdGVyLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1
bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKK30KKwor
c2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
djgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWNhbGxlZC10d2ljZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGVmZTgyNGI2Yzc0YTA1OGNiMWQxZWIz
ODcxZWNlNWJhZjhiYTczCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5y
ZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMKQEAgLTAsMCArMSw0NiBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVj
dCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMg
LS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMv
djgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9j
b3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICsrY2xlYW51
cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xl
YW51cCk7CitsZXQga2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworLy8gQ3JlYXRlIGFu
IG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUg
b2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJl
bGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICBsZXQgb2JqZWN0ID0ge307Cisg
IGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwga2V5KTsKKworICAvLyBVbnJlZ2lzdGVy
IGJlZm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNlIHRvIGRpc2NvdmVyIHRoZSBvYmplY3QuCisgIGxl
dCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOwor
CisgIC8vIENhbGwgdW5yZWdpc3RlciBhZ2FpbiAoanVzdCB0byBhc3NlcnQgd2UgaGFuZGxlIHRo
aXMgZ3JhY2VmdWxseSkuCisgIHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisgIGFzc2Vy
dEZhbHNlKHN1Y2Nlc3MpOworCisgIC8vIG9iamVjdCBnb2VzIG91dCBvZiBzY29wZS4KK30pKCk7
CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0LgorZ2MoKTsKK2Fz
c2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUg
Y2xlYW51cCBmdW5jdGlvbiB3b24ndCBiZSBjYWxsZWQsIHNpbmNlIHRoZSB3ZWFrIHJlZmVyZW5j
ZQorLy8gd2FzIHVucmVnaXN0ZXJlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItaW5zaWRlLWNsZWFudXAyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNp
ZGUtY2xlYW51cDIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIyMTIyODY2M2FkMmNlZDU5Njk1YTUzYzViM2Iw
ZTVmN2NiMDBiYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItaW5zaWRlLWNsZWFudXAyLmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3Qg
YXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0t
ZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4
LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjYWxsZWQgPSBmYWxzZTsK
K2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgLy8gU2VlIHdoaWNoIHRhcmdl
dCB3ZSdyZSBjbGVhbmluZyB1cCBhbmQgdW5yZWdpc3RlciB0aGUgb3RoZXIgb25lLgorICBpZiAo
aG9sZGluZ3MgPT0gMSkgeworICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkyKTsK
KyAgICBhc3NlcnRUcnVlKHN1Y2Nlc3MgfHwgY2FsbGVkKTsKKyAgfSBlbHNlIHsKKyAgICBhc3Nl
cnRTYW1lKGhvbGRpbmdzLCAyKTsKKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5
MSk7CisgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzIHx8IGNhbGxlZCk7CisgIH0KKyAgY2FsbGVkID0g
dHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOwor
bGV0IGtleTEgPSB7ImsiOiAiZmlyc3Qga2V5In07CitsZXQga2V5MiA9IHsiayI6ICJzZWNvbmQg
a2V5In07CisvLyBDcmVhdGUgdHdvIG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4gdGhlIEZp
bmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0cworLy8gbmVlZCB0byBiZSBpbnNpZGUgYSBj
bG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkg
eworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmpl
Y3QxID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDEsIDEsIGtleTEpOworICAgICAg
ICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAyLCBrZXky
KTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0YXJnZXQgb2JqZWN0
cyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRGYWxzZShjYWxsZWQpOworCisv
LyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkIGFuZCBjbGVhbmVk
IHVwIG9uZSBob2xkaW5ncyAoYnV0IG5vdCB0aGUgb3RoZXIgb25lKS4KK2xldCB0aW1lb3V0X2Z1
bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRUcnVlKGNhbGxlZCk7Cit9CisKK3NldFRpbWVv
dXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVn
aXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1p
bnNpZGUtY2xlYW51cDMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmYWE3YjZlM2M0M2JmMmIxMjg2NmYyNDBj
YzZlYWMxODdkMjFiOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVn
aXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2pl
Y3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZz
IC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2Vz
L3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxf
Y291bnQgPSAwOworbGV0IGNsZWFudXBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoaG9sZGluZ3MsICJob2xkaW5n
cyIpOworCisgIC8vIFRoZXJlJ3MgbW9yZXMgb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5IHRoYXQg
d2UgaGF2ZW4ndAorICAvLyBjbGVhbmVkIHVwIHlldCBzbyB3ZSBzaG91bGQgYmUgYWJsZSB0byB1
bnJlZ2lzdGVyIHRoZQorICAvLyBjYWxsYmFjayBmb3IgdGhhdCBvbmUuCisgIGxldCBzdWNjZXNz
ID0gZmcudW5yZWdpc3RlcihrZXkpOworCisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgKytj
bGVhbnVwX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworLy8gQ3JlYXRlIGFuIG9i
amVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2Jq
ZWN0IG5lZWRzIHRvIGJlIGluc2lkZQorLy8gYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlh
Ymx5IGtpbGwgdGhlbSEKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07CisKKyhm
dW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAg
ICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGxldCBvYmplY3QyID0ge307CisgICAgICAgIGZn
LnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwga2V5KTsKKyAgICAgICAgZmcucmVnaXN0ZXIo
b2JqZWN0MiwgImhvbGRpbmdzIiwga2V5KTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdp
bGwgZGlzY292ZXIgZGlydHkgV2Vha0NlbGxzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsK
K2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0
aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0
aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMSwgY2xlYW51cF9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0
RXF1YWxzKDEsIGNsZWFudXBfaG9sZGluZ3NfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVv
dXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLW1h
bnkuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgzMzk5ZTY1ZjBkMjc0MjYwOGIxMzg0NmQ1YTVkOTE3YWIzN2VkZQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcwpAQCAtMCwwICsxLDUzIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAy
MDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1o
YXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCits
b2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCits
ZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50ID0g
MDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxzKCJo
b2xkaW5nczIiLCBob2xkaW5ncyk7CisgICsrY2xlYW51cF9ob2xkaW5nc19jb3VudDsKKyAgKytj
bGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3Ry
eShjbGVhbnVwKTsKK2xldCBrZXkxID0geyJrIjogImtleTEifTsKK2xldCBrZXkyID0geyJrIjog
ImtleTIifTsKKy8vIENyZWF0ZSB0aHJlZSBvYmplY3RzIGFuZCByZWdpc3RlciB0aGVtIGluIHRo
ZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdHMKKy8vIG5lZWQgdG8gYmUgaW5zaWRl
IGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlv
bigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQg
b2JqZWN0MWEgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MWEsICJob2xkaW5nczFh
Iiwga2V5MSk7CisKKyAgICAgICAgbGV0IG9iamVjdDFiID0ge307CisgICAgICAgIGZnLnJlZ2lz
dGVyKG9iamVjdDFiLCAiaG9sZGluZ3MxYiIsIGtleTEpOworCisgICAgICAgIGxldCBvYmplY3Qy
ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5nczIiLCBrZXkyKTsK
KworICAgICAgICAvLyBVbnJlZ2lzdGVyIGJlZm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNlIHRvIGRp
c2NvdmVyIHRoZSBvYmplY3RzLgorICAgICAgICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIo
a2V5MSk7CisgICAgICAgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisgICAgfQorfSkoKTsKKworLy8g
VGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3RzLgorZ2MoKTsKK2Fzc2VydEVx
dWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51
cCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciB0aGUgcmVmZXJlbmNlIHdoaWNoCisv
LyB3YXMgbm90IHVucmVnaXN0ZXJlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVx
dWFscygwLCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0
X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvdjgtd2Vhay11bnJlZ2lzdGVy
dG9rZW4uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNDFlODAwYWEyYWNlMDlmNmYyOTUyZTRlOTdjYjU2OTgxZWEyZTNlCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgtd2Vhay11bnJlZ2lzdGVydG9rZW4uanMKQEAg
LTAsMCArMSwzMSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisv
LyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
Ly8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMtd2l0aC1jbGVhbnVwLXNvbWUgLS1leHBvc2Ut
Z2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKwordmFyIEZSID0gbmV3IEZpbmFsaXphdGlvblJl
Z2lzdHJ5IChmdW5jdGlvbiAoaG9sZGluZ3MpIHsgZ2xvYmFsVGhpcy5GUlJhbiA9IHRydWU7IH0p
OworeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBv
YmogPSB7fTsKKyAgICAgICAgLy8gb2JqIGlzIGl0cyBvd24gdW5yZWdpc3RlciB0b2tlbiBhbmQg
YmVjb21lcyB1bnJlYWNoYWJsZSBhZnRlciB0aGlzCisgICAgICAgIC8vIGJsb2NrLiBJZiB0aGUg
dW5yZWdpc3RlciB0b2tlbiBpcyBoZWxkIHN0cm9uZ2x5IHRoaXMgdGVzdCB3aWxsIG5vdAorICAg
ICAgICAvLyB0ZXJtaW5hdGUuCisgICAgICAgIEZSLnJlZ2lzdGVyKG9iaiwgNDIsIG9iaik7Cisg
ICAgfQorfQorCitsZXQgdHJ5QWdhaW5Db3VudCA9IDEwOworZnVuY3Rpb24gdHJ5QWdhaW4oKSB7
CisgICAgZ2MoKTsKKyAgICBpZiAoZ2xvYmFsVGhpcy5GUlJhbikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghLS10cnlBZ2FpbkNvdW50KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAg
ICBzZXRUaW1lb3V0KHRyeUFnYWluLCAwKTsKK30KK3RyeUFnYWluKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404587</attachid>
            <date>2020-07-17 13:44:50 -0700</date>
            <delta_ts>2020-07-17 13:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717134449.patch</filename>
            <type>text/plain</type>
            <size>228758</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjA3Zjk3Y2EwNzllMGFjMjhkOGY1YmY2OGM4Y2IxNTkxN2Q4ZGUwLi5mOWM3YjdjMDlhM2FmNGFm
NGY0OTZiYjhkOTY1NmFiZjg0YjhkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pT
QVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKGZ1bmN0aW9u
RmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeURlYWRDb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAg
ICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwLgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdv
cmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxv
b3ApOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmspOgorICAgICAg
ICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmspOgorICAg
ICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAg
ICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmguCisgICAgICAgICogcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAg
ICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChKU0M6
OnByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlm
aWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cCk6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmxpdmVDb3VudCk6CisgICAgICAg
IChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudCk6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RhY2tPdmVyZmxvd0ZyYW1l
Q2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwU2V0V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRBZGRXYXRjaHBvaW50U2V0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlKb2luV2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
QmFzZT46OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6
aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjAtMDctMTcgIFhh
biBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVs
ZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM5OGQxZmNi
ZjY5ZGMwZjA5MjE2NGZiZjczMDdjNTE5NmM3MjA1NWQuLjhmODIzZmRhZTc1MTk1MjA5MzViZDJi
NTg0NjQ4YTU4N2YxNWFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNy0x
NyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQ
cm9taXNlRGVmZXJyZWRUaW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNv
LCBhZGQgZ2xvYmFsT2JqZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25z
IGZyb20gSlNDJ3MKKyAgICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUds
b2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
Ojpjb21waWxlU3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
aW5zdGFudGlhdGVTdHJlYW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHA6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorCiAyMDIwLTA3LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlY29tbWVuZGVkIGFydGljbGUgdGl0bGVzIG9uIGNzZG4ubmV0IGFy
ZSBjbGlwcGVkIGFmdGVyIHRyYW5zbGF0aW5nIHRvIEVuZ2xpc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFjNDcy
NTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uNGFiNTQ3ZTlkZTBkZjhlYTQ3MTQ1ZjJhZmQ1OWZm
NTY1M2NiMzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBu
dWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VS
ZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3As
CiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGls
ZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBkNjFhYWM3
ZTQ1YzUzNzIwNWE4YWNhN2UwOGVmZDY5NGNiZWRjNDIzLi5kN2Q0ZDg5OGZkNDJmMGYyNTRhNzQ5
MGJhOTMyZTY4ZGI1ODU5ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QubW0KQEAgLTY0LDYgKzY0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG1vZHVsZUxvYWRlckV2YWx1YXRl
LCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rp
b25UcmFja2VyCisgICAgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBu
dWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFt
aW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGNkNzRjMjUyMmVhMmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1
Zi4uYTI2YTk5NzUyNTJkMDY1NDY2YmZhNjFhNWI1YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkzMSwxNiArOTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIw
MDYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEZERTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVk
ZXMubSAqLzsgfTsKIAkJNTMxMUJENEIxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFF
QTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3
NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsg
fTsKLQkJNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRC
MDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAw
NzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9OworICAgICAgICAgICAgICAgIDUzMTgwNDVD
MjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIz
RXh0cmFjdFZhbHVlLmggKi87IH07CisgICAgICAgICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAw
MzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEg
LyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAg
ICA1MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0
MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUz
MzNCQkRDMjExMEY3RDkwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAy
QjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0Ux
MDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi87IH07Ci0JCTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAv
KiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9p
bnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyog
Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50
T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUzMzhFQkEzMjNBQjA0QjgwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0
YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87
IH07Ci0JCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3
MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAg
ICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0
cnkuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyog
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9v
cFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBG
MTJBQzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZC
QjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpT
VHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRX
b3JrVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAg
NTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FG
IC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4
MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1
N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQx
MTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRF
MDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFj
Y2Vzc0Nhc2UuaCAqLzsgfTsKQEAgLTM1OTcsNiArMzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4
NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlv
bkFsbG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFF
QjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3Bw
OyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5
QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzBBNjM0MDFGQTNFMzFDMDAyNkE1NDUgLyogU291cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTb3VyY2VzQ29jb2EudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzBBNjM0MTFGQTNFMzFEMDAyNkE1NDUgLyogU291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU291cmNlcy50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2
NkFEMUZBM0U3NzcwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNl
MTQ0LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3
ICszNjI2LDIyIEBACiAJCTUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAw
NEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFj
dFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4
MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3Qjgx
OTEgLyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9k
dWxlLW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3Bv
aW50T1NSRXhpdFNpZGVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4
RUJBMjIzQUIwNEEzMDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0
aCA9IGZ0bC9GVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQy
RkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFD
MzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2
Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8q
IFByb21pc2VUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNl
VGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAw
RjEyQUMxIC8qIFByb21pc2VUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcm9taXNlVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworICAgICAgICAgICAgICAgIDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJl
ZFdvcmtUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdv
cmtUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZF
MDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5
cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNB
RiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAy
ODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rl
c3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMv
VHlwZWRBcnJheUNUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYg
KzcxNDMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VD
YWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBl
LmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5o
ICovLAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5j
cHAgKi8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVy
LmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oICovLAogCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJn
dW1lbnRzLmNwcCAqLywKQEAgLTcxODQsMTEgKzcxOTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJD
RjI1MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuY3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJE
NzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0Ew
MEFDNDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlubGluZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJE
QUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2Vk
RnV6emVyQWdlbnQuY3BwICovLAogCQkJCUNFQ0ZBRDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFMjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBG
aWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICovLAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2
RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRF
NkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJ
CQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLywKIAkJCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5Lmgg
Ki8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAor
CQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlB
N0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgw
QzAwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJD
MjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03
MzQ1LDcgKzczNjIsMTMgQEAKIAkJCQkwRjdERjEzOTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUw
MDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3
QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2
NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUz
M0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAv
KiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBK
U0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0Zp
eGVkQXJyYXkuaCAqLywKKwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFy
cmF5LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICovLAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZG
NjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcg
LyogSlNGdW5jdGlvbi5oICovLApAQCAtNzU0NCw5ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2
MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJF
NkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUw
NkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3BwICovLAotCQkJCTUzNDYzODc0MUU3MERERUMw
MEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLywKLQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0Ey
ODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oICovLAogCQkJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUu
aCAqLywKQEAgLTkyODYsNiArOTMwNyw3IEBACiAJCQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0
IC8qIERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
NTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAw
MkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFG
QTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC05NTI2LDkgKzk1NDgsMTEgQEAKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyog
RXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZC
MTAwMjJCRjZEIC8qIEZhc3RKSVRQZXJtaXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJh
c2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFMjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFz
ZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMw
MDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJC
QjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMx
N0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3
MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1
Nyw3ICs5ODgxLDggQEAKIAkJCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJW
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhw
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNF
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUzM0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURD
NjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8qIFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21p
c2VUaW1lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8q
IFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVy
dHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2
RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIz
MTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4
ZDc0YzI3MDUuLjJhMjg3YTdmZGRiMDgwNGYzYjYwMTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc4Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2Vw
dGlvblNjb3BlLmNwcAogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJh
c2VkRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAK
K3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlRHVtcC5jcHAKQEAgLTg1MCw2ICs4NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAogcnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVu
dGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAg
LTkzMiw3ICs5MzUsNyBAQCBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMu
Y3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCi1ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAK
IHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcAogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxODRiYjk0NDQxZDNmYTQzMzQyYWZiZjk2
NjVjYzFiZTczOWVlMDEzLi5kODFhZGVmZjVmODQyNmE4NTMyNDJjNGU3YTE3YjU3YTY1MjFjNmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQu
aCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRl
ICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2
MTIsOCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAg
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJl
Zj4oKnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0
YW5jZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEVycm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0o
KS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5h
bGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBp
ZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDJlMGQwYTMwZGY1ZjY1MzA4ZTdhOWZjZWI5NjQzNGEyOTdmMTgzMTkuLmM5YmVlZDlmYTgy
MzRmMWExMDYyMWYzMTM2MjBiYmNhZjU2MjlkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29tcGlsZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUg
IkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb25maWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJy
ZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNp
bmNsdWRlICJKU0xvY2suaCIKQEAgLTU2LDcgKzU4LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJE
YXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VI
ZWFwQWNjZXNzU2NvcGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0xNTUsNiArMTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIHsKIAorI2RlZmluZSBFWElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVS
Tl9XSVRIX1ZBTFVFIHN0YXRpYyB2b2lkIGpzY0V4aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0
Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBX
b3JrZXJzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21t
YW5kTGluZSYsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNr
RXhjZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRp
b24sIEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBj
aGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhj
ZXB0aW9uLCBKU1ZhbHVlLCBjb25zdCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBj
bGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1
YmxpYzoKQEAgLTMwMiw3ICszMDUsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGll
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlv
blJlZ2lzdHJ5TGl2ZUNvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRz
U2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDgg
KzU0NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0Zv
ckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFpbk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWlu
TWljcm90YXNrcywgMCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZz
IiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwg
InNldFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVvdXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOwor
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50Iiwg
ZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFs
aXphdGlvblJlZ2lzdHJ5RGVhZENvdW50LCAwKTsKKyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiZ2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2Vl
ZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUs
IDEpOwpAQCAtNjM4LDYgKzY0OCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIg
bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNW
YWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBt
b2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1
ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJD
cmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVy
KiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lk
IHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNl
cHRpb24qKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxP
YmplY3QsIEpTR2xvYmFsT2JqZWN0KTsKIApAQCAtNjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNl
UmVqZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29w
LAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBp
bGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIx
ODcsNiArMjIwMCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJh
aW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhN
RTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBk
b24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sg
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9z
KTsKKworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBsb29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRl
ciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBzY2hlZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOwor
ICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2Fs
bGJhY2tdIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNr
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjaywganNVbmRlZmluZWQoKSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2Vl
IHRoaXMuLi4iKTsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdX
b3JrKGNhbGxiYWNrKTsKKyAgICB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVs
ZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0
aW9uUmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5h
bGl6YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lz
dHJ5Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0
cnktPmNlbGxMb2NrKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmlu
YWxpemF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChsb2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFk
Q291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5
ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVu
dCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQo
bG9ja2VyKSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMz
MkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtMjYxNywxMCArMjY3OSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAKICAgICAvLyBXZSBjYW4ndCB1c2UgZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2lu
ZyBjb2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dzCiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRp
b24gSGFuZGxpbmcKLSAgICBpbnQgcmVzID0gMDsKKyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNT
OwogICAgIFRSWQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQ
VChyZXMgPSAzKQorICAgIEVYQ0VQVChyZXMgPSBFWElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6
ZVN0YXRzQXRFbmRPZlRlc3RpbmcoKTsKICAgICBpZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZP
Ul9JTlBVVF9UT19FWElUIikpIHsKICAgICAgICAgV1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigp
OwpAQCAtMjY5MSw3ICsyNzUzLDcgQEAgc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhD
RVBUSU9OCiB9CiAKLXN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5l
JiBvcHRpb25zKQorc3RhdGljIGJvb2wgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFu
ZExpbmUmIG9wdGlvbnMpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5h
bWUgPSBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRpb25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTI3MjMsNyArMjc4NSw3IEBAIHN0YXRpYyBib29s
IGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wm
IHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBAIC0yNzQyLDYgKzI4MDQsMTUgQEAgc3RhdGlj
IHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNM
YXN0RmlsZSwgYm9vbCBoYXMKICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNh
dWdodEV4Y2VwdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDog
SlNWYWx1ZSgpLCBvcHRpb25zKTsKIH0KIAordm9pZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhj
ZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlv
bi0+dmFsdWUoKSk7CisgICAgYm9vbCBoaWRlTm9SZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRl
Tm9SZXR1cm4pCisgICAgICAgIGpzY0V4aXQoRVhJVF9FWENFUFRJT04pOworfQorCiBzdGF0aWMg
dm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExp
bmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlw
dHMgPSBvcHRpb25zLm1fc2NyaXB0czsKQEAgLTMxNzYsNyArMzI0Nyw3IEBAIGludCBydW5KU0Mo
Y29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1
bmMpCiAgICAgICAgIGZ1bmModm0sIGdsb2JhbE9iamVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZt
LmRyYWluTWljcm90YXNrcygpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxv
b3AoKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAg
ICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50
ZXJhY3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZDNhZDIxZTViYzk3ZWE5
NDUwYzZjZTBiNmY3ZTBjNjI1MTdjOTE5OS4uZWNkMDczY2QzZGYyMGU1YTljZmM2ZDIzZTY1ZGU0
YWUwMDQzZTc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJBcnJheSBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoQXJyYXlJdGVyYXRvclByb3RvdHlwZSkgfTsKK2NvbnN0IENs
YXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBcnJheSBJdGVyYXRv
ciBQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUpIH07CiAKIHZvaWQgQXJyYXlJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZi
YS4uNzAxZDY3NDdiZGJhZGRjODgyZTBmZmM0MTRjMWE1NzA4MWY5MDUzNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01Nyw2
ICs1Nyw3IEBACiAgICAgbWFjcm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oU3ltYm9sKSBcCiAgICAg
bWFjcm8oV2Vha1JlZikgXAorICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAg
bWFjcm8oX19kZWZpbmVHZXR0ZXJfXykgXAogICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18pIFwK
ICAgICBtYWNybyhfX2xvb2t1cEdldHRlcl9fKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkzZDMxNjRl
MDg5ZDE2M2UzMjYzMzBlODExOGQ4MmMwN2JmZDhjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsx
LDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisK
KyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworbmFtZXNwYWNlIERlZmVycmVkV29ya1RpbWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3Jr
VGltZXIoVk0mIHZtKQorICAgIDogQmFzZSh2bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKFZNJiB2bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7CisgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIo
KTsKKyAgICBpZiAoIW1fcnVuVGFza3MpIHsKKyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7Cisg
ICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJE
b2luZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1h
eSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3Bl
bmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRh
c2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5
UnVubmluZ1Rhc2sgPSB0cnVlOworICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisK
KyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBj
YW4gcmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVyZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3lu
Y2hyb25vdXNKU0V4ZWN1dGlvbigpOworCisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAo
RXhjZXB0aW9uKiBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9u
QXRFdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0u
ZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKKworICAgICAgICAgICAgbV90YXNrTG9jay5sb2Nr
KCk7CisgICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91
bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOworCisgICAgbV90YXNrTG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZl
cnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgpCit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZt
KCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9v
cDo6Y3VycmVudCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91
bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5k
aW5nVGlja2V0cy5zaXplKCkpCisgICAgICAgIFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZl
Y3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNp
ZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lcklu
dGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRl
cih0aWNrZXQpKTsKKyAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2
bSwgdGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRl
cGVuZGVuY2llcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRX
b3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0
aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7CisgICAgfQorfQorCitib29sIERlZmVy
cmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VS
VCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0
dXJuIG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJl
ZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlND
ZWxsKiBkZXBlbmRlbmN5KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFp
bnModGlja2V0KSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRp
Y2tldCk7CisgICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9v
bCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sK
KyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OworICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50
ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2No
ZWR1bGVXb3JrU29vbihUaWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVw
bGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFt
X2N1cnJlbnRseVJ1bm5pbmdUYXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZjZjZjOWNiMzM0NjJjMTJkYTI2
NTAwN2VmMWNkOTU2ZjJhOTE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKworI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU1Byb21pc2U7CitjbGFzcyBWTTsKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgRGVmZXJyZWRXb3JrVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGlt
ZXIgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKKworICAgIHZv
aWQgZG9Xb3JrKFZNJikgZmluYWw7CisKKyAgICB1c2luZyBUaWNrZXQgPSBKU09iamVjdCo7Cisg
ICAgdm9pZCBhZGRQZW5kaW5nV29yayhWTSYsIFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+
PiYmIGRlcGVuZGVuY2llcyk7CisgICAgYm9vbCBoYXNQZW5kaW5nV29yayhUaWNrZXQpOworICAg
IGJvb2wgaGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVu
Y3kpOworICAgIGJvb2wgY2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKKworICAgIHVzaW5nIFRh
c2sgPSBGdW5jdGlvbjx2b2lkKCk+OworICAgIHZvaWQgc2NoZWR1bGVXb3JrU29vbihUaWNrZXQs
IFRhc2smJik7CisKKyAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBm
YWxzZTsgfQorCisgICAgdm9pZCBydW5SdW5Mb29wKCk7CisKKyAgICBzdGF0aWMgUmVmPERlZmVy
cmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGVmZXJyZWRXb3JrVGltZXIodm0pKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
RGVmZXJyZWRXb3JrVGltZXIoVk0mKTsKKworICAgIExvY2sgbV90YXNrTG9jazsKKyAgICBib29s
IG1fcnVuVGFza3MgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFs
bFRpY2tldHNGaW5pc2ggeyBmYWxzZSB9OworICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayB7IGZhbHNlIH07CisgICAgRGVxdWU8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tz
OworICAgIEhhc2hNYXA8VGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdU
aWNrZXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yzk2ZWI4NGMwMzQ0ZTQ3OWQwNDFhZTY2YjQ5Mzk2Mjk2
OThkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpIH07
CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiX3MsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXph
dGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxGaW5hbGl6YXRpb25SZWdp
c3RyeSwgY29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpCit7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaW5hbGl6YXRpb25S
ZWdpc3RyeSIpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICgh
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKworICAgIEpTT2Jq
ZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBT
dHJ1Y3R1cmUqIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlID0gY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpID09IG5ld1RhcmdldAorICAgICAgICA/IGdsb2JhbE9iamVjdC0+ZmluYWxpemF0aW9u
UmVnaXN0cnlTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxt
KHZtLCBuZXdUYXJnZXQpLT5maW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpjcmVhdGUodm0sIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpKSkpOworfQorCit9CisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZTRjNTYzZjgyY2NlODRlN2E5ZjE4ZjZj
NWYzMzAwYWU0MjQ4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU7CisKK2NsYXNzIEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisKKyAgICBzdGF0
aWMgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUs
IEdldHRlclNldHRlciopCisgICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqKTsKK307CisKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpID09IHNpemVvZihJ
bnRlcm5hbEZ1bmN0aW9uKSk7CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNhM2YyMDNmNzNmYTk3YTAwNmZhNDVjNmM0YmFjM2NhODY3NDUxNDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKKworICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHByb3BlcnR5IG5hbWUgYmVjYXVzZSBp
dCdzIGEgcmVzZXZlcmVkIHdvcmQgaW4gQysrLi4uCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlZ2lzdGVyIiks
IHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5y
ZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQor
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBnZXRGaW5hbGl6
YXRpb25SZWdpc3RyeShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5
IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvKiBncm91cCA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeSo+KHZtLCBhc09iamVjdCh2YWx1ZSkpOworICAgIGlmIChMSUtFTFkoZ3JvdXApKQorICAg
ICAgICByZXR1cm4gZ3JvdXA7CisKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFs
aXphdGlvblJlZ2lzdHJ5IG9iamVjdCJfcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlS
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6
YXRpb25SZWdpc3RyeSh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJy
ZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgYXMgdGhlIHRhcmdldCJfcyk7CisKKyAgICBKU1Zh
bHVlIGhvbGRpbmdzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoc2FtZVZhbHVl
KGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBob2xkaW5ncykpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciBleHBlY3RzIHRoZSB0YXJn
ZXQgb2JqZWN0IGFuZCB0aGUgaG9sZGluZ3MgcGFyYW1ldGVyIGFyZSBub3QgdGhlIHNhbWUuIE90
aGVyd2lzZSwgdGhlIHRhcmdldCBjYW4gbmV2ZXIgYmUgY29sbGVjdGVkIl9zKTsKKworICAgIEpT
VmFsdWUgdW5yZWdpc3RlclRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAgICBpZiAo
IXVucmVnaXN0ZXJUb2tlbi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9r
ZW4iX3MpOworCisgICAgZ3JvdXAtPnJlZ2lzdGVyVGFyZ2V0KHZtLCB0YXJnZXQuZ2V0T2JqZWN0
KCksIGhvbGRpbmdzLCB1bnJlZ2lzdGVyVG9rZW4pOworICAgIHJldHVybiBlbmNvZGVkSlNVbmRl
ZmluZWQoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNGaW5h
bGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IGdyb3VwID0gZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChhdXRvKiB0b2tlbiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBncm91cC0+dW5y
ZWdpc3Rlcih2bSwgdG9rZW4pOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVu
cmVnaXN0cmF0aW9uIHRva2VuIl9zKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDRkZjhkZDI4YjM4YjM4ZDcwNzFjMjYyNzAyZjJmNDgxYzlmOGFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90
eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7IH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCAxOGU4OGQ3YzBjZTRlZTIx
MjlhMzdkODIwMjY4YWNmNjM2MGY1MmFlLi4xYzVmZGY1MGJkMDU4OWI3NmNhZGE0OGY3ZmY1OTAz
ZDcxMjU4OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50
aWZpZXIoVk0mIHZtLCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwog
ICAgIGNoZWNrQ3VycmVudEF0b21TdHJpbmdUYWJsZSh2bSk7CiAgICAgaWYgKCFzdHJpbmcuaXNO
dWxsKCkpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBz
dHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmlu
Z1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBv
dGhlciB0aHJlYWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5n
dGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0lu
QXRvbVN0cmluZ1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0Jm9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmlu
YWxpemF0aW9uUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjOWUxMjBiZDgwN2E1NTljNTIwNjg4
ZDgyYzk0MDA0Y2ZmNDM2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDIzMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCisjaW5jbHVk
ZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpzX2luZm8gPSB7ICJG
aW5hbGl6YXRpb25SZWdpc3RyeSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkgfTsKKworU3RydWN0dXJl
KiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTRmluYWxpemF0aW9u
UmVnaXN0cnkqIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU09iamVjdCogY2FsbGJhY2spCit7CisgICAgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Pih2bS5oZWFwKSkgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSh2bSwgc3RydWN0
dXJlKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxiYWNrKTsKKyAgICBy
ZXR1cm4gaW5zdGFuY2U7Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogY2FsbGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIEFTU0VSVChjYWxsYmFjay0+aXNDYWxsYWJsZSh2bSkpOworICAg
IGF1dG8gdmFsdWVzID0gaW5pdGlhbFZhbHVlcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IHZhbHVlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEJhc2U6OmludGVy
bmFsRmllbGQoaW5kZXgpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWVzW2luZGV4XSk7Cisg
ICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6Q2FsbGJhY2spLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIo
Y2FsbGJhY2spOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4oY2VsbCk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKHRoaXNPYmplY3QtPmNlbGxMb2NrKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRl
ciA6IHRoaXNPYmplY3QtPm1fbGl2ZVJlZ2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRv
JiByZWdpc3RyYXRpb24gOiBpdGVyLnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
cmVnaXN0cmF0aW9uLmhvbGRpbmdzKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYXRp
b24gOiB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlKQorICAgICAgICB2aXNpdG9y
LmFwcGVuZChyZWdpc3RyYXRpb24uaG9sZGluZ3MpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRl
ciA6IHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBob2xkaW5ncyA6IGl0ZXIudmFsdWUpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChob2xk
aW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYgaG9sZGluZ3MgOiB0aGlzT2JqZWN0LT5tX25v
VW5yZWdpc3RyYXRpb25EZWFkKQorICAgICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisK
KyAgICBzaXplX3QgdG90YWxCdWZmZXJTaXplc0luQnl0ZXMgPSB0aGlzT2JqZWN0LT5tX2RlYWRS
ZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9k
ZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFpclR5cGUpOworICAgIHRvdGFsQnVmZmVyU2l6
ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbGl2ZVJlZ2lzdHJhdGlvbnMuY2FwYWNpdHkoKSAq
IHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKTo6S2V5VmFs
dWVQYWlyVHlwZSk7CisgICAgdG90YWxCdWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09iamVjdC0+
bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNP
YmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUudGFrZUxhc3QoKSkpOworICAgIHRvdGFsQnVm
ZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuY2Fw
YWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25M
aXZlLnRha2VMYXN0KCkpKTsKKyAgICB2aXNpdG9yLnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9y
eVZpc2l0ZWQodG90YWxCdWZmZXJTaXplc0luQnl0ZXMpOworfQorCit2b2lkIEpTRmluYWxpemF0
aW9uUmVnaXN0cnk6OmRlc3Ryb3koSlNDZWxsKiB0YWJsZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odGFibGUpLT5+SlNGaW5hbGl6YXRpb25SZWdpc3RyeSgp
OworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJiB2bSkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOwor
CisgICAgYXV0byByZW1vdmVGcm9tVmVjdG9yID0gW10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHBv
c2l0aW9uKSB7CisgICAgICAgIHN0ZDo6c3dhcCh2ZWN0b3JbcG9zaXRpb25dLCB2ZWN0b3IubGFz
dCgpKTsKKyAgICAgICAgcmV0dXJuIHZlY3Rvci50YWtlTGFzdCgpOworICAgIH07CisKKyAgICBi
b29sIHJlYWRpZWRDZWxsID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bm9VbnJlZ2lzdHJhdGlvbkxpdmUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFtX25v
VW5yZWdpc3RyYXRpb25MaXZlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAu
aXNNYXJrZWQobV9ub1VucmVnaXN0cmF0aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5hc0NlbGwo
KSkpOworICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9ub1VucmVnaXN0cmF0aW9uTGl2
ZVtpXS50YXJnZXQpKSB7CisgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25EZWFkLmFwcGVu
ZChyZW1vdmVGcm9tVmVjdG9yKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUsIGkpLmhvbGRpbmdzKTsK
KyAgICAgICAgICAgIHJlYWRpZWRDZWxsID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fbGl2ZVJlZ2lzdHJhdGlvbnMucmVtb3ZlSWYoWyZdIChhdXRvJiBidWNrZXQpIC0+IGJvb2wg
eworICAgICAgICBBU1NFUlQoYnVja2V0LnZhbHVlLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCBr
ZXlJc0RlYWQgPSAhdm0uaGVhcC5pc01hcmtlZChidWNrZXQua2V5KTsKKworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGJ1Y2tldC52YWx1ZS5zaXplKCk7IGkrKykgeworICAgICAgICAg
ICAgQVNTRVJUKCFidWNrZXQudmFsdWVbaV0uaG9sZGluZ3MuZ2V0KCkuaXNDZWxsKCkgfHwgdm0u
aGVhcC5pc01hcmtlZChidWNrZXQudmFsdWVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsK
KyAgICAgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChidWNrZXQudmFsdWVbaV0udGFyZ2V0
KSkgeworICAgICAgICAgICAgICAgIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgICAg
IG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuYXBwZW5kKHJlbW92ZUZyb21WZWN0b3IoYnVja2V0LnZh
bHVlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZGVhZExpc3QgPSBtX2RlYWRSZWdpc3RyYXRpb25zLmFkZChidWNrZXQua2V5
LCBEZWFkUmVnaXN0cmF0aW9ucygpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVhZExpc3QuaXRl
cmF0b3ItPnZhbHVlLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9s
ZGluZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZWFkaWVkQ2VsbCA9
IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUlzRGVhZCkKKyAgICAgICAgICAgICAg
ICBtX25vVW5yZWdpc3RyYXRpb25MaXZlLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52
YWx1ZSwgaSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICFidWNrZXQudmFsdWUuc2l6
ZSgpOworICAgIH0pOworCisgICAgaWYgKCF2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGlu
Z1dvcmsodGhpcykgJiYgKHJlYWRpZWRDZWxsIHx8IGRlYWRDb3VudChOb0xvY2tpbmdOZWNlc3Nh
cnkpKSkgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0s
IHRoaXMsIHsgfSk7CisgICAgICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVu
ZGluZ1dvcmsodGhpcykpOworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVX
b3JrU29vbih0aGlzLCBbdGhpc10geworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgICAgICAgICAgdGhpcy0+cnVuRmluYWxpemF0aW9uQ2xlYW51
cChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNl
bFBlbmRpbmdXb3JrKHRoaXMpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB3aGlsZSAoSlNWYWx1
ZSB2YWx1ZSA9IHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpKSB7CisgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgY2Fs
bChnbG9iYWxPYmplY3QsIGNhbGxiYWNrKCksIGFyZ3MsICJUaGlzIHNob3VsZCBub3QgYmUgdmlz
aWJsZTogcGxlYXNlIHJlcG9ydCBhIGJ1ZyB0byBidWdzLndlYmtpdC5vcmciKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9Cit9CisKK0pTVmFsdWUg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKCkKK3sKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIEpTVmFsdWUgcmVzdWx0Owor
ICAgIGlmIChtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUoKSkKKyAgICAgICAgcmVzdWx0ID0g
bV9ub1VucmVnaXN0cmF0aW9uRGVhZC50YWtlTGFzdCgpLmdldCgpOworICAgIGVsc2UgeworICAg
ICAgICBhdXRvIGl0ZXIgPSBtX2RlYWRSZWdpc3RyYXRpb25zLmJlZ2luKCk7CisgICAgICAgIGlm
IChpdGVyID09IG1fZGVhZFJlZ2lzdHJhdGlvbnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgICAgICBBU1NFUlQoaXRlci0+dmFsdWUuc2l6ZSgpKTsKKyAgICAgICAg
cmVzdWx0ID0gaXRlci0+dmFsdWUudGFrZUxhc3QoKS5nZXQoKTsKKyAgICAgICAgaWYgKCFpdGVy
LT52YWx1ZS5zaXplKCkpCisgICAgICAgICAgICBtX2RlYWRSZWdpc3RyYXRpb25zLnJlbW92ZShp
dGVyKTsKKyAgICB9CisKKyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9FTkFCTEVEKSB7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IG1fZGVhZFJlZ2lzdHJhdGlvbnMpCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpdGVyLnZhbHVlLnNpemUoKSk7CisgICAgfQorCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpyZWdpc3RlclRh
cmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUg
dG9rZW4pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBS
ZWdpc3RyYXRpb24gcmVnaXN0cmF0aW9uOworICAgIHJlZ2lzdHJhdGlvbi50YXJnZXQgPSB0YXJn
ZXQ7CisgICAgcmVnaXN0cmF0aW9uLmhvbGRpbmdzLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoaG9s
ZGluZ3MpOworICAgIGlmICh0b2tlbi5pc1VuZGVmaW5lZCgpKQorICAgICAgICBtX25vVW5yZWdp
c3RyYXRpb25MaXZlLmFwcGVuZChXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOworICAgIGVsc2Ugewor
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbGl2ZVJlZ2lzdHJhdGlvbnMuYWRkKGpzU2VjdXJlQ2Fz
dDxKU09iamVjdCo+KHZtLCB0b2tlbiksIExpdmVSZWdpc3RyYXRpb25zKCkpOworICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOworICAg
IH0KKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsKK30KKworYm9vbCBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKFZNJiwgSlNPYmplY3QqIHRva2VuKQoreworICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gd3JpdGUgYmFycmllciBvdXJzZWx2ZXMgaGVyZSBiZWNhdXNlIHdl
IHdpbGwgb25seSBwb2ludCB0byBsZXNzIHRoaW5ncyBhZnRlciB0aGlzIGZpbmlzaGVzLgorICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgYm9vbCByZXN1bHQgPSBt
X2xpdmVSZWdpc3RyYXRpb25zLnJlbW92ZSh0b2tlbik7CisgICAgcmVzdWx0IHw9IG1fZGVhZFJl
Z2lzdHJhdGlvbnMucmVtb3ZlKHRva2VuKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Np
emVfdCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpsaXZlQ291bnQoY29uc3QgTG9ja2VyPEpTQ2Vs
bExvY2s+JikKK3sKKyAgICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25MaXZlLnNp
emUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2xpdmVSZWdpc3RyYXRpb25zKQor
ICAgICAgICBjb3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsK
K30KKworc2l6ZV90IEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudChjb25zdCBMb2Nr
ZXI8SlNDZWxsTG9jaz4mKQoreworICAgIHNpemVfdCBjb3VudCA9IG1fbm9VbnJlZ2lzdHJhdGlv
bkRlYWQuc2l6ZSgpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IG1fZGVhZFJlZ2lzdHJh
dGlvbnMpCisgICAgICAgIGNvdW50ICs9IGl0ZXIudmFsdWUuc2l6ZSgpOworCisgICAgcmV0dXJu
IGNvdW50OworfQorCitTdHJpbmcgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dG9TdHJpbmdOYW1l
KGNvbnN0IEpTQzo6SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCit7CisgICAgcmV0dXJuICJP
YmplY3QiX3M7Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzkwNTFiZmEwYThj
Njc2MzhmMDMxMTc0YzQzYjA2NWI0MTI2YTI5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaApAQCAtMCwwICsx
LDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTRmluYWxpemF0aW9uUmVnaXN0cnkgZmluYWwgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwxPiB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTRGVzdHJ1Y3RpYmxlSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8
MT47CisKKyAgICBlbnVtIGNsYXNzIEZpZWxkIDogdWludDhfdCB7IAorICAgICAgICBDYWxsYmFj
aywKKyAgICB9OworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNp
emVfdD4gaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGlu
ZUNhcGFjaXR5LCBpbmxpbmVDYXBhY2l0eSA9PSAwVSk7CisgICAgICAgIHJldHVybiBzaXplb2Yo
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uZmluYWxpemF0aW9u
UmVnaXN0cnlTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpT
VmFsdWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgIH0gfTsKKyAg
ICB9CisKKyAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmll
bGQgZmllbGQpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZpZWxkKSk7IH0KKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFs
RmllbGQoRmllbGQgZmllbGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0KKworICAgIEpTT2JqZWN0KiBjYWxsYmFjaygpIGNvbnN0
IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6OkNhbGxiYWNr
KS5nZXQoKSk7IH0KKworICAgIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogY2FsbGJhY2spOworICAgIHN0YXRpYyBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5KiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9pZCBydW5GaW5hbGl6YXRpb25DbGVh
bnVwKEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAg
dm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOworCisgICAgSlNWYWx1ZSB0YWtlRGVhZEhvbGRpbmdzVmFsdWUoKTsKKworICAg
IGJvb2wgdW5yZWdpc3RlcihWTSYsIEpTT2JqZWN0KiB0b2tlbik7CisgICAgLy8gdG9rZW4gc2hv
dWxkIGJlIGEgSlNPYmplY3Qgb3IgdW5kZWZpbmVkLgorICAgIHZvaWQgcmVnaXN0ZXJUYXJnZXQo
Vk0mLCBKU09iamVjdCogdGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKTsK
KworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBsaXZlQ291bnQoY29uc3QgTG9ja2VyPEpT
Q2VsbExvY2s+Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGRlYWRDb3VudChjb25z
dCBMb2NrZXI8SlNDZWxsTG9jaz4mKTsKKworcHJpdmF0ZToKKyAgICBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSlNPYmplY3QqIGNhbGxiYWNrKTsKKworICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKKworICAg
IHN0cnVjdCBSZWdpc3RyYXRpb24geworICAgICAgICBKU09iamVjdCogdGFyZ2V0OworICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gaG9sZGluZ3M7CisgICAgfTsKKworICAgIHVzaW5nIExp
dmVSZWdpc3RyYXRpb25zID0gVmVjdG9yPFJlZ2lzdHJhdGlvbj47CisgICAgLy8gV2UgZG9uJ3Qg
bmVlZCB0aGUgdGFyZ2V0IGFueW1vcmUgc2luY2Ugd2Uga25vdyBpdCdzIGRlYWQuCisgICAgdXNp
bmcgRGVhZFJlZ2lzdHJhdGlvbnMgPSBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PjsKKwor
ICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBib3RoZXIgcHV0dGluZyBhIHdyaXRlIGJhcnJpZXIg
b24gdGhlIGtleSBvciB0YXJnZXQgYmVjYXVzZSB0aGV5IGFyZSB3ZWFrbHkgcmVmZXJlbmNlZC4K
KyAgICBIYXNoTWFwPEpTT2JqZWN0KiwgTGl2ZVJlZ2lzdHJhdGlvbnM+IG1fbGl2ZVJlZ2lzdHJh
dGlvbnM7CisgICAgSGFzaE1hcDxKU09iamVjdCosIERlYWRSZWdpc3RyYXRpb25zPiBtX2RlYWRS
ZWdpc3RyYXRpb25zOworICAgIExpdmVSZWdpc3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkxp
dmU7CisgICAgRGVhZFJlZ2lzdHJhdGlvbnMgbV9ub1VucmVnaXN0cmF0aW9uRGVhZDsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzZWEzMGRiOWUyZTRkNTM4ZGE4ZjIzMmNmODli
OWU0Yzk4MjM3MDA2Li5hZjY2ODNlNWNlMTMzZGVmMGE3MDRkOTZhZDdjOGQwNzc4ODU0ZWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC02MSw2ICs2MSw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgpAQCAtOTksNiArMTAxLDcgQEAKICNpbmNsdWRlICJKU0Rh
dGFWaWV3LmgiCiAjaW5jbHVkZSAiSlNEYXRhVmlld1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpT
RG9sbGFyVk0uaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMzg3LDYgKzM5MCw3IEBAIGNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0g
ewogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVz
CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBw
cm9taXNlUmVqZWN0aW9uVHJhY2tlcgorICAgIG51bGxwdHIsIC8vIHJlcG9ydFVuY2F1Z2h0RXhj
ZXB0aW9uQXRFdmVudExvb3AKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBu
dWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVT
dHJlYW1pbmcKQEAgLTIxOTksNiArMjIwMywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1
ZU1pY3JvdGFzayhSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAgdm0oKS5xdWV1ZU1pY3JvdGFz
aygqdGhpcywgV1RGTW92ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24q
IGV4Y2VwdGlvbikKK3sKKyAgICBkYXRhTG9nTG4oIlVuY2F1Z2h0IEV4Y2VwdGlvbiBhdCBydW4g
bG9vcDogIiwgZXhjZXB0aW9uLT52YWx1ZSgpKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6
c2V0RGVidWdnZXIoRGVidWdnZXIqIGRlYnVnZ2VyKQogewogICAgIG1fZGVidWdnZXIgPSBkZWJ1
Z2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CmluZGV4IGRkYzMwYjgyZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjQ3NGZkZTY0
ZmY2Y2FlMjgzZTk5ZTQ2ZWVjODA1MDgxYmMwZjliYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTM4LDYgKzEzOCw4IEBAIGNvbnN0
ZXhwciBib29sIHR5cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBtYWNybyhKU1Byb21p
c2UsIHByb21pc2UsIHByb21pc2UsIEpTUHJvbWlzZSwgUHJvbWlzZSwgb2JqZWN0LCB0eXBlRXhw
b3NlZEJ5RGVmYXVsdCkgXAogICAgIG1hY3JvKEJpZ0ludCwgYmlnSW50LCBiaWdJbnRPYmplY3Qs
IEJpZ0ludE9iamVjdCwgQmlnSW50LCBvYmplY3QsIE9wdGlvbnM6OnVzZUJpZ0ludCgpKSBcCiAg
ICAgbWFjcm8oV2Vha09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgSlNX
ZWFrT2JqZWN0UmVmLCBXZWFrUmVmLCBvYmplY3QsIE9wdGlvbnM6OnVzZVdlYWtSZWZzKCkpIFwK
KyAgICBtYWNybyhGaW5hbGl6YXRpb25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIGZp
bmFsaXphdGlvblJlZ2lzdHJ5LCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LCBGaW5hbGl6YXRpb25S
ZWdpc3RyeSwgb2JqZWN0LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisKIAogI2RlZmluZSBG
T1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIG1hY3Jv
KFN0cmluZ0l0ZXJhdG9yLCBzdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIEpTU3RyaW5n
SXRlcmF0b3IsIFN0cmluZ0l0ZXJhdG9yLCBpdGVyYXRvciwgdHlwZUV4cG9zZWRCeURlZmF1bHQp
IFwKQEAgLTIyNyw2ICsyMjksOSBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewog
ICAgIHR5cGVkZWYgdm9pZCAoKlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9i
amVjdCosIEpTUHJvbWlzZSosIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CiAgICAgUHJv
bWlzZVJlamVjdGlvblRyYWNrZXJQdHIgcHJvbWlzZVJlamVjdGlvblRyYWNrZXI7CiAKKyAgICB0
eXBlZGVmIHZvaWQgKCpSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyKShKU0ds
b2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3BQdHIgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKKwogICAgIHR5
cGVkZWYgU3RyaW5nICgqRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAgRGVmYXVs
dExhbmd1YWdlRnVuY3Rpb25QdHIgZGVmYXVsdExhbmd1YWdlOwogCkBAIC00NTMsMjEgKzQ1OCw2
IEBAIHB1YmxpYzoKICAgICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKICAgICBSZWdFeHBHbG9i
YWxEYXRhIG1fcmVnRXhwR2xvYmFsRGF0YTsKIAotICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93
RnJhbWVDYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5n
ZXQoKTsgfQotCi0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsg
fQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0KCkgeyByZXR1cm4gbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAg
IElubGluZVdhdGNocG9pbnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
KCkgeyByZXR1cm4gbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAg
IElubGluZVdhdGNocG9pbnRTZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21h
cFNldFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5l
V2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5
Sm9pbldhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0K
LSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAg
ICByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7Ci0gICAgfQogICAgIC8vIElm
IHRoaXMgaGFzbid0IGJlZW4gaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRv
ciBwcm90b2NvbAogICAgIC8vIGlzIG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAg
ICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQ7CkBAIC00OTQsNiArNDg0LDIzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
IG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1f
bnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50OwogCitwdWJsaWM6CisgICAgSlNDYWxs
ZWUqIHN0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tPdmVy
Zmxvd0ZyYW1lQ2FsbGVlLmdldCgpOyB9CisKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJh
eUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcEl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc3RyaW5nSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwU2V0V2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fbWFwU2V0V2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9p
bnRTZXQmIHNldEFkZFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEFkZFdhdGNocG9pbnRT
ZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0
KCkgeyByZXR1cm4gbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0
Y2hwb2ludFNldCYgYXJyYXlKb2luV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlKb2lu
V2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG51bWJlclRvU3RyaW5n
V2F0Y2hwb2ludFNldCgpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1
c2VKSVQoKSk7CisgICAgICAgIHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsK
KyAgICB9CisKICAgICBib29sIGlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFu
ZE5vbk9ic2VydmFibGUoKTsKICAgICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2Nv
bEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUl0ZXJhdG9y
UHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwpAQCAtODI0LDYgKzgzMSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKFZNJiB2bSwgSlNPYmpl
Y3QqIGZ1bmN0aW9uKSB7IG1fdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suc2V0KHZtLCBmdW5j
dGlvbik7IH0KICAgICBKU09iamVjdCogdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25z
dCB7IHJldHVybiBtX3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLmdldCgpOyB9CiAKKyAgICBz
dGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2Jq
ZWN0KiwgRXhjZXB0aW9uKik7CisKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhp
cyk7IH0KIAogICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNo
YXJpbmdNb2RlIHNoYXJpbmdNb2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oCmluZGV4IGUyNTdh
MWRmNjAwYjJhOGVkNDc1YjdlODkzNmU4NGNhNDg1YjI1YjEuLjZmMDc4MTBlZTA2NjQxZDQwNDIz
OWMzNDQyZTkwMTMxMWJlODhlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgKQEAgLTMwLDEyICszMCwx
MSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFRoaXMgaXMgdXNlZCBmb3Igc2hhcmluZyBpbnRl
cmZhY2UgYW5kIGltcGxlbWVudGF0aW9uLiBJdCBzaG91bGQgbm90IGhhdmUgaXRzIG93biBjbGFz
c0luZm8uCi10ZW1wbGF0ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzID0g
MT4KLWNsYXNzIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7Cit0ZW1wbGF0ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzID0g
MSwgdHlwZW5hbWUgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q+CitjbGFzcyBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsIDogcHVibGljIEJhc2UgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mSW50ZXJuYWxGaWVsZHMg
PSBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgpAQCAtNzYsNCArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJuYWxGaWVsZHNbbnVtYmVyT2ZJbnRlcm5h
bEZpZWxkc10geyB9OwogfTsKIAordGVtcGxhdGU8dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJbnRl
cm5hbEZpZWxkcyA9IDE+Cit1c2luZyBKU0Rlc3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJ
bXBsID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxwYXNzZWROdW1iZXJPZkludGVybmFsRmll
bGRzLCBKU0Rlc3RydWN0aWJsZU9iamVjdD47CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGxJbmxpbmVzLmgKaW5kZXggOGYwM2M4YTZkYjFiZDU3NTBlNjg1OThlMjFj
OWFlMWIzMTNjODVlMS4uZTZhNjFlMWQ5YmQ0MWIzOWJiYTYwOTM3ZmU4NWRhOWIxODRmZDhmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oCkBAIC0yOSwxMSArMjksMTEgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJlck9mSW50ZXJu
YWxGaWVsZHM+Ci12b2lkIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2VkTnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3RlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMs
IHR5cGVuYW1lIEJhc2U+Cit2b2lkIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2VkTnVt
YmVyT2ZJbnRlcm5hbEZpZWxkcywgQmFzZT46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGwqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBCYXNlOjppbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+
bV9pbnRlcm5hbEZpZWxkcywgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAppbmRleCA4ODMwODNlY2I3NjdkMDg4
M2Y5YTQ5MjFmMzk5ZjU5MDg4MTNjZmRmLi40ZjM0YjZiNDljYTg5ZTY2OGNiOWEyNjcxMDMyM2Nh
ZTE3ODY0YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5j
cHAKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogCiAjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElu
bGluZXMuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1p
Y3JvdGFzay5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZXNvbHZlKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBjYWxsRnVu
Y3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5yZXNvbHZlUHJvbWlzZUZ1
bmN0aW9uKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5jYW5jZWxQZW5kaW5nUHJv
bWlzZSh0aGlzKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+Y2FuY2VsUGVuZGluZ1dvcmso
dGhpcyk7CiB9CiAKIHZvaWQgSlNQcm9taXNlOjpyZWplY3QoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBK
U1Byb21pc2U6OnJlamVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+cmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCksIHRoaXMsIHZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB9Ci0gICAgdm0ucHJv
bWlzZVRpbWVyLT5jYW5jZWxQZW5kaW5nUHJvbWlzZSh0aGlzKTsKKyAgICB2bS5kZWZlcnJlZFdv
cmtUaW1lci0+Y2FuY2VsUGVuZGluZ1dvcmsodGhpcyk7CiB9CiAKIHZvaWQgSlNQcm9taXNlOjpy
ZWplY3RBc0hhbmRsZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9t
aXNlVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVmZDJiMDA4NDMwMjYyNjE4NTk4
MTk1ODlmNzg0Y2JiZDM2M2QwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJQcm9taXNlVGltZXIuaCIKLQotI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgotI2luY2x1ZGUgIlN0
cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJWTS5oIgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3BhY2UgUHJvbWlzZVRpbWVySW50ZXJuYWwgewot
c3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKLX0KLQotUHJvbWlzZVRpbWVy
OjpQcm9taXNlVGltZXIoVk0mIHZtKQotICAgIDogQmFzZSh2bSkKLXsKLX0KLQotdm9pZCBQcm9t
aXNlVGltZXI6OmRvV29yayhWTSYgdm0pCi17Ci0gICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJ
c0hvbGRpbmdBUElMb2NrKCkpOwotICAgIG1fdGFza0xvY2subG9jaygpOwotICAgIGNhbmNlbFRp
bWVyKCk7Ci0gICAgaWYgKCFtX3J1blRhc2tzKSB7Ci0gICAgICAgIG1fdGFza0xvY2sudW5sb2Nr
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRha2VMYXN0KCk7
Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9p
bmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotCi0gICAgICAgIC8v
IFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCi0gICAgICAgIGlm
IChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0aWNrZXQpKSB7Ci0gICAgICAgICAgICAvLyBB
bGxvdyB0YXNrcyB3ZSBydW4gbm93IHRvIHNjaGVkdWxlIHdvcmsuCi0gICAgICAgICAgICBtX2N1
cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fdGFza0xvY2sudW5sb2Nr
KCk7IAotCi0gICAgICAgICAgICB0YXNrKCk7Ci0gICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFz
a3MoKTsKLQotICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7Ci0gICAgICAgICAgICBtX2N1
cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAo
bV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxs
UHJvbWlzZXNGaW5pc2gpCi0gICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7Ci0KLSAg
ICBtX3Rhc2tMb2NrLnVubG9jaygpOwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6cnVuUnVuTG9v
cCgpCi17Ci0gICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdBUElMb2NrKCkpOwotICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX2FwaUxv
Y2stPnZtKCktPnJ1bkxvb3AoKSk7Ci0gICAgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9t
aXNlc0ZpbmlzaCA9IHRydWU7Ci0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLnNpemUoKSkKLSAg
ICAgICAgUnVuTG9vcDo6cnVuKCk7Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjphZGRQZW5kaW5n
UHJvbWlzZShWTSYgdm0sIEpTUHJvbWlzZSogdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+
JiYgZGVwZW5kZW5jaWVzKQotewotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5n
QVBJTG9jaygpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNp
emUoKTsgKytpKQotICAgICAgICBBU1NFUlQoZGVwZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tl
dCk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2VzLmFkZCh0aWNrZXQsIFZl
Y3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0g
ICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5n
IG5ldyBwZW5kaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0gICAgICAgIGRl
cGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIHRpY2tldCkpOwotICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAi
QWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVu
Y2llcyk7Ci0gICAgfQotfQotCi1ib29sIFByb21pc2VUaW1lcjo6aGFzUGVuZGluZ1Byb21pc2Uo
SlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICByZXR1cm4gbV9wZW5kaW5nUHJvbWlzZXMuY29u
dGFpbnModGlja2V0KTsKLX0KLQotYm9vbCBQcm9taXNlVGltZXI6Omhhc0RlcGVuZGFuY3lJblBl
bmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpCi17Ci0g
ICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsK
LSAgICBBU1NFUlQobV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlja2V0KSk7Ci0KLSAgICBh
dXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2VzLmdldCh0aWNrZXQpOwotICAgIHJldHVybiBy
ZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7Ci19Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpjYW5j
ZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0
LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGJvb2wgcmVzdWx0
ID0gbV9wZW5kaW5nUHJvbWlzZXMucmVtb3ZlKHRpY2tldCk7Ci0KLSAgICBpZiAocmVzdWx0KQot
ICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNl
bGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnNjaGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiB0
aWNrZXQsIFRhc2smJiB0YXNrKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2sp
OwotICAgIG1fdGFza3MuYXBwZW5kKHN0ZDo6bWFrZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFz
aykpKTsKLSAgICBpZiAoIWlzU2NoZWR1bGVkKCkgJiYgIW1fY3VycmVudGx5UnVubmluZ1Rhc2sp
Ci0gICAgICAgIHNldFRpbWVVbnRpbEZpcmUoMF9zKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTRkMGYyOWFlMmQyOGNmM2U0MDRiZWZiNTQ2ZjUzY2Qw
YmJhZTliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNSdW5Mb29wVGltZXIuaCIKLSNpbmNs
dWRlICJTdHJvbmcuaCIKLQotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1j
bGFzcyBKU1Byb21pc2U7Ci1jbGFzcyBWTTsKLWNsYXNzIEpTQ2VsbDsKLQotY2xhc3MgUHJvbWlz
ZVRpbWVyIGZpbmFsIDogcHVibGljIEpTUnVuTG9vcFRpbWVyIHsKLXB1YmxpYzoKLSAgICB1c2lu
ZyBCYXNlID0gSlNSdW5Mb29wVGltZXI7Ci0KLSAgICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOwot
Ci0gICAgdm9pZCBhZGRQZW5kaW5nUHJvbWlzZShWTSYsIEpTUHJvbWlzZSosIFZlY3RvcjxTdHJv
bmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgaGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQs
IEpTQ2VsbCogZGVwZW5kZW5jeSk7Ci0gICAgLy8gSlNQcm9taXNlIHNob3VsZCBoYW5kbGUgY2Fu
Y2VsaW5nIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQuCi0gICAgYm9v
bCBjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqKTsKLQotICAgIHVzaW5nIFRhc2sgPSBG
dW5jdGlvbjx2b2lkKCk+OwotICAgIHZvaWQgc2NoZWR1bGVXb3JrU29vbihKU1Byb21pc2UqLCBU
YXNrJiYpOwotCi0gICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tzKCkgeyBtX3J1blRhc2tzID0gZmFs
c2U7IH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuUnVuTG9vcCgpOwotCi0gICAg
c3RhdGljIFJlZjxQcm9taXNlVGltZXI+IGNyZWF0ZShWTSYgdm0pCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9taXNlVGltZXIodm0pKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgUHJvbWlzZVRpbWVyKFZNJik7Ci0KLSAgICBIYXNoTWFwPEpTUHJvbWlzZSosIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1Byb21pc2VzOwotICAgIExvY2sgbV90YXNrTG9j
azsKLSAgICBib29sIG1fcnVuVGFza3MgeyB0cnVlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFN0b3BS
dW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoIHsgZmFsc2UgfTsKLSAgICBib29sIG1fY3VycmVu
dGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxzdGQ6OnR1cGxlPEpTUHJvbWlz
ZSosIFRhc2s+PiBtX3Rhc2tzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCmluZGV4IGFj
YjM0YzlkM2RiMjZlNThhNjFmZmRiMzE3MTdhNTFlNjgzMWZjNWQuLjM4NTdiNzUwZTIyYmY3OTI2
ZDBlY2YzZDQ3OTYyMDk4NTQ1ZDdkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCkBAIC0zMiw2ICszMiwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKK25hbWVzcGFjZSBTdHJ1Y3R1cmVJRFRh
YmxlSW50ZXJuYWwgeworYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKIFN0cnVjdHVyZUlEVGFi
bGU6OlN0cnVjdHVyZUlEVGFibGUoKQogICAgIDogbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3Ry
dWN0dXJlT3JPZmZzZXQ+KHNfaW5pdGlhbFNpemUpKQogICAgICwgbV9zaXplKDEpCkBAIC0xNjEs
MTEgKzE2NSwxNCBAQCBTdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRT
dHJ1Y3R1cmVCaXRzID0gZW5jb2RlKHN0cnVjdHVyZSwgcmVzdWx0KTsKICAgICBtX3NpemUrKzsK
ICAgICBBU1NFUlQoIWlzTnVrZWQocmVzdWx0KSk7CisKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1
cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2UsICJBbGxvY2F0ZWQgU3RydWN0dXJlSUQgIiwgcmVz
dWx0LCAiIGZvciBTdHJ1Y3R1cmUgIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCiB7CisgICAgZGF0YUxv
Z0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVybmFsOjp2ZXJib3NlLCAiRGVhbGxvY2F0ZWQgU3Ry
dWN0dXJlSUQgIiwgc3RydWN0dXJlSUQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmVJRCAhPSBzX3Vu
dXNlZElEKTsKICAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJbmRleCA9IHN0cnVjdHVyZUlEID4+IHNf
bnVtYmVyT2ZFbnRyb3B5Qml0czsKICAgICBBU1NFUlQoc3RydWN0dXJlSW5kZXggJiYgc3RydWN0
dXJlSW5kZXggPCBzX21heGltdW1OdW1iZXJPZlN0cnVjdHVyZXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDhjYWE0OGMxYmUzMTFiNWQ4N2U4NjAzOGJhMGY0MDQxODM4
ODhjMmEuLjc4MzZmNzNlOTNhZjQyNDIxNzcyNTQ2NWI3YjFjMmY3ZGMyMGYyZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJE
T01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKICNp
bmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
ICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuaCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCkBAIC04OCw2ICs4OSw3IEBA
CiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIK
KyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKQEAgLTEzMyw3ICsxMzUsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVy
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJv
Z3JhbUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVk
ZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgpAQCAtMzY1LDcgKzM2Niw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBi
b29sKiBzdWNjZXNzKQogICAgICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwgdG9wRW50cnlG
cmFtZShudWxscHRyKQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkK
LSAgICAsIHByb21pc2VUaW1lcihQcm9taXNlVGltZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBk
ZWZlcnJlZFdvcmtUaW1lcihEZWZlcnJlZFdvcmtUaW1lcjo6Y3JlYXRlKCp0aGlzKSkKICAgICAs
IG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCku
YXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlO
YW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQpAQCAtNTc1LDcgKzU3
Niw3IEBAIFZNOjp+Vk0oKQogICAgIGF1dG8gZGVzdHJ1Y3Rpb25Mb2NrZXIgPSBob2xkTG9jayhz
X2Rlc3RydWN0aW9uTG9jay5yZWFkKCkpOwogICAgIAogICAgIEdpZ2FjYWdlOjpyZW1vdmVQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrLCB0
aGlzKTsKLSAgICBwcm9taXNlVGltZXItPnN0b3BSdW5uaW5nVGFza3MoKTsKKyAgICBkZWZlcnJl
ZFdvcmtUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBpZiAoV2FzbTo6V29ya2xpc3QqIHdvcmtsaXN0ID0gV2FzbTo6ZXhpc3RpbmdXb3JrbGlz
dE9yTnVsbCgpKQogICAgICAgICB3b3JrbGlzdC0+c3RvcEFsbFBsYW5zRm9yQ29udGV4dCh3YXNt
Q29udGV4dCk7CkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBlLmdldCgpLAog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vh
a1NldEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha09iamVjdFJlZikgLy8gSGFzaDoweDhlYzY4
ZjFmCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2l0aFNjb3BlU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2l0aFNjb3BlKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsIGRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkK
ICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3Bh
Y2UsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBPYmpDQ2FsbGJhY2tG
dW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA2MGY1OTcyOWZlYzJlMDJlNjk3NmMzMWVkNTFiMTQ4YTVjNmVhYTA1Li4zN2MwZmZjOTY0
Nzc2ZTQ4YjYyZmYxYTY2NmUwYTgzNjlhYmVmYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7CiBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogY2xhc3Mg
T2JqQ0NhbGxiYWNrRnVuY3Rpb247Ci1jbGFzcyBQcm9taXNlVGltZXI7CitjbGFzcyBEZWZlcnJl
ZFdvcmtUaW1lcjsKIGNsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwogY2xhc3MgUmVn
aXN0ZXI7CkBAIC01NTAsNiArNTUwLDcgQEAgcHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrU2V0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrTWFwU3BhY2UpCkBAIC03MDksOCArNzEwLDggQEAgcHVi
bGljOgogICAgIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4gbV9zbG93Qm91bmRFeGVjdXRhYmxlOwog
ICAgIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4gbV9zbG93Q2FuQ29uc3RydWN0Qm91bmRFeGVjdXRh
YmxlOwogCi0gICAgUmVmPFByb21pc2VUaW1lcj4gcHJvbWlzZVRpbWVyOwotICAgIAorICAgIFJl
ZjxEZWZlcnJlZFdvcmtUaW1lcj4gZGVmZXJyZWRXb3JrVGltZXI7CisKICAgICBKU0NlbGwqIGN1
cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3Q7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
dXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZvIHsgbnVsbHB0ciB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCmlu
ZGV4IDVkYTY5NmQ2OTdkZDQ3NTA1ZDdkYzUyYjYwNmUzMTc3NGE0ZTI2NWQuLmFmNDJkOGQ1NzA5
ZjIwNmE3YTc4NzA4ZjY1ZDdlNTBiNTU4ZTYzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIK
KyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJbmxpbmVz
LmgiCkBAIC00MSw3ICs0Miw2IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2lu
Y2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgpAQCAtMTM0
LDEwICsxMzQsMTAgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1bGVWYWxpZGF0ZUFzeW5j
SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWZWN0b3I8U3Ryb25n
PEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxK
U0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKIAotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVu
ZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0u
ZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRl
cGVuZGVuY2llcykpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNt
Q29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6
Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCAmdm1dIChXYXNtOjpNb2R1bGU6
OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB2bS5wcm9taXNl
VGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGdsb2JhbE9iamVjdCwg
cmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5k
ZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgZ2xv
YmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAg
ICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0s
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgp
LCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkgewpAQCAtMjE0LDExICsyMTQsMTEgQEAgc3RhdGljIHZvaWQgaW5zdGFudGlhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UqIHByb21pc2UK
ICAgICAvLyBUaGUgaW5zdGFuY2Uga2VlcHMgdGhlIG1vZHVsZSBhbGl2ZS4KICAgICBkZXBlbmRl
bmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbnN0YW5jZSkpOwogICAgIGRlcGVuZGVu
Y2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwotICAgIHZtLnBy
b21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5k
ZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBw
cm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIC8vIE5vdGU6IFRoaXMgY29tcGxl
dGlvbiB0YXNrIG1heSBvciBtYXkgbm90IGdldCBjYWxsZWQgaW1tZWRpYXRlbHkuCiAgICAgbW9k
dWxlLT5tb2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVt
b3J5TW9kZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBl
PihbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwg
Y3JlYXRpb25Nb2RlLCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykg
bXV0YWJsZSB7CiAgICAgICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jayA9IFdU
Rk1vdmUocmVmQ29kZUJsb2NrKTsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdv
cmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3Qs
IHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2Rl
QmxvY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVk
dWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9i
amVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3Zl
KGNvZGVCbG9jayldICgpIG11dGFibGUgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgIHJlc29s
dmUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2Jq
ZWN0LCBjb2RlQmxvY2sucmVsZWFzZU5vbk51bGwoKSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9k
ZSk7CiAgICAgICAgIH0pOwpAQCAtMjMzLDEzICsyMzMsMTMgQEAgc3RhdGljIHZvaWQgY29tcGls
ZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQ
cm9taXMKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBl
bmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICBk
ZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBtb2R1bGVLZXlDZWxsKSk7Ci0g
ICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92
ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dv
cmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBnbG9iYWxPYmpl
Y3QsIGJ1ZmZlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVB
c3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxX
YXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxl
S2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChX
YXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGlt
cG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtw
cm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dICgpIG11
dGFibGUgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJs
eU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFz
c2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQpAQCAtMjY4LDEwICsyNjgsMTAgQEAgc3Rh
dGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1bGVJbnN0YW50aW5hdGVBc3luY0ludGVybmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVu
Y2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRP
YmplY3QpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9i
YWxPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBw
cm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVy
LT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAog
ICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUo
c291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3By
b21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAmdm1dIChXYXNtOjpNb2R1bGU6OlZh
bGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB2bS5wcm9taXNlVGlt
ZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtw
cm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
ID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQpAQCAtMzM5LDcg
KzMzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxl
U3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqCiAKICAgICBWZWN0b3I8U3Ryb25nPEpT
Q2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0Nl
bGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQ
cm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRl
bmNpZXMpKTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCktPmNvbXBpbGVTdHJlYW1pbmcpCiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIHByb21pc2UsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEpT
R2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRl
bmNpZXM7CiAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxs
Pih2bSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVu
ZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgdm0u
cHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBl
bmRlbmNpZXMpKTsKKyAgICAgICAgICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVu
ZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTg0ODg4PiBpZiB0aGVyZSdz
IGFuIGltcG9ydE9iamVjdCBhbmQgaXQgY29udGFpbnMgYSBNZW1vcnksIHRoZW4gd2UgY2FuIGNv
bXBpbGUgdGhlIG1vZHVsZSB3aXRoIHRoZSByaWdodCBtZW1vcnkgdHlwZSAoZmFzdCBvciBub3Qp
IGJ5IGxvb2tpbmcgYXQgdGhlIG1lbW9yeSdzIHR5cGUuCiAgICAgICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWluZyhn
bG9iYWxPYmplY3QsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGltcG9ydE9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrLmgKaW5kZXggNDg5NDliZjZlYzI4MGZlZjI3M2YwNDA2ZWQxY2QxMDdkOWM1
NWNmMi4uODE3Zjc5NDcwNjgzOGUxOGE0MjA1OThiMmU3Mjg1NWNhMjVlNGQ3NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2suaApAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1
ZGUgIkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5j
bHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQu
aCIKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUGxhbjsKIGNsYXNzIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2sgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2Vs
bCBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNy
ZWF0ZShWTSYsIFJlZjxXYXNtOjpDb2RlQmxvY2s+LCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbiYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODQsNyAr
ODQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2soVk0m
LCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYp
OwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDI4
ZTUwOWRiMDFjNzAxMGRkNzdlMmZlYmMzNWM3OTg5YWRkN2EzMi4uMDM5ZWY4MjMwYTg2YjYxMzVj
ZWViZGU0M2MzYTEzNzA1ZGNmOTdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjM0LDYgKzIzNCwxMSBAQCB2b2lkIEpTRE9N
R2xvYmFsT2JqZWN0Ojpwcm9taXNlUmVqZWN0aW9uVHJhY2tlcihKU0dsb2JhbE9iamVjdCoganNH
bG9iYWxPYmplY3QsCiAgICAgfQogfQogCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVj
dCwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICByZXBvcnRFeGNlcHRpb24oanNH
bG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7Cit9CisKIEpTRE9NR2xvYmFsT2JqZWN0JiBjYWxsZXJH
bG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSYgY2FsbEZyYW1lKQogewogICAgIGNsYXNzIEdldENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3Ig
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5k
ZXggZDI5ODU4Y2ZhNGIwYmUwZDYyMTM5MGE4M2Q3NmQ1YTg1MGI5ZDI4MC4uNzM4NjdkNmFiMmU1
YjRkYmI3MGI3MGE5YTM2MDk0ODQ5ZjBjZWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAog
ICAgIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zJiBidWlsdGluSW50ZXJuYWxGdW5jdGlvbnMo
KSB7IHJldHVybiBtX2J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9uczsgfQogCisgICAgc3RhdGljIHZv
aWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RXhjZXB0aW9uKik7CiAKIHB1YmxpYzoKICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDg4
MzIxM2U5MDYxZjM4YjhiYjQzMzU3OWIyOTg2MDk4Nzc4NGU3ODIuLmFjZWE3NjZhZjFjN2Q1ZmVl
YWUxN2E2OWY5ZTNiMzVjZGVlOWE4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBACiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJy
ZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlz
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTV2ViQXNzZW1ibHkuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9NaWNyb3Rhc2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Q
cm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
QEAgLTc4LDYgKzc4LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5k
b3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2FkZXJD
cmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcywKICAgICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsCiAg
ICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICZjb21waWxlU3RyZWFtaW5nLApAQCAtNDQzLDggKzQ0NCw4IEBAIHZvaWQgSlNE
T01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFtaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAg
ICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNQZW5kaW5nUHJvbWlzZShwcm9taXNlKSk7Ci0g
ICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2Uo
cHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVy
LT5oYXNQZW5kaW5nV29yayhwcm9taXNlKSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1Rp
bWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsK
IAogICAgIGlmIChhdXRvIGlucHV0UmVzcG9uc2UgPSBKU0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBl
ZCh2bSwgc291cmNlKSkgewogICAgICAgICBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9u
KGdsb2JhbE9iamVjdCwgaW5wdXRSZXNwb25zZSwgcHJvbWlzZSwgW3Byb21pc2VdIChKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgYnl0ZVNpemUpIG11dGFibGUgewpAQCAtNDYxLDkgKzQ2Miw5IEBAIHZvaWQgSlNET01XaW5k
b3dCYXNlOjppbnN0YW50aWF0ZVN0cmVhbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBBU1NF
UlQodm0ucHJvbWlzZVRpbWVyLT5oYXNQZW5kaW5nUHJvbWlzZShwcm9taXNlKSk7Ci0gICAgQVNT
RVJUKHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlz
ZSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5k
YW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgaW1wb3J0ZWRPYmplY3QpKTsKKyAgICBBU1NF
UlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBB
U1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHBy
b21pc2UsIGdsb2JhbE9iamVjdCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+
aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsocHJvbWlzZSwgaW1wb3J0ZWRPYmplY3QpKTsKIAog
ICAgIGlmIChhdXRvIGlucHV0UmVzcG9uc2UgPSBKU0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2
bSwgc291cmNlKSkgewogICAgICAgICBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKGds
b2JhbE9iamVjdCwgaW5wdXRSZXNwb25zZSwgcHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydGVkT2Jq
ZWN0XSAoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGJ5dGVTaXplKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCA1Mzc2
ZTgwZDAwMDUzNzc2MjU4MmFhMjViZTkxZDEyYThmNTk3ZWM0Li5jNDRmMmZiM2EwYjA1ZGFhYjFh
OGE5ZTJmODliNTJkODUxZWI0MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC02NSw2ICs2NSw3IEBAIGNv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2ds
b2JhbE9iamVjdE1ldGhvZFRhYmxlCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRl
SW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0
ZQogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcCwKICAgICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxwdHIsIC8v
IGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNj
b3BlQmFzZS5jcHAKaW5kZXggMDk2NWE4NmM0MThiZTYxZTYyZTFmZmRhYzZjZmU4YmFmNmI0ZDZl
ZS4uYjE0YjgxNTQyZGI4ODllYzZkMjU5YmM1YjcwZWYyYTUwOTljOTZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
Y3BwCkBAIC01Nyw2ICs1Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29y
a2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsCiAgICAgbnVsbHB0
ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRy
LCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwK
KyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICAmZGVmYXVsdExh
bmd1YWdlLAogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAv
LyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA5MzFjZWU3Nzc5YmY5NjE0Mzhl
ODIwMTUwYzdhN2Y4YWI0Njc1NTQ3Li43MTZiMWE2OWI4ZWVjMWRhNjQ3MjAxYTQzMjY5MmIzMzg5
N2ViNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiV29ya2Vy
Q29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9u
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2su
aD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTI1Miw3ICsyNTIsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmFkZFRpbWVyU2V0
Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTgogCiAgICAgcHJvY2Vzc1Rp
bWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7CiAgICAgcHJvY2Vzc1RpbWVy
KG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1f
dm0tPnByb21pc2VUaW1lci5wdHIoKSk7CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVk
V29ya1RpbWVyLnB0cigpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1v
dmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNh
dGlvbkNhbGxiYWNrIGNhbGxiYWNrKQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BU
aW1lcjo6VGltCiAKICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxs
YmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFj
aygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+cHJvbWlzZVRpbWVyLnB0cigpKTsKKyAgICBw
cm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwogfQogCiB2b2lkIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVn
Z2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggZWMwN2Fj
NDYzNTBkMmEzNDI5ZWEwOTg3NGUzZmRmMmRmZGE5ZTQ1MS4uNjZlY2Q1MzZmODEzZDAyOWM0OTdm
MWFlYTdmMjE5ZWRmYzc1YjM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAKICNpZiBVU0UoR0xJQikK
ICNpbmNsdWRlIDxnbGliLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNmE4OGNhYTE0NGFlMjdmYzdjMWYyZDVmMzNi
Y2QxMDhjYzEyMGE5ZS4uMjBhNmY4NTYxODU4YWRmYmUyZTJiYzE4ZWJmNzE1MGI5N2FkMTRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtMzcsMTEgKzM3LDExIEBACiAjaW5jbHVkZSAiV29ya2xldENvbnNvbGVDbGll
bnQuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhl
bHBlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Qcm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxp
bmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZDI5MmUxMTAxNTcyZTJiMjJm
YzhiYmUyM2Q1MWI3OWQyNDliMDkxLi41ZmM4ZDA1NGM2NWY2ZDI3ZDM1Mzk0OTliZDhkYjUzZmIx
MWE1YTM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFs
aXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnku
anM6IEFkZGVkLgorICAgICAgICAobWFrZVdlYWtSZWYpOgorICAgICAgICAodHVybkV2ZW50TG9v
cCk6CisgICAgICAgIChhc3luYyB0ZXN0KToKKyAgICAgICAgKiBqcy91bnRpdGxlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5o
dG1sOiBBZGRlZC4KKwogMjAyMC0wNy0xNyAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXVtXUEVdIEdhcmRlbiBzdmcgZmFpbHVyZXMgYW5kIHVuaWZ5IHNv
bWUgc3ZnIGV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDY2
NTNiYTkwOWMxYjJkYzhkYWUwMWQxMDJlYTQ5M2ViNjk4OWI2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnku
anMKQEAgLTAsMCArMSw0OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPXRy
dWUiKQorCithc3luY1Rlc3RTdGFydCgxKTsKK3ZhciBvYmplY3RzID0gW107Cit2YXIgd2Vha1Jl
ZnMgPSBbXTsKK3ZhciBmaW5hbGl6ZXJDYWxsZWQgPSBmYWxzZTsKK3ZhciBmaW5hbGl6YXRpb25S
ZWdpc3RyeSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiBmaW5hbGl6ZXJDYWxsZWQg
PSB0cnVlKTsKK2Z1bmN0aW9uIG1ha2VXZWFrUmVmKCkgeyByZXR1cm4gbmV3IFdlYWtSZWYoeyBm
b286IDEgfSk7IH0KK25vSW5saW5lKG1ha2VXZWFrUmVmKTsKKworbGV0IGxvb3BDb3VudCA9IDEw
MDA7CitmdW5jdGlvbiB0dXJuRXZlbnRMb29wKCkgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShm
dW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAg
ICAgZ2MoKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfSk7
Cit9CisKK3ZhciBpOworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGxvb3BDb3VudDsgaSsrKSB7CisgICAgICAgIGxldCB3ZWFrID0gbWFrZVdlYWtSZWYo
KTsKKyAgICAgICAgd2Vha1JlZnMucHVzaCh3ZWFrKTsKKyAgICAgICAgb2JqZWN0cy5wdXNoKHdl
YWsuZGVyZWYoKSk7CisgICAgICAgIGZpbmFsaXphdGlvblJlZ2lzdHJ5LnJlZ2lzdGVyKHdlYWsu
ZGVyZWYoKSk7CisgICAgfQorCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAgc2hv
dWxkQmVGYWxzZShgZmluYWxpemVyQ2FsbGVkYCk7CisgICAgZm9yIChpID0gMDsgaSA8IGxvb3BD
b3VudDsgaSsrKQorICAgICAgICBzaG91bGRCZShgd2Vha1JlZnNbaV0uZGVyZWYoKWAsIGBvYmpl
Y3RzW2ldYCk7CisKKyAgICBvYmplY3RzLmxlbmd0aCA9IDA7CisgICAgb2JqZWN0cyA9IG51bGw7
CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7CisgICAgLy8gV2UgbmVlZCB0byB0dXJuIHRo
ZSBldmVudCBsb29wIGFnYWluIHNpbmNlIEZSIG1heSBub3QgaGF2ZSBjYWxsZWQgdGhlIGNhbGxi
YWNrIGluIHRoZSBsYXN0IHR1cm4uCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAg
c2hvdWxkQmVUcnVlKGBmaW5hbGl6ZXJDYWxsZWRgKTsKKyAgICBzaG91bGRCZVRydWUoYHdlYWtS
ZWZzLnNvbWUoKHdlYWtSZWYpID0+IHdlYWtSZWYuZGVyZWYoKSA9PT0gbnVsbClgKTsKKworICAg
IGFzeW5jVGVzdFBhc3NlZCgpOworfQorCit0ZXN0KCkuY2F0Y2goZSA9PiBkZWJ1ZyhlKSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy91bnRpdGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvanMv
dW50aXRsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzBlMWNiNzA1YTlkNzc5MDgwNGM2OTg1MjdjODQz
MjEzZDRhZDZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRt
bApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNlV2Vha1Jl
ZnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxp
emF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5h
bGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNjYTY1YzM4ZDI0ODJl
N2YyOWRhN2IxNWI2ZWFiMjYzZjJhMTk0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAwNyBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CitQQVNTIGZpbmFsaXplckNhbGxlZCBpcyBmYWxzZQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1MgZmluYWxpemVyQ2FsbGVkIGlzIHRydWUKK1BBU1Mgd2Vh
a1JlZnMuc29tZSgod2Vha1JlZikgPT4gd2Vha1JlZi5kZXJlZigpID09PSBudWxsKSBpcyB0cnVl
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0
cnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MWQ3Y2Y0N2Q0YTM0MTY5OGJkMGQ1NWVkNmE4ODkwYmZlNDEyNzQ5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdp
c3RyeS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11
c2VXZWFrUmVmcz10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE5Yzg1YjYyY2JjMWMwMTYwY2M3OTcxZjcyMzc2YzM5NWM3
NGY0ZDUuLjlkZWZhYzRmYzc2YjM0YWZhN2E0MzZiNDBjNTA0MWQzNWI2MWExZWYgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTE2IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25SZWdpc3RyaWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qczogQWRkZWQuCisgICAgICAgIChNanNVbml0QXNzZXJ0aW9uRXJy
b3IpOgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyk6
CisgICAgICAgIChjYXRjaCk6CisgICAgICAgIChjbGFzc09mKToKKyAgICAgICAgKFZhbHVlT2Yp
OgorICAgICAgICAocHJldHR5UHJpbnRlZCk6CisgICAgICAgIChwcmV0dHlQcmludGVkQXJyYXlF
bGVtZW50KToKKyAgICAgICAgKGZhaWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChmb3JtYXRGYWls
dXJlVGV4dCk6CisgICAgICAgIChmYWlsKToKKyAgICAgICAgKGRlZXBPYmplY3RFcXVhbHMpOgor
ICAgICAgICAoZGVlcEVxdWFscyk6CisgICAgICAgIChhc3NlcnRTYW1lKToKKyAgICAgICAgKGFz
c2VydE5vdFNhbWUpOgorICAgICAgICAoYXNzZXJ0RXF1YWxzKToKKyAgICAgICAgKGFzc2VydE5v
dEVxdWFscyk6CisgICAgICAgIChhc3NlcnRFcXVhbHNEZWx0YSk6CisgICAgICAgIChhc3NlcnRB
cnJheUVxdWFscyk6CisgICAgICAgIChhc3NlcnRQcm9wZXJ0aWVzRXF1YWwpOgorICAgICAgICAo
YXNzZXJ0VG9TdHJpbmdFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0VHJ1ZSk6CisgICAgICAgIChh
c3NlcnRGYWxzZSk6CisgICAgICAgIChhc3NlcnROdWxsKToKKyAgICAgICAgKGFzc2VydE5vdE51
bGwpOgorICAgICAgICAoZXhlY3V0ZUNvZGUpOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgor
ICAgICAgICAoYXNzZXJ0VGhyb3dzKToKKyAgICAgICAgKGFzc2VydFRocm93c0VxdWFscyk6Cisg
ICAgICAgIChhc3NlcnRUaHJvd3NBc3luYyk6CisgICAgICAgIChhc3NlcnRJbnN0YW5jZW9mKToK
KyAgICAgICAgKGFzc2VydERvZXNOb3RUaHJvdyk6CisgICAgICAgIChhc3NlcnRVbnJlYWNoYWJs
ZSk6CisgICAgICAgIChhc3NlcnRDb250YWlucyk6CisgICAgICAgIChhc3NlcnRNYXRjaGVzKToK
KyAgICAgICAgKGNvbmNhdGVuYXRlRXJyb3JzKToKKyAgICAgICAgKGFzc2VydFByb21pc2VSZXN1
bHQpOgorICAgICAgICAoT3B0aW1pemF0aW9uU3RhdHVzKToKKyAgICAgICAgKGFzc2VydFVub3B0
aW1pemVkKToKKyAgICAgICAgKGFzc2VydE9wdGltaXplZCk6CisgICAgICAgIChpc05ldmVyT3B0
aW1pemVMaXRlTW9kZSk6CisgICAgICAgIChpc05ldmVyT3B0aW1pemUpOgorICAgICAgICAoaXNB
bHdheXNPcHRpbWl6ZSk6CisgICAgICAgIChpc0ludGVycHJldGVkKToKKyAgICAgICAgKGlzT3B0
aW1pemVkKToKKyAgICAgICAgKGlzVHVyYm9GYW5uZWQpOgorICAgICAgICAoTWpzVW5pdEFzc2Vy
dGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlKToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51
cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczogQWRkZWQuCisgICAgICAgIChsZXQudGltZW91dF9m
dW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1y
ZWFsbS5qczogQWRkZWQuCisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBz
dHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qczogQWRkZWQuCisgICAgICAg
IChUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAoVGVzdEZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JDYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChUZXN0
Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlDbGVhbnVwTm90Q2FsbGFibGUpOgorICAgICAg
ICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5V2l0aE5vbkNhbGxhYmxlUHJveHlB
c0NsZWFudXApOgorICAgICAgICAoVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFs
dWUpOgorICAgICAgICAoVGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KToK
KyAgICAgICAgKFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkV4aXN0ZW50S2V5KToKKyAgICAgICAgKFRl
c3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RX
ZWFrUmVmQ29uc3RydWN0b3JXaXRoTm9uT2JqZWN0KToKKyAgICAgICAgKFRlc3RXZWFrUmVmV2l0
aFByb3h5KToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdl
YWtyZWYuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAoc2V0VGlt
ZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhv
bGRpbmdzLWFsaXZlLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAg
KGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdp
c3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanM6IEFkZGVkLgorICAg
ICAgICAobGV0LmNsZWFudXAwKToKKyAgICAgICAgKGxldC5jbGVhbnVwMSk6CisgICAgICAgIChs
ZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmlu
YWxpemF0aW9uLXJlZ2lzdHJpZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgor
ICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXJlZW50cmFu
dC1nYy1mcm9tLWNsZWFudXAuanM6IEFkZGVkLgorICAgICAgICAobGV0LnJlZW50cmFudF9nYyk6
CisgICAgICAgIChzZXRUaW1lb3V0KToKKyAgICAgICAgKiBzdHJlc3Mvdjgtc3RyZXNzLWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanM6IEFkZGVkLgorICAgICAgICAoaS5yZWdp
c3RyaWVzLnB1c2gubmV3LkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKHJlZ2lzdHJp
ZXMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qczog
QWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5j
KToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgor
ICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzOiBBZGRlZC4K
KyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAg
ICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qczogQWRkZWQuCisgICAg
ICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAg
KiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanM6IEFkZGVkLgorICAgICAg
ICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICog
c3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0
cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXAp
OgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXdlYWst
dW5yZWdpc3RlcnRva2VuLmpzOiBBZGRlZC4KKyAgICAgICAgKEZSLm5ldy5GaW5hbGl6YXRpb25S
ZWdpc3RyeSk6CisgICAgICAgICh0cnlBZ2Fpbik6CisKIDIwMjAtMDctMTcgIFhhbiBMb3BleiAg
PHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1hdGgubWF4KCkgY2FuIHlpZWxkIHRoZSB3cm9u
ZyByZXN1bHQgZm9yIG1heCgwLCAtMCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA3NzQ2MWY3NGM5MDIyMzIxZmM2MGU2ODZmNzk1ZDUwZTM5Mjk4MTYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5q
cwpAQCAtMCwwICsxLDgwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlv
biBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkgeworICB0aGlzLm1lc3NhZ2UgPSBtZXNz
YWdlOworICAvLyBUZW1wb3JhcmlseSBpbnN0YWxsIGEgY3VzdG9tIHN0YWNrIHRyYWNlIGZvcm1h
dHRlciBhbmQgcmVzdG9yZSB0aGUKKyAgLy8gcHJldmlvdXMgdmFsdWUuCisgIGxldCBwcmV2UHJl
cGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsKKyAgdHJ5IHsKKyAgICBF
cnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJlU3Rh
Y2tUcmFjZTsKKyAgICAvLyBUaGlzIGFsbG93cyBmZXRjaGluZyB0aGUgc3RhY2sgdHJhY2UgdXNp
bmcgVHJ5Q2F0Y2g6OlN0YWNrVHJhY2UuCisgICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcigiTWpz
VW5pdEFzc2VydGlvbkVycm9yIikuc3RhY2s7CisgIH0gZmluYWxseSB7CisgICAgRXJyb3IucHJl
cGFyZVN0YWNrVHJhY2UgPSBwcmV2UHJlcGFyZVN0YWNrVHJhY2U7CisgIH0KK30KKworLyoKKyAq
IFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbiBhbGwgbWluaSBqc3VuaXQgdGVzdCBjYXNlcy4gIFRo
ZSB0ZXN0CisgKiBmcmFtZXdvcmsgZXhwZWN0cyBsaW5lcyB0aGF0IHNpZ25hbCBmYWlsZWQgdGVz
dHMgdG8gc3RhcnQgd2l0aAorICogdGhlIGYtd29yZCBhbmQgaWdub3JlIGFsbCBvdGhlciBsaW5l
cy4KKyAqLworCitNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5tZXNzYWdlICsgIlxuXG5TdGFjazogIiArIHRoaXMu
c3RhY2s7Cit9OworCisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgdGhlIHNhbWUgb2Jq
ZWN0cywgb3IgdGhlIHNhbWUgcHJpbWl0aXZlCisvLyB2YWx1ZXMuCisvLyBGb3Iga25vd24gcHJp
bWl0aXZlIHZhbHVlcywgcGxlYXNlIHVzZSBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0U2FtZTsK
KworLy8gSW52ZXJzZSBvZiBhc3NlcnRTYW1lLgordmFyIGFzc2VydE5vdFNhbWU7CisKKy8vIEV4
cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9y
IGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcg
aW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3Rz
LCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFy
cmF5IG9iamVjdHMpLgordmFyIGFzc2VydEVxdWFsczsKKworLy8gRGVlcCBlcXVhbGl0eSBwcmVk
aWNhdGUgdXNlZCBieSBhc3NlcnRFcXVhbHMuCit2YXIgZGVlcEVxdWFsczsKKworLy8gRXhwZWN0
ZWQgYW5kIGZvdW5kIHZhbHVlcyBhcmUgbm90IGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9y
IGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcg
aW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3Rz
LCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFy
cmF5IG9iamVjdHMpLgordmFyIGFzc2VydE5vdEVxdWFsczsKKworLy8gVGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiBleHBlY3RlZCBhbmQgZm91bmQgdmFsdWUgaXMgd2l0aGluIGNlcnRhaW4gdG9sZXJh
bmNlLgordmFyIGFzc2VydEVxdWFsc0RlbHRhOworCisvLyBUaGUgZm91bmQgb2JqZWN0IGlzIGFu
IEFycmF5IHdpdGggdGhlIHNhbWUgbGVuZ3RoIGFuZCBlbGVtZW50cworLy8gYXMgdGhlIGV4cGVj
dGVkIG9iamVjdC4gVGhlIGV4cGVjdGVkIG9iamVjdCBkb2Vzbid0IG5lZWQgdG8gYmUgYW4gQXJy
YXksCisvLyBhcyBsb25nIGFzIGl0J3MgImFycmF5LWlzaCIuCit2YXIgYXNzZXJ0QXJyYXlFcXVh
bHM7CisKKy8vIFRoZSBmb3VuZCBvYmplY3QgbXVzdCBoYXZlIHRoZSBzYW1lIGVudW1lcmFibGUg
cHJvcGVydGllcyBhcyB0aGUKKy8vIGV4cGVjdGVkIG9iamVjdC4gVGhlIHR5cGUgb2Ygb2JqZWN0
IGlzbid0IGNoZWNrZWQuCit2YXIgYXNzZXJ0UHJvcGVydGllc0VxdWFsOworCisvLyBBc3NlcnQg
dGhhdCB0aGUgc3RyaW5nIGNvbnZlcnNpb24gb2YgdGhlIGZvdW5kIHZhbHVlIGlzIGVxdWFsIHRv
CisvLyB0aGUgZXhwZWN0ZWQgc3RyaW5nLiBPbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRp
YmlsaXR5LCBwbGVhc2UKKy8vIGNoZWNrIHRoZSByZWFsIHN0cnVjdHVyZSBvZiB0aGUgZm91bmQg
dmFsdWUuCit2YXIgYXNzZXJ0VG9TdHJpbmdFcXVhbHM7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBm
b3VuZCB2YWx1ZSBpcyB0cnVlLiBVc2Ugd2l0aCBib29sZWFuIGV4cHJlc3Npb25zCisvLyBmb3Ig
dGVzdHMgdGhhdCBkb2Vzbid0IGhhdmUgdGhlaXIgb3duIGFzc2VydFhYWCBmdW5jdGlvbi4KK3Zh
ciBhc3NlcnRUcnVlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgZmFsc2Uu
Cit2YXIgYXNzZXJ0RmFsc2U7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBu
dWxsLiBLZXB0IGZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksCisvLyBwbGVhc2UganVzdCB1
c2UgYXNzZXJ0RXF1YWxzKG51bGwsIGV4cGVjdGVkKS4KK3ZhciBhc3NlcnROdWxsOworCisvLyBD
aGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgKm5vdCogbnVsbC4KK3ZhciBhc3NlcnROb3RO
dWxsOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9uIG9yIGV2YWwgY29kZSB0
aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBpcyBh
biBleGNlcHRpb24gY29uc3RydWN0b3IgdGhhdCB0aGUKKy8vIHRocm93biBleGNlcHRpb24gaXMg
Y2hlY2tlZCBhZ2FpbnN0IHdpdGggImluc3RhbmNlb2YiLgorLy8gVGhlIG9wdGlvbmFsIHRoaXJk
IGFyZ3VtZW50IGlzIGEgbWVzc2FnZSB0eXBlIHN0cmluZyBvciBSZWdFeHAgb2JqZWN0IHRoYXQg
aXMKKy8vIGNvbXBhcmVkIHRvIHRoZSBtZXNzYWdlIG9mIHRoZSB0aHJvd24gZXhjZXB0aW9uLgor
dmFyIGFzc2VydFRocm93czsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0
aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qg
dGhlIHNlY29uZCBhcmd1bWVudCB1c2luZyBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0VGhyb3dz
RXF1YWxzOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIHByb21pc2UgZG9lcyBub3QgcmVz
b2x2ZSwgYnV0IGV2ZW50dWFsbHkgdGhyb3dzIGFuCisvLyBleGNlcHRpb24uIFRoZSBvcHRpb25h
bCBzZWNvbmQgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisv
LyB0aHJvd24gZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4K
Ky8vIFRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcg
b3IgUmVnRXhwIG9iamVjdCB0aGF0IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0
aGUgdGhyb3duIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnRUaHJvd3NBc3luYzsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNvZGUgZG9lcyBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uLgordmFyIGFzc2VydERvZXNOb3RUaHJvdzsKKworLy8gQXNzZXJ0cyB0aGF0IHRo
ZSBmb3VuZCB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29uc3RydWN0b3IgcGFzc2VkCisv
LyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LgordmFyIGFzc2VydEluc3RhbmNlb2Y7CisKKy8vIEFz
c2VydCB0aGF0IHRoaXMgY29kZSBpcyBuZXZlciBleGVjdXRlZCAoaS5lLiwgYWx3YXlzIGZhaWxz
IGlmIGV4ZWN1dGVkKS4KK3ZhciBhc3NlcnRVbnJlYWNoYWJsZTsKKworLy8gQXNzZXJ0IHRoYXQg
dGhlIGZ1bmN0aW9uIGNvZGUgaXMgKG5vdCkgb3B0aW1pemVkLiAgSWYgIm5vIHN5bmMiIGlzIHBh
c3NlZAorLy8gYXMgc2Vjb25kIGFyZ3VtZW50LCB3ZSBkbyBub3Qgd2FpdCBmb3IgdGhlIGNvbmN1
cnJlbnQgb3B0aW1pemF0aW9uIHRocmVhZCB0bworLy8gZmluaXNoIHdoZW4gcG9sbGluZyBmb3Ig
b3B0aW1pemF0aW9uIHN0YXR1cy4KKy8vIE9ubHkgd29ya3Mgd2l0aCAtLWFsbG93LW5hdGl2ZXMt
c3ludGF4LgordmFyIGFzc2VydE9wdGltaXplZDsKK3ZhciBhc3NlcnRVbm9wdGltaXplZDsKKwor
Ly8gQXNzZXJ0IHRoYXQgYSBzdHJpbmcgY29udGFpbnMgYW5vdGhlciBleHBlY3RlZCBzdWJzdHJp
bmcuCit2YXIgYXNzZXJ0Q29udGFpbnM7CisKKy8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIG1hdGNo
ZXMgYSBnaXZlbiByZWdleC4KK3ZhciBhc3NlcnRNYXRjaGVzOworCisvLyBBc3NlcnQgdGhhdCBh
IHByb21pc2UgcmVzb2x2ZXMgb3IgcmVqZWN0cy4KKy8vIFBhcmFtZXRlcnM6CisvLyB7cHJvbWlz
ZX0gLSB0aGUgcHJvbWlzZQorLy8ge3N1Y2Nlc3N9IC0gb3B0aW9uYWwgLSBhIGNhbGxiYWNrIHdo
aWNoIGlzIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlCisvLyAgICAgICAgICAgICByZXNv
bHZpbmcgcHJvbWlzZS4KKy8vICB7ZmFpbH0gLSAgIG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3aGlj
aCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAgcmVqZWN0
aW5nIHByb21pc2UuIElmIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGJ1dCBubyB7ZmFpbH0KKy8v
ICAgICAgICAgICAgIGNhbGxiYWNrIGlzIHNldCwgdGhlIGVycm9yIGlzIHByb3BhZ2F0ZWQgb3V0
IG9mIHRoZSBwcm9taXNlCisvLyAgICAgICAgICAgICBjaGFpbi4KK3ZhciBhc3NlcnRQcm9taXNl
UmVzdWx0OworCit2YXIgcHJvbWlzZVRlc3RDaGFpbjsKK3ZhciBwcm9taXNlVGVzdENvdW50ID0g
MDsKKworLy8gVGhlc2UgYml0cyBtdXN0IGJlIGluIHN5bmMgd2l0aCBiaXRzIGRlZmluZWQgaW4g
UnVudGltZV9HZXRPcHRpbWl6YXRpb25TdGF0dXMKK3ZhciBWOE9wdGltaXphdGlvblN0YXR1cyA9
IHsKKyAga0lzRnVuY3Rpb246IDEgPDwgMCwKKyAga05ldmVyT3B0aW1pemU6IDEgPDwgMSwKKyAg
a0Fsd2F5c09wdGltaXplOiAxIDw8IDIsCisgIGtNYXliZURlb3B0ZWQ6IDEgPDwgMywKKyAga09w
dGltaXplZDogMSA8PCA0LAorICBrVHVyYm9GYW5uZWQ6IDEgPDwgNSwKKyAga0ludGVycHJldGVk
OiAxIDw8IDYsCisgIGtNYXJrZWRGb3JPcHRpbWl6YXRpb246IDEgPDwgNywKKyAga01hcmtlZEZv
ckNvbmN1cnJlbnRPcHRpbWl6YXRpb246IDEgPDwgOCwKKyAga09wdGltaXppbmdDb25jdXJyZW50
bHk6IDEgPDwgOSwKKyAga0lzRXhlY3V0aW5nOiAxIDw8IDEwLAorICBrVG9wbW9zdEZyYW1lSXNU
dXJib0Zhbm5lZDogMSA8PCAxMSwKKyAga0xpdGVNb2RlOiAxIDw8IDEyLAorICBrTWFya2VkRm9y
RGVvcHRpbWl6YXRpb246IDEgPDwgMTMsCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1saXRl
LW1vZGUgaXMgb24gYW5kIHdlIGNhbid0IGV2ZXIgdHVybiBvbiBvcHRpbWl6YXRpb24uCit2YXIg
aXNOZXZlck9wdGltaXplTGl0ZU1vZGU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAtLW5vLW9wdCBt
b2RlIGlzIG9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0t
YWx3YXlzLW9wdCBtb2RlIGlzIG9uLgordmFyIGlzQWx3YXlzT3B0aW1pemU7CisKKy8vIFJldHVy
bnMgdHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpbiBpbnRlcnByZXRlZC4KK3ZhciBpc0ludGVycHJl
dGVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMgb3B0aW1pemVkLgor
dmFyIGlzT3B0aW1pemVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMg
Y29tcGlsZWQgYnkgVHVyYm9GYW4uCit2YXIgaXNUdXJib0Zhbm5lZDsKKworLy8gTW9ua2V5LXBh
dGNoYWJsZSBhbGwtcHVycG9zZSBmYWlsdXJlIGhhbmRsZXIuCit2YXIgZmFpbFdpdGhNZXNzYWdl
OworCisvLyBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgZmFpbHVyZSB0ZXh0LiAgVXNlZCBieSB0ZXN0
LWFzeW5jLmpzLgordmFyIGZvcm1hdEZhaWx1cmVUZXh0OworCisvLyBSZXR1cm5zIGEgcHJldHR5
LXByaW50ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXNzZWQgdmFsdWUuCit2YXIg
cHJldHR5UHJpbnRlZDsKKworKGZ1bmN0aW9uICgpIHsgIC8vIFNjb3BlIGZvciB1dGlsaXR5IGZ1
bmN0aW9ucy4KKworICB2YXIgT2JqZWN0UHJvdG90eXBlVG9TdHJpbmcgPSBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nOworICB2YXIgTnVtYmVyUHJvdG90eXBlVmFsdWVPZiA9IE51bWJlci5wcm90
b3R5cGUudmFsdWVPZjsKKyAgdmFyIEJvb2xlYW5Qcm90b3R5cGVWYWx1ZU9mID0gQm9vbGVhbi5w
cm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2YgPSBTdHJpbmcu
cHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBEYXRlUHJvdG90eXBlVmFsdWVPZiA9IERhdGUucHJv
dG90eXBlLnZhbHVlT2Y7CisgIHZhciBSZWdFeHBQcm90b3R5cGVUb1N0cmluZyA9IFJlZ0V4cC5w
cm90b3R5cGUudG9TdHJpbmc7CisgIHZhciBBcnJheVByb3RvdHlwZUZvckVhY2ggPSBBcnJheS5w
cm90b3R5cGUuZm9yRWFjaDsKKyAgdmFyIEFycmF5UHJvdG90eXBlSm9pbiA9IEFycmF5LnByb3Rv
dHlwZS5qb2luOworICB2YXIgQXJyYXlQcm90b3R5cGVNYXAgPSBBcnJheS5wcm90b3R5cGUubWFw
OworICB2YXIgQXJyYXlQcm90b3R5cGVQdXNoID0gQXJyYXkucHJvdG90eXBlLnB1c2g7CisKKyAg
dmFyIEJpZ0ludFByb3RvdHlwZVZhbHVlT2Y7CisgIC8vIFRPRE8obmVpcyk6IFJlbW92ZSB0cnkt
Y2F0Y2ggb25jZSBCaWdJbnRzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCisgIHRyeSB7CisgICAg
QmlnSW50UHJvdG90eXBlVmFsdWVPZiA9IEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZjsKKyAgfSBj
YXRjaCAoZSkge30KKworICBmdW5jdGlvbiBjbGFzc09mKG9iamVjdCkgeworICAgIC8vIEFyZ3Vt
ZW50IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLgorICAgIHZhciBzdHJpbmcgPSBPYmpl
Y3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iamVjdCk7CisgICAgLy8gU3RyaW5nIGhhcyBmb3Jt
YXQgW29iamVjdCA8Q2xhc3NOYW1lPl0uCisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoOCwg
c3RyaW5nLmxlbmd0aCAtIDEpOworICB9CisKKworICBmdW5jdGlvbiBWYWx1ZU9mKHZhbHVlKSB7
CisgICAgc3dpdGNoIChjbGFzc09mKHZhbHVlKSkgeworICAgICAgY2FzZSAiTnVtYmVyIjoKKyAg
ICAgICAgcmV0dXJuIE51bWJlclByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBj
YXNlICJCaWdJbnQiOgorICAgICAgICByZXR1cm4gQmlnSW50UHJvdG90eXBlVmFsdWVPZi5jYWxs
KHZhbHVlKTsKKyAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgIHJldHVybiBTdHJpbmdQcm90
b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAgICAg
IHJldHVybiBCb29sZWFuUHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2Ug
IkRhdGUiOgorICAgICAgICByZXR1cm4gRGF0ZVByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICB9CisKKwor
ICBwcmV0dHlQcmludGVkID0gZnVuY3Rpb24gcHJldHR5UHJpbnRlZCh2YWx1ZSkgeworICAgIHN3
aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICByZXR1
cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpOworICAgICAgY2FzZSAiYmlnaW50IjoKKyAgICAgICAg
cmV0dXJuIFN0cmluZyh2YWx1ZSkgKyAibiI7CisgICAgICBjYXNlICJudW1iZXIiOgorICAgICAg
ICBpZiAodmFsdWUgPT09IDAgJiYgKDEgLyB2YWx1ZSkgPCAwKSByZXR1cm4gIi0wIjsKKyAgICAg
ICAgLy8gRkFMTFRIUk9VR0guCisgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgIGNhc2UgInVu
ZGVmaW5lZCI6CisgICAgICBjYXNlICJmdW5jdGlvbiI6CisgICAgICBjYXNlICJzeW1ib2wiOgor
ICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKKyAgICAgIGNhc2UgIm9iamVjdCI6CisgICAg
ICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICJudWxsIjsKKyAgICAgICAgdmFyIG9iamVj
dENsYXNzID0gY2xhc3NPZih2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAob2JqZWN0Q2xhc3MpIHsK
KyAgICAgICAgICBjYXNlICJOdW1iZXIiOgorICAgICAgICAgIGNhc2UgIkJpZ0ludCI6CisgICAg
ICAgICAgY2FzZSAiU3RyaW5nIjoKKyAgICAgICAgICBjYXNlICJCb29sZWFuIjoKKyAgICAgICAg
ICBjYXNlICJEYXRlIjoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoIiArIHBy
ZXR0eVByaW50ZWQoVmFsdWVPZih2YWx1ZSkpICsgIikiOworICAgICAgICAgIGNhc2UgIlJlZ0V4
cCI6CisgICAgICAgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbCh2YWx1
ZSk7CisgICAgICAgICAgY2FzZSAiQXJyYXkiOgorICAgICAgICAgICAgdmFyIG1hcHBlZCA9IEFy
cmF5UHJvdG90eXBlTWFwLmNhbGwoCisgICAgICAgICAgICAgICAgdmFsdWUsIHByZXR0eVByaW50
ZWRBcnJheUVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGpvaW5lZCA9IEFycmF5UHJvdG90eXBl
Sm9pbi5jYWxsKG1hcHBlZCwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiAiWyIgKyBqb2luZWQg
KyAiXSI7CisgICAgICAgICAgY2FzZSAiVWludDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50
OEFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQxNkFycmF5IjoKKyAgICAgICAgICBjYXNlICJV
aW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAiVWludDMyQXJyYXkiOgorICAgICAgICAgIGNh
c2UgIkludDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkZsb2F0MzJBcnJheSI6CisgICAgICAg
ICAgY2FzZSAiRmxvYXQ2NEFycmF5IjoKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVBy
b3RvdHlwZUpvaW4uY2FsbCh2YWx1ZSwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RD
bGFzcyArICIoWyIgKyBqb2luZWQgKyAiXSkiOworICAgICAgICAgIGNhc2UgIk9iamVjdCI6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IG9iamVjdENsYXNzICsgIigiICsgU3RyaW5nKHZhbHVlKSArICIpIjsKKyAgICAgICAgfQorICAg
ICAgICAvLyBjbGFzc09mKCkgcmV0dXJuZWQgIk9iamVjdCIuCisgICAgICAgIHZhciBuYW1lID0g
dmFsdWUuY29uc3RydWN0b3IubmFtZTsKKyAgICAgICAgaWYgKG5hbWUpIHJldHVybiBuYW1lICsg
IigpIjsKKyAgICAgICAgcmV0dXJuICJPYmplY3QoKSI7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gIi0tIHVua25vd24gdmFsdWUgLS0iOworICAgIH0KKyAgfQorCisKKyAgZnVuY3Rp
b24gcHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCh2YWx1ZSwgaW5kZXgsIGFycmF5KSB7CisgICAg
aWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShpbmRleCBpbiBhcnJheSkpIHJldHVybiAiIjsK
KyAgICByZXR1cm4gcHJldHR5UHJpbnRlZCh2YWx1ZSk7CisgIH0KKworCisgIGZhaWxXaXRoTWVz
c2FnZSA9IGZ1bmN0aW9uIGZhaWxXaXRoTWVzc2FnZShtZXNzYWdlKSB7CisgICAgdGhyb3cgbmV3
IE1qc1VuaXRBc3NlcnRpb25FcnJvcihtZXNzYWdlKTsKKyAgfQorCisgIGZvcm1hdEZhaWx1cmVU
ZXh0ID0gZnVuY3Rpb24oZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIg
bWVzc2FnZSA9ICJGYWlsIiArICJ1cmUiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAgLy8g
Rml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgorICAgICAgbWVzc2Fn
ZSArPSAiICgiICsgbmFtZV9vcHQgKyAiKSI7CisgICAgfQorCisgICAgdmFyIGZvdW5kVGV4dCA9
IHByZXR0eVByaW50ZWQoZm91bmQpOworICAgIGlmIChleHBlY3RlZFRleHQubGVuZ3RoIDw9IDQw
ICYmIGZvdW5kVGV4dC5sZW5ndGggPD0gNDApIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjogZXhwZWN0
ZWQgPCIgKyBleHBlY3RlZFRleHQgKyAiPiBmb3VuZCA8IiArIGZvdW5kVGV4dCArICI+IjsKKyAg
ICB9IGVsc2UgeworICAgICAgbWVzc2FnZSArPSAiOlxuZXhwZWN0ZWQ6XG4iICsgZXhwZWN0ZWRU
ZXh0ICsgIlxuZm91bmQ6XG4iICsgZm91bmRUZXh0OworICAgIH0KKyAgICByZXR1cm4gbWVzc2Fn
ZTsKKyAgfQorCisgIGZ1bmN0aW9uIGZhaWwoZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQp
IHsKKyAgICByZXR1cm4gZmFpbFdpdGhNZXNzYWdlKGZvcm1hdEZhaWx1cmVUZXh0KGV4cGVjdGVk
VGV4dCwgZm91bmQsIG5hbWVfb3B0KSk7CisgIH0KKworCisgIGZ1bmN0aW9uIGRlZXBPYmplY3RF
cXVhbHMoYSwgYikgeworICAgIHZhciBhUHJvcHMgPSBPYmplY3Qua2V5cyhhKTsKKyAgICBhUHJv
cHMuc29ydCgpOworICAgIHZhciBiUHJvcHMgPSBPYmplY3Qua2V5cyhiKTsKKyAgICBiUHJvcHMu
c29ydCgpOworICAgIGlmICghZGVlcEVxdWFscyhhUHJvcHMsIGJQcm9wcykpIHsKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhUHJvcHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIGlmICghZGVlcEVxdWFscyhhW2FQcm9wc1tpXV0sIGJbYVByb3BzW2ld
XSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfQorCisKKyAgZGVlcEVxdWFscyA9IGZ1bmN0aW9uIGRlZXBFcXVhbHMoYSwgYikg
eworICAgIGlmIChhID09PSBiKSB7CisgICAgICAvLyBDaGVjayBmb3IgLTAuCisgICAgICBpZiAo
YSA9PT0gMCkgcmV0dXJuICgxIC8gYSkgPT09ICgxIC8gYik7CisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgcmV0dXJuIGZhbHNlOworICAg
IGlmICh0eXBlb2YgYSA9PT0gIm51bWJlciIpIHJldHVybiBpc05hTihhKSAmJiBpc05hTihiKTsK
KyAgICBpZiAodHlwZW9mIGEgIT09ICJvYmplY3QiICYmIHR5cGVvZiBhICE9PSAiZnVuY3Rpb24i
KSByZXR1cm4gZmFsc2U7CisgICAgLy8gTmVpdGhlciBhIG5vciBiIGlzIHByaW1pdGl2ZS4KKyAg
ICB2YXIgb2JqZWN0Q2xhc3MgPSBjbGFzc09mKGEpOworICAgIGlmIChvYmplY3RDbGFzcyAhPT0g
Y2xhc3NPZihiKSkgcmV0dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIlJlZ0V4
cCIpIHsKKyAgICAgIC8vIEZvciBSZWdFeHAsIGp1c3QgY29tcGFyZSBwYXR0ZXJuIGFuZCBmbGFn
cyB1c2luZyBpdHMgdG9TdHJpbmcuCisgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJp
bmcuY2FsbChhKSA9PT0KKyAgICAgICAgICAgICBSZWdFeHBQcm90b3R5cGVUb1N0cmluZy5jYWxs
KGIpOworICAgIH0KKyAgICAvLyBGdW5jdGlvbnMgYXJlIG9ubHkgaWRlbnRpY2FsIHRvIHRoZW1z
ZWx2ZXMuCisgICAgaWYgKG9iamVjdENsYXNzID09PSAiRnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiQXJyYXkiKSB7CisgICAgICB2YXIgZWxlbWVudENv
dW50ID0gMDsKKyAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgfQorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIGlmICghZGVlcEVxdWFscyhhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNl
OworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChvYmplY3RDbGFz
cyA9PT0gIlN0cmluZyIgfHwgb2JqZWN0Q2xhc3MgPT09ICJOdW1iZXIiIHx8CisgICAgICBvYmpl
Y3RDbGFzcyA9PT0gIkJpZ0ludCIgfHwgb2JqZWN0Q2xhc3MgPT09ICJCb29sZWFuIiB8fAorICAg
ICAgb2JqZWN0Q2xhc3MgPT09ICJEYXRlIikgeworICAgICAgaWYgKFZhbHVlT2YoYSkgIT09IFZh
bHVlT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGRlZXBPYmplY3RFcXVh
bHMoYSwgYik7CisgIH0KKworICBhc3NlcnRTYW1lID0gZnVuY3Rpb24gYXNzZXJ0U2FtZShleHBl
Y3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKE9iamVjdC5pcyhleHBlY3RlZCwgZm91
bmQpKSByZXR1cm47CisgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5h
bWVfb3B0KTsKKyAgfTsKKworICBhc3NlcnROb3RTYW1lID0gZnVuY3Rpb24gYXNzZXJ0Tm90U2Ft
ZShleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKCFPYmplY3QuaXMoZXhwZWN0
ZWQsIGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwoIm5vdCBzYW1lIGFzICIgKyBwcmV0dHlQcmlu
dGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgfQorCisgIGFzc2VydEVxdWFscyA9
IGZ1bmN0aW9uIGFzc2VydEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAg
aWYgKCFkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAgIGZhaWwocHJldHR5UHJp
bnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisgIGFzc2Vy
dE5vdEVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5h
bWVfb3B0KSB7CisgICAgaWYgKGRlZXBFcXVhbHMoZm91bmQsIGV4cGVjdGVkKSkgeworICAgICAg
ZmFpbCgibm90IGVxdWFscyB0byAiICsgcHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBu
YW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0RXF1YWxzRGVsdGEgPQorICAgICAg
ZnVuY3Rpb24gYXNzZXJ0RXF1YWxzRGVsdGEoZXhwZWN0ZWQsIGZvdW5kLCBkZWx0YSwgbmFtZV9v
cHQpIHsKKyAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWQgLSBmb3VuZCkgPiBkZWx0YSkgeworICAg
ICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSArICIgKy0gIiArIHByZXR0eVByaW50ZWQo
ZGVsdGEpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEFycmF5
RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0QXJyYXlFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1l
X29wdCkgeworICAgIHZhciBzdGFydCA9ICIiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAg
c3RhcnQgPSBuYW1lX29wdCArICIgLSAiOworICAgIH0KKyAgICBhc3NlcnRFcXVhbHMoZXhwZWN0
ZWQubGVuZ3RoLCBmb3VuZC5sZW5ndGgsIHN0YXJ0ICsgImFycmF5IGxlbmd0aCIpOworICAgIGlm
IChleHBlY3RlZC5sZW5ndGggPT09IGZvdW5kLmxlbmd0aCkgeworICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICBhc3NlcnRFcXVhbHMoZXhw
ZWN0ZWRbaV0sIGZvdW5kW2ldLAorICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKyAiYXJyYXkg
ZWxlbWVudCBhdCBpbmRleCAiICsgaSk7CisgICAgICB9CisgICAgfQorICB9OworCisKKyAgYXNz
ZXJ0UHJvcGVydGllc0VxdWFsID0gZnVuY3Rpb24gYXNzZXJ0UHJvcGVydGllc0VxdWFsKGV4cGVj
dGVkLCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWVfb3B0KSB7CisgICAgLy8gQ2hlY2sgcHJvcGVydGllcyBvbmx5Lgor
ICAgIGlmICghZGVlcE9iamVjdEVxdWFscyhleHBlY3RlZCwgZm91bmQpKSB7CisgICAgICBmYWls
KGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydFRv
U3RyaW5nRXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0VG9TdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGZv
dW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWVfb3B0KSB7CisgICAgaWYgKGV4cGVjdGVkICE9PSBTdHJpbmcoZm91bmQpKSB7Cisg
ICAgICBmYWlsKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisg
IGFzc2VydFRydWUgPSBmdW5jdGlvbiBhc3NlcnRUcnVlKHZhbHVlLCBuYW1lX29wdCkgeworICAg
IGFzc2VydEVxdWFscyh0cnVlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0
RmFsc2UgPSBmdW5jdGlvbiBhc3NlcnRGYWxzZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBhc3Nl
cnRFcXVhbHMoZmFsc2UsIHZhbHVlLCBuYW1lX29wdCk7CisgIH07CisKKworICBhc3NlcnROdWxs
ID0gZnVuY3Rpb24gYXNzZXJ0TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUg
IT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0K
KyAgfTsKKworCisgIGFzc2VydE5vdE51bGwgPSBmdW5jdGlvbiBhc3NlcnROb3ROdWxsKHZhbHVl
LCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgeworICAgICAgZmFpbCgibm90
IG51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBleGVj
dXRlQ29kZShjb2RlKSB7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSAgcmV0
dXJuIGNvZGUoKTsKKyAgICBpZiAodHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnKSByZXR1cm4gZXZh
bChjb2RlKTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICdHaXZlbiBjb2RlIGlzIG5l
aXRoZXIgZnVuY3Rpb24gbm9yIHN0cmluZywgYnV0ICcgKyAodHlwZW9mIGNvZGUpICsKKyAgICAg
ICAgJzogPCcgKyBwcmV0dHlQcmludGVkKGNvZGUpICsgJz4nKTsKKyAgfQorCisgIGZ1bmN0aW9u
IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAodHlwZV9v
cHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVv
ZiB0eXBlX29wdCk7CisgICAgICBhc3NlcnRJbnN0YW5jZW9mKGUsIHR5cGVfb3B0KTsKKyAgICB9
CisgICAgLy8gaWdub3JlIGNhdXNlX29wdCBiZWNhdXNlIG91ciBlcnJvciBtZXNzYWdlcyBhcmUg
bm90IHRoZSBzYW1lIGFzIFY4J3MKKyAgICByZXR1cm47CisgICAgaWYgKFJlZ0V4cCAhPT0gdW5k
ZWZpbmVkICYmIGNhdXNlX29wdCBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgYXNzZXJ0TWF0
Y2hlcyhjYXVzZV9vcHQsIGUubWVzc2FnZSwgJ0Vycm9yIG1lc3NhZ2UnKTsKKyAgICB9IGVsc2Ug
aWYgKGNhdXNlX29wdCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBhc3NlcnRFcXVhbHMoY2F1c2Vf
b3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfQorICB9CisKKyAgYXNzZXJ0
VGhyb3dzID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGNvZGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQp
IHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5l
ZCkgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3Ms
IHVua25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1
bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWls
V2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5
YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIHRyeSB7CisgICAg
ICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBjaGVja0V4Y2Vw
dGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bGV0IG1zZyA9ICdEaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9
PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9
ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIGZhaWxXaXRoTWVzc2FnZShtc2cp
OworICB9OworCisgIGFzc2VydFRocm93c0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRocm93c0Vx
dWFscyhmdW4sIHZhbCkgeworICAgIHRyeSB7CisgICAgICBmdW4oKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICBhc3NlcnRTYW1lKHZhbCwgZSk7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IGZhaWxXaXRoTWVzc2FnZSgnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24sIGV4cGVjdGVkICcgKyBw
cmV0dHlQcmludGVkKHZhbCkpOworICB9OworCisgIGFzc2VydFRocm93c0FzeW5jID0gZnVuY3Rp
b24gYXNzZXJ0VGhyb3dzQXN5bmMocHJvbWlzZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgeworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlX29wdCA9PT0gdW5kZWZpbmVkKSB7Cisg
ICAgICBmYWlsV2l0aE1lc3NhZ2UoJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgdW5rbm93
biB0eXBlX29wdCBnaXZlbicpOworICAgIH0KKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5l
ZCAmJiB0eXBlb2YgdHlwZV9vcHQgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIGZhaWxXaXRoTWVz
c2FnZSgKKyAgICAgICAgICAnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCBtYXliZSB5b3Ug
d2FudCBhc3NlcnRUaHJvd3NFcXVhbHMnKTsKKyAgICB9CisgICAgbGV0IG1zZyA9ICdQcm9taXNl
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uJzsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5l
ZCAmJiB0eXBlX29wdC5uYW1lICE9PSB1bmRlZmluZWQpCisgICAgICBtc2cgKz0gJywgZXhwZWN0
ZWQgJyArIHR5cGVfb3B0Lm5hbWU7CisgICAgcmV0dXJuIGFzc2VydFByb21pc2VSZXN1bHQoCisg
ICAgICAgIHByb21pc2UsCisgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBl
cnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgIC8vIGNoYWluLgor
ICAgICAgICByZXMgPT4gc2V0VGltZW91dChfID0+IGZhaWwoJzx0aHJvdz4nLCByZXMsIG1zZyks
IDApLAorICAgICAgICBlID0+IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQp
KTsKKyAgfTsKKworICBhc3NlcnRJbnN0YW5jZW9mID0gZnVuY3Rpb24gYXNzZXJ0SW5zdGFuY2Vv
ZihvYmosIHR5cGUpIHsKKyAgICBpZiAoIShvYmogaW5zdGFuY2VvZiB0eXBlKSkgeworICAgICAg
dmFyIGFjdHVhbFR5cGVOYW1lID0gbnVsbDsKKyAgICAgIHZhciBhY3R1YWxDb25zdHJ1Y3RvciA9
IG9iaiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKS5jb25zdHJ1Y3RvcjsKKyAgICAgIGlm
ICh0eXBlb2YgYWN0dWFsQ29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgYWN0
dWFsVHlwZU5hbWUgPSBhY3R1YWxDb25zdHJ1Y3Rvci5uYW1lIHx8IFN0cmluZyhhY3R1YWxDb25z
dHJ1Y3Rvcik7CisgICAgICB9CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ09i
amVjdCA8JyArIHByZXR0eVByaW50ZWQob2JqKSArICc+IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiA8
JyArCisgICAgICAgICAgKHR5cGUubmFtZSB8fCB0eXBlKSArICc+JyArCisgICAgICAgICAgKGFj
dHVhbFR5cGVOYW1lID8gJyBidXQgb2YgPCcgKyBhY3R1YWxUeXBlTmFtZSArICc+JyA6ICcnKSk7
CisgICAgfQorICB9OworCisgIGFzc2VydERvZXNOb3RUaHJvdyA9IGZ1bmN0aW9uIGFzc2VydERv
ZXNOb3RUaHJvdyhjb2RlLCBuYW1lX29wdCkgeworICAgIHRyeSB7CisgICAgICBleGVjdXRlQ29k
ZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAoZSBpbnN0YW5jZW9mIE1qc1Vu
aXRBc3NlcnRpb25FcnJvcikgdGhyb3cgZTsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgidGhyZXcg
YW4gZXhjZXB0aW9uOiAiICsgKGUubWVzc2FnZSB8fCBlKSk7CisgICAgfQorICB9OworCisgIGFz
c2VydFVucmVhY2hhYmxlID0gZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUobmFtZV9vcHQpIHsK
KyAgICAvLyBGaXggdGhpcyB3aGVuIHdlIGRpdGNoIHRoZSBvbGQgdGVzdCBydW5uZXIuCisgICAg
dmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlOiB1bnJlYWNoYWJsZSI7CisgICAgaWYgKG5hbWVf
b3B0KSB7CisgICAgICBtZXNzYWdlICs9ICIgLSAiICsgbmFtZV9vcHQ7CisgICAgfQorICAgIGZh
aWxXaXRoTWVzc2FnZShtZXNzYWdlKTsKKyAgfTsKKworICBhc3NlcnRDb250YWlucyA9IGZ1bmN0
aW9uKHN1YiwgdmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVlID09IG51bGwgPyAoc3Vi
ICE9IG51bGwpIDogdmFsdWUuaW5kZXhPZihzdWIpID09IC0xKSB7CisgICAgICBmYWlsKCJjb250
YWlucyAnIiArIFN0cmluZyhzdWIpICsgIiciLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAg
fTsKKworICBhc3NlcnRNYXRjaGVzID0gZnVuY3Rpb24ocmVnZXhwLCBzdHIsIG5hbWVfb3B0KSB7
CisgICAgaWYgKCEocmVnZXhwIGluc3RhbmNlb2YgUmVnRXhwKSkgeworICAgICAgcmVnZXhwID0g
bmV3IFJlZ0V4cChyZWdleHApOworICAgIH0KKyAgICBpZiAoIXN0ci5tYXRjaChyZWdleHApKSB7
CisgICAgICBmYWlsKCJzaG91bGQgbWF0Y2ggJyIgKyByZWdleHAgKyAiJyIsIHN0ciwgbmFtZV9v
cHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywg
ZXhjZXB0aW9uKSB7CisgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBkb2VzIG5vdCBjb250YWluIGEg
c3RhY2sgdHJhY2UsIHdyYXAgaXQgaW4gYSBuZXcgRXJyb3IuCisgICAgaWYgKCFleGNlcHRpb24u
c3RhY2spIGV4Y2VwdGlvbiA9IG5ldyBFcnJvcihleGNlcHRpb24pOworCisgICAgLy8gSWYgdGhl
IGV4Y2VwdGlvbiBhbHJlYWR5IHByb3ZpZGVzIGEgc3BlY2lhbCBzdGFjayB0cmFjZSwgd2UgZG8g
bm90IG1vZGlmeQorICAgIC8vIGl0LgorICAgIGlmICh0eXBlb2YgZXhjZXB0aW9uLnN0YWNrICE9
PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CisgICAgZXhjZXB0
aW9uLnN0YWNrID0gc3RhY2sgKyAnXG5cbicgKyBleGNlcHRpb24uc3RhY2s7CisgICAgcmV0dXJu
IGV4Y2VwdGlvbjsKKyAgfQorCisgIGFzc2VydFByb21pc2VSZXN1bHQgPSBmdW5jdGlvbihwcm9t
aXNlLCBzdWNjZXNzLCBmYWlsKSB7CisgICAgaWYgKHN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkgYXNz
ZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBzdWNjZXNzKTsKKyAgICBpZiAoZmFpbCAhPT0g
dW5kZWZpbmVkKSBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9mIGZhaWwpOworICAgIGFz
c2VydEluc3RhbmNlb2YocHJvbWlzZSwgUHJvbWlzZSk7CisgICAgY29uc3Qgc3RhY2sgPSAobmV3
IEVycm9yKCkpLnN0YWNrOworCisgICAgdmFyIHRlc3RfcHJvbWlzZSA9IHByb21pc2UudGhlbigK
KyAgICAgICAgcmVzdWx0ID0+IHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKC0t
cHJvbWlzZVRlc3RDb3VudCA9PSAwKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIHN1Y2Nlc3MocmVzdWx0KTsKKyAgICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0
aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAgICAgLy8g
Y2hhaW4uCisgICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4geworICAgICAgICAgICAgICB0aHJv
dyBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZSk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGlmICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICBpZiAoZmFpbCA9PT0gdW5kZWZpbmVkKSB0aHJvdyByZXN1
bHQ7CisgICAgICAgICAgICBmYWlsKHJlc3VsdCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRv
IGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAgIC8vIGNoYWluLgorICAgICAgICAg
ICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJv
cnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9
KTsKKworICAgIGlmICghcHJvbWlzZVRlc3RDaGFpbikgcHJvbWlzZVRlc3RDaGFpbiA9IFByb21p
c2UucmVzb2x2ZSgpOworICAgIC8vIHdhaXRVbnRpbERvbmUgaXMgaWRlbXBvdGVudC4KKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICArK3Byb21pc2VUZXN0Q291bnQ7CisgICAg
cmV0dXJuIHByb21pc2VUZXN0Q2hhaW4udGhlbih0ZXN0X3Byb21pc2UpOworICB9OworCisgIHZh
ciBPcHRpbWl6YXRpb25TdGF0dXNJbXBsID0gdW5kZWZpbmVkOworCisgIHZhciBPcHRpbWl6YXRp
b25TdGF0dXMgPSBmdW5jdGlvbihmdW4sIHN5bmNfb3B0KSB7CisgICAgaWYgKE9wdGltaXphdGlv
blN0YXR1c0ltcGwgPT09IHVuZGVmaW5lZCkgeworICAgICAgdHJ5IHsKKyAgICAgICAgT3B0aW1p
emF0aW9uU3RhdHVzSW1wbCA9IG5ldyBGdW5jdGlvbigKKyAgICAgICAgICAgICJmdW4iLCAic3lu
YyIsICJyZXR1cm4gJUdldE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmMpOyIpOworICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5hdGl2ZXMgc3ludGF4IG5v
dCBhbGxvd2VkIik7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBPcHRpbWl6YXRpb25TdGF0
dXNJbXBsKGZ1biwgc3luY19vcHQpOworICB9CisKKyAgYXNzZXJ0VW5vcHRpbWl6ZWQgPSBmdW5j
dGlvbiBhc3NlcnRVbm9wdGltaXplZCgKKyAgICAgIGZ1biwgc3luY19vcHQsIG5hbWVfb3B0LCBz
a2lwX2lmX21heWJlX2Rlb3B0ZWQgPSB0cnVlKSB7CisgICAgaWYgKHN5bmNfb3B0ID09PSB1bmRl
ZmluZWQpIHN5bmNfb3B0ID0gIiI7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25T
dGF0dXMoZnVuLCBzeW5jX29wdCk7CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0VW5vcHRp
bWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBpZiAtLWFsd2F5cy1vcHQKKyAgICAvLyBvcHRpb24g
aXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVzdCBhZGQgLS1uby1hbHdheXMtb3B0IHRvIGZsYWdz
IGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0
YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAwLAorICAgICAgICAgICAgICAgICJ0ZXN0IGRvZXMg
bm90IG1ha2Ugc2Vuc2Ugd2l0aCAtLWFsd2F5cy1vcHQiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLCBuYW1lX29w
dCk7CisgICAgaWYgKHNraXBfaWZfbWF5YmVfZGVvcHRlZCAmJgorICAgICAgICAob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtNYXliZURlb3B0ZWQpICE9PSAwKSB7CisgICAgICAv
LyBXaGVuIC0tZGVvcHQtZXZlcnktbi10aW1lcyBmbGFnIGlzIHNwZWNpZmllZCBpdCdzIG5vIGxv
bmdlciBndWFyYW50ZWVkCisgICAgICAvLyB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgc3Rp
bGwgZGVvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8gdG8gc3Ry
ZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3Nl
cnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9
PSAwLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRPcHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3Nl
cnRPcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29wdCwgc2tpcF9pZl9tYXli
ZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0gdW5kZWZpbmVkKSBzeW5j
X29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwg
c3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5v
dCBtYWtlIHNlbnNlIGZvciBMaXRlIG1vZGUgd2hlcmUKKyAgICAvLyBvcHRpbWl6YXRpb24gaXMg
YWx3YXlzIGRpc2FibGVkLCBleHBsaWNpdGx5IGV4aXQgdGhlIHRlc3Qgd2l0aCBhIHdhcm5pbmcu
CisgICAgaWYgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTGl0ZU1vZGUpIHsK
KyAgICAgIHByaW50KCJXYXJuaW5nOiBUZXN0IHVzZXMgYXNzZXJ0T3B0aW1pemVkIGluIExpdGUg
bW9kZSwgc2tpcHBpbmcgdGVzdC4iKTsKKyAgICAgIHRlc3RSdW5uZXIucXVpdCgwKTsKKyAgICB9
CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0T3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vu
c2UgaWYgLS1uby1vcHQKKyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVz
dCBhZGQgLS1vcHQgdG8gZmxhZ3MgY29tbWVudC4KKyAgICBhc3NlcnRGYWxzZSgob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMCwKKyAgICAgICAg
ICAgICAgICAidGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1uby1vcHQiKTsKKyAgICBh
c3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJ
c0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgJ3Nob3VsZCBiZSBhIGZ1bmN0aW9uOiAnICsgbmFt
ZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAg
ICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBu
byBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlz
IHN0aWxsIG9wdGltaXplZCwgc28ga2VlcCBydW5uaW5nIHRoZSB0ZXN0CisgICAgICAvLyB0byBz
dHJlc3MgdGVzdCB0aGUgZGVvcHRpbWl6ZXIuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGFz
c2VydFRydWUoCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09w
dGltaXplZCkgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgb3B0aW1pemVkOiAnICsgbmFtZV9v
cHQpOworICB9CisKKyAgaXNOZXZlck9wdGltaXplTGl0ZU1vZGUgPSBmdW5jdGlvbiBpc05ldmVy
T3B0aW1pemVMaXRlTW9kZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0
YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rTGl0ZU1vZGUpICE9PSAwOworICB9CisKKyAgaXNOZXZlck9wdGltaXplID0g
ZnVuY3Rpb24gaXNOZXZlck9wdGltaXplKCkgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1p
emF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4
T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMDsKKyAgfQorCisgIGlzQWx3
YXlzT3B0aW1pemUgPSBmdW5jdGlvbiBpc0Fsd2F5c09wdGltaXplKCkgeworICAgIHZhciBvcHRf
c3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtBbHdheXNPcHRpbWl6ZSkgIT09IDA7
CisgIH0KKworICBpc0ludGVycHJldGVkID0gZnVuY3Rpb24gaXNJbnRlcnByZXRlZChmdW4pIHsK
KyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBh
c3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24p
ICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChv
cHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgPT09IDAgJiYKKyAg
ICAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rSW50ZXJwcmV0ZWQp
ICE9PSAwOworICB9CisKKyAgaXNPcHRpbWl6ZWQgPSBmdW5jdGlvbiBpc09wdGltaXplZChmdW4p
IHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAg
ICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rp
b24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJu
IChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDA7Cisg
IH0KKworICBpc1R1cmJvRmFubmVkID0gZnVuY3Rpb24gaXNUdXJib0Zhbm5lZChmdW4pIHsKKyAg
ICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3Nl
cnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9
PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAgJiYKKyAgICAg
ICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rVHVyYm9GYW5uZWQpICE9
PSAwOworICB9CisKKyAgLy8gQ3VzdG9tIFY4LXNwZWNpZmljIHN0YWNrIHRyYWNlIGZvcm1hdHRl
ciB0aGF0IGlzIHRlbXBvcmFyaWx5IGluc3RhbGxlZCBvbgorICAvLyB0aGUgRXJyb3Igb2JqZWN0
LgorICBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbihl
cnJvciwgc3RhY2spIHsKKyAgICAvLyBUcmlnZ2VyIGRlZmF1bHQgZm9ybWF0dGluZyB3aXRoIHJl
Y3Vyc2lvbi4KKyAgICB0cnkgeworICAgICAgLy8gRmlsdGVyLW91dCBhbGwgYnV0IHRoZSBmaXJz
dCBtanN1bml0IGZyYW1lLgorICAgICAgbGV0IGZpbHRlcmVkU3RhY2sgPSBbXTsKKyAgICAgIGxl
dCBpbk1qc3VuaXQgPSB0cnVlOworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFjay5sZW5n
dGg7IGkrKykgeworICAgICAgICBsZXQgZnJhbWUgPSBzdGFja1tpXTsKKyAgICAgICAgaWYgKGlu
TWpzdW5pdCkgeworICAgICAgICAgIGxldCBmaWxlID0gZnJhbWUuZ2V0RmlsZU5hbWUoKTsKKyAg
ICAgICAgICBpZiAoIWZpbGUgfHwgIWZpbGUuZW5kc1dpdGgoIm1qc3VuaXQuanMiKSkgeworICAg
ICAgICAgICAgaW5NanN1bml0ID0gZmFsc2U7CisgICAgICAgICAgICAvLyBQdXNoIHRoZSBsYXN0
IG1qc3VuaXQgZnJhbWUsIHR5cGljYWxseSBjb250YWluaW5nIHRoZSBhc3NlcnRpb24KKyAgICAg
ICAgICAgIC8vIGZ1bmN0aW9uLgorICAgICAgICAgICAgaWYgKGkgPiAwKSBBcnJheVByb3RvdHlw
ZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpLTFdKTsKKyAgICAgICAgICAgIEFycmF5
UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIHN0YWNrW2ldKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlQcm90b3R5cGVQ
dXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgZnJhbWUpOworICAgICAgfQorICAgICAgc3RhY2sgPSBm
aWx0ZXJlZFN0YWNrOworCisgICAgICAvLyBJbmZlciBmdW5jdGlvbiBuYW1lcyBhbmQgY2FsY3Vs
YXRlIHttYXhfbmFtZV9sZW5ndGh9CisgICAgICBsZXQgbWF4X25hbWVfbGVuZ3RoID0gMDsKKyAg
ICAgIEFycmF5UHJvdG90eXBlRm9yRWFjaC5jYWxsKHN0YWNrLCBlYWNoID0+IHsKKyAgICAgICAg
bGV0IG5hbWUgPSBlYWNoLmdldEZ1bmN0aW9uTmFtZSgpOworICAgICAgICBpZiAobmFtZSA9PSBu
dWxsKSBuYW1lID0gIiI7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSB7CisgICAgICAgICAg
bmFtZSA9IG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoZWFjaC5pc0NvbnN0cnVjdG9yKCkpIHsK
KyAgICAgICAgICBuYW1lID0gIm5ldyAiICsgbmFtZTsKKyAgICAgICAgfSBlbHNlIGlmIChlYWNo
LmlzTmF0aXZlKCkpIHsKKyAgICAgICAgICBuYW1lID0gIm5hdGl2ZSAiICsgbmFtZTsKKyAgICAg
ICAgfSBlbHNlIGlmICghZWFjaC5pc1RvcGxldmVsKCkpIHsKKyAgICAgICAgICBuYW1lID0gZWFj
aC5nZXRUeXBlTmFtZSgpICsgIi4iICsgbmFtZTsKKyAgICAgICAgfQorICAgICAgICBlYWNoLm5h
bWUgPSBuYW1lOworICAgICAgICBtYXhfbmFtZV9sZW5ndGggPSBNYXRoLm1heChuYW1lLmxlbmd0
aCwgbWF4X25hbWVfbGVuZ3RoKQorICAgICAgfSk7CisKKyAgICAgIC8vIEZvcm1hdCBzdGFjayBm
cmFtZXMuCisgICAgICBzdGFjayA9IEFycmF5UHJvdG90eXBlTWFwLmNhbGwoc3RhY2ssIGVhY2gg
PT4geworICAgICAgICBsZXQgZnJhbWUgPSAiICAgIGF0ICIgKyBlYWNoLm5hbWUucGFkRW5kKG1h
eF9uYW1lX2xlbmd0aCk7CisgICAgICAgIGxldCBmaWxlTmFtZSA9IGVhY2guZ2V0RmlsZU5hbWUo
KTsKKyAgICAgICAgaWYgKGVhY2guaXNFdmFsKCkpIHJldHVybiBmcmFtZSArICIgIiArIGVhY2gu
Z2V0RXZhbE9yaWdpbigpOworICAgICAgICBmcmFtZSArPSAiICIgKyAoZmlsZU5hbWUgPyBmaWxl
TmFtZSA6ICIiKTsKKyAgICAgICAgbGV0IGxpbmU9IGVhY2guZ2V0TGluZU51bWJlcigpOworICAg
ICAgICBmcmFtZSArPSAiICIgKyAobGluZSA/IGxpbmUgOiAiIik7CisgICAgICAgIGxldCBjb2x1
bW4gPSBlYWNoLmdldENvbHVtbk51bWJlcigpOworICAgICAgICBmcmFtZSArPSAoY29sdW1uID8g
IjoiICsgY29sdW1uIDogIiIpOworICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICB9KTsKKyAg
ICAgIHJldHVybiAiIiArIGVycm9yLm1lc3NhZ2UgKyAiXG4iICsgQXJyYXlQcm90b3R5cGVKb2lu
LmNhbGwoc3RhY2ssICJcbiIpOworICAgIH0gY2F0Y2ggKGUpIHt9OworICAgIHJldHVybiBlcnJv
ci5zdGFjazsKKyAgfQorfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFu
dXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZy
b20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NzUwMDE4NTc1OWM3MmU2YWNiMzJk
YjI2NmM2NzVlYTM0NWU1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vh
ay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CitsZXQgUmVhbG0gPSB7
IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMpID0+ICQuZXZhbFNjcmlwdC5jYWxs
KHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgpOworCitsZXQgY2xlYW51cCA9IFJl
YWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBmdW5jdGlvbiBjbGVhbnVwKCkgeyBzdG9y
ZWRfZ2xvYmFsID0gZ2xvYmFsVGhpczsgfSBjbGVhbnVwOyIpOworbGV0IHJlYWxtX2dsb2JhbF90
aGlzID0gUmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIGEgcmVn
aXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisv
LyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhl
bSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7
CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0KTsK
KyAgICB9Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5j
dGlvbiB3YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlv
bigpIHsKKyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFs
OyIpOworICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFz
c2VydEVxdWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRp
bWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNs
ZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNGQwMjQ3
ZTI3MTBkYTQ4NWM5MjU3MmFiYTljMjc2Y2RlZjM1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0w
LDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8g
Q29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8v
IEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1t
YXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0
aXZlIik7CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMp
ID0+ICQuZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgp
OworCitsZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBsZXQg
Y2xlYW51cCA9IG5ldyBQcm94eShmdW5jdGlvbigpIHsgc3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRo
aXM7fSwge30pOyBjbGVhbnVwIik7CitsZXQgcmVhbG1fZ2xvYmFsX3RoaXMgPSBSZWFsbS5ldmFs
KHIsICJnbG9iYWxUaGlzIik7CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShj
bGVhbnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZp
bmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBj
bG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkg
eworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmpl
Y3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiKTsKKyAgICB9
Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3
YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFsOyIpOwor
ICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFzc2VydEVx
dWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbi1yZWdpc3RyeS1iYXNpY3MuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24t
cmVnaXN0cnktYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NjE2YTUwMjFhY2E3NTUxYzgxMTllYjYx
ZWZlOTQ3YjUxMmMzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5h
bGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTUyIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2
ZSIpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgewor
ICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBhc3NlcnRF
cXVhbHMoZmcudG9TdHJpbmcoKSwgIltvYmplY3QgRmluYWxpemF0aW9uUmVnaXN0cnldIik7Cisg
IGFzc2VydE5vdFNhbWUoZmcuX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKKyAgYXNzZXJ0
U2FtZShmZy5fX3Byb3RvX18uX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKK30pKCk7CisK
KyhmdW5jdGlvbiBUZXN0RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0
aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRy
eSB7CisgICAgbGV0IGYgPSBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICBtZXNzYWdlID0gZS5tZXNzYWdlOworICAgIGNhdWdodCA9IHRydWU7Cisg
IH0gZmluYWxseSB7CisgICAgYXNzZXJ0VHJ1ZShjYXVnaHQpOworICB9Cit9KSgpOworCisoZnVu
Y3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxl
KCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0
IGJlIGNhbGxhYmxlIjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KCk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93
cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgxKTsgfSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KG51bGwpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsKKwor
KGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhDYWxsYWJsZVBy
b3h5QXNDbGVhbnVwKCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0gKCkgPT4g
e307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkocHJveHkpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RD
b25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXNDbGVhbnVw
KCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0
IGJlIGNhbGxhYmxlIjsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBs
ZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsgfSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRoTm9uT2JqZWN0
VGFyZ2V0KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30p
OworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0
ZXI6IHRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5y
ZWdpc3RlcigxLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnJlZ2lzdGVyKGZhbHNlLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNz
YWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKCJmb28iLCAiaG9sZGluZ3Mi
KSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVy
KFN5bWJvbCgpLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnJlZ2lzdGVyKG51bGwsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3Nh
Z2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIodW5kZWZpbmVkLCAiaG9sZGlu
Z3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0
ZXJXaXRoUHJveHkoKSB7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsKKyAg
bGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGZnLnJlZ2lzdGVyKHByb3h5KTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJUYXJnZXRBbmRIb2xkaW5nc1NhbWVWYWx1ZSgpIHsK
KyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IG9i
aiA9IHthOiAxfTsKKyAgLy8gU2FtZVZhbHVlKHRhcmdldCwgaG9sZGluZ3MpIG5vdCBvaworICBh
c3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIob2JqLCBvYmopLCBUeXBlRXJyb3IsCisgICAg
ICAgICAgICAgICAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyOiB0YXJn
ZXQgYW5kIGhvbGRpbmdzIG11c3Qgbm90IGJlIHNhbWUiKTsKKyAgbGV0IGhvbGRpbmdzID0ge2E6
IDF9OworICBmZy5yZWdpc3RlcihvYmosIGhvbGRpbmdzKTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0UmVnaXN0ZXJXaXRob3V0RmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93
cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXIuY2FsbCh7fSwg
e30sICJob2xkaW5ncyIpLCBUeXBlRXJyb3IpOworICAvLyBEb2VzIG5vdCB0aHJvdzoKKyAgbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgRmluYWxpemF0aW9u
UmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwoZmcsIHt9LCAiaG9sZGluZ3MiKTsKK30p
KCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSgpIHsKKyAg
bGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IHN1Y2Nl
c3MgPSBmZy51bnJlZ2lzdGVyKHsiayI6ICJ3aGF0ZXZlciJ9KTsKKyAgYXNzZXJ0RmFsc2Uoc3Vj
Y2Vzcyk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRmluYWxpemF0
aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3Ry
eS5wcm90b3R5cGUudW5yZWdpc3Rlci5jYWxsKHt9LCB7fSksCisgICAgICAgICAgICAgICBUeXBl
RXJyb3IpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbk9iamVjdFVu
cmVnaXN0ZXJUb2tlbigpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgp
ID0+IHt9KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoMSksIFR5cGVFcnJv
cik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKEJpZ0ludCgxKSksIFR5cGVF
cnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKCdvbmUnKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoU3ltYm9sKCkpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih0cnVlKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoZmFsc2UpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih1bmRlZmluZWQpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihudWxsKSwgVHlwZUVy
cm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yKCkgeworICBs
ZXQgd3IgPSBuZXcgV2Vha1JlZih7fSk7CisgIGFzc2VydEVxdWFscyh3ci50b1N0cmluZygpLCAi
W29iamVjdCBXZWFrUmVmXSIpOworICBhc3NlcnROb3RTYW1lKHdyLl9fcHJvdG9fXywgT2JqZWN0
LnByb3RvdHlwZSk7CisKKyAgbGV0IGRlcmVmX2Rlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHdyLl9fcHJvdG9fXywgImRlcmVmIik7CisgIGFzc2VydEVxdWFscyh0cnVlLCBk
ZXJlZl9kZXNjLmNvbmZpZ3VyYWJsZSk7CisgIGFzc2VydEVxdWFscyhmYWxzZSwgZGVyZWZfZGVz
Yy5lbnVtZXJhYmxlKTsKKyAgYXNzZXJ0RXF1YWxzKCJmdW5jdGlvbiIsIHR5cGVvZiBkZXJlZl9k
ZXNjLnZhbHVlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0
aE5vbk9iamVjdCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiV2Vha1JlZjogdGFyZ2V0IG11c3QgYmUg
YW4gb2JqZWN0IjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCksIFR5cGVFcnJv
ciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigxKSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKGZhbHNlKSwg
VHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCJm
b28iKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFr
UmVmKFN5bWJvbCgpKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IG5ldyBXZWFrUmVmKG51bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3Mo
KCkgPT4gbmV3IFdlYWtSZWYodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24oKSB7Cisg
IGxldCBjYXVnaHQgPSBmYWxzZTsKKyAgbGV0IG1lc3NhZ2UgPSAiIjsKKyAgdHJ5IHsKKyAgICBs
ZXQgZiA9IFdlYWtSZWYoe30pOworICB9IGNhdGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVz
c2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOworICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUo
Y2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RXZWFrUmVmV2l0aFByb3h5KCkg
eworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5l
dyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgd3IgPSBuZXcgV2Vha1JlZihwcm94eSk7Cit9
KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
YW5kLXdlYWtyZWYuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1h
bmQtd2Vha3JlZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGRhOGEwYzlmZWZjOWQxZGUyNjk1YjIzZDUyMDE0
MjhmYjI2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0
aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJl
ZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJj
ZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2Fs
bGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGxldCBo
b2xkaW5nc19saXN0ID0gW107CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGFz
c2VydEVxdWFscygxLCBob2xkaW5nc19saXN0Lmxlbmd0aCk7CisgIGFzc2VydEVxdWFscygiaG9s
ZGluZ3MiLCBob2xkaW5nc19saXN0WzBdKTsKKyAgY2xlYW51cF9jYWxsZWQgPSB0cnVlOworfQor
CitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQgd2Vha19y
ZWZzID0gW107CisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyAr
K2kpIHsKKyAgICAgICAgbGV0IG8gPSB7fTsKKyAgICAgICAgd2Vha19yZWZzLnB1c2gobmV3IFdl
YWtSZWYobykpOworICAgICAgICBmZy5yZWdpc3RlcihvLCAiaG9sZGluZ3MiKTsKKyAgICB9Cit9
KSgpOworCisvLyBTaW5jZSB0aGUgV2Vha1JlZiB3YXMgY3JlYXRlZCBkdXJpbmcgdGhpcyB0dXJu
LCBpdCBpcyBub3QgY2xlYXJlZCBieSBHQy4gVGhlCisvLyBwb2ludGVyIGluc2lkZSB0aGUgRmlu
YWxpemF0aW9uUmVnaXN0cnkgaXMgbm90IGNsZWFyZWQgZWl0aGVyLCBzaW5jZSB0aGUgV2Vha1Jl
ZgorLy8ga2VlcHMgdGhlIHRhcmdldCBvYmplY3QgYWxpdmUuCitnYygpOworKGZ1bmN0aW9uKCkg
eworICAgIHdlYWtfcmVmcy5mb3JFYWNoKCh3ZWFrX3JlZikgPT4gYXNzZXJ0RXF1YWxzKCJvYmpl
Y3QiLCB0eXBlb2Yod2Vha19yZWYuZGVyZWYoKSkpKTsKK30pKCk7CisKKy8vIFRyaWdnZXIgZ2Mg
aW4gbmV4dCB0YXNrCitzZXRUaW1lb3V0KCgpID0+IHsKKyAgICBnYygpOworCisgICAgLy8gQ2hl
Y2sgdGhhdCBjbGVhbnVwIGNhbGxiYWNrIHdhcyBjYWxsZWQgaW4gYSBmb2xsb3cgdXAgdGFzawor
ICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVk
KTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh3ZWFrX3JlZnMuc29tZSgod2Vha19yZWYpID0+IHdlYWtf
cmVmLmRlcmVmKCkgPT09IG51bGwpKTsKKyAgICB9LCAwKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxp
dmUuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xk
aW5ncy1hbGl2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDJjNGJiOGVlODRlMDEwYjc0ZDZkZWIzNWEwY2Zh
Y2YxNmQ0OTNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0
aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMKQEAgLTAsMCArMSw0NyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0
aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9u
eS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgi
Li9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNs
ZWFudXBfY2FsbGVkID0gZmFsc2U7CitsZXQgaG9sZGluZ3NfbGlzdCA9IFtdOworbGV0IGNsZWFu
dXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7
CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1
ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0
IG8xID0ge307CitsZXQgaG9sZGluZ3MgPSB7J2EnOiAndGhpcyBpcyB0aGUgaG9sZGluZ3Mgb2Jq
ZWN0J307CisKKy8vIElnbml0aW9uIGhvbGRzIHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1w
b3JhcnkgcmVnaXN0ZXJzLiBUaGVzZSB3aWxsIGJlCisvLyByZWxlYXNlZCB3aGVuIHRoZSBmdW5j
dGlvbiBleGl0cy4gU28gb25seSBhY2Nlc3MgbyBpbnNpZGUgYSBmdW5jdGlvbiB0bworLy8gcHJl
dmVudCBhbnkgcmVmZXJlbmNlcyB0byBvYmplY3RzIGluIHRlbXBvcmFyeSByZWdpc3RlcnMgd2hl
biBhIGdjIGlzCisvLyB0cmlnZ2VyZWQuCisoKCkgPT4ge2ZnLnJlZ2lzdGVyKG8xLCBob2xkaW5n
cyk7fSkoKQorCitnYygpOworYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQpOworCisvLyBEcm9w
IHRoZSBsYXN0IHJlZmVyZW5jZXMgdG8gbzEuCisoKCkgPT4ge28xID0gbnVsbDt9KSgpCisKKy8v
IERyb3AgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBob2xkaW5ncy4gVGhlIEZpbmFsaXphdGlv
blJlZ2lzdHJ5IGtlZXBzIGl0CisvLyBhbGl2ZSwgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQgYXMgbm9ybWFsLgoraG9sZGluZ3MgPSBudWxsOworZ2MoKTsKK2Fzc2VydEZh
bHNlKGNsZWFudXBfY2FsbGVkKTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgewor
ICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVkKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xp
c3QubGVuZ3RoLCAxKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xpc3RbMF0uYSwgInRoaXMg
aXMgdGhlIGhvbGRpbmdzIG9iamVjdCIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywg
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1z
Y2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92
OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGlt
ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2Q4Yzk2Mzk3NWQyZWNmYjg3NzY1OTJjZGI1NWZlODUzNzI3OWMy
MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5qcwpAQCAtMCwwICsxLDg1
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdo
dCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczog
LS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZwor
Ly8gRmxhZ3M6IC0tbm8tc3RyZXNzLWZsdXNoLWJ5dGVjb2RlCisKK2xvYWQoIi4vcmVzb3VyY2Vz
L3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwMF9jYWxs
X2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVh
bnVwMF8xX2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAxX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAxXzFfaG9s
ZGluZ3NfY291bnQgPSAwOworCitsZXQgY2xlYW51cDAgPSBmdW5jdGlvbihob2xkaW5ncykgewor
ICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0gIjAiKQorICAgICsrY2xlYW51
cDBfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xlYW51cDBfMV9ob2xkaW5nc19j
b3VudDsKKyAgKytjbGVhbnVwMF9jYWxsX2NvdW50OworfQorCitsZXQgY2xlYW51cDEgPSBmdW5j
dGlvbihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0g
IjAiKQorICAgICsrY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xl
YW51cDFfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwMV9jYWxsX2NvdW50OworfQorCits
ZXQgZmcwID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAwKTsKK2xldCBmZzEgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cDEpOworCisvLyBSZWdpc3RlciAxIHdlYWsg
cmVmZXJlbmNlIGZvciBlYWNoIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGFuZCBraWxsIHRoZSBvYmpl
Y3RzIHRoZXkgcG9pbnQgdG8uCisoZnVuY3Rpb24oKSB7CisgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7CisgICAgLy8gVGhlIG9iamVjdHMgbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9z
dXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbS4KKyAgICBsZXQgb2JqZWN0cyA9
IFtdOworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisKKyAgICBm
ZzAucmVnaXN0ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0wIik7CisgICAgZmcxLnJlZ2lzdGVy
KG9iamVjdHNbMV0sICJob2xkaW5nczEtMCIpOworCisgICAgLy8gRHJvcCB0aGUgcmVmZXJlbmNl
cyB0byB0aGUgb2JqZWN0cy4KKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisKKy8vIFdp
bGwgc2NoZWR1bGUgYm90aCBmZzAgYW5kIGZnMSBmb3IgY2xlYW51cC4KK2djKCk7CisKKy8vIEJl
Zm9yZSB0aGUgY2xlYW51cCB0YXNrIGhhcyBhIGNoYW5jZSB0byBydW4sIGRvIHRoZSBzYW1lIHRo
aW5nIGFnYWluLCBzbyBib3RoCisvLyBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIGFyZSAoYWdhaW4p
IHNjaGVkdWxlZCBmb3IgY2xlYW51cC4gVGhpcyBoYXMgdG8gYmUgYSBJSUZFIGZ1bmN0aW9uCisv
LyAoc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGUgb2JqZWN0cykgc28gd2UgY2Fubm90
IHVzZSB0aGUgc2FtZSBmdW5jdGlvbgorLy8gYXMgYmVmb3JlLgorKGZ1bmN0aW9uKCkgeworICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGxldCBvYmplY3RzID0gW107Cisg
ICAgb2JqZWN0c1swXSA9IHt9OworICAgIG9iamVjdHNbMV0gPSB7fTsKKyAgICBmZzAucmVnaXN0
ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0xIik7CisgICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNb
MV0sICJob2xkaW5nczEtMSIpOworICAgIG9iamVjdHMgPSBbXTsKKyAgfQorfSkoKTsKKworZ2Mo
KTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMo
MCwgY2xlYW51cDBfY2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8w
X2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwXzFfaG9sZGlu
Z3NfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfY2FsbF9jb3VudCk7Cisg
IGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0
Tm90RXF1YWxzKDAsIGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQpOworfQorCisvLyBHaXZlIHRo
ZSBjbGVhbnVwIHRhc2sgYSBjaGFuY2UgdG8gcnVuLgorc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMs
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxp
emF0aW9uLXJlZ2lzdHJpZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1m
aW5hbGl6YXRpb24tcmVnaXN0cmllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTA3M2EwMzFkYjA2Y2NkMzAy
NmQ4ZjI0ZjEyN2ZhZGRiODk4YWM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
djgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKQEAgLTAsMCArMSw1
MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmln
aHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6
IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcK
KworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsK
KworbGV0IGNsZWFudXBfY2FsbF9jb3VudDEgPSAwOworbGV0IGNsZWFudXBfY2FsbF9jb3VudDIg
PSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGlmIChob2xkaW5n
cyA9PT0gImhvbGRpbmdzMSIpCisgICAgICAgICsrY2xlYW51cF9jYWxsX2NvdW50MTsKKyAgICBl
bHNlIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdzMiIpCisgICAgICAgICsrY2xlYW51cF9jYWxs
X2NvdW50MjsKKyAgICBlbHNlCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCitsZXQg
ZmcxID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGZnMiA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRlIHR3byBvYmplY3RzIGFu
ZCByZWdpc3RlciB0aGVtIGluIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZSBvYmplY3RzIG5l
ZWQKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2ls
bCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyAr
K2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcxLnJlZ2lzdGVyKG9i
amVjdDEsICJob2xkaW5nczEiKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAg
ICBmZzIucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIpOworICAgIH0KKyAgICAvLyBvYmpl
Y3QxIGFuZCBvYmplY3QyIGdvIG91dCBvZiBzY29wZS4KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2ls
bCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOwor
YXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDEpOworYXNzZXJ0RXF1YWxzKDAsIGNs
ZWFudXBfY2FsbF9jb3VudDIpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlv
biB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2Vy
dE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKKyAgICBhc3NlcnROb3RFcXVhbHMo
MCwgY2xlYW51cF9jYWxsX2NvdW50Mik7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFu
dXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhOTdkYWE0ZDFkMjY1MjQ4MjIwMmQxMWI1YjJjYmM0NWNiMjcyMTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVw
LmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0x
IikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNy
ZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2Fs
bGVyIHJlbGF0aXZlIik7CisKK2xldCBjYWxsZWQgPSBmYWxzZTsKK2xldCByZWVudHJhbnRfZ2Mg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGdjKCk7CisgICAgY2FsbGVkID0gdHJ1ZTsKK30K
KworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHJlZW50cmFudF9nYyk7CisKKyhm
dW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIGZn
LnJlZ2lzdGVyKHt9LCA0Mik7Cit9KSgpOworCitnYygpOworCitzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydFRydWUoY2FsbGVkKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3MtZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHktZW5x
dWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTI0ZTJjZDNlYzc2ZDVjODk1MWNkMmZhMGE1MWE4NWZkMDgw
OTgxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXph
dGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAyMCB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0tc3RyZXNzLWNvbXBh
Y3Rpb24gLS1leHBvc2UtZ2MKKworLy8gVGVzdCB0aGF0IHRoZSBkaXJ0eSBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzIHRoYXQgYXJlIGVucXVldWVkIGR1cmluZyBHQyBoYXZlCisvLyB0aGVpciBzbG90
cyBjb3JyZWN0bHkgcmVjb3JkZWQgYnkgdGhlIEdDLgorCisvLyAxKSBDcmVhdGUgbWFueSBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5IG9iamVjdHMgc28gdGhhdCB0aGV5IHNwYW4gc2V2ZXJhbCBwYWdl
cworLy8gKHBhZ2Ugc2l6ZSBpcyAyNTZrYikuCitsZXQgcmVnaXN0cmllcyA9IFtdOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDI0ICogODsgaSsrKSB7CisgIHJlZ2lzdHJpZXMucHVzaChuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pKTsKK30KKworLy8gMikgRm9yY2UgdHdvIEdDcyB0
byBlbnN1cmUgdGhhdCBKU0ZpbmFsaXphdG9uUmVnaXN0cnkgb2JqZWN0cyBhcmUgdGVudXJlZC4K
K2djKCk7CitnYygpOworCisvLyAzKSBJbiBhIGZ1bmN0aW9uOiBjcmVhdGUgYSBkdW1teSB0YXJn
ZXQgYW5kIHJlZ2lzdGVyIGl0IGluIGFsbAorLy8gSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVj
dHMuCisoZnVuY3Rpb24oKSB7CisgIGxldCBnYXJiYWdlID0ge307CisgIHJlZ2lzdHJpZXMuZm9y
RWFjaCgoZnIpID0+IHsKKyAgICBmci5yZWdpc3RlcihnYXJiYWdlLCA0Mik7CisgIH0pOworICBn
YXJiYWdlID0gbnVsbDsKK30pKCk7CisKKy8vIDQpIE91dHNpZGUgdGhlIGZ1bmN0aW9uIHdoZXJl
IHRoZSB0YXJnZXQgaXMgdW5yZWFjaGFibGU6IGZvcmNlIEdDIHRvIGNvbGxlY3QKKy8vIHRoZSBv
YmplY3QuCitnYygpOworCisvLyA1KSBGb3JjZSBhbm90aGVyIEdDIHRvIHRlc3QgdGhhdCB0aGUg
c2xvdCB3YXMgY29ycmVjdGx5IHVwZGF0ZWQuCitnYygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZp
bmVkLWhvbGRpbmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzYwY2ZkYTc3ZjBhZmNhMWI1Y2I5ZmRkYWZl
YWMwZDkwNzUwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmlu
ZWQtaG9sZGluZ3MuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2Ut
Z2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7
CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICAgYXNzZXJ0RXF1YWxzKGhv
bGRpbmdzLCB1bmRlZmluZWQpOworICAgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQg
ZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBv
YmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lz
dGVyKG9iamVjdCk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhl
IHRhcmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1
bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYWZ0ZXItY2xlYW51cC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXIt
Y2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDcyYjBmOGIzYmI4ZWJhNjkwYTE2MGQxNjM4ZDM5ZTQz
ZjQ3MmQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1h
ZnRlci1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhv
bGRpbmdzIiwgaG9sZGluZ3MpOworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0
aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGlu
IHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5z
aWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5j
dGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBs
ZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwg
a2V5KTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0
IG9iamVjdCBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24g
d2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRO
b3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKyAgICBsZXQgb2xkX2NsZWFudXBfY2Fs
bF9jb3VudCA9IGNsZWFudXBfY2FsbF9jb3VudDsKKworICAgIC8vIFVucmVnaXN0ZXIgYW4gYWxy
ZWFkeSBjbGVhbmVkLXVwIHdlYWsgcmVmZXJlbmNlLgorICAgIGxldCBzdWNjZXNzID0gZmcudW5y
ZWdpc3RlcihrZXkpOworICAgIC8vIFNpbmNlIHdlIG1heSBub3QgY29sbGVjdCBldmVyeXRoaW5n
IHdlIGRvbid0IGtub3cgd2hhdCBzdWNjZXNzIHdpbGwgYmUgdW5saWtlIHY4LgorICAgIC8vIGFz
c2VydEZhbHNlKHN1Y2Nlc3MpOworCisgICAgLy8gQXNzZXJ0IHRoYXQgaXQgZGlkbid0IGRvIGFu
eXRoaW5nLgorICAgIHNldFRpbWVvdXQoKCkgPT4geyBhc3NlcnRFcXVhbHMob2xkX2NsZWFudXBf
Y2FsbF9jb3VudCwgY2xlYW51cF9jYWxsX2NvdW50KTsgfSwgMCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYmVmb3JlLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9y
ZS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDFlM2VjNmEzYWViZmM3ODc2YzdkZGFmN2Q3ZGI4
YzE1M2ZlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVy
LWJlZm9yZS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisK
K2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisK
K2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xk
aW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBr
ZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6
YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3Vy
ZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAg
bGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJteSBob2xkaW5ncyIsIGtl
eSk7CisKKyAgLy8gQ2xlYXIgdGhlIFdlYWtDZWxsIGJlZm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNl
IHRvIGRpc2NvdmVyIGl0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAg
YXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9
KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7
Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQg
dGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5jZSB3ZSBjYWxsZWQgdW5y
ZWdpc3Rlci4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzhlZmU4MjRiNmM3NGEwNThjYjFkMWViMzg3MWVjZTViYWY4YmE3MwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCkBA
IC0wLDAgKzEsNDYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRh
bC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJl
bGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBm
dW5jdGlvbihob2xkaW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0
aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGlu
IHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5z
aWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5j
dGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xk
aW5ncyIsIGtleSk7CisKKyAgLy8gVW5yZWdpc3RlciBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5j
ZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIo
a2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBDYWxsIHVucmVnaXN0ZXIgYWdh
aW4gKGp1c3QgdG8gYXNzZXJ0IHdlIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkpLgorICBzdWNjZXNz
ID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAvLyBv
YmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFp
bSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxs
X2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUg
Y2FsbGVkLCBzaW5jZSB0aGUgd2VhayByZWZlcmVuY2UKKy8vIHdhcyB1bnJlZ2lzdGVyZWQuCits
ZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygwLCBjbGVhbnVw
X2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmViMjEyMjg2NjNhZDJjZWQ1OTY5NWE1M2M1YjNiMGU1ZjdjYjAwYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpAQCAt
MCwwICsxLDQ5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhv
bGRpbmdzKSB7CisgIC8vIFNlZSB3aGljaCB0YXJnZXQgd2UncmUgY2xlYW5pbmcgdXAgYW5kIHVu
cmVnaXN0ZXIgdGhlIG90aGVyIG9uZS4KKyAgaWYgKGhvbGRpbmdzID09IDEpIHsKKyAgICBsZXQg
c3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5Mik7CisgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzIHx8
IGNhbGxlZCk7CisgIH0gZWxzZSB7CisgICAgYXNzZXJ0U2FtZShob2xkaW5ncywgMik7CisgICAg
bGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgIGFzc2VydFRydWUoc3VjY2Vz
cyB8fCBjYWxsZWQpOworICB9CisgIGNhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkxID0geyJrIjogImZpcnN0IGtl
eSJ9OworbGV0IGtleTIgPSB7ImsiOiAic2Vjb25kIGtleSJ9OworLy8gQ3JlYXRlIHR3byBvYmpl
Y3RzIGFuZCByZWdpc3RlciB0aGVtIGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdHMKKy8vIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0MSA9IHt9OworICAgICAgICBmZy5yZWdp
c3RlcihvYmplY3QxLCAxLCBrZXkxKTsKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAg
ICAgZmcucmVnaXN0ZXIob2JqZWN0MiwgMiwga2V5Mik7CisgICAgfQorfSkoKTsKKworLy8gVGhp
cyBHQyB3aWxsIHJlY2xhaW0gdGFyZ2V0IG9iamVjdHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitn
YygpOworYXNzZXJ0RmFsc2UoY2FsbGVkKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAg
ZnVuY3Rpb24gd2FzIGNhbGxlZCBhbmQgY2xlYW5lZCB1cCBvbmUgaG9sZGluZ3MgKGJ1dCBub3Qg
dGhlIG90aGVyIG9uZSkuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0VHJ1ZShjYWxsZWQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI3ZmFhN2I2ZTNjNDNiZjJiMTI4NjZmMjQwY2M2ZWFjMTg3ZDIxYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpA
QCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwX2hv
bGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAg
YXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCAiaG9sZGluZ3MiKTsKKworICAvLyBUaGVyZSdzIG1vcmVz
IG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleSB0aGF0IHdlIGhhdmVuJ3QKKyAgLy8gY2xlYW5lZCB1
cCB5ZXQgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gdW5yZWdpc3RlciB0aGUKKyAgLy8gY2FsbGJh
Y2sgZm9yIHRoYXQgb25lLgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKwor
ICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworCisgICsrY2xlYW51cF9ob2xkaW5nc19jb3VudDsKKyAg
KytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShjbGVhbnVwKTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRo
ZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8v
IGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCitsZXQga2V5ID0g
eyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAg
ICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5n
cyIsIGtleSk7CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5ncyIsIGtleSk7
CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIGRpc2NvdmVyIGRpcnR5IFdlYWtDZWxs
cyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9j
YWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNh
bGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxzKDEs
IGNsZWFudXBfY2FsbF9jb3VudCk7CisgIGFzc2VydEVxdWFscygxLCBjbGVhbnVwX2hvbGRpbmdz
X2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
dW5yZWdpc3Rlci1tYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MzM5OWU2NWYwZDI3NDI2MDhiMTM4NDZk
NWE1ZDkxN2FiMzdlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJl
Z2lzdGVyLW1hbnkuanMKQEAgLTAsMCArMSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2Ut
Z2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7
CitsZXQgY2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9u
KGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MyIiwgaG9sZGluZ3MpOworICAr
K2NsZWFudXBfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCits
ZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsi
ayI6ICJrZXkxIn07CitsZXQga2V5MiA9IHsiayI6ICJrZXkyIn07CisvLyBDcmVhdGUgdGhyZWUg
b2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRo
ZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4g
cmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDFhID0ge307CisgICAgICAgIGZn
LnJlZ2lzdGVyKG9iamVjdDFhLCAiaG9sZGluZ3MxYSIsIGtleTEpOworCisgICAgICAgIGxldCBv
YmplY3QxYiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxYiwgImhvbGRpbmdzMWIi
LCBrZXkxKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3Rl
cihvYmplY3QyLCAiaG9sZGluZ3MyIiwga2V5Mik7CisKKyAgICAgICAgLy8gVW5yZWdpc3RlciBi
ZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0cy4KKyAgICAg
ICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgICAgICBhc3NlcnRUcnVl
KHN1Y2Nlc3MpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0
YXJnZXQgb2JqZWN0cy4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50
KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQg
b25seSBmb3IgdGhlIHJlZmVyZW5jZSB3aGljaAorLy8gd2FzIG5vdCB1bnJlZ2lzdGVyZWQuCits
ZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVh
bnVwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9ob2xkaW5nc19j
b3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtd2Vhay11bnJlZ2lzdGVydG9rZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZTgwMGFhMmFjZTA5ZjZm
Mjk1MmU0ZTk3Y2I1Njk4MWVhMmUzZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1y
ZWZzLXdpdGgtY2xlYW51cC1zb21lIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CisKK3ZhciBGUiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSAoZnVuY3Rpb24gKGhvbGRpbmdz
KSB7IGdsb2JhbFRoaXMuRlJSYW4gPSB0cnVlOyB9KTsKK3sKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqID0ge307CisgICAgICAgIC8vIG9iaiBp
cyBpdHMgb3duIHVucmVnaXN0ZXIgdG9rZW4gYW5kIGJlY29tZXMgdW5yZWFjaGFibGUgYWZ0ZXIg
dGhpcworICAgICAgICAvLyBibG9jay4gSWYgdGhlIHVucmVnaXN0ZXIgdG9rZW4gaXMgaGVsZCBz
dHJvbmdseSB0aGlzIHRlc3Qgd2lsbCBub3QKKyAgICAgICAgLy8gdGVybWluYXRlLgorICAgICAg
ICBGUi5yZWdpc3RlcihvYmosIDQyLCBvYmopOworICAgIH0KK30KKworbGV0IHRyeUFnYWluQ291
bnQgPSAxMDsKK2Z1bmN0aW9uIHRyeUFnYWluKCkgeworICAgIGdjKCk7CisgICAgaWYgKGdsb2Jh
bFRoaXMuRlJSYW4pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIS0tdHJ5QWdhaW5Db3VudCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgc2V0VGltZW91dCh0cnlBZ2FpbiwgMCk7
Cit9Cit0cnlBZ2FpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404589</attachid>
            <date>2020-07-17 13:55:25 -0700</date>
            <delta_ts>2020-07-17 14:42:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717135524.patch</filename>
            <type>text/plain</type>
            <size>229311</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjA3Zjk3Y2EwNzllMGFjMjhkOGY1YmY2OGM4Y2IxNTkxN2Q4ZGUwLi5mOWM3YjdjMDlhM2FmNGFm
NGY0OTZiYjhkOTY1NmFiZjg0YjhkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pT
QVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKGZ1bmN0aW9u
RmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeURlYWRDb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAg
ICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwLgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdv
cmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxv
b3ApOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmspOgorICAgICAg
ICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmspOgorICAg
ICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAg
ICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmguCisgICAgICAgICogcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAg
ICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChKU0M6
OnByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlm
aWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cCk6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmxpdmVDb3VudCk6CisgICAgICAg
IChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudCk6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RhY2tPdmVyZmxvd0ZyYW1l
Q2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwU2V0V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRBZGRXYXRjaHBvaW50U2V0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlKb2luV2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
QmFzZT46OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6
aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjAtMDctMTcgIFhh
biBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVs
ZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM5OGQxZmNi
ZjY5ZGMwZjA5MjE2NGZiZjczMDdjNTE5NmM3MjA1NWQuLjhmODIzZmRhZTc1MTk1MjA5MzViZDJi
NTg0NjQ4YTU4N2YxNWFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNy0x
NyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQ
cm9taXNlRGVmZXJyZWRUaW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNv
LCBhZGQgZ2xvYmFsT2JqZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25z
IGZyb20gSlNDJ3MKKyAgICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUds
b2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
Ojpjb21waWxlU3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
aW5zdGFudGlhdGVTdHJlYW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHA6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorCiAyMDIwLTA3LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlY29tbWVuZGVkIGFydGljbGUgdGl0bGVzIG9uIGNzZG4ubmV0IGFy
ZSBjbGlwcGVkIGFmdGVyIHRyYW5zbGF0aW5nIHRvIEVuZ2xpc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFjNDcy
NTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uNGFiNTQ3ZTlkZTBkZjhlYTQ3MTQ1ZjJhZmQ1OWZm
NTY1M2NiMzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBu
dWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VS
ZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3As
CiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGls
ZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBkNjFhYWM3
ZTQ1YzUzNzIwNWE4YWNhN2UwOGVmZDY5NGNiZWRjNDIzLi5kN2Q0ZDg5OGZkNDJmMGYyNTRhNzQ5
MGJhOTMyZTY4ZGI1ODU5ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QubW0KQEAgLTY0LDYgKzY0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG1vZHVsZUxvYWRlckV2YWx1YXRl
LCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rp
b25UcmFja2VyCisgICAgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBu
dWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFt
aW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGNkNzRjMjUyMmVhMmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1
Zi4uYTI2YTk5NzUyNTJkMDY1NDY2YmZhNjFhNWI1YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkzMSwxNiArOTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIw
MDYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEZERTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVk
ZXMubSAqLzsgfTsKIAkJNTMxMUJENEIxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFF
QTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3
NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsg
fTsKLQkJNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRC
MDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAw
NzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9OworICAgICAgICAgICAgICAgIDUzMTgwNDVD
MjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIz
RXh0cmFjdFZhbHVlLmggKi87IH07CisgICAgICAgICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAw
MzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEg
LyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAg
ICA1MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0
MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUz
MzNCQkRDMjExMEY3RDkwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAy
QjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0Ux
MDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi87IH07Ci0JCTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAv
KiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9p
bnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyog
Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50
T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUzMzhFQkEzMjNBQjA0QjgwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0
YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87
IH07Ci0JCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3
MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAg
ICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0
cnkuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyog
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9v
cFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBG
MTJBQzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZC
QjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpT
VHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRX
b3JrVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAg
NTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FG
IC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4
MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1
N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQx
MTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRF
MDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFj
Y2Vzc0Nhc2UuaCAqLzsgfTsKQEAgLTM1OTcsNiArMzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4
NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlv
bkFsbG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFF
QjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3Bw
OyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5
QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzBBNjM0MDFGQTNFMzFDMDAyNkE1NDUgLyogU291cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTb3VyY2VzQ29jb2EudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzBBNjM0MTFGQTNFMzFEMDAyNkE1NDUgLyogU291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU291cmNlcy50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2
NkFEMUZBM0U3NzcwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNl
MTQ0LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3
ICszNjI2LDIyIEBACiAJCTUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAw
NEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFj
dFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4
MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3Qjgx
OTEgLyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9k
dWxlLW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3Bv
aW50T1NSRXhpdFNpZGVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4
RUJBMjIzQUIwNEEzMDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0
aCA9IGZ0bC9GVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQy
RkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFD
MzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2
Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8q
IFByb21pc2VUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNl
VGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAw
RjEyQUMxIC8qIFByb21pc2VUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcm9taXNlVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworICAgICAgICAgICAgICAgIDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJl
ZFdvcmtUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdv
cmtUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZF
MDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5
cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNB
RiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAy
ODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rl
c3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMv
VHlwZWRBcnJheUNUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYg
KzcxNDMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VD
YWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBl
LmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5o
ICovLAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5j
cHAgKi8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVy
LmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oICovLAogCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJn
dW1lbnRzLmNwcCAqLywKQEAgLTcxODQsMTEgKzcxOTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJD
RjI1MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuY3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJE
NzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0Ew
MEFDNDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlubGluZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJE
QUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2Vk
RnV6emVyQWdlbnQuY3BwICovLAogCQkJCUNFQ0ZBRDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFMjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBG
aWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICovLAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2
RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRF
NkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJ
CQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLywKIAkJCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5Lmgg
Ki8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAor
CQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlB
N0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgw
QzAwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJD
MjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03
MzQ1LDcgKzczNjIsMTMgQEAKIAkJCQkwRjdERjEzOTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUw
MDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3
QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2
NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUz
M0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAv
KiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBK
U0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0Zp
eGVkQXJyYXkuaCAqLywKKwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFy
cmF5LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICovLAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZG
NjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcg
LyogSlNGdW5jdGlvbi5oICovLApAQCAtNzU0NCw5ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2
MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJF
NkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUw
NkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3BwICovLAotCQkJCTUzNDYzODc0MUU3MERERUMw
MEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLywKLQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0Ey
ODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oICovLAogCQkJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUu
aCAqLywKQEAgLTkyODYsNiArOTMwNyw3IEBACiAJCQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0
IC8qIERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
NTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAw
MkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFG
QTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC05NTI2LDkgKzk1NDgsMTEgQEAKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyog
RXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZC
MTAwMjJCRjZEIC8qIEZhc3RKSVRQZXJtaXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJh
c2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFMjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFz
ZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMw
MDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJC
QjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMx
N0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3
MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1
Nyw3ICs5ODgxLDggQEAKIAkJCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJW
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhw
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNF
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUzM0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURD
NjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8qIFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21p
c2VUaW1lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8q
IFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVy
dHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2
RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIz
MTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4
ZDc0YzI3MDUuLjJhMjg3YTdmZGRiMDgwNGYzYjYwMTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc4Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2Vw
dGlvblNjb3BlLmNwcAogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJh
c2VkRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAK
K3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlRHVtcC5jcHAKQEAgLTg1MCw2ICs4NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAogcnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVu
dGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAg
LTkzMiw3ICs5MzUsNyBAQCBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMu
Y3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCi1ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAK
IHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcAogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxODRiYjk0NDQxZDNmYTQzMzQyYWZiZjk2
NjVjYzFiZTczOWVlMDEzLi5kODFhZGVmZjVmODQyNmE4NTMyNDJjNGU3YTE3YjU3YTY1MjFjNmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQu
aCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRl
ICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2
MTIsOCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAg
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJl
Zj4oKnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0
YW5jZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEVycm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0o
KS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5h
bGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBp
ZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDJlMGQwYTMwZGY1ZjY1MzA4ZTdhOWZjZWI5NjQzNGEyOTdmMTgzMTkuLmM5YmVlZDlmYTgy
MzRmMWExMDYyMWYzMTM2MjBiYmNhZjU2MjlkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29tcGlsZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUg
IkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb25maWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJy
ZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNp
bmNsdWRlICJKU0xvY2suaCIKQEAgLTU2LDcgKzU4LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJE
YXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VI
ZWFwQWNjZXNzU2NvcGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0xNTUsNiArMTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIHsKIAorI2RlZmluZSBFWElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVS
Tl9XSVRIX1ZBTFVFIHN0YXRpYyB2b2lkIGpzY0V4aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0
Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBX
b3JrZXJzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21t
YW5kTGluZSYsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNr
RXhjZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRp
b24sIEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBj
aGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhj
ZXB0aW9uLCBKU1ZhbHVlLCBjb25zdCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBj
bGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1
YmxpYzoKQEAgLTMwMiw3ICszMDUsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGll
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlv
blJlZ2lzdHJ5TGl2ZUNvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRz
U2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDgg
KzU0NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0Zv
ckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFpbk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWlu
TWljcm90YXNrcywgMCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZz
IiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwg
InNldFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVvdXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOwor
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50Iiwg
ZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFs
aXphdGlvblJlZ2lzdHJ5RGVhZENvdW50LCAwKTsKKyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiZ2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2Vl
ZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUs
IDEpOwpAQCAtNjM4LDYgKzY0OCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIg
bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNW
YWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBt
b2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1
ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJD
cmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVy
KiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lk
IHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNl
cHRpb24qKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxP
YmplY3QsIEpTR2xvYmFsT2JqZWN0KTsKIApAQCAtNjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNl
UmVqZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29w
LAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBp
bGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIx
ODcsNiArMjIwMCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJh
aW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhN
RTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBk
b24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sg
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9z
KTsKKworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBsb29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRl
ciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBzY2hlZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOwor
ICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2Fs
bGJhY2tdIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNr
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjaywganNVbmRlZmluZWQoKSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2Vl
IHRoaXMuLi4iKTsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdX
b3JrKGNhbGxiYWNrKTsKKyAgICB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVs
ZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0
aW9uUmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5h
bGl6YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lz
dHJ5Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0
cnktPmNlbGxMb2NrKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmlu
YWxpemF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChsb2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFk
Q291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5
ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVu
dCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQo
bG9ja2VyKSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMz
MkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtMjYxNywxMCArMjY3OSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAKICAgICAvLyBXZSBjYW4ndCB1c2UgZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2lu
ZyBjb2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dzCiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRp
b24gSGFuZGxpbmcKLSAgICBpbnQgcmVzID0gMDsKKyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNT
OwogICAgIFRSWQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQ
VChyZXMgPSAzKQorICAgIEVYQ0VQVChyZXMgPSBFWElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6
ZVN0YXRzQXRFbmRPZlRlc3RpbmcoKTsKICAgICBpZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZP
Ul9JTlBVVF9UT19FWElUIikpIHsKICAgICAgICAgV1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigp
OwpAQCAtMjY5MSw3ICsyNzUzLDcgQEAgc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhD
RVBUSU9OCiB9CiAKLXN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5l
JiBvcHRpb25zKQorc3RhdGljIGJvb2wgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFu
ZExpbmUmIG9wdGlvbnMpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5h
bWUgPSBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRpb25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTI3MjMsNyArMjc4NSw3IEBAIHN0YXRpYyBib29s
IGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wm
IHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBAIC0yNzQyLDYgKzI4MDQsMTUgQEAgc3RhdGlj
IHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNM
YXN0RmlsZSwgYm9vbCBoYXMKICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNh
dWdodEV4Y2VwdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDog
SlNWYWx1ZSgpLCBvcHRpb25zKTsKIH0KIAordm9pZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhj
ZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlv
bi0+dmFsdWUoKSk7CisgICAgYm9vbCBoaWRlTm9SZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRl
Tm9SZXR1cm4pCisgICAgICAgIGpzY0V4aXQoRVhJVF9FWENFUFRJT04pOworfQorCiBzdGF0aWMg
dm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExp
bmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlw
dHMgPSBvcHRpb25zLm1fc2NyaXB0czsKQEAgLTMxNzYsNyArMzI0Nyw3IEBAIGludCBydW5KU0Mo
Y29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1
bmMpCiAgICAgICAgIGZ1bmModm0sIGdsb2JhbE9iamVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZt
LmRyYWluTWljcm90YXNrcygpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxv
b3AoKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAg
ICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50
ZXJhY3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZDNhZDIxZTViYzk3ZWE5
NDUwYzZjZTBiNmY3ZTBjNjI1MTdjOTE5OS4uZWNkMDczY2QzZGYyMGU1YTljZmM2ZDIzZTY1ZGU0
YWUwMDQzZTc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJBcnJheSBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoQXJyYXlJdGVyYXRvclByb3RvdHlwZSkgfTsKK2NvbnN0IENs
YXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBcnJheSBJdGVyYXRv
ciBQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUpIH07CiAKIHZvaWQgQXJyYXlJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZi
YS4uNzAxZDY3NDdiZGJhZGRjODgyZTBmZmM0MTRjMWE1NzA4MWY5MDUzNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01Nyw2
ICs1Nyw3IEBACiAgICAgbWFjcm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oU3ltYm9sKSBcCiAgICAg
bWFjcm8oV2Vha1JlZikgXAorICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAg
bWFjcm8oX19kZWZpbmVHZXR0ZXJfXykgXAogICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18pIFwK
ICAgICBtYWNybyhfX2xvb2t1cEdldHRlcl9fKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkzZDMxNjRl
MDg5ZDE2M2UzMjYzMzBlODExOGQ4MmMwN2JmZDhjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsx
LDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisK
KyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworbmFtZXNwYWNlIERlZmVycmVkV29ya1RpbWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3Jr
VGltZXIoVk0mIHZtKQorICAgIDogQmFzZSh2bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKFZNJiB2bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7CisgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIo
KTsKKyAgICBpZiAoIW1fcnVuVGFza3MpIHsKKyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7Cisg
ICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJE
b2luZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1h
eSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3Bl
bmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRh
c2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5
UnVubmluZ1Rhc2sgPSB0cnVlOworICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisK
KyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBj
YW4gcmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVyZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3lu
Y2hyb25vdXNKU0V4ZWN1dGlvbigpOworCisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAo
RXhjZXB0aW9uKiBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9u
QXRFdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0u
ZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKKworICAgICAgICAgICAgbV90YXNrTG9jay5sb2Nr
KCk7CisgICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91
bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOworCisgICAgbV90YXNrTG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZl
cnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgpCit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZt
KCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9v
cDo6Y3VycmVudCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91
bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5k
aW5nVGlja2V0cy5zaXplKCkpCisgICAgICAgIFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZl
Y3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNp
ZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lcklu
dGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRl
cih0aWNrZXQpKTsKKyAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2
bSwgdGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRl
cGVuZGVuY2llcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRX
b3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0
aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7CisgICAgfQorfQorCitib29sIERlZmVy
cmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VS
VCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0
dXJuIG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJl
ZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlND
ZWxsKiBkZXBlbmRlbmN5KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFp
bnModGlja2V0KSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRp
Y2tldCk7CisgICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9v
bCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sK
KyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OworICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50
ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2No
ZWR1bGVXb3JrU29vbihUaWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVw
bGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFt
X2N1cnJlbnRseVJ1bm5pbmdUYXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZjZjZjOWNiMzM0NjJjMTJkYTI2
NTAwN2VmMWNkOTU2ZjJhOTE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKworI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU1Byb21pc2U7CitjbGFzcyBWTTsKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgRGVmZXJyZWRXb3JrVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGlt
ZXIgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKKworICAgIHZv
aWQgZG9Xb3JrKFZNJikgZmluYWw7CisKKyAgICB1c2luZyBUaWNrZXQgPSBKU09iamVjdCo7Cisg
ICAgdm9pZCBhZGRQZW5kaW5nV29yayhWTSYsIFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+
PiYmIGRlcGVuZGVuY2llcyk7CisgICAgYm9vbCBoYXNQZW5kaW5nV29yayhUaWNrZXQpOworICAg
IGJvb2wgaGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVu
Y3kpOworICAgIGJvb2wgY2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKKworICAgIHVzaW5nIFRh
c2sgPSBGdW5jdGlvbjx2b2lkKCk+OworICAgIHZvaWQgc2NoZWR1bGVXb3JrU29vbihUaWNrZXQs
IFRhc2smJik7CisKKyAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBm
YWxzZTsgfQorCisgICAgdm9pZCBydW5SdW5Mb29wKCk7CisKKyAgICBzdGF0aWMgUmVmPERlZmVy
cmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGVmZXJyZWRXb3JrVGltZXIodm0pKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
RGVmZXJyZWRXb3JrVGltZXIoVk0mKTsKKworICAgIExvY2sgbV90YXNrTG9jazsKKyAgICBib29s
IG1fcnVuVGFza3MgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFs
bFRpY2tldHNGaW5pc2ggeyBmYWxzZSB9OworICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayB7IGZhbHNlIH07CisgICAgRGVxdWU8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tz
OworICAgIEhhc2hNYXA8VGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdU
aWNrZXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yzk2ZWI4NGMwMzQ0ZTQ3OWQwNDFhZTY2YjQ5Mzk2Mjk2
OThkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpIH07
CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiX3MsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXph
dGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxGaW5hbGl6YXRpb25SZWdp
c3RyeSwgY29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpCit7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaW5hbGl6YXRpb25S
ZWdpc3RyeSIpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICgh
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKworICAgIEpTT2Jq
ZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBT
dHJ1Y3R1cmUqIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlID0gY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpID09IG5ld1RhcmdldAorICAgICAgICA/IGdsb2JhbE9iamVjdC0+ZmluYWxpemF0aW9u
UmVnaXN0cnlTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxt
KHZtLCBuZXdUYXJnZXQpLT5maW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpjcmVhdGUodm0sIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpKSkpOworfQorCit9CisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZTRjNTYzZjgyY2NlODRlN2E5ZjE4ZjZj
NWYzMzAwYWU0MjQ4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU7CisKK2NsYXNzIEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisKKyAgICBzdGF0
aWMgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUs
IEdldHRlclNldHRlciopCisgICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqKTsKK307CisKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpID09IHNpemVvZihJ
bnRlcm5hbEZ1bmN0aW9uKSk7CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNhM2YyMDNmNzNmYTk3YTAwNmZhNDVjNmM0YmFjM2NhODY3NDUxNDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKKworICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHByb3BlcnR5IG5hbWUgYmVjYXVzZSBp
dCdzIGEgcmVzZXZlcmVkIHdvcmQgaW4gQysrLi4uCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlZ2lzdGVyIiks
IHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5y
ZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQor
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBnZXRGaW5hbGl6
YXRpb25SZWdpc3RyeShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5
IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvKiBncm91cCA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeSo+KHZtLCBhc09iamVjdCh2YWx1ZSkpOworICAgIGlmIChMSUtFTFkoZ3JvdXApKQorICAg
ICAgICByZXR1cm4gZ3JvdXA7CisKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFs
aXphdGlvblJlZ2lzdHJ5IG9iamVjdCJfcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlS
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6
YXRpb25SZWdpc3RyeSh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJy
ZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgYXMgdGhlIHRhcmdldCJfcyk7CisKKyAgICBKU1Zh
bHVlIGhvbGRpbmdzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoc2FtZVZhbHVl
KGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBob2xkaW5ncykpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciBleHBlY3RzIHRoZSB0YXJn
ZXQgb2JqZWN0IGFuZCB0aGUgaG9sZGluZ3MgcGFyYW1ldGVyIGFyZSBub3QgdGhlIHNhbWUuIE90
aGVyd2lzZSwgdGhlIHRhcmdldCBjYW4gbmV2ZXIgYmUgY29sbGVjdGVkIl9zKTsKKworICAgIEpT
VmFsdWUgdW5yZWdpc3RlclRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAgICBpZiAo
IXVucmVnaXN0ZXJUb2tlbi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9r
ZW4iX3MpOworCisgICAgZ3JvdXAtPnJlZ2lzdGVyVGFyZ2V0KHZtLCB0YXJnZXQuZ2V0T2JqZWN0
KCksIGhvbGRpbmdzLCB1bnJlZ2lzdGVyVG9rZW4pOworICAgIHJldHVybiBlbmNvZGVkSlNVbmRl
ZmluZWQoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNGaW5h
bGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IGdyb3VwID0gZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChhdXRvKiB0b2tlbiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBncm91cC0+dW5y
ZWdpc3Rlcih2bSwgdG9rZW4pOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVu
cmVnaXN0cmF0aW9uIHRva2VuIl9zKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDRkZjhkZDI4YjM4YjM4ZDcwNzFjMjYyNzAyZjJmNDgxYzlmOGFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90
eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7IH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCAxOGU4OGQ3YzBjZTRlZTIx
MjlhMzdkODIwMjY4YWNmNjM2MGY1MmFlLi4xYzVmZGY1MGJkMDU4OWI3NmNhZGE0OGY3ZmY1OTAz
ZDcxMjU4OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50
aWZpZXIoVk0mIHZtLCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwog
ICAgIGNoZWNrQ3VycmVudEF0b21TdHJpbmdUYWJsZSh2bSk7CiAgICAgaWYgKCFzdHJpbmcuaXNO
dWxsKCkpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBz
dHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmlu
Z1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBv
dGhlciB0aHJlYWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5n
dGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0lu
QXRvbVN0cmluZ1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0Jm9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAppbmRleCAxZTY5YzhlN2M1MWFhOGU4NDdkMDIzMmNkODc0ZjAzMmExY2Qw
NDhjLi41OWIxMmIyZDVkYTY3ZGZiMzQyNWM3MTIxODgxZTEzNzc5NGUwMDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsRGF0
ZVRpbWVGb3JtYXQuaCIKIAotI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRs
T2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzllMTIwYmQ4MDdhNTU5YzUyMDY4OGQ4MmM5NDAwNGNmZjQzNmNj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkRlZmVycmVkV29ya1Rp
bWVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6c19pbmZvID0geyAiRmluYWxpemF0aW9uUmVnaXN0
cnkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTRmluYWxpemF0aW9uUmVnaXN0cnkpIH07CisKK1N0cnVjdHVyZSogSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNP
YmplY3QqIGNhbGxiYWNrKQoreworICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4odm0u
aGVhcCkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGluc3RhbmNlOwor
fQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoY2FsbGJhY2stPmlzQ2FsbGFibGUodm0pKTsKKyAgICBhdXRvIHZhbHVlcyA9IGlu
aXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2YWx1
ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGluZGV4KS5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlc1tpbmRleF0pOworICAgIGludGVybmFsRmllbGQo
RmllbGQ6OkNhbGxiYWNrKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsKK30KKwor
dm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2
aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSo+KGNlbGwpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0
LT5jZWxsTG9jaygpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2JqZWN0LT5t
X2xpdmVSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDog
aXRlci52YWx1ZSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlvbi5ob2xk
aW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogdGhpc09iamVjdC0+
bV9ub1VucmVnaXN0cmF0aW9uTGl2ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0
aW9uLmhvbGRpbmdzKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2JqZWN0LT5t
X2RlYWRSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9sZGluZ3MgOiBpdGVy
LnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworICAgIH0KKyAg
ICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uRGVh
ZCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworCisgICAgc2l6ZV90IHRvdGFs
QnVmZmVyU2l6ZXNJbkJ5dGVzID0gdGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucy5jYXBh
Y2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMp
OjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyArPSB0aGlz
T2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUo
dGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFpclR5cGUpOworICAg
IHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlv
bkxpdmUuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25vVW5yZWdp
c3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyAr
PSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkLmNhcGFjaXR5KCkgKiBzaXplb2Yo
ZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS50YWtlTGFzdCgpKSk7
CisgICAgdmlzaXRvci52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRvdGFsQnVm
ZmVyU2l6ZXNJbkJ5dGVzKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZXN0
cm95KEpTQ2VsbCogdGFibGUpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeSo+KHRhYmxlKS0+fkpTRmluYWxpemF0aW9uUmVnaXN0cnkoKTsKK30KKwordm9pZCBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCit7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKworICAgIGF1dG8gcmVtb3Zl
RnJvbVZlY3RvciA9IFtdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBwb3NpdGlvbikgeworICAgICAg
ICBzdGQ6OnN3YXAodmVjdG9yW3Bvc2l0aW9uXSwgdmVjdG9yLmxhc3QoKSk7CisgICAgICAgIHJl
dHVybiB2ZWN0b3IudGFrZUxhc3QoKTsKKyAgICB9OworCisgICAgYm9vbCByZWFkaWVkQ2VsbCA9
IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vVW5yZWdpc3RyYXRpb25M
aXZlLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCghbV9ub1VucmVnaXN0cmF0aW9uTGl2
ZVtpXS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJl
Z2lzdHJhdGlvbkxpdmVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAgICAgaWYg
KCF2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0udGFyZ2V0KSkgewor
ICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5hcHBlbmQocmVtb3ZlRnJvbVZlY3Rv
cihtX25vVW5yZWdpc3RyYXRpb25MaXZlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAgICByZWFk
aWVkQ2VsbCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xpdmVSZWdpc3RyYXRp
b25zLnJlbW92ZUlmKFsmXSAoYXV0byYgYnVja2V0KSAtPiBib29sIHsKKyAgICAgICAgQVNTRVJU
KGJ1Y2tldC52YWx1ZS5zaXplKCkpOworCisgICAgICAgIGJvb2wga2V5SXNEZWFkID0gIXZtLmhl
YXAuaXNNYXJrZWQoYnVja2V0LmtleSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBidWNrZXQudmFsdWUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCghYnVja2V0
LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJrZWQoYnVj
a2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAgICBpZiAo
IXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLnRhcmdldCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRp
b25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9sZGluZ3Mp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGRlYWRM
aXN0ID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5hZGQoYnVja2V0LmtleSwgRGVhZFJlZ2lzdHJhdGlv
bnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlYWRMaXN0Lml0ZXJhdG9yLT52YWx1ZS5hcHBl
bmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVhZGllZENlbGwgPSB0cnVlOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0
aW9uTGl2ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiAhYnVja2V0LnZhbHVlLnNpemUoKTsKKyAgICB9KTsKKwor
ICAgIGlmICghdm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpICYmIChy
ZWFkaWVkQ2VsbCB8fCBkZWFkQ291bnQoTm9Mb2NraW5nTmVjZXNzYXJ5KSkpIHsKKyAgICAgICAg
dm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCB0aGlzLCB7IH0pOworICAg
ICAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpKTsK
KyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24odGhpcywgW3Ro
aXNdIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5n
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICAgICAgICAgIHRoaXMtPnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlz
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgd2hpbGUgKEpTVmFsdWUgdmFsdWUgPSB0YWtlRGVh
ZEhvbGRpbmdzVmFsdWUoKSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwor
ICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBj
YWxsYmFjaygpLCBhcmdzLCAiVGhpcyBzaG91bGQgbm90IGJlIHZpc2libGU6IHBsZWFzZSByZXBv
cnQgYSBidWcgdG8gYnVncy53ZWJraXQub3JnIik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTRmluYWxpemF0aW9uUmVn
aXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjZWxsTG9jaygpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAobV9ub1VucmVn
aXN0cmF0aW9uRGVhZC5zaXplKCkpCisgICAgICAgIHJlc3VsdCA9IG1fbm9VbnJlZ2lzdHJhdGlv
bkRlYWQudGFrZUxhc3QoKS5nZXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0g
bV9kZWFkUmVnaXN0cmF0aW9ucy5iZWdpbigpOworICAgICAgICBpZiAoaXRlciA9PSBtX2RlYWRS
ZWdpc3RyYXRpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAg
ICAgQVNTRVJUKGl0ZXItPnZhbHVlLnNpemUoKSk7CisgICAgICAgIHJlc3VsdCA9IGl0ZXItPnZh
bHVlLnRha2VMYXN0KCkuZ2V0KCk7CisgICAgICAgIGlmICghaXRlci0+dmFsdWUuc2l6ZSgpKQor
ICAgICAgICAgICAgbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgfQorCisg
ICAgaWYgY29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXRlci52YWx1ZS5zaXplKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQoVk0mIHZtLCBKU09i
amVjdCogdGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKQoreworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgUmVnaXN0cmF0aW9uIHJlZ2lz
dHJhdGlvbjsKKyAgICByZWdpc3RyYXRpb24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHJlZ2lzdHJh
dGlvbi5ob2xkaW5ncy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGhvbGRpbmdzKTsKKyAgICBpZiAo
dG9rZW4uaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5hcHBl
bmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX2xpdmVSZWdpc3RyYXRpb25zLmFkZChqc1NlY3VyZUNhc3Q8SlNPYmplY3QqPih2bSwg
dG9rZW4pLCBMaXZlUmVnaXN0cmF0aW9ucygpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5hcHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICB9CisgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIodGhpcyk7Cit9CisKK2Jvb2wgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5y
ZWdpc3RlcihWTSYsIEpTT2JqZWN0KiB0b2tlbikKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IHdyaXRlIGJhcnJpZXIgb3Vyc2VsdmVzIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIG9ubHkgcG9pbnQg
dG8gbGVzcyB0aGluZ3MgYWZ0ZXIgdGhpcyBmaW5pc2hlcy4KKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGNlbGxMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9saXZlUmVnaXN0cmF0aW9u
cy5yZW1vdmUodG9rZW4pOworICAgIHJlc3VsdCB8PSBtX2RlYWRSZWdpc3RyYXRpb25zLnJlbW92
ZSh0b2tlbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6bGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7CisgICAg
c2l6ZV90IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXplKCk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBpdGVyIDogbV9saXZlUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291bnQgKz0g
aXRlci52YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3NpemVfdCBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikK
K3sKKyAgICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUoKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICBj
b3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKworU3Ry
aW5nIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6OkpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9zOworfQorCit9
CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MDUxYmZhMGE4YzY3NjM4ZjAzMTE3NGM0M2Iw
NjViNDEyNmEyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU0Rlc3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsPDE+OworCisgICAgZW51bSBj
bGFzcyBGaWVsZCA6IHVpbnQ4X3QgeyAKKyAgICAgICAgQ2FsbGJhY2ssCisgICAgfTsKKworICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFj
aXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5l
Q2FwYWNpdHkgPT0gMFUpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTRmluYWxpemF0aW9uUmVn
aXN0cnkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2U8bW9k
ZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZklu
dGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsK
KyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICB9IH07CisgICAgfQorCisgICAgY29uc3Qg
V3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7
IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkp
OyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxk
KSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVs
ZCkpOyB9CisKKyAgICBKU09iamVjdCogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpDYWxsYmFjaykuZ2V0KCkpOyB9CisKKyAg
ICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
SlNPYmplY3QqIGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSog
Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlKTsKKworICAgIHZvaWQgcnVuRmluYWxpemF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVj
dCopOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoVk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAg
IEpTVmFsdWUgdGFrZURlYWRIb2xkaW5nc1ZhbHVlKCk7CisKKyAgICBib29sIHVucmVnaXN0ZXIo
Vk0mLCBKU09iamVjdCogdG9rZW4pOworICAgIC8vIHRva2VuIHNob3VsZCBiZSBhIEpTT2JqZWN0
IG9yIHVuZGVmaW5lZC4KKyAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0KFZNJiwgSlNPYmplY3QqIHRh
cmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbik7CisKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzaXplX3QgbGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExv
Y2s+Jik7CisKK3ByaXZhdGU6CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTT2JqZWN0KiBjYWxsYmFjayk7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShj
b25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdHJ1Y3QgUmVnaXN0cmF0
aW9uIHsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+IGhvbGRpbmdzOworICAgIH07CisKKyAgICB1c2luZyBMaXZlUmVnaXN0cmF0aW9ucyA9
IFZlY3RvcjxSZWdpc3RyYXRpb24+OworICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIHRhcmdldCBh
bnltb3JlIHNpbmNlIHdlIGtub3cgaXQncyBkZWFkLgorICAgIHVzaW5nIERlYWRSZWdpc3RyYXRp
b25zID0gVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj47CisKKyAgICAvLyBOb3RlIHRoYXQg
d2UgZG9uJ3QgYm90aGVyIHB1dHRpbmcgYSB3cml0ZSBiYXJyaWVyIG9uIHRoZSBrZXkgb3IgdGFy
Z2V0IGJlY2F1c2UgdGhleSBhcmUgd2Vha2x5IHJlZmVyZW5jZWQuCisgICAgSGFzaE1hcDxKU09i
amVjdCosIExpdmVSZWdpc3RyYXRpb25zPiBtX2xpdmVSZWdpc3RyYXRpb25zOworICAgIEhhc2hN
YXA8SlNPYmplY3QqLCBEZWFkUmVnaXN0cmF0aW9ucz4gbV9kZWFkUmVnaXN0cmF0aW9uczsKKyAg
ICBMaXZlUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25MaXZlOworICAgIERlYWRSZWdp
c3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIzNzAwNi4uYWY2
NjgzZTVjZTEzM2RlZjBhNzA0ZDk2YWQ3YzhkMDc3ODg1NGVhOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjEsNiArNjEsOCBA
QAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlv
blJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJG
dW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCIKQEAgLTk5LDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgogI2luY2x1
ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCisjaW5j
bHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKQEAgLTM4Nyw2ICszOTAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0ds
b2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAv
LyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8v
IG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRy
YWNrZXIKKyAgICBudWxscHRyLCAvLyByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29w
CiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGls
ZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0yMTk5
LDYgKzIyMDMsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVldWVNaWNyb3Rhc2soUmVmPE1p
Y3JvdGFzaz4mJiB0YXNrKQogICAgIHZtKCkucXVldWVNaWNyb3Rhc2soKnRoaXMsIFdURk1vdmUo
dGFzaykpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit7Cisg
ICAgZGF0YUxvZ0xuKCJVbmNhdWdodCBFeGNlcHRpb24gYXQgcnVuIGxvb3A6ICIsIGV4Y2VwdGlv
bi0+dmFsdWUoKSk7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldERlYnVnZ2VyKERlYnVn
Z2VyKiBkZWJ1Z2dlcikKIHsKICAgICBtX2RlYnVnZ2VyID0gZGVidWdnZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZGMzMGI4MmU1
NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi40NzRmZGU2NGZmNmNhZTI4M2U5OWU0NmVl
YzgwNTA4MWJjMGY5YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTEzOCw2ICsxMzgsOCBAQCBjb25zdGV4cHIgYm9vbCB0eXBlRXhw
b3NlZEJ5RGVmYXVsdCA9IHRydWU7CiAgICAgbWFjcm8oSlNQcm9taXNlLCBwcm9taXNlLCBwcm9t
aXNlLCBKU1Byb21pc2UsIFByb21pc2UsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwK
ICAgICBtYWNybyhCaWdJbnQsIGJpZ0ludCwgYmlnSW50T2JqZWN0LCBCaWdJbnRPYmplY3QsIEJp
Z0ludCwgb2JqZWN0LCBPcHRpb25zOjp1c2VCaWdJbnQoKSkgXAogICAgIG1hY3JvKFdlYWtPYmpl
Y3RSZWYsIHdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RSZWYsIEpTV2Vha09iamVjdFJlZiwgV2Vh
a1JlZiwgb2JqZWN0LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisgICAgbWFjcm8oRmluYWxp
emF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJlZ2lzdHJ5LCBmaW5hbGl6YXRpb25SZWdpc3Ry
eSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSwgRmluYWxpemF0aW9uUmVnaXN0cnksIG9iamVjdCwg
T3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXAorCiAKICNkZWZpbmUgRk9SX0VBQ0hfQlVJTFRJTl9E
RVJJVkVEX0lURVJBVE9SX1RZUEUobWFjcm8pIFwKICAgICBtYWNybyhTdHJpbmdJdGVyYXRvciwg
c3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0ZXJhdG9yLCBKU1N0cmluZ0l0ZXJhdG9yLCBTdHJpbmdJ
dGVyYXRvciwgaXRlcmF0b3IsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCkBAIC0yMjcsNiArMjI5
LDkgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIHZvaWQg
KCpQcm9taXNlUmVqZWN0aW9uVHJhY2tlclB0cikoSlNHbG9iYWxPYmplY3QqLCBKU1Byb21pc2Uq
LCBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24pOwogICAgIFByb21pc2VSZWplY3Rpb25UcmFj
a2VyUHRyIHByb21pc2VSZWplY3Rpb25UcmFja2VyOwogCisgICAgdHlwZWRlZiB2b2lkICgqUmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGNl
cHRpb24qKTsKKyAgICBSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyIHJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3A7CisKICAgICB0eXBlZGVmIFN0cmluZyAoKkRl
ZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyKSgpOwogICAgIERlZmF1bHRMYW5ndWFnZUZ1bmN0aW9u
UHRyIGRlZmF1bHRMYW5ndWFnZTsKIApAQCAtNDUzLDIxICs0NTgsNiBAQCBwdWJsaWM6CiAgICAg
V2Vha1JhbmRvbSBtX3dlYWtSYW5kb207CiAgICAgUmVnRXhwR2xvYmFsRGF0YSBtX3JlZ0V4cEds
b2JhbERhdGE7CiAKLSAgICBKU0NhbGxlZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0KLQotICAgIElu
bGluZVdhdGNocG9pbnRTZXQmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7
IHJldHVybiBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxp
bmVXYXRjaHBvaW50U2V0JiBtYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1f
c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50
U2V0JiBzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50
U2V0JiBtYXBTZXRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRjaHBvaW50U2V0
OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fc2V0QWRkV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFy
cmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5U3BlY2llc1dhdGNocG9p
bnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUpvaW5XYXRjaHBvaW50U2V0
KCkgeyByZXR1cm4gbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hw
b2ludFNldCYgbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0KCkKLSAgICB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50U2V0OwotICAgIH0KICAgICAvLyBJZiB0aGlzIGhhc24ndCBiZWVu
IGludmFsaWRhdGVkLCBpdCBtZWFucyB0aGUgYXJyYXkgaXRlcmF0b3IgcHJvdG9jb2wKICAgICAv
LyBpcyBub3Qgb2JzZXJ2YWJsZSB0byB1c2VyIGNvZGUgeWV0LgogICAgIElubGluZVdhdGNocG9p
bnRTZXQgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OwpAQCAtNDk0LDYgKzQ4
NCwyMyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZUFk
ZFdhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX251bWJlclByb3RvdHlwZVRv
U3RyaW5nV2F0Y2hwb2ludDsKIAorcHVibGljOgorICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93
RnJhbWVDYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5n
ZXQoKTsgfQorCisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsg
fQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0KCkgeyByZXR1cm4gbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAg
IElubGluZVdhdGNocG9pbnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
KCkgeyByZXR1cm4gbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAg
IElubGluZVdhdGNocG9pbnRTZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21h
cFNldFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5l
V2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5
Sm9pbldhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0K
KyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOworICAgICAg
ICByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7CisgICAgfQorCiAgICAgYm9v
bCBpc0FycmF5UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7
CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2
YWJsZSgpOwogICAgIGJvb2wgaXNTZXRQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5v
bk9ic2VydmFibGUoKTsKQEAgLTgyNCw2ICs4MzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRV
bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhWTSYgdm0sIEpTT2JqZWN0KiBmdW5jdGlvbikgeyBt
X3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLnNldCh2bSwgZnVuY3Rpb24pOyB9CiAgICAgSlNP
YmplY3QqIHVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV91bmhh
bmRsZWRSZWplY3Rpb25DYWxsYmFjay5nZXQoKTsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiop
OworCiAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9CiAKICAgICBKU09i
amVjdCogYXJyYXlCdWZmZXJQcm90b3R5cGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5n
TW9kZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaAppbmRleCBlMjU3YTFkZjYwMGIyYThlZDQ3NWI3
ZTg5MzZlODRjYTQ4NWIyNWIxLi42ZjA3ODEwZWUwNjY0MWQ0MDQyMzljMzQ0MmU5MDEzMTFiZTg4
ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFs
RmllbGRPYmplY3RJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oCkBAIC0zMCwxMiArMzAsMTEgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAvLyBUaGlzIGlzIHVzZWQgZm9yIHNoYXJpbmcgaW50ZXJmYWNlIGFuZCBpbXBsZW1l
bnRhdGlvbi4gSXQgc2hvdWxkIG5vdCBoYXZlIGl0cyBvd24gY2xhc3NJbmZvLgotdGVtcGxhdGU8
dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDE+Ci1jbGFzcyBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewordGVtcGxhdGU8
dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDEsIHR5cGVuYW1lIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0PgorY2xhc3MgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA6IHB1
YmxpYyBCYXNlIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCi0gICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkludGVybmFsRmllbGRzID0gcGFzc2VkTnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KQEAgLTc2LDQgKzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiBtX2ludGVybmFsRmllbGRzW251bWJlck9mSW50ZXJuYWxGaWVsZHNdIHsgfTsKIH07
CiAKK3RlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAxPgor
dXNpbmcgSlNEZXN0cnVjdGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGw8cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcywgSlNEZXN0cnVjdGli
bGVPYmplY3Q+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5s
aW5lcy5oCmluZGV4IDhmMDNjOGE2ZGIxYmQ1NzUwZTY4NTk4ZTIxYzlhZTFiMzEzYzg1ZTEuLmU2
YTYxZTFkOWJkNDFiMzliYmE2MDkzN2ZlODVkYTliMTg0ZmQ4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbElubGluZXMuaApAQCAtMjksMTEgKzI5LDExIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci10ZW1wbGF0ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzPgotdm9pZCBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit0ZW1wbGF0
ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzLCB0eXBlbmFtZSBCYXNlPgor
dm9pZCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVs
ZHMsIEJhc2U+Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgQmFz
ZTo6aW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1faW50ZXJuYWxGaWVsZHMs
IG51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggODgzMDgzZWNiNzY3ZDA4ODNmOWE0OTIxZjM5OWY1OTA4
ODEzY2ZkZi4uNGYzNGI2YjQ5Y2E4OWU2NjhjYjlhMjY3MTAzMjNjYWUxNzg2NGI0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC0yNywxMSArMjcs
MTEgQEAKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKLSNpbmNs
dWRlICJQcm9taXNlVGltZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE2OCw3ICsxNjgs
NyBAQCB2b2lkIEpTUHJvbWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2
YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
fQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAg
dm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lk
IEpTUHJvbWlzZTo6cmVqZWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZWplY3Qo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAg
ICAgIGNhbGxGdW5jdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlamVj
dFByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2Vs
UGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBl
bmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0QXNIYW5kbGVkKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDhlZmQyYjAwODQzMDI2MjYxODU5ODE5NTg5Zjc4NGNiYmQzNjNk
MDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgi
Ci0KLSNpbmNsdWRlICJKU1Byb21pc2UuaCIKLSNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgSlND
IHsKLQotbmFtZXNwYWNlIFByb21pc2VUaW1lckludGVybmFsIHsKLXN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Ci19Ci0KLVByb21pc2VUaW1lcjo6UHJvbWlzZVRpbWVyKFZN
JiB2bSkKLSAgICA6IEJhc2Uodm0pCi17Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmso
Vk0mIHZtKQotewotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKLSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAgICBjYW5jZWxUaW1lcigpOwotICAgIGlmICgh
bV9ydW5UYXNrcykgewotICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9n
TG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24gcHJvbWlz
ZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJl
YWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgotICAgICAgICBpZiAobV9wZW5kaW5nUHJvbWlz
ZXMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgcnVu
IG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKLQotICAgICAgICAg
ICAgdGFzaygpOwotICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICAgICAg
ICAgIG1fdGFza0xvY2subG9jaygpOwotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2Vz
LmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKQot
ICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwotCi0gICAgbV90YXNrTG9jay51bmxv
Y2soKTsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3AoKQotewotICAgIEFTU0VS
VCghbV9hcGlMb2NrLT52bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgpLT5ydW5Mb29w
KCkpOwotICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggPSB0cnVl
OwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpCi0gICAgICAgIFJ1bkxvb3A6OnJ1
bigpOwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UoVk0mIHZtLCBK
U1Byb21pc2UqIHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykK
LXsKLSAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwotCi0gICAgYXV0byBy
ZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2Vs
bD4+KCkpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5J
ZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5k
KFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRh
TG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5k
ZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMpOwotICAgIH0KLX0K
LQotYm9vbCBQcm9taXNlVGltZXI6Omhhc1BlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0
KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCk7Ci19
Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShKU1By
b21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQotewotICAgIEFTU0VSVCh0aWNrZXQt
PnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJUKG1fcGVu
ZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX3Bl
bmRpbmdQcm9taXNlcy5nZXQodGlja2V0KTsKLSAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRl
cGVuZGVuY3kpOwotfQotCi1ib29sIFByb21pc2VUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2Uo
SlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21p
c2VzLnJlbW92ZSh0aWNrZXQpOwotCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xu
SWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwg
UmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgUHJv
bWlzZVRpbWVyOjpzY2hlZHVsZVdvcmtTb29uKEpTUHJvbWlzZSogdGlja2V0LCBUYXNrJiYgdGFz
aykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKLSAgICBtX3Rhc2tzLmFw
cGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7Ci0gICAgaWYgKCFp
c1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQotICAgICAgICBzZXRUaW1l
VW50aWxGaXJlKDBfcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2E0ZDBmMjlhZTJkMjhjZjNlNDA0YmVmYjU0NmY1M2NkMGJiYWU5Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9taXNlVGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNQcm9taXNlOwot
Y2xhc3MgVk07Ci1jbGFzcyBKU0NlbGw7Ci0KLWNsYXNzIFByb21pc2VUaW1lciBmaW5hbCA6IHB1
YmxpYyBKU1J1bkxvb3BUaW1lciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9v
cFRpbWVyOwotCi0gICAgdm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsKLQotICAgIHZvaWQgYWRkUGVu
ZGluZ1Byb21pc2UoVk0mLCBKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVw
ZW5kZW5jaWVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1BlbmRpbmdQcm9taXNl
KEpTUHJvbWlzZSogdGlja2V0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBKU0NlbGwqIGRlcGVuZGVu
Y3kpOwotICAgIC8vIEpTUHJvbWlzZSBzaG91bGQgaGFuZGxlIGNhbmNlbGluZyB3aGVuIHRoZSBw
cm9taXNlIGlzIHJlc29sdmVkIG9yIHJlamVjdGVkLgotICAgIGJvb2wgY2FuY2VsUGVuZGluZ1By
b21pc2UoSlNQcm9taXNlKik7Ci0KLSAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsK
LSAgICB2b2lkIHNjaGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiwgVGFzayYmKTsKLQotICAgIHZv
aWQgc3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJ1blJ1bkxvb3AoKTsKLQotICAgIHN0YXRpYyBSZWY8UHJvbWlz
ZVRpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUHJvbWlzZVRpbWVyKHZtKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFByb21pc2VUaW1l
cihWTSYpOwotCi0gICAgSGFzaE1hcDxKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+
PiBtX3BlbmRpbmdQcm9taXNlczsKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgYm9vbCBtX3J1
blRhc2tzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9t
aXNlc0ZpbmlzaCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsg
ZmFsc2UgfTsKLSAgICBWZWN0b3I8c3RkOjp0dXBsZTxKU1Byb21pc2UqLCBUYXNrPj4gbV90YXNr
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhY2IzNGM5ZDNkYjI2ZTU4YTYx
ZmZkYjMxNzE3YTUxZTY4MzFmYzVkLi4zODU3Yjc1MGUyMmJmNzkyNmQwZWNmM2Q0Nzk2MjA5ODU0
NWQ3ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcApAQCAtMzIsNiArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQogCituYW1lc3BhY2UgU3RydWN0dXJlSURUYWJsZUludGVybmFsIHsKK2Jv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQorCiBTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJRFRh
YmxlKCkKICAgICA6IG1fdGFibGUobWFrZVVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0Pihz
X2luaXRpYWxTaXplKSkKICAgICAsIG1fc2l6ZSgxKQpAQCAtMTYxLDExICsxNjUsMTQgQEAgU3Ry
dWN0dXJlSUQgU3RydWN0dXJlSURUYWJsZTo6YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5lbmNvZGVkU3RydWN0dXJlQml0cyA9IGVu
Y29kZShzdHJ1Y3R1cmUsIHJlc3VsdCk7CiAgICAgbV9zaXplKys7CiAgICAgQVNTRVJUKCFpc051
a2VkKHJlc3VsdCkpOworCisgICAgZGF0YUxvZ0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVybmFs
Ojp2ZXJib3NlLCAiQWxsb2NhdGVkIFN0cnVjdHVyZUlEICIsIHJlc3VsdCwgIiBmb3IgU3RydWN0
dXJlICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
dm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQogeworICAgIGRhdGFMb2dMbklmKFN0cnVjdHVyZUlE
VGFibGVJbnRlcm5hbDo6dmVyYm9zZSwgIkRlYWxsb2NhdGVkIFN0cnVjdHVyZUlEICIsIHN0cnVj
dHVyZUlEKTsKICAgICBBU1NFUlQoc3RydWN0dXJlSUQgIT0gc191bnVzZWRJRCk7CiAgICAgdWlu
dDMyX3Qgc3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9mRW50cm9weUJp
dHM7CiAgICAgQVNTRVJUKHN0cnVjdHVyZUluZGV4ICYmIHN0cnVjdHVyZUluZGV4IDwgc19tYXhp
bXVtTnVtYmVyT2ZTdHJ1Y3R1cmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCA4Y2FhNDhjMWJlMzExYjVkODdlODYwMzhiYTBmNDA0MTgzODg4YzJhLi43ODM2ZjczZTkz
YWY0MjQyMTc3MjU0NjViN2IxYzJmN2RjMjBmMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJT
Y29wZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmgiCiAjaW5j
bHVkZSAiRXJyb3JJbnN0YW5jZS5oIgpAQCAtODgsNiArODksNyBAQAogI2luY2x1ZGUgIkpTQ2Fs
bGVlLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CkBAIC0xMzMsNyArMTM1LDYgQEAKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgi
Ci0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFi
bGUuaCIKICNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5nRnV6
emVyQWdlbnQuaCIKQEAgLTM2NSw3ICszNjYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAg
ICAsIGNsaWVudERhdGEobnVsbHB0cikKICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKICAg
ICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCi0gICAgLCBwcm9taXNlVGlt
ZXIoUHJvbWlzZVRpbWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgZGVmZXJyZWRXb3JrVGltZXIo
RGVmZXJyZWRXb3JrVGltZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJs
ZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgp
IDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAg
ICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKQEAgLTU3NSw3ICs1NzYsNyBAQCBWTTo6flZNKCkK
ICAgICBhdXRvIGRlc3RydWN0aW9uTG9ja2VyID0gaG9sZExvY2soc19kZXN0cnVjdGlvbkxvY2su
cmVhZCgpKTsKICAgICAKICAgICBHaWdhY2FnZTo6cmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxi
YWNrKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjaywgdGhpcyk7Ci0gICAgcHJvbWlz
ZVRpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CisgICAgZGVmZXJyZWRXb3JrVGltZXItPnN0b3BS
dW5uaW5nVGFza3MoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKFdhc206Oldv
cmtsaXN0KiB3b3JrbGlzdCA9IFdhc206OmV4aXN0aW5nV29ya2xpc3RPck51bGwoKSkKICAgICAg
ICAgd29ya2xpc3QtPnN0b3BBbGxQbGFuc0ZvckNvbnRleHQod2FzbUNvbnRleHQpOwpAQCAtMTQ4
Nyw2ICsxNDg4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdl
YWtNYXBTcGFjZSwgd2Vha01hcEhlYXBDZWxsVHlwZS5nZXQoKSwKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1dpdGhTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFw
cGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tG
dW5jdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6
MHgxMGY2MTBiOApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNjBmNTk3MjlmZWMy
ZTAyZTY5NzZjMzFlZDUxYjE0OGE1YzZlYWEwNS4uMzdjMGZmYzk2NDc3NmU0OGI2MmZmMWE2NjZl
MGE4MzY5YWJlZmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNTksNyAr
MTU5LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKIGNsYXNzIE9iakNDYWxsYmFja0Z1bmN0
aW9uOwotY2xhc3MgUHJvbWlzZVRpbWVyOworY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFz
cyBSZWdFeHA7CiBjbGFzcyBSZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwpAQCAtNTUwLDYg
KzU1MCw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2Vha09iamVjdFJlZlNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIod2Vha1NldFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2Vha01hcFNwYWNlKQpAQCAtNzA5LDggKzcxMCw4IEBAIHB1YmxpYzoKICAgICBXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+IG1fc2xvd0JvdW5kRXhlY3V0YWJsZTsKICAgICBXZWFrPE5hdGl2ZUV4
ZWN1dGFibGU+IG1fc2xvd0NhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsKIAotICAgIFJlZjxQ
cm9taXNlVGltZXI+IHByb21pc2VUaW1lcjsKLSAgICAKKyAgICBSZWY8RGVmZXJyZWRXb3JrVGlt
ZXI+IGRlZmVycmVkV29ya1RpbWVyOworCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGlu
Z0NhbGxiYWNrT2JqZWN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY3VycmVudGx5RGVzdHJ1Y3Rp
bmdDYWxsYmFja09iamVjdENsYXNzSW5mbyB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAppbmRleCA1ZGE2OTZkNjk3ZGQ0
NzUwNWQ3ZGM1MmI2MDZlMzE3NzRhNGUyNjVkLi5hZjQyZDhkNTcwOWYyMDZhN2E3ODcwOGY2NWQ3
ZTUwYjU1OGU2MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFy
cmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCisjaW5jbHVkZSAiRGVmZXJy
ZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0NCdWls
dGlucy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIgpAQCAtNDEsNyArNDIs
NiBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJQcm9taXNlVGlt
ZXIuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKQEAgLTEzNCwxMCArMTM0LDEwIEBAIHN0
YXRpYyB2b2lkIHdlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRl
bmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFs
T2JqZWN0KSk7CiAKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBw
cm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVy
LT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAog
ICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUo
c291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3By
b21pc2UsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdv
cmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXIt
PnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNWYWx1ZSBtb2R1
bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKQEAgLTIx
NCwxMSArMjE0LDExIEBAIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlCiAgICAgLy8gVGhlIGluc3Rh
bmNlIGtlZXBzIHRoZSBtb2R1bGUgYWxpdmUuCiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJv
bmc8SlNDZWxsPih2bSwgaW5zdGFuY2UpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9u
ZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBl
bmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKICAgICAvLyBOb3RlOiBUaGlzIGNvbXBsZXRpb24gdGFzayBtYXkgb3Ig
bWF5IG5vdCBnZXQgY2FsbGVkIGltbWVkaWF0ZWx5LgogICAgIG1vZHVsZS0+bW9kdWxlKCkuY29t
cGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgY3JlYXRl
U2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGluc3Rh
bmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZt
XSAoUmVmPFdhc206OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUgewogICAgICAg
ICBSZWZQdHI8V2FzbTo6Q29kZUJsb2NrPiBjb2RlQmxvY2sgPSBXVEZNb3ZlKHJlZkNvZGVCbG9j
ayk7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBb
cHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3Jl
YXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21p
c2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5k
LCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2RlQmxvY2spXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0
YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICByZXNvbHZlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgY29kZUJsb2NrLnJl
bGVhc2VOb25OdWxsKCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsK
QEAgLTIzMywxMyArMjMzLDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzCiAgICAgVmVjdG9y
PFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChT
dHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVu
ZChTdHJvbmc8SlNDZWxsPih2bSwgbW9kdWxlS2V5Q2VsbCkpOwotICAgIHZtLnByb21pc2VUaW1l
ci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7
CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBX
VEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNy
ZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZ2xvYmFsT2JqZWN0LCBidWZmZXIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChnbG9iYWxPYmplY3QsIHNjb3BlLCBw
cm9taXNlKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250
ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxs
YmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9i
amVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxp
ZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVy
LT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVs
ZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCByZXNvbHZl
S2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2Jq
ZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEpT
V2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0
dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVj
dHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkKQEAgLTI2OCwxMCArMjY4LDEwIEBAIHN0YXRpYyB2b2lkIHdlYkFzc2Vt
Ymx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7CiAgICAgZGVw
ZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAg
dm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmso
dm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6
OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNo
YXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
ICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlN
b2R1bGU6OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKQEAgLTMzOSw3ICszMzksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KgogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNp
ZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2Jq
ZWN0KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlz
ZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRk
UGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBp
ZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFt
aW5nKQogICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNv
bXBpbGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iagogICAgICAg
ICAgICAgICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgICAgICAg
ICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVj
dCkpOwogICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4o
dm0sIGltcG9ydE9iamVjdCkpOwotICAgICAgICAgICAgICAgIHZtLnByb21pc2VUaW1lci0+YWRk
UGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAg
ICAgICAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9t
aXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzE4NDg4OD4gaWYgdGhlcmUncyBhbiBpbXBvcnRPYmplY3Qg
YW5kIGl0IGNvbnRhaW5zIGEgTWVtb3J5LCB0aGVuIHdlIGNhbiBjb21waWxlIHRoZSBtb2R1bGUg
d2l0aCB0aGUgcmlnaHQgbWVtb3J5IHR5cGUgKGZhc3Qgb3Igbm90KSBieSBsb29raW5nIGF0IHRo
ZSBtZW1vcnkncyB0eXBlLgogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+aW5zdGFudGlhdGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBwcm9t
aXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBpbXBvcnRPYmplY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCmlu
ZGV4IDQ4OTQ5YmY2ZWMyODBmZWYyNzNmMDQwNmVkMWNkMTA3ZDljNTVjZjIuLjgxN2Y3OTQ3MDY4
MzhlMThhNDIwNTk4YjJlNzI4NTVjYTI1ZTRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKQEAgLTI4LDggKzI4
LDggQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8u
aCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgot
I2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1
ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCkBAIC00OSw3ICs0OSw3
IEBAIGNsYXNzIFBsYW47CiBjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
IAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjcmVhdGUoVk0mLCBSZWY8V2Fz
bTo6Q29kZUJsb2NrPiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiwgUmVmPFdhc206OkNvZGVC
bG9jaz4mJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGQyOGU1MDlkYjAxYzcwMTBkZDc3
ZTJmZWJjMzVjNzk4OWFkZDdhMzIuLjAzOWVmODIzMGE4NmI2MTM1Y2VlYmRlNDNjM2ExMzcwNWRj
Zjk3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAKQEAgLTIzNCw2ICsyMzQsMTEgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cHJv
bWlzZVJlamVjdGlvblRyYWNrZXIoSlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LAogICAg
IH0KIH0KIAordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25B
dEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0aW9u
KiBleGNlcHRpb24pCit7CisgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2JqZWN0LCBleGNl
cHRpb24pOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKIHsK
ICAgICBjbGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGQyOTg1OGNmYTRiMGJl
MGQ2MjEzOTBhODNkNzZkNWE4NTBiOWQyODAuLjczODY3ZDZhYjJlNWI0ZGJiNzBiNzBhOWEzNjA5
NDg0OWYwY2VlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICBKU0J1aWx0aW5JbnRl
cm5hbEZ1bmN0aW9ucyYgYnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkgeyByZXR1cm4gbV9idWls
dGluSW50ZXJuYWxGdW5jdGlvbnM7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0
RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopOwog
CiBwdWJsaWM6CiAgICAgfkpTRE9NR2xvYmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA4ODMyMTNlOTA2MWYzOGI4YmI0
MzM1NzliMjk4NjA5ODc3ODRlNzgyLi5hY2VhNzY2YWYxYzdkNWZlZWFlMTdhNjlmOWUzYjM1Y2Rl
ZTlhODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvZGVC
bG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
TWljcm90YXNrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9M
YW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03OCw2ICs3OCw3IEBA
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVBy
b3BlcnRpZXMsCiAgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRlLAogICAgICZwcm9taXNlUmVqZWN0
aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAg
ICAmZGVmYXVsdExhbmd1YWdlLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAmY29tcGls
ZVN0cmVhbWluZywKQEAgLTQ0Myw4ICs0NDQsOCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6Y29t
cGlsZVN0cmVhbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Sgog
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJUKHZtLnByb21p
c2VUaW1lci0+aGFzUGVuZGluZ1Byb21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VSVCh2bS5wcm9t
aXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9i
amVjdCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmso
cHJvbWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5j
eUluUGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpZiAoYXV0byBp
bnB1dFJlc3BvbnNlID0gSlNGZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJjZSkpIHsK
ICAgICAgICAgaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmplY3QsIGlu
cHV0UmVzcG9uc2UsIHByb21pc2UsIFtwcm9taXNlXSAoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVTaXplKSBtdXRh
YmxlIHsKQEAgLTQ2MSw5ICs0NjIsOSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlh
dGVTdHJlYW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1l
ci0+aGFzUGVuZGluZ1Byb21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VSVCh2bS5wcm9taXNlVGlt
ZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9iamVjdCkp
OwotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9t
aXNlKHByb21pc2UsIGltcG9ydGVkT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29y
a1RpbWVyLT5oYXNQZW5kaW5nV29yayhwcm9taXNlKSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVk
V29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBnbG9iYWxPYmpl
Y3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBl
bmRpbmdXb3JrKHByb21pc2UsIGltcG9ydGVkT2JqZWN0KSk7CiAKICAgICBpZiAoYXV0byBpbnB1
dFJlc3BvbnNlID0gSlNGZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJjZSkpIHsKICAg
ICAgICAgaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmplY3QsIGlucHV0
UmVzcG9uc2UsIHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRlZE9iamVjdF0gKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBi
eXRlU2l6ZSkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggNTM3NmU4MGQwMDA1Mzc3NjI1ODJh
YTI1YmU5MWQxMmE4ZjU5N2VjNC4uYzQ0ZjJmYjNhMGIwNWRhYWIxYThhOWUyZjg5YjUyZDg1MWVi
NDM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNjUsNiArNjUsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RU
YWJsZQogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0
aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJl
amVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3As
CiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5n
CiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IDA5NjVhODZjNDE4YmU2MWU2MmUxZmZkYWM2Y2ZlOGJhZjZiNGQ2ZWUuLmIxNGI4MTU0MmRiODg5
ZWM2ZDI1OWJjNWI3MGVmMmE1MDk5Yzk2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNTcsNiArNTcs
NyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibAogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRl
ckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
RXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxs
cHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJl
YW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggOTMxY2VlNzc3OWJmOTYxNDM4ZTgyMDE1MGM3YTdmOGFiNDY3
NTU0Ny4uNzE2YjFhNjliOGVlYzFkYTY0NzIwMWE0MzI2OTJiMzM4OTdlYjc4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTM3LDEyICszNywxMiBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVDbGllbnQuaCIK
ICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1l
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ry
b25nSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTIsNyArMjUyLDcgQEAg
dm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphZGRUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6
OkpTUnVuTG9vcFRpbWVyOjpUaW1lck4KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1
bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5B
Y3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIu
cHRyKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7
CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmlj
YXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxs
YmFjaykKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJl
bW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbQogCiAgICAg
cHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7CiAgICAgcHJv
Y2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vz
c1RpbWVyKG1fdm0tPnByb21pc2VUaW1lci5wdHIoKSk7CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0t
PmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGVjMDdhYzQ2MzUwZDJhMzQyOWVhMDk4
NzRlM2ZkZjJkZmRhOWU0NTEuLjY2ZWNkNTM2ZjgxM2QwMjljNDk3ZjFhZWE3ZjIxOWVkZmM3NWIz
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMzgsNyAr
MzgsNiBAQAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Byb21pc2VUaW1lci5oPgogCiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDZhODhjYWExNDRhZTI3ZmM3YzFmMmQ1ZjMzYmNkMTA4Y2MxMjBhOWUuLjIw
YTZmODU2MTg1OGFkZmJlMmUyYmMxOGViZjcxNTBiOTdhZDE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM3LDEx
ICszNywxMSBAQAogI2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50LmgiCiAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24u
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGQyOTJlMTEwMTU3MmUyYjIyZmM4YmJlMjNkNTFiNzlkMjQ5
YjA5MS4uNWZjOGQwNTRjNjVmNmQyN2QzNTM5NDk5YmQ4ZGI1M2ZiMTFhNWEzNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25SZWdpc3RyaWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzOiBBZGRlZC4KKyAgICAg
ICAgKG1ha2VXZWFrUmVmKToKKyAgICAgICAgKHR1cm5FdmVudExvb3ApOgorICAgICAgICAoYXN5
bmMgdGVzdCk6CisgICAgICAgICoganMvdW50aXRsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
anMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDctMTcgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBHYXJkZW4gc3ZnIGZhaWx1cmVzIGFuZCB1bmlmeSBzb21lIHN2ZyBleHBlY3RhdGlv
bnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYt
ZmluYWxpemF0aW9ucmVnaXN0cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2NjUzYmE5MDljMWIyZGM4ZGFl
MDFkMTAyZWE0OTNlYjY5ODliNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzCkBAIC0wLDAgKzEsNDkg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz10cnVlIikKKworYXN5bmNUZXN0
U3RhcnQoMSk7Cit2YXIgb2JqZWN0cyA9IFtdOwordmFyIHdlYWtSZWZzID0gW107Cit2YXIgZmlu
YWxpemVyQ2FsbGVkID0gZmFsc2U7Cit2YXIgZmluYWxpemF0aW9uUmVnaXN0cnkgPSBuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoKCkgPT4gZmluYWxpemVyQ2FsbGVkID0gdHJ1ZSk7CitmdW5jdGlv
biBtYWtlV2Vha1JlZigpIHsgcmV0dXJuIG5ldyBXZWFrUmVmKHsgZm9vOiAxIH0pOyB9Citub0lu
bGluZShtYWtlV2Vha1JlZik7CisKK2xldCBsb29wQ291bnQgPSAxMDAwOworZnVuY3Rpb24gdHVy
bkV2ZW50TG9vcCgpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkg
eworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGdjKCk7CisgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgIH0sIDApOworICAgIH0pOworfQorCit2YXIgaTsKK2Fz
eW5jIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb29wQ291bnQ7
IGkrKykgeworICAgICAgICBsZXQgd2VhayA9IG1ha2VXZWFrUmVmKCk7CisgICAgICAgIHdlYWtS
ZWZzLnB1c2god2Vhayk7CisgICAgICAgIG9iamVjdHMucHVzaCh3ZWFrLmRlcmVmKCkpOworICAg
ICAgICBmaW5hbGl6YXRpb25SZWdpc3RyeS5yZWdpc3Rlcih3ZWFrLmRlcmVmKCkpOworICAgIH0K
KworICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsKKworICAgIHNob3VsZEJlRmFsc2UoYGZpbmFs
aXplckNhbGxlZGApOworICAgIGZvciAoaSA9IDA7IGkgPCBsb29wQ291bnQ7IGkrKykKKyAgICAg
ICAgc2hvdWxkQmUoYHdlYWtSZWZzW2ldLmRlcmVmKClgLCBgb2JqZWN0c1tpXWApOworCisgICAg
b2JqZWN0cy5sZW5ndGggPSAwOworICAgIG9iamVjdHMgPSBudWxsOworCisgICAgYXdhaXQgdHVy
bkV2ZW50TG9vcCgpOworICAgIC8vIFdlIG5lZWQgdG8gdHVybiB0aGUgZXZlbnQgbG9vcCBhZ2Fp
biBzaW5jZSBGUiBtYXkgbm90IGhhdmUgY2FsbGVkIHRoZSBjYWxsYmFjayBpbiB0aGUgbGFzdCB0
dXJuLgorICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsKKworICAgIHNob3VsZEJlVHJ1ZShgZmlu
YWxpemVyQ2FsbGVkYCk7CisgICAgc2hvdWxkQmVUcnVlKGB3ZWFrUmVmcy5zb21lKCh3ZWFrUmVm
KSA9PiB3ZWFrUmVmLmRlcmVmKCkgPT09IG51bGwpYCk7CisKKyAgICBhc3luY1Rlc3RQYXNzZWQo
KTsKK30KKwordGVzdCgpLmNhdGNoKGUgPT4gZGVidWcoZSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvdW50aXRsZWQuaHRtbCBiL0xheW91dFRlc3RzL2pzL3VudGl0bGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2MwZTFjYjcwNWE5ZDc3OTA4MDRjNjk4NTI3Yzg0MzIxM2Q0YWQ2ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3VudGl0bGVkLmh0bWwKQEAgLTAsMCArMSwxMCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFr
cmVmLWZpbmFsaXphdGlvbi1yZWdpc3RyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzY2E2NWMzOGQyNDgyZTdmMjlkYTdiMTViNmVhYjI2
M2YyYTE5NGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwMDcgQEAKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBmaW5hbGl6ZXJD
YWxsZWQgaXMgZmFsc2UKK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIGZpbmFsaXplckNhbGxlZCBpcyB0cnVlCitQQVNTIHdlYWtSZWZzLnNvbWUoKHdlYWtS
ZWYpID0+IHdlYWtSZWYuZGVyZWYoKSA9PT0gbnVsbCkgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFk
N2NmNDdkNGEzNDE2OThiZDBkNTVlZDZhODg5MGJmZTQxMjc0OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBd
IC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCAxOWM4NWI2MmNiYzFjMDE2MGNjNzk3MWY3MjM3NmMzOTVjNzRmNGQ1Li45ZGVmYWM0ZmM3
NmIzNGFmYTdhNDM2YjQwYzUwNDFkMzViNjFhMWVmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAyMC0wNy0x
NyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQu
anM6IEFkZGVkLgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgKE1q
c1VuaXRBc3NlcnRpb25FcnJvci5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoY2F0Y2gp
OgorICAgICAgICAoY2xhc3NPZik6CisgICAgICAgIChWYWx1ZU9mKToKKyAgICAgICAgKHByZXR0
eVByaW50ZWQpOgorICAgICAgICAocHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCk6CisgICAgICAg
IChmYWlsV2l0aE1lc3NhZ2UpOgorICAgICAgICAoZm9ybWF0RmFpbHVyZVRleHQpOgorICAgICAg
ICAoZmFpbCk6CisgICAgICAgIChkZWVwT2JqZWN0RXF1YWxzKToKKyAgICAgICAgKGRlZXBFcXVh
bHMpOgorICAgICAgICAoYXNzZXJ0U2FtZSk6CisgICAgICAgIChhc3NlcnROb3RTYW1lKToKKyAg
ICAgICAgKGFzc2VydEVxdWFscyk6CisgICAgICAgIChhc3NlcnROb3RFcXVhbHMpOgorICAgICAg
ICAoYXNzZXJ0RXF1YWxzRGVsdGEpOgorICAgICAgICAoYXNzZXJ0QXJyYXlFcXVhbHMpOgorICAg
ICAgICAoYXNzZXJ0UHJvcGVydGllc0VxdWFsKToKKyAgICAgICAgKGFzc2VydFRvU3RyaW5nRXF1
YWxzKToKKyAgICAgICAgKGFzc2VydFRydWUpOgorICAgICAgICAoYXNzZXJ0RmFsc2UpOgorICAg
ICAgICAoYXNzZXJ0TnVsbCk6CisgICAgICAgIChhc3NlcnROb3ROdWxsKToKKyAgICAgICAgKGV4
ZWN1dGVDb2RlKToKKyAgICAgICAgKGNoZWNrRXhjZXB0aW9uKToKKyAgICAgICAgKGFzc2VydFRo
cm93cyk6CisgICAgICAgIChhc3NlcnRUaHJvd3NFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0VGhy
b3dzQXN5bmMpOgorICAgICAgICAoYXNzZXJ0SW5zdGFuY2VvZik6CisgICAgICAgIChhc3NlcnRE
b2VzTm90VGhyb3cpOgorICAgICAgICAoYXNzZXJ0VW5yZWFjaGFibGUpOgorICAgICAgICAoYXNz
ZXJ0Q29udGFpbnMpOgorICAgICAgICAoYXNzZXJ0TWF0Y2hlcyk6CisgICAgICAgIChjb25jYXRl
bmF0ZUVycm9ycyk6CisgICAgICAgIChhc3NlcnRQcm9taXNlUmVzdWx0KToKKyAgICAgICAgKE9w
dGltaXphdGlvblN0YXR1cyk6CisgICAgICAgIChhc3NlcnRVbm9wdGltaXplZCk6CisgICAgICAg
IChhc3NlcnRPcHRpbWl6ZWQpOgorICAgICAgICAoaXNOZXZlck9wdGltaXplTGl0ZU1vZGUpOgor
ICAgICAgICAoaXNOZXZlck9wdGltaXplKToKKyAgICAgICAgKGlzQWx3YXlzT3B0aW1pemUpOgor
ICAgICAgICAoaXNJbnRlcnByZXRlZCk6CisgICAgICAgIChpc09wdGltaXplZCk6CisgICAgICAg
IChpc1R1cmJvRmFubmVkKToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJl
U3RhY2tUcmFjZSk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQt
cmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICog
c3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgor
ICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbi1yZWdpc3RyeS1iYXNpY3MuanM6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnN0cnVjdEZp
bmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxlKToKKyAgICAgICAgKFRlc3RDb25zdHJ1Y3RG
aW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXNDbGVhbnVwKToKKyAgICAg
ICAgKFRlc3RSZWdpc3RlclRhcmdldEFuZEhvbGRpbmdzU2FtZVZhbHVlKToKKyAgICAgICAgKFRl
c3RSZWdpc3RlcldpdGhvdXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0VW5y
ZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSk6CisgICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhO
b25GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0V2Vha1JlZkNvbnN0cnVjdG9y
V2l0aE5vbk9iamVjdCk6CisgICAgICAgIChUZXN0V2Vha1JlZldpdGhQcm94eSk6CisgICAgICAg
ICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzOiBBZGRlZC4K
KyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKHNldFRpbWVvdXQpOgorICAgICAgICAq
IHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qczog
QWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5j
KToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZv
ci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVw
MCk6CisgICAgICAgIChsZXQuY2xlYW51cDEpOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6
CisgICAgICAgICogc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3Ry
aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1l
b3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVw
LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5yZWVudHJhbnRfZ2MpOgorICAgICAgICAoc2V0VGlt
ZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1k
aXJ0eS1lbnF1ZXVlLmpzOiBBZGRlZC4KKyAgICAgICAgKGkucmVnaXN0cmllcy5wdXNoLm5ldy5G
aW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChyZWdpc3RyaWVzLmZvckVhY2gpOgorICAg
ICAgICAqIHN0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanM6IEFkZGVkLgorICAgICAgICAo
bGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3Ry
ZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qczogQWRkZWQuCisgICAgICAgIChsZXQu
Y2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3Mv
djgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xl
YW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3Mvdjgt
dW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXAp
OgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVn
aXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToK
KyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lz
dGVyLWluc2lkZS1jbGVhbnVwMy5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6Cisg
ICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rl
ci1tYW55LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50
aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5q
czogQWRkZWQuCisgICAgICAgIChGUi5uZXcuRmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAg
ICAodHJ5QWdhaW4pOgorCiAyMDIwLTA3LTE3ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4K
IAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVsZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgo
MCwgLTApLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQu
anMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
Nzc0NjFmNzRjOTAyMjMyMWZjNjBlNjg2Zjc5NWQ1MGUzOTI5ODE2Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMKQEAgLTAsMCArMSw4MDkg
QEAKKy8vIENvcHlyaWdodCAyMDA4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAg
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAg
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gTWpzVW5pdEFzc2VydGlv
bkVycm9yKG1lc3NhZ2UpIHsKKyAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKyAgLy8gVGVtcG9y
YXJpbHkgaW5zdGFsbCBhIGN1c3RvbSBzdGFjayB0cmFjZSBmb3JtYXR0ZXIgYW5kIHJlc3RvcmUg
dGhlCisgIC8vIHByZXZpb3VzIHZhbHVlLgorICBsZXQgcHJldlByZXBhcmVTdGFja1RyYWNlID0g
RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CisgIHRyeSB7CisgICAgRXJyb3IucHJlcGFyZVN0YWNr
VHJhY2UgPSBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CisgICAgLy8g
VGhpcyBhbGxvd3MgZmV0Y2hpbmcgdGhlIHN0YWNrIHRyYWNlIHVzaW5nIFRyeUNhdGNoOjpTdGFj
a1RyYWNlLgorICAgIHRoaXMuc3RhY2sgPSBuZXcgRXJyb3IoIk1qc1VuaXRBc3NlcnRpb25FcnJv
ciIpLnN0YWNrOworICB9IGZpbmFsbHkgeworICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0g
cHJldlByZXBhcmVTdGFja1RyYWNlOworICB9Cit9CisKKy8qCisgKiBUaGlzIGZpbGUgaXMgaW5j
bHVkZWQgaW4gYWxsIG1pbmkganN1bml0IHRlc3QgY2FzZXMuICBUaGUgdGVzdAorICogZnJhbWV3
b3JrIGV4cGVjdHMgbGluZXMgdGhhdCBzaWduYWwgZmFpbGVkIHRlc3RzIHRvIHN0YXJ0IHdpdGgK
KyAqIHRoZSBmLXdvcmQgYW5kIGlnbm9yZSBhbGwgb3RoZXIgbGluZXMuCisgKi8KKworTWpzVW5p
dEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0
dXJuIHRoaXMubWVzc2FnZSArICJcblxuU3RhY2s6ICIgKyB0aGlzLnN0YWNrOworfTsKKworCisv
LyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIHRoZSBzYW1lIG9iamVjdHMsIG9yIHRoZSBzYW1l
IHByaW1pdGl2ZQorLy8gdmFsdWVzLgorLy8gRm9yIGtub3duIHByaW1pdGl2ZSB2YWx1ZXMsIHBs
ZWFzZSB1c2UgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFNhbWU7CisKKy8vIEludmVyc2Ugb2Yg
YXNzZXJ0U2FtZS4KK3ZhciBhc3NlcnROb3RTYW1lOworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQg
dmFsdWVzIGFyZSBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVlcyBvciBmdW5jdGlvbnMKKy8vIG9y
IHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5nIGludGVybmFsIHByb3BlcnRp
ZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0cywgdGhlIGVsZW1lbnRzIG9m
IGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1BcnJheSBvYmplY3RzKS4KK3Zh
ciBhc3NlcnRFcXVhbHM7CisKKy8vIERlZXAgZXF1YWxpdHkgcHJlZGljYXRlIHVzZWQgYnkgYXNz
ZXJ0RXF1YWxzLgordmFyIGRlZXBFcXVhbHM7CisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1
ZXMgYXJlIG5vdCBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVlcyBvciBmdW5jdGlvbnMKKy8vIG9y
IHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5nIGludGVybmFsIHByb3BlcnRp
ZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0cywgdGhlIGVsZW1lbnRzIG9m
IGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1BcnJheSBvYmplY3RzKS4KK3Zh
ciBhc3NlcnROb3RFcXVhbHM7CisKKy8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZXhwZWN0ZWQg
YW5kIGZvdW5kIHZhbHVlIGlzIHdpdGhpbiBjZXJ0YWluIHRvbGVyYW5jZS4KK3ZhciBhc3NlcnRF
cXVhbHNEZWx0YTsKKworLy8gVGhlIGZvdW5kIG9iamVjdCBpcyBhbiBBcnJheSB3aXRoIHRoZSBz
YW1lIGxlbmd0aCBhbmQgZWxlbWVudHMKKy8vIGFzIHRoZSBleHBlY3RlZCBvYmplY3QuIFRoZSBl
eHBlY3RlZCBvYmplY3QgZG9lc24ndCBuZWVkIHRvIGJlIGFuIEFycmF5LAorLy8gYXMgbG9uZyBh
cyBpdCdzICJhcnJheS1pc2giLgordmFyIGFzc2VydEFycmF5RXF1YWxzOworCisvLyBUaGUgZm91
bmQgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc2FtZSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgYXMgdGhl
CisvLyBleHBlY3RlZCBvYmplY3QuIFRoZSB0eXBlIG9mIG9iamVjdCBpc24ndCBjaGVja2VkLgor
dmFyIGFzc2VydFByb3BlcnRpZXNFcXVhbDsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHN0cmluZyBj
b252ZXJzaW9uIG9mIHRoZSBmb3VuZCB2YWx1ZSBpcyBlcXVhbCB0bworLy8gdGhlIGV4cGVjdGVk
IHN0cmluZy4gT25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgcGxlYXNlCisv
LyBjaGVjayB0aGUgcmVhbCBzdHJ1Y3R1cmUgb2YgdGhlIGZvdW5kIHZhbHVlLgordmFyIGFzc2Vy
dFRvU3RyaW5nRXF1YWxzOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgdHJ1
ZS4gVXNlIHdpdGggYm9vbGVhbiBleHByZXNzaW9ucworLy8gZm9yIHRlc3RzIHRoYXQgZG9lc24n
dCBoYXZlIHRoZWlyIG93biBhc3NlcnRYWFggZnVuY3Rpb24uCit2YXIgYXNzZXJ0VHJ1ZTsKKwor
Ly8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIGZhbHNlLgordmFyIGFzc2VydEZhbHNl
OworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgbnVsbC4gS2VwdCBmb3IgaGlz
dG9yaWNhbCBjb21wYXRpYmlsaXR5LAorLy8gcGxlYXNlIGp1c3QgdXNlIGFzc2VydEVxdWFscyhu
dWxsLCBleHBlY3RlZCkuCit2YXIgYXNzZXJ0TnVsbDsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZv
dW5kIHZhbHVlIGlzICpub3QqIG51bGwuCit2YXIgYXNzZXJ0Tm90TnVsbDsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlv
bi4KKy8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0
cnVjdG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3
aXRoICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIG1l
c3NhZ2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9iamVjdCB0aGF0IGlzCisvLyBjb21wYXJlZCB0
byB0aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnRUaHJvd3M7
CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGhyb3dzIGFuIGV4Y2VwdGlv
bi4KKy8vIFRoZSBleGNlcHRpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSBzZWNvbmQgYXJndW1l
bnQgdXNpbmcgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFRocm93c0VxdWFsczsKKworLy8gQXNz
ZXJ0IHRoYXQgdGhlIHBhc3NlZCBwcm9taXNlIGRvZXMgbm90IHJlc29sdmUsIGJ1dCBldmVudHVh
bGx5IHRocm93cyBhbgorLy8gZXhjZXB0aW9uLiBUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50
IGlzIGFuIGV4Y2VwdGlvbiBjb25zdHJ1Y3RvciB0aGF0IHRoZQorLy8gdGhyb3duIGV4Y2VwdGlv
biBpcyBjaGVja2VkIGFnYWluc3Qgd2l0aCAiaW5zdGFuY2VvZiIuCisvLyBUaGUgb3B0aW9uYWwg
dGhpcmQgYXJndW1lbnQgaXMgYSBtZXNzYWdlIHR5cGUgc3RyaW5nIG9yIFJlZ0V4cCBvYmplY3Qg
dGhhdCBpcworLy8gY29tcGFyZWQgdG8gdGhlIG1lc3NhZ2Ugb2YgdGhlIHRocm93biBleGNlcHRp
b24uCit2YXIgYXNzZXJ0VGhyb3dzQXN5bmM7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQg
ZnVuY3Rpb24gb3IgZXZhbCBjb2RlIGRvZXMgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KK3ZhciBh
c3NlcnREb2VzTm90VGhyb3c7CisKKy8vIEFzc2VydHMgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMg
YW4gaW5zdGFuY2Ugb2YgdGhlIGNvbnN0cnVjdG9yIHBhc3NlZAorLy8gYXMgdGhlIHNlY29uZCBh
cmd1bWVudC4KK3ZhciBhc3NlcnRJbnN0YW5jZW9mOworCisvLyBBc3NlcnQgdGhhdCB0aGlzIGNv
ZGUgaXMgbmV2ZXIgZXhlY3V0ZWQgKGkuZS4sIGFsd2F5cyBmYWlscyBpZiBleGVjdXRlZCkuCit2
YXIgYXNzZXJ0VW5yZWFjaGFibGU7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBmdW5jdGlvbiBjb2Rl
IGlzIChub3QpIG9wdGltaXplZC4gIElmICJubyBzeW5jIiBpcyBwYXNzZWQKKy8vIGFzIHNlY29u
ZCBhcmd1bWVudCwgd2UgZG8gbm90IHdhaXQgZm9yIHRoZSBjb25jdXJyZW50IG9wdGltaXphdGlv
biB0aHJlYWQgdG8KKy8vIGZpbmlzaCB3aGVuIHBvbGxpbmcgZm9yIG9wdGltaXphdGlvbiBzdGF0
dXMuCisvLyBPbmx5IHdvcmtzIHdpdGggLS1hbGxvdy1uYXRpdmVzLXN5bnRheC4KK3ZhciBhc3Nl
cnRPcHRpbWl6ZWQ7Cit2YXIgYXNzZXJ0VW5vcHRpbWl6ZWQ7CisKKy8vIEFzc2VydCB0aGF0IGEg
c3RyaW5nIGNvbnRhaW5zIGFub3RoZXIgZXhwZWN0ZWQgc3Vic3RyaW5nLgordmFyIGFzc2VydENv
bnRhaW5zOworCisvLyBBc3NlcnQgdGhhdCBhIHN0cmluZyBtYXRjaGVzIGEgZ2l2ZW4gcmVnZXgu
Cit2YXIgYXNzZXJ0TWF0Y2hlczsKKworLy8gQXNzZXJ0IHRoYXQgYSBwcm9taXNlIHJlc29sdmVz
IG9yIHJlamVjdHMuCisvLyBQYXJhbWV0ZXJzOgorLy8ge3Byb21pc2V9IC0gdGhlIHByb21pc2UK
Ky8vIHtzdWNjZXNzfSAtIG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0
aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAgcmVzb2x2aW5nIHByb21pc2UuCisv
LyAge2ZhaWx9IC0gICBvcHRpb25hbCAtIGEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdpdGgg
dGhlIHJlc3VsdCBvZiB0aGUKKy8vICAgICAgICAgICAgIHJlamVjdGluZyBwcm9taXNlLiBJZiB0
aGUgcHJvbWlzZSBpcyByZWplY3RlZCBidXQgbm8ge2ZhaWx9CisvLyAgICAgICAgICAgICBjYWxs
YmFjayBpcyBzZXQsIHRoZSBlcnJvciBpcyBwcm9wYWdhdGVkIG91dCBvZiB0aGUgcHJvbWlzZQor
Ly8gICAgICAgICAgICAgY2hhaW4uCit2YXIgYXNzZXJ0UHJvbWlzZVJlc3VsdDsKKwordmFyIHBy
b21pc2VUZXN0Q2hhaW47Cit2YXIgcHJvbWlzZVRlc3RDb3VudCA9IDA7CisKKy8vIFRoZXNlIGJp
dHMgbXVzdCBiZSBpbiBzeW5jIHdpdGggYml0cyBkZWZpbmVkIGluIFJ1bnRpbWVfR2V0T3B0aW1p
emF0aW9uU3RhdHVzCit2YXIgVjhPcHRpbWl6YXRpb25TdGF0dXMgPSB7CisgIGtJc0Z1bmN0aW9u
OiAxIDw8IDAsCisgIGtOZXZlck9wdGltaXplOiAxIDw8IDEsCisgIGtBbHdheXNPcHRpbWl6ZTog
MSA8PCAyLAorICBrTWF5YmVEZW9wdGVkOiAxIDw8IDMsCisgIGtPcHRpbWl6ZWQ6IDEgPDwgNCwK
KyAga1R1cmJvRmFubmVkOiAxIDw8IDUsCisgIGtJbnRlcnByZXRlZDogMSA8PCA2LAorICBrTWFy
a2VkRm9yT3B0aW1pemF0aW9uOiAxIDw8IDcsCisgIGtNYXJrZWRGb3JDb25jdXJyZW50T3B0aW1p
emF0aW9uOiAxIDw8IDgsCisgIGtPcHRpbWl6aW5nQ29uY3VycmVudGx5OiAxIDw8IDksCisgIGtJ
c0V4ZWN1dGluZzogMSA8PCAxMCwKKyAga1RvcG1vc3RGcmFtZUlzVHVyYm9GYW5uZWQ6IDEgPDwg
MTEsCisgIGtMaXRlTW9kZTogMSA8PCAxMiwKKyAga01hcmtlZEZvckRlb3B0aW1pemF0aW9uOiAx
IDw8IDEzLAorfTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0tbGl0ZS1tb2RlIGlzIG9uIGFuZCB3
ZSBjYW4ndCBldmVyIHR1cm4gb24gb3B0aW1pemF0aW9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZUxp
dGVNb2RlOworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1uby1vcHQgbW9kZSBpcyBvbi4KK3ZhciBp
c05ldmVyT3B0aW1pemU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAtLWFsd2F5cy1vcHQgbW9kZSBp
cyBvbi4KK3ZhciBpc0Fsd2F5c09wdGltaXplOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4g
ZnVuY3Rpb24gaW4gaW50ZXJwcmV0ZWQuCit2YXIgaXNJbnRlcnByZXRlZDsKKworLy8gUmV0dXJu
cyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlzIG9wdGltaXplZC4KK3ZhciBpc09wdGltaXplZDsK
KworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlzIGNvbXBpbGVkIGJ5IFR1cmJv
RmFuLgordmFyIGlzVHVyYm9GYW5uZWQ7CisKKy8vIE1vbmtleS1wYXRjaGFibGUgYWxsLXB1cnBv
c2UgZmFpbHVyZSBoYW5kbGVyLgordmFyIGZhaWxXaXRoTWVzc2FnZTsKKworLy8gUmV0dXJucyB0
aGUgZm9ybWF0dGVkIGZhaWx1cmUgdGV4dC4gIFVzZWQgYnkgdGVzdC1hc3luYy5qcy4KK3ZhciBm
b3JtYXRGYWlsdXJlVGV4dDsKKworLy8gUmV0dXJucyBhIHByZXR0eS1wcmludGVkIHN0cmluZyBy
ZXByZXNlbnRhdGlvbiBvZiB0aGUgcGFzc2VkIHZhbHVlLgordmFyIHByZXR0eVByaW50ZWQ7CisK
KyhmdW5jdGlvbiAoKSB7ICAvLyBTY29wZSBmb3IgdXRpbGl0eSBmdW5jdGlvbnMuCisKKyAgdmFy
IE9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKyAg
dmFyIE51bWJlclByb3RvdHlwZVZhbHVlT2YgPSBOdW1iZXIucHJvdG90eXBlLnZhbHVlT2Y7Cisg
IHZhciBCb29sZWFuUHJvdG90eXBlVmFsdWVPZiA9IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2Y7
CisgIHZhciBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mID0gU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9m
OworICB2YXIgRGF0ZVByb3RvdHlwZVZhbHVlT2YgPSBEYXRlLnByb3RvdHlwZS52YWx1ZU9mOwor
ICB2YXIgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcgPSBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5n
OworICB2YXIgQXJyYXlQcm90b3R5cGVGb3JFYWNoID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2g7
CisgIHZhciBBcnJheVByb3RvdHlwZUpvaW4gPSBBcnJheS5wcm90b3R5cGUuam9pbjsKKyAgdmFy
IEFycmF5UHJvdG90eXBlTWFwID0gQXJyYXkucHJvdG90eXBlLm1hcDsKKyAgdmFyIEFycmF5UHJv
dG90eXBlUHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOworCisgIHZhciBCaWdJbnRQcm90b3R5
cGVWYWx1ZU9mOworICAvLyBUT0RPKG5laXMpOiBSZW1vdmUgdHJ5LWNhdGNoIG9uY2UgQmlnSW50
cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICB0cnkgeworICAgIEJpZ0ludFByb3RvdHlwZVZh
bHVlT2YgPSBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2Y7CisgIH0gY2F0Y2ggKGUpIHt9CisKKyAg
ZnVuY3Rpb24gY2xhc3NPZihvYmplY3QpIHsKKyAgICAvLyBBcmd1bWVudCBtdXN0IG5vdCBiZSBu
dWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgc3RyaW5nID0gT2JqZWN0UHJvdG90eXBlVG9TdHJp
bmcuY2FsbChvYmplY3QpOworICAgIC8vIFN0cmluZyBoYXMgZm9ybWF0IFtvYmplY3QgPENsYXNz
TmFtZT5dLgorICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDgsIHN0cmluZy5sZW5ndGggLSAx
KTsKKyAgfQorCisKKyAgZnVuY3Rpb24gVmFsdWVPZih2YWx1ZSkgeworICAgIHN3aXRjaCAoY2xh
c3NPZih2YWx1ZSkpIHsKKyAgICAgIGNhc2UgIk51bWJlciI6CisgICAgICAgIHJldHVybiBOdW1i
ZXJQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiQmlnSW50IjoKKyAg
ICAgICAgcmV0dXJuIEJpZ0ludFByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBj
YXNlICJTdHJpbmciOgorICAgICAgICByZXR1cm4gU3RyaW5nUHJvdG90eXBlVmFsdWVPZi5jYWxs
KHZhbHVlKTsKKyAgICAgIGNhc2UgIkJvb2xlYW4iOgorICAgICAgICByZXR1cm4gQm9vbGVhblBy
b3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBjYXNlICJEYXRlIjoKKyAgICAgICAg
cmV0dXJuIERhdGVQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgfQorCisKKyAgcHJldHR5UHJpbnRlZCA9
IGZ1bmN0aW9uIHByZXR0eVByaW50ZWQodmFsdWUpIHsKKyAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1
ZSkgeworICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5
KHZhbHVlKTsKKyAgICAgIGNhc2UgImJpZ2ludCI6CisgICAgICAgIHJldHVybiBTdHJpbmcodmFs
dWUpICsgIm4iOworICAgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAgaWYgKHZhbHVlID09PSAw
ICYmICgxIC8gdmFsdWUpIDwgMCkgcmV0dXJuICItMCI7CisgICAgICAgIC8vIEZBTExUSFJPVUdI
LgorICAgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAg
Y2FzZSAiZnVuY3Rpb24iOgorICAgICAgY2FzZSAic3ltYm9sIjoKKyAgICAgICAgcmV0dXJuIFN0
cmluZyh2YWx1ZSk7CisgICAgICBjYXNlICJvYmplY3QiOgorICAgICAgICBpZiAodmFsdWUgPT09
IG51bGwpIHJldHVybiAibnVsbCI7CisgICAgICAgIHZhciBvYmplY3RDbGFzcyA9IGNsYXNzT2Yo
dmFsdWUpOworICAgICAgICBzd2l0Y2ggKG9iamVjdENsYXNzKSB7CisgICAgICAgICAgY2FzZSAi
TnVtYmVyIjoKKyAgICAgICAgICBjYXNlICJCaWdJbnQiOgorICAgICAgICAgIGNhc2UgIlN0cmlu
ZyI6CisgICAgICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAgICAgICAgY2FzZSAiRGF0ZSI6Cisg
ICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKCIgKyBwcmV0dHlQcmludGVkKFZhbHVl
T2YodmFsdWUpKSArICIpIjsKKyAgICAgICAgICBjYXNlICJSZWdFeHAiOgorICAgICAgICAgICAg
cmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwodmFsdWUpOworICAgICAgICAgIGNh
c2UgIkFycmF5IjoKKyAgICAgICAgICAgIHZhciBtYXBwZWQgPSBBcnJheVByb3RvdHlwZU1hcC5j
YWxsKAorICAgICAgICAgICAgICAgIHZhbHVlLCBwcmV0dHlQcmludGVkQXJyYXlFbGVtZW50KTsK
KyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVByb3RvdHlwZUpvaW4uY2FsbChtYXBwZWQs
ICIsIik7CisgICAgICAgICAgICByZXR1cm4gIlsiICsgam9pbmVkICsgIl0iOworICAgICAgICAg
IGNhc2UgIlVpbnQ4QXJyYXkiOgorICAgICAgICAgIGNhc2UgIkludDhBcnJheSI6CisgICAgICAg
ICAgY2FzZSAiSW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAiVWludDE2QXJyYXkiOgorICAg
ICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQzMkFycmF5IjoK
KyAgICAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkZsb2F0NjRB
cnJheSI6CisgICAgICAgICAgICB2YXIgam9pbmVkID0gQXJyYXlQcm90b3R5cGVKb2luLmNhbGwo
dmFsdWUsICIsIik7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKFsiICsgam9p
bmVkICsgIl0pIjsKKyAgICAgICAgICBjYXNlICJPYmplY3QiOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIo
IiArIFN0cmluZyh2YWx1ZSkgKyAiKSI7CisgICAgICAgIH0KKyAgICAgICAgLy8gY2xhc3NPZigp
IHJldHVybmVkICJPYmplY3QiLgorICAgICAgICB2YXIgbmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9y
Lm5hbWU7CisgICAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZSArICIoKSI7CisgICAgICAgIHJl
dHVybiAiT2JqZWN0KCkiOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICItLSB1bmtu
b3duIHZhbHVlIC0tIjsKKyAgICB9CisgIH0KKworCisgIGZ1bmN0aW9uIHByZXR0eVByaW50ZWRB
cnJheUVsZW1lbnQodmFsdWUsIGluZGV4LCBhcnJheSkgeworICAgIGlmICh2YWx1ZSA9PT0gdW5k
ZWZpbmVkICYmICEoaW5kZXggaW4gYXJyYXkpKSByZXR1cm4gIiI7CisgICAgcmV0dXJuIHByZXR0
eVByaW50ZWQodmFsdWUpOworICB9CisKKworICBmYWlsV2l0aE1lc3NhZ2UgPSBmdW5jdGlvbiBm
YWlsV2l0aE1lc3NhZ2UobWVzc2FnZSkgeworICAgIHRocm93IG5ldyBNanNVbml0QXNzZXJ0aW9u
RXJyb3IobWVzc2FnZSk7CisgIH0KKworICBmb3JtYXRGYWlsdXJlVGV4dCA9IGZ1bmN0aW9uKGV4
cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgdmFyIG1lc3NhZ2UgPSAiRmFpbCIg
KyAidXJlIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAgIC8vIEZpeCB0aGlzIHdoZW4gd2Ug
ZGl0Y2ggdGhlIG9sZCB0ZXN0IHJ1bm5lci4KKyAgICAgIG1lc3NhZ2UgKz0gIiAoIiArIG5hbWVf
b3B0ICsgIikiOworICAgIH0KKworICAgIHZhciBmb3VuZFRleHQgPSBwcmV0dHlQcmludGVkKGZv
dW5kKTsKKyAgICBpZiAoZXhwZWN0ZWRUZXh0Lmxlbmd0aCA8PSA0MCAmJiBmb3VuZFRleHQubGVu
Z3RoIDw9IDQwKSB7CisgICAgICBtZXNzYWdlICs9ICI6IGV4cGVjdGVkIDwiICsgZXhwZWN0ZWRU
ZXh0ICsgIj4gZm91bmQgPCIgKyBmb3VuZFRleHQgKyAiPiI7CisgICAgfSBlbHNlIHsKKyAgICAg
IG1lc3NhZ2UgKz0gIjpcbmV4cGVjdGVkOlxuIiArIGV4cGVjdGVkVGV4dCArICJcbmZvdW5kOlxu
IiArIGZvdW5kVGV4dDsKKyAgICB9CisgICAgcmV0dXJuIG1lc3NhZ2U7CisgIH0KKworICBmdW5j
dGlvbiBmYWlsKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgcmV0dXJuIGZh
aWxXaXRoTWVzc2FnZShmb3JtYXRGYWlsdXJlVGV4dChleHBlY3RlZFRleHQsIGZvdW5kLCBuYW1l
X29wdCkpOworICB9CisKKworICBmdW5jdGlvbiBkZWVwT2JqZWN0RXF1YWxzKGEsIGIpIHsKKyAg
ICB2YXIgYVByb3BzID0gT2JqZWN0LmtleXMoYSk7CisgICAgYVByb3BzLnNvcnQoKTsKKyAgICB2
YXIgYlByb3BzID0gT2JqZWN0LmtleXMoYik7CisgICAgYlByb3BzLnNvcnQoKTsKKyAgICBpZiAo
IWRlZXBFcXVhbHMoYVByb3BzLCBiUHJvcHMpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0aDsgaSsrKSB7CisgICAgICBp
ZiAoIWRlZXBFcXVhbHMoYVthUHJvcHNbaV1dLCBiW2FQcm9wc1tpXV0pKSB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworCisg
IGRlZXBFcXVhbHMgPSBmdW5jdGlvbiBkZWVwRXF1YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0g
YikgeworICAgICAgLy8gQ2hlY2sgZm9yIC0wLgorICAgICAgaWYgKGEgPT09IDApIHJldHVybiAo
MSAvIGEpID09PSAoMSAvIGIpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICh0
eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHJldHVybiBmYWxzZTsKKyAgICBpZiAodHlwZW9mIGEgPT09
ICJudW1iZXIiKSByZXR1cm4gaXNOYU4oYSkgJiYgaXNOYU4oYik7CisgICAgaWYgKHR5cGVvZiBh
ICE9PSAib2JqZWN0IiAmJiB0eXBlb2YgYSAhPT0gImZ1bmN0aW9uIikgcmV0dXJuIGZhbHNlOwor
ICAgIC8vIE5laXRoZXIgYSBub3IgYiBpcyBwcmltaXRpdmUuCisgICAgdmFyIG9iamVjdENsYXNz
ID0gY2xhc3NPZihhKTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgIT09IGNsYXNzT2YoYikpIHJldHVy
biBmYWxzZTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09ICJSZWdFeHAiKSB7CisgICAgICAvLyBG
b3IgUmVnRXhwLCBqdXN0IGNvbXBhcmUgcGF0dGVybiBhbmQgZmxhZ3MgdXNpbmcgaXRzIHRvU3Ry
aW5nLgorICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwoYSkgPT09Cisg
ICAgICAgICAgICAgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbChiKTsKKyAgICB9CisgICAg
Ly8gRnVuY3Rpb25zIGFyZSBvbmx5IGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLgorICAgIGlmIChv
YmplY3RDbGFzcyA9PT0gIkZ1bmN0aW9uIikgcmV0dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RD
bGFzcyA9PT0gIkFycmF5IikgeworICAgICAgdmFyIGVsZW1lbnRDb3VudCA9IDA7CisgICAgICBp
ZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
IH0KKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAoIWRlZXBFcXVhbHMoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09ICJTdHJpbmciIHx8
IG9iamVjdENsYXNzID09PSAiTnVtYmVyIiB8fAorICAgICAgb2JqZWN0Q2xhc3MgPT09ICJCaWdJ
bnQiIHx8IG9iamVjdENsYXNzID09PSAiQm9vbGVhbiIgfHwKKyAgICAgIG9iamVjdENsYXNzID09
PSAiRGF0ZSIpIHsKKyAgICAgIGlmIChWYWx1ZU9mKGEpICE9PSBWYWx1ZU9mKGIpKSByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiBkZWVwT2JqZWN0RXF1YWxzKGEsIGIpOworICB9CisK
KyAgYXNzZXJ0U2FtZSA9IGZ1bmN0aW9uIGFzc2VydFNhbWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1l
X29wdCkgeworICAgIGlmIChPYmplY3QuaXMoZXhwZWN0ZWQsIGZvdW5kKSkgcmV0dXJuOworICAg
IGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgIH07CisK
KyAgYXNzZXJ0Tm90U2FtZSA9IGZ1bmN0aW9uIGFzc2VydE5vdFNhbWUoZXhwZWN0ZWQsIGZvdW5k
LCBuYW1lX29wdCkgeworICAgIGlmICghT2JqZWN0LmlzKGV4cGVjdGVkLCBmb3VuZCkpIHJldHVy
bjsKKyAgICBmYWlsKCJub3Qgc2FtZSBhcyAiICsgcHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZv
dW5kLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRF
cXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmICghZGVlcEVxdWFscyhm
b3VuZCwgZXhwZWN0ZWQpKSB7CisgICAgICBmYWlsKHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBm
b3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBhc3NlcnROb3RFcXVhbHMgPSBmdW5j
dGlvbiBhc3NlcnROb3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlm
IChkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAgIGZhaWwoIm5vdCBlcXVhbHMg
dG8gIiArIHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0K
KyAgfTsKKworCisgIGFzc2VydEVxdWFsc0RlbHRhID0KKyAgICAgIGZ1bmN0aW9uIGFzc2VydEVx
dWFsc0RlbHRhKGV4cGVjdGVkLCBmb3VuZCwgZGVsdGEsIG5hbWVfb3B0KSB7CisgICAgaWYgKE1h
dGguYWJzKGV4cGVjdGVkIC0gZm91bmQpID4gZGVsdGEpIHsKKyAgICAgIGZhaWwocHJldHR5UHJp
bnRlZChleHBlY3RlZCkgKyAiICstICIgKyBwcmV0dHlQcmludGVkKGRlbHRhKSwgZm91bmQsIG5h
bWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRBcnJheUVxdWFscyA9IGZ1bmN0aW9u
IGFzc2VydEFycmF5RXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIg
c3RhcnQgPSAiIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAgIHN0YXJ0ID0gbmFtZV9vcHQg
KyAiIC0gIjsKKyAgICB9CisgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmxlbmd0aCwgZm91bmQu
bGVuZ3RoLCBzdGFydCArICJhcnJheSBsZW5ndGgiKTsKKyAgICBpZiAoZXhwZWN0ZWQubGVuZ3Ro
ID09PSBmb3VuZC5sZW5ndGgpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkW2ldLCBmb3VuZFtp
XSwKKyAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgImFycmF5IGVsZW1lbnQgYXQgaW5kZXgg
IiArIGkpOworICAgICAgfQorICAgIH0KKyAgfTsKKworCisgIGFzc2VydFByb3BlcnRpZXNFcXVh
bCA9IGZ1bmN0aW9uIGFzc2VydFByb3BlcnRpZXNFcXVhbChleHBlY3RlZCwgZm91bmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
X29wdCkgeworICAgIC8vIENoZWNrIHByb3BlcnRpZXMgb25seS4KKyAgICBpZiAoIWRlZXBPYmpl
Y3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kKSkgeworICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQs
IG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRUb1N0cmluZ0VxdWFscyA9IGZ1
bmN0aW9uIGFzc2VydFRvU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29wdCkgewor
ICAgIGlmIChleHBlY3RlZCAhPT0gU3RyaW5nKGZvdW5kKSkgeworICAgICAgZmFpbChleHBlY3Rl
ZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRUcnVlID0gZnVu
Y3Rpb24gYXNzZXJ0VHJ1ZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBhc3NlcnRFcXVhbHModHJ1
ZSwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgfTsKKworCisgIGFzc2VydEZhbHNlID0gZnVuY3Rpb24g
YXNzZXJ0RmFsc2UodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgYXNzZXJ0RXF1YWxzKGZhbHNlLCB2
YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0TnVsbCA9IGZ1bmN0aW9uIGFzc2Vy
dE51bGwodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7CisgICAg
ICBmYWlsKCJudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3Nl
cnROb3ROdWxsID0gZnVuY3Rpb24gYXNzZXJ0Tm90TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAg
ICBpZiAodmFsdWUgPT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm5vdCBudWxsIiwgdmFsdWUsIG5h
bWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gZXhlY3V0ZUNvZGUoY29kZSkgewor
ICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ2Z1bmN0aW9uJykgIHJldHVybiBjb2RlKCk7CisgICAg
aWYgKHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJykgcmV0dXJuIGV2YWwoY29kZSk7CisgICAgZmFp
bFdpdGhNZXNzYWdlKAorICAgICAgICAnR2l2ZW4gY29kZSBpcyBuZWl0aGVyIGZ1bmN0aW9uIG5v
ciBzdHJpbmcsIGJ1dCAnICsgKHR5cGVvZiBjb2RlKSArCisgICAgICAgICc6IDwnICsgcHJldHR5
UHJpbnRlZChjb2RlKSArICc+Jyk7CisgIH0KKworICBmdW5jdGlvbiBjaGVja0V4Y2VwdGlvbihl
LCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQp
IHsKKyAgICAgIGFzc2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBlb2YgdHlwZV9vcHQpOworICAg
ICAgYXNzZXJ0SW5zdGFuY2VvZihlLCB0eXBlX29wdCk7CisgICAgfQorICAgIC8vIGlnbm9yZSBj
YXVzZV9vcHQgYmVjYXVzZSBvdXIgZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCB0aGUgc2FtZSBhcyBW
OCdzCisgICAgcmV0dXJuOworICAgIGlmIChSZWdFeHAgIT09IHVuZGVmaW5lZCAmJiBjYXVzZV9v
cHQgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgIGFzc2VydE1hdGNoZXMoY2F1c2Vfb3B0LCBl
Lm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfSBlbHNlIGlmIChjYXVzZV9vcHQgIT09
IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKGNhdXNlX29wdCwgZS5tZXNzYWdlLCAn
RXJyb3IgbWVzc2FnZScpOworICAgIH0KKyAgfQorCisgIGFzc2VydFRocm93cyA9IGZ1bmN0aW9u
IGFzc2VydFRocm93cyhjb2RlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKGFyZ3Vt
ZW50cy5sZW5ndGggPiAxICYmIHR5cGVfb3B0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGZhaWxX
aXRoTWVzc2FnZSgnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCB1bmtub3duIHR5cGVfb3B0
IGdpdmVuJyk7CisgICAgfQorICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVv
ZiB0eXBlX29wdCAhPT0gJ2Z1bmN0aW9uJykgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAg
ICAgICAgICdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIG1heWJlIHlvdSB3YW50IGFzc2Vy
dFRocm93c0VxdWFscycpOworICAgIH0KKyAgICB0cnkgeworICAgICAgZXhlY3V0ZUNvZGUoY29k
ZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgY2hlY2tFeGNlcHRpb24oZSwgdHlwZV9vcHQs
IGNhdXNlX29wdCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGxldCBtc2cgPSAnRGlkIG5v
dCB0aHJvdyBleGNlcHRpb24nOworICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5
cGVfb3B0Lm5hbWUgIT09IHVuZGVmaW5lZCkKKyAgICAgIG1zZyArPSAnLCBleHBlY3RlZCAnICsg
dHlwZV9vcHQubmFtZTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UobXNnKTsKKyAgfTsKKworICBhc3Nl
cnRUaHJvd3NFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRUaHJvd3NFcXVhbHMoZnVuLCB2YWwpIHsK
KyAgICB0cnkgeworICAgICAgZnVuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgYXNzZXJ0
U2FtZSh2YWwsIGUpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmYWlsV2l0aE1lc3NhZ2Uo
J0RpZCBub3QgdGhyb3cgZXhjZXB0aW9uLCBleHBlY3RlZCAnICsgcHJldHR5UHJpbnRlZCh2YWwp
KTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NBc3luYyA9IGZ1bmN0aW9uIGFzc2VydFRocm93c0Fz
eW5jKHByb21pc2UsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZmFpbFdpdGhNZXNz
YWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIHVua25vd24gdHlwZV9vcHQgZ2l2ZW4n
KTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVf
b3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAg
J2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dz
RXF1YWxzJyk7CisgICAgfQorICAgIGxldCBtc2cgPSAnUHJvbWlzZSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFt
ZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5u
YW1lOworICAgIHJldHVybiBhc3NlcnRQcm9taXNlUmVzdWx0KAorICAgICAgICBwcm9taXNlLAor
ICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0aGUgZXJyb3IgYWdhaW4gdG8gZ2V0
IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAvLyBjaGFpbi4KKyAgICAgICAgcmVzID0+IHNl
dFRpbWVvdXQoXyA9PiBmYWlsKCc8dGhyb3c+JywgcmVzLCBtc2cpLCAwKSwKKyAgICAgICAgZSA9
PiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSk7CisgIH07CisKKyAgYXNz
ZXJ0SW5zdGFuY2VvZiA9IGZ1bmN0aW9uIGFzc2VydEluc3RhbmNlb2Yob2JqLCB0eXBlKSB7Cisg
ICAgaWYgKCEob2JqIGluc3RhbmNlb2YgdHlwZSkpIHsKKyAgICAgIHZhciBhY3R1YWxUeXBlTmFt
ZSA9IG51bGw7CisgICAgICB2YXIgYWN0dWFsQ29uc3RydWN0b3IgPSBvYmogJiYgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKG9iaikuY29uc3RydWN0b3I7CisgICAgICBpZiAodHlwZW9mIGFjdHVhbENv
bnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgIGFjdHVhbFR5cGVOYW1lID0gYWN0
dWFsQ29uc3RydWN0b3IubmFtZSB8fCBTdHJpbmcoYWN0dWFsQ29uc3RydWN0b3IpOworICAgICAg
fQorICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdPYmplY3QgPCcgKyBwcmV0dHlQ
cmludGVkKG9iaikgKyAnPiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgPCcgKworICAgICAgICAgICh0
eXBlLm5hbWUgfHwgdHlwZSkgKyAnPicgKworICAgICAgICAgIChhY3R1YWxUeXBlTmFtZSA/ICcg
YnV0IG9mIDwnICsgYWN0dWFsVHlwZU5hbWUgKyAnPicgOiAnJykpOworICAgIH0KKyAgfTsKKwor
ICBhc3NlcnREb2VzTm90VGhyb3cgPSBmdW5jdGlvbiBhc3NlcnREb2VzTm90VGhyb3coY29kZSwg
bmFtZV9vcHQpIHsKKyAgICB0cnkgeworICAgICAgZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgaWYgKGUgaW5zdGFuY2VvZiBNanNVbml0QXNzZXJ0aW9uRXJyb3Ip
IHRocm93IGU7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoInRocmV3IGFuIGV4Y2VwdGlvbjogIiAr
IChlLm1lc3NhZ2UgfHwgZSkpOworICAgIH0KKyAgfTsKKworICBhc3NlcnRVbnJlYWNoYWJsZSA9
IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKG5hbWVfb3B0KSB7CisgICAgLy8gRml4IHRoaXMg
d2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgorICAgIHZhciBtZXNzYWdlID0gIkZh
aWwiICsgInVyZTogdW5yZWFjaGFibGUiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAgbWVz
c2FnZSArPSAiIC0gIiArIG5hbWVfb3B0OworICAgIH0KKyAgICBmYWlsV2l0aE1lc3NhZ2UobWVz
c2FnZSk7CisgIH07CisKKyAgYXNzZXJ0Q29udGFpbnMgPSBmdW5jdGlvbihzdWIsIHZhbHVlLCBu
YW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PSBudWxsID8gKHN1YiAhPSBudWxsKSA6IHZhbHVl
LmluZGV4T2Yoc3ViKSA9PSAtMSkgeworICAgICAgZmFpbCgiY29udGFpbnMgJyIgKyBTdHJpbmco
c3ViKSArICInIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0TWF0
Y2hlcyA9IGZ1bmN0aW9uKHJlZ2V4cCwgc3RyLCBuYW1lX29wdCkgeworICAgIGlmICghKHJlZ2V4
cCBpbnN0YW5jZW9mIFJlZ0V4cCkpIHsKKyAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhw
KTsKKyAgICB9CisgICAgaWYgKCFzdHIubWF0Y2gocmVnZXhwKSkgeworICAgICAgZmFpbCgic2hv
dWxkIG1hdGNoICciICsgcmVnZXhwICsgIiciLCBzdHIsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07
CisKKyAgZnVuY3Rpb24gY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGV4Y2VwdGlvbikgeworICAg
IC8vIElmIHRoZSBleGNlcHRpb24gZG9lcyBub3QgY29udGFpbiBhIHN0YWNrIHRyYWNlLCB3cmFw
IGl0IGluIGEgbmV3IEVycm9yLgorICAgIGlmICghZXhjZXB0aW9uLnN0YWNrKSBleGNlcHRpb24g
PSBuZXcgRXJyb3IoZXhjZXB0aW9uKTsKKworICAgIC8vIElmIHRoZSBleGNlcHRpb24gYWxyZWFk
eSBwcm92aWRlcyBhIHNwZWNpYWwgc3RhY2sgdHJhY2UsIHdlIGRvIG5vdCBtb2RpZnkKKyAgICAv
LyBpdC4KKyAgICBpZiAodHlwZW9mIGV4Y2VwdGlvbi5zdGFjayAhPT0gJ3N0cmluZycpIHsKKyAg
ICAgIHJldHVybiBleGNlcHRpb247CisgICAgfQorICAgIGV4Y2VwdGlvbi5zdGFjayA9IHN0YWNr
ICsgJ1xuXG4nICsgZXhjZXB0aW9uLnN0YWNrOworICAgIHJldHVybiBleGNlcHRpb247CisgIH0K
KworICBhc3NlcnRQcm9taXNlUmVzdWx0ID0gZnVuY3Rpb24ocHJvbWlzZSwgc3VjY2VzcywgZmFp
bCkgeworICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIGFzc2VydEVxdWFscygnZnVuY3Rp
b24nLCB0eXBlb2Ygc3VjY2Vzcyk7CisgICAgaWYgKGZhaWwgIT09IHVuZGVmaW5lZCkgYXNzZXJ0
RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBmYWlsKTsKKyAgICBhc3NlcnRJbnN0YW5jZW9mKHBy
b21pc2UsIFByb21pc2UpOworICAgIGNvbnN0IHN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjazsK
KworICAgIHZhciB0ZXN0X3Byb21pc2UgPSBwcm9taXNlLnRoZW4oCisgICAgICAgIHJlc3VsdCA9
PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICgtLXByb21pc2VUZXN0Q291bnQg
PT0gMCkgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAoc3VjY2VzcyAh
PT0gdW5kZWZpbmVkKSBzdWNjZXNzKHJlc3VsdCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRv
IGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAgIC8vIGNoYWluLgorICAgICAgICAg
ICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJv
cnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICByZXN1bHQgPT4geworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAo
LS1wcm9taXNlVGVzdENvdW50ID09IDApIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgaWYgKGZhaWwgPT09IHVuZGVmaW5lZCkgdGhyb3cgcmVzdWx0OworICAgICAgICAgICAg
ZmFpbChyZXN1bHQpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIFVz
ZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBw
cm9taXNlCisgICAgICAgICAgICAvLyBjaGFpbi4KKyAgICAgICAgICAgIHNldFRpbWVvdXQoXyA9
PiB7CisgICAgICAgICAgICAgIHRocm93IGNvbmNhdGVuYXRlRXJyb3JzKHN0YWNrLCBlKTsKKyAg
ICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICBpZiAoIXBy
b21pc2VUZXN0Q2hhaW4pIHByb21pc2VUZXN0Q2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKyAg
ICAvLyB3YWl0VW50aWxEb25lIGlzIGlkZW1wb3RlbnQuCisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgKytwcm9taXNlVGVzdENvdW50OworICAgIHJldHVybiBwcm9taXNlVGVz
dENoYWluLnRoZW4odGVzdF9wcm9taXNlKTsKKyAgfTsKKworICB2YXIgT3B0aW1pemF0aW9uU3Rh
dHVzSW1wbCA9IHVuZGVmaW5lZDsKKworICB2YXIgT3B0aW1pemF0aW9uU3RhdHVzID0gZnVuY3Rp
b24oZnVuLCBzeW5jX29wdCkgeworICAgIGlmIChPcHRpbWl6YXRpb25TdGF0dXNJbXBsID09PSB1
bmRlZmluZWQpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIE9wdGltaXphdGlvblN0YXR1c0ltcGwg
PSBuZXcgRnVuY3Rpb24oCisgICAgICAgICAgICAiZnVuIiwgInN5bmMiLCAicmV0dXJuICVHZXRP
cHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jKTsiKTsKKyAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJuYXRpdmVzIHN5bnRheCBub3QgYWxsb3dlZCIpOworICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gT3B0aW1pemF0aW9uU3RhdHVzSW1wbChmdW4sIHN5bmNf
b3B0KTsKKyAgfQorCisgIGFzc2VydFVub3B0aW1pemVkID0gZnVuY3Rpb24gYXNzZXJ0VW5vcHRp
bWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29wdCwgc2tpcF9pZl9tYXliZV9kZW9w
dGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0gdW5kZWZpbmVkKSBzeW5jX29wdCA9
ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwgc3luY19v
cHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydFVub3B0aW1pemVkKCkgZG8gbm90IG1h
a2Ugc2Vuc2UgaWYgLS1hbHdheXMtb3B0CisgICAgLy8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNo
IHRlc3RzIG11c3QgYWRkIC0tbm8tYWx3YXlzLW9wdCB0byBmbGFncyBjb21tZW50LgorICAgIGFz
c2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0Fsd2F5c09wdGlt
aXplKSAhPT0gMCwKKyAgICAgICAgICAgICAgICAidGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdp
dGggLS1hbHdheXMtb3B0Iik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1p
emF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwgbmFtZV9vcHQpOworICAgIGlmIChza2lw
X2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlv
blN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAgICAgLy8gV2hlbiAtLWRlb3B0LWV2
ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBubyBsb25nZXIgZ3VhcmFudGVlZAor
ICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHN0aWxsIGRlb3B0aW1pemVkLCBz
byBrZWVwIHJ1bm5pbmcgdGhlIHRlc3QKKyAgICAgIC8vIHRvIHN0cmVzcyB0ZXN0IHRoZSBkZW9w
dGltaXplci4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rT3B0aW1pemVkKSAhPT0gMCwgbmFtZV9vcHQpOwor
ICB9CisKKyAgYXNzZXJ0T3B0aW1pemVkID0gZnVuY3Rpb24gYXNzZXJ0T3B0aW1pemVkKAorICAg
ICAgZnVuLCBzeW5jX29wdCwgbmFtZV9vcHQsIHNraXBfaWZfbWF5YmVfZGVvcHRlZCA9IHRydWUp
IHsKKyAgICBpZiAoc3luY19vcHQgPT09IHVuZGVmaW5lZCkgc3luY19vcHQgPSAiIjsKKyAgICB2
YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmNfb3B0KTsKKyAgICAv
LyBUZXN0cyB0aGF0IHVzZSBhc3NlcnRPcHRpbWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBmb3Ig
TGl0ZSBtb2RlIHdoZXJlCisgICAgLy8gb3B0aW1pemF0aW9uIGlzIGFsd2F5cyBkaXNhYmxlZCwg
ZXhwbGljaXRseSBleGl0IHRoZSB0ZXN0IHdpdGggYSB3YXJuaW5nLgorICAgIGlmIChvcHRfc3Rh
dHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0xpdGVNb2RlKSB7CisgICAgICBwcmludCgiV2Fy
bmluZzogVGVzdCB1c2VzIGFzc2VydE9wdGltaXplZCBpbiBMaXRlIG1vZGUsIHNraXBwaW5nIHRl
c3QuIik7CisgICAgICB0ZXN0UnVubmVyLnF1aXQoMCk7CisgICAgfQorICAgIC8vIFRlc3RzIHRo
YXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5vdCBtYWtlIHNlbnNlIGlmIC0tbm8tb3B0Cisg
ICAgLy8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11c3QgYWRkIC0tb3B0IHRvIGZs
YWdzIGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlv
blN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDAsCisgICAgICAgICAgICAgICAgInRlc3QgZG9l
cyBub3QgbWFrZSBzZW5zZSB3aXRoIC0tbm8tb3B0Iik7CisgICAgYXNzZXJ0VHJ1ZSgKKyAgICAg
ICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAs
CisgICAgICAgICdzaG91bGQgYmUgYSBmdW5jdGlvbjogJyArIG5hbWVfb3B0KTsKKyAgICBpZiAo
c2tpcF9pZl9tYXliZV9kZW9wdGVkICYmCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua01heWJlRGVvcHRlZCkgIT09IDApIHsKKyAgICAgIC8vIFdoZW4gLS1kZW9w
dC1ldmVyeS1uLXRpbWVzIGZsYWcgaXMgc3BlY2lmaWVkIGl0J3Mgbm8gbG9uZ2VyIGd1YXJhbnRl
ZWQKKyAgICAgIC8vIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBpcyBzdGlsbCBvcHRpbWl6ZWQs
IHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8gdG8gc3RyZXNzIHRlc3QgdGhlIGRl
b3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnRUcnVlKAorICAgICAg
ICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwLAor
ICAgICAgICAnc2hvdWxkIGJlIG9wdGltaXplZDogJyArIG5hbWVfb3B0KTsKKyAgfQorCisgIGlz
TmV2ZXJPcHRpbWl6ZUxpdGVNb2RlID0gZnVuY3Rpb24gaXNOZXZlck9wdGltaXplTGl0ZU1vZGUo
KSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXModW5kZWZpbmVkLCAi
Iik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0xpdGVN
b2RlKSAhPT0gMDsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZSA9IGZ1bmN0aW9uIGlzTmV2ZXJP
cHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRl
ZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1
cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDA7CisgIH0KKworICBpc0Fsd2F5c09wdGltaXplID0gZnVu
Y3Rpb24gaXNBbHdheXNPcHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXph
dGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9w
dGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAwOworICB9CisKKyAgaXNJbnRl
cnByZXRlZCA9IGZ1bmN0aW9uIGlzSW50ZXJwcmV0ZWQoZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0
dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0
YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAg
ICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0
aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpID09PSAwICYmCisgICAgICAgICAgIChvcHRfc3Rh
dHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0ludGVycHJldGVkKSAhPT0gMDsKKyAgfQorCisg
IGlzT3B0aW1pemVkID0gZnVuY3Rpb24gaXNPcHRpbWl6ZWQoZnVuKSB7CisgICAgdmFyIG9wdF9z
dGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0
X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAg
ICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4
T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwOworICB9CisKKyAgaXNUdXJib0Zh
bm5lZCA9IGZ1bmN0aW9uIGlzVHVyYm9GYW5uZWQoZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMg
PSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAg
ICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1p
emF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwICYmCisgICAgICAgICAgIChvcHRfc3RhdHVz
ICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua1R1cmJvRmFubmVkKSAhPT0gMDsKKyAgfQorCisgIC8v
IEN1c3RvbSBWOC1zcGVjaWZpYyBzdGFjayB0cmFjZSBmb3JtYXR0ZXIgdGhhdCBpcyB0ZW1wb3Jh
cmlseSBpbnN0YWxsZWQgb24KKyAgLy8gdGhlIEVycm9yIG9iamVjdC4KKyAgTWpzVW5pdEFzc2Vy
dGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnVuY3Rpb24oZXJyb3IsIHN0YWNrKSB7Cisg
ICAgLy8gVHJpZ2dlciBkZWZhdWx0IGZvcm1hdHRpbmcgd2l0aCByZWN1cnNpb24uCisgICAgdHJ5
IHsKKyAgICAgIC8vIEZpbHRlci1vdXQgYWxsIGJ1dCB0aGUgZmlyc3QgbWpzdW5pdCBmcmFtZS4K
KyAgICAgIGxldCBmaWx0ZXJlZFN0YWNrID0gW107CisgICAgICBsZXQgaW5NanN1bml0ID0gdHJ1
ZTsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgbGV0IGZyYW1lID0gc3RhY2tbaV07CisgICAgICAgIGlmIChpbk1qc3VuaXQpIHsKKyAgICAg
ICAgICBsZXQgZmlsZSA9IGZyYW1lLmdldEZpbGVOYW1lKCk7CisgICAgICAgICAgaWYgKCFmaWxl
IHx8ICFmaWxlLmVuZHNXaXRoKCJtanN1bml0LmpzIikpIHsKKyAgICAgICAgICAgIGluTWpzdW5p
dCA9IGZhbHNlOworICAgICAgICAgICAgLy8gUHVzaCB0aGUgbGFzdCBtanN1bml0IGZyYW1lLCB0
eXBpY2FsbHkgY29udGFpbmluZyB0aGUgYXNzZXJ0aW9uCisgICAgICAgICAgICAvLyBmdW5jdGlv
bi4KKyAgICAgICAgICAgIGlmIChpID4gMCkgQXJyYXlQcm90b3R5cGVQdXNoLmNhbGwoZmlsdGVy
ZWRTdGFjaywgc3RhY2tbaS0xXSk7CisgICAgICAgICAgICBBcnJheVByb3RvdHlwZVB1c2guY2Fs
bChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIEFycmF5UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVk
U3RhY2ssIGZyYW1lKTsKKyAgICAgIH0KKyAgICAgIHN0YWNrID0gZmlsdGVyZWRTdGFjazsKKwor
ICAgICAgLy8gSW5mZXIgZnVuY3Rpb24gbmFtZXMgYW5kIGNhbGN1bGF0ZSB7bWF4X25hbWVfbGVu
Z3RofQorICAgICAgbGV0IG1heF9uYW1lX2xlbmd0aCA9IDA7CisgICAgICBBcnJheVByb3RvdHlw
ZUZvckVhY2guY2FsbChzdGFjaywgZWFjaCA9PiB7CisgICAgICAgIGxldCBuYW1lID0gZWFjaC5n
ZXRGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCkgbmFtZSA9ICIiOwor
ICAgICAgICBpZiAoZWFjaC5pc0V2YWwoKSkgeworICAgICAgICAgIG5hbWUgPSBuYW1lOworICAg
ICAgICB9IGVsc2UgaWYgKGVhY2guaXNDb25zdHJ1Y3RvcigpKSB7CisgICAgICAgICAgbmFtZSA9
ICJuZXcgIiArIG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoZWFjaC5pc05hdGl2ZSgpKSB7Cisg
ICAgICAgICAgbmFtZSA9ICJuYXRpdmUgIiArIG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoIWVh
Y2guaXNUb3BsZXZlbCgpKSB7CisgICAgICAgICAgbmFtZSA9IGVhY2guZ2V0VHlwZU5hbWUoKSAr
ICIuIiArIG5hbWU7CisgICAgICAgIH0KKyAgICAgICAgZWFjaC5uYW1lID0gbmFtZTsKKyAgICAg
ICAgbWF4X25hbWVfbGVuZ3RoID0gTWF0aC5tYXgobmFtZS5sZW5ndGgsIG1heF9uYW1lX2xlbmd0
aCkKKyAgICAgIH0pOworCisgICAgICAvLyBGb3JtYXQgc3RhY2sgZnJhbWVzLgorICAgICAgc3Rh
Y2sgPSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKHN0YWNrLCBlYWNoID0+IHsKKyAgICAgICAgbGV0
IGZyYW1lID0gIiAgICBhdCAiICsgZWFjaC5uYW1lLnBhZEVuZChtYXhfbmFtZV9sZW5ndGgpOwor
ICAgICAgICBsZXQgZmlsZU5hbWUgPSBlYWNoLmdldEZpbGVOYW1lKCk7CisgICAgICAgIGlmIChl
YWNoLmlzRXZhbCgpKSByZXR1cm4gZnJhbWUgKyAiICIgKyBlYWNoLmdldEV2YWxPcmlnaW4oKTsK
KyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGZpbGVOYW1lID8gZmlsZU5hbWUgOiAiIik7CisgICAg
ICAgIGxldCBsaW5lPSBlYWNoLmdldExpbmVOdW1iZXIoKTsKKyAgICAgICAgZnJhbWUgKz0gIiAi
ICsgKGxpbmUgPyBsaW5lIDogIiIpOworICAgICAgICBsZXQgY29sdW1uID0gZWFjaC5nZXRDb2x1
bW5OdW1iZXIoKTsKKyAgICAgICAgZnJhbWUgKz0gKGNvbHVtbiA/ICI6IiArIGNvbHVtbiA6ICIi
KTsKKyAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgfSk7CisgICAgICByZXR1cm4gIiIgKyBl
cnJvci5tZXNzYWdlICsgIlxuIiArIEFycmF5UHJvdG90eXBlSm9pbi5jYWxsKHN0YWNrLCAiXG4i
KTsKKyAgICB9IGNhdGNoIChlKSB7fTsKKyAgICByZXR1cm4gZXJyb3Iuc3RhY2s7CisgIH0KK30p
KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50
LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFs
bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODc1MDAxODU3NTljNzJlNmFjYjMyZGIyNjZjNjc1ZWEzNDVlNTQx
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZl
cmVudC1yZWFsbS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
V2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1n
YyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0
LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworbGV0IFJlYWxtID0geyBjcmVhdGU6ICQuY3JlYXRl
UmVhbG0sIGV2YWw6IChyLCBzKSA9PiAkLmV2YWxTY3JpcHQuY2FsbChyLCBzKSAgfTsKKworbGV0
IHIgPSBSZWFsbS5jcmVhdGUoKTsKKworbGV0IGNsZWFudXAgPSBSZWFsbS5ldmFsKHIsICJ2YXIg
c3RvcmVkX2dsb2JhbDsgZnVuY3Rpb24gY2xlYW51cCgpIHsgc3RvcmVkX2dsb2JhbCA9IGdsb2Jh
bFRoaXM7IH0gY2xlYW51cDsiKTsKK2xldCByZWFsbV9nbG9iYWxfdGhpcyA9IFJlYWxtLmV2YWwo
ciwgImdsb2JhbFRoaXMiKTsKKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNs
ZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCBhIHJlZ2lzdGVyIGl0IGluIHRoZSBG
aW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEg
Y2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigp
IHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2Jq
ZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCk7CisgICAgfQorfSkoKTsKKwor
Z2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZCBp
biBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGxldCBzdG9y
ZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2dsb2JhbDsiKTsKKyAgYXNzZXJ0Tm90
RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOworICBhc3NlcnRFcXVhbHMoc3RvcmVk
X2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVu
YywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20t
ZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9t
LWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRkMDI0N2UyNzEwZGE0ODVjOTI1NzJh
YmE5YzI3NmNkZWYzNWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xl
YW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRo
ZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255
LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIu
L3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworbGV0IFJlYWxt
ID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChyLCBzKSA9PiAkLmV2YWxTY3JpcHQu
Y2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVhdGUoKTsKKworbGV0IGNsZWFudXAg
PSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsgbGV0IGNsZWFudXAgPSBuZXcgUHJv
eHkoZnVuY3Rpb24oKSB7IHN0b3JlZF9nbG9iYWwgPSBnbG9iYWxUaGlzO30sIHt9KTsgY2xlYW51
cCIpOworbGV0IHJlYWxtX2dsb2JhbF90aGlzID0gUmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIp
OworCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENy
ZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3Ry
eS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdl
IGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAg
IGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIik7CisgICAgfQorfSkoKTsKKworZ2MoKTsK
KworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMg
UmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGxldCBzdG9yZWRfZ2xv
YmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2dsb2JhbDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxz
KHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOworICBhc3NlcnRFcXVhbHMoc3RvcmVkX2dsb2Jh
bCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFz
aWNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNTYxNmE1MDIxYWNhNzU1MWM4MTE5ZWI2MWVmZTk0N2I1MTJjM2MxCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5
LWJhc2ljcy5qcwpAQCAtMCwwICsxLDE1MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdl
YWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMKKworbG9hZCgiLi9y
ZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworKGZ1bmN0aW9u
IFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSgpIHsKKyAgbGV0IGZnID0gbmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgYXNzZXJ0RXF1YWxzKGZnLnRvU3RyaW5n
KCksICJbb2JqZWN0IEZpbmFsaXphdGlvblJlZ2lzdHJ5XSIpOworICBhc3NlcnROb3RTYW1lKGZn
Ll9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7CisgIGFzc2VydFNhbWUoZmcuX19wcm90b19f
Ll9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdEZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JDYWxsQXNGdW5jdGlvbigpIHsKKyAgbGV0IGNh
dWdodCA9IGZhbHNlOworICBsZXQgbWVzc2FnZSA9ICIiOworICB0cnkgeworICAgIGxldCBmID0g
RmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICB9IGNhdGNoIChlKSB7CisgICAgbWVz
c2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOworICB9IGZpbmFsbHkgeworICAg
IGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1
Y3RGaW5hbGl6YXRpb25SZWdpc3RyeUNsZWFudXBOb3RDYWxsYWJsZSgpIHsKKyAgbGV0IG1lc3Nh
Z2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVzdCBiZSBjYWxsYWJsZSI7Cisg
IGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgp
OyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4geyBsZXQgZmcg
PSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoMSk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7Cisg
IGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShu
dWxsKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0Q29u
c3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoQ2FsbGFibGVQcm94eUFzQ2xlYW51cCgpIHsK
KyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9ICgpID0+IHt9OworICBsZXQgcHJveHkg
PSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJl
Z2lzdHJ5KHByb3h5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0
aW9uUmVnaXN0cnlXaXRoTm9uQ2FsbGFibGVQcm94eUFzQ2xlYW51cCgpIHsKKyAgbGV0IG1lc3Nh
Z2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVzdCBiZSBjYWxsYWJsZSI7Cisg
IGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFBy
b3h5KG9iaiwgaGFuZGxlcik7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShwcm94eSk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aE5vbk9iamVjdFRhcmdldCgpIHsKKyAgbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IG1lc3NhZ2Ug
PSAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyOiB0YXJnZXQgbXVzdCBi
ZSBhbiBvYmplY3QiOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIoMSwgImhvbGRp
bmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdp
c3RlcihmYWxzZSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy5yZWdpc3RlcigiZm9vIiwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVz
c2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihTeW1ib2woKSwgImhvbGRp
bmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdp
c3RlcihudWxsLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnJlZ2lzdGVyKHVuZGVmaW5lZCwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwg
bWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aFByb3h5KCkgewor
ICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5ldyBQ
cm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnko
KCkgPT4ge30pOworICBmZy5yZWdpc3Rlcihwcm94eSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVz
dFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUoKSB7CisgIGxldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBvYmogPSB7YTogMX07CisgIC8v
IFNhbWVWYWx1ZSh0YXJnZXQsIGhvbGRpbmdzKSBub3Qgb2sKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IGZnLnJlZ2lzdGVyKG9iaiwgb2JqKSwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3RlcjogdGFyZ2V0IGFuZCBob2xkaW5ncyBt
dXN0IG5vdCBiZSBzYW1lIik7CisgIGxldCBob2xkaW5ncyA9IHthOiAxfTsKKyAgZmcucmVnaXN0
ZXIob2JqLCBob2xkaW5ncyk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aG91
dEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0
aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwoe30sIHt9LCAiaG9sZGluZ3MiKSwg
VHlwZUVycm9yKTsKKyAgLy8gRG9lcyBub3QgdGhyb3c6CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6
YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIEZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlw
ZS5yZWdpc3Rlci5jYWxsKGZnLCB7fSwgImhvbGRpbmdzIik7Cit9KSgpOworCisoZnVuY3Rpb24g
VGVzdFVucmVnaXN0ZXJXaXRoTm9uRXhpc3RlbnRLZXkoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3Rl
cih7ImsiOiAid2hhdGV2ZXIifSk7CisgIGFzc2VydEZhbHNlKHN1Y2Nlc3MpOworfSkoKTsKKwor
KGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgewor
ICBhc3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnVucmVn
aXN0ZXIuY2FsbCh7fSwge30pLAorICAgICAgICAgICAgICAgVHlwZUVycm9yKTsKK30pKCk7CisK
KyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25PYmplY3RVbnJlZ2lzdGVyVG9rZW4oKSB7
CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGFzc2Vy
dFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKDEpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJv
d3MoKCkgPT4gZmcudW5yZWdpc3RlcihCaWdJbnQoMSkpLCBUeXBlRXJyb3IpOworICBhc3NlcnRU
aHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcignb25lJyksIFR5cGVFcnJvcik7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKFN5bWJvbCgpKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0
VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodHJ1ZSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKGZhbHNlKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodW5kZWZpbmVkKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0
VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIobnVsbCksIFR5cGVFcnJvcik7Cit9KSgpOworCiso
ZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvcigpIHsKKyAgbGV0IHdyID0gbmV3IFdlYWtS
ZWYoe30pOworICBhc3NlcnRFcXVhbHMod3IudG9TdHJpbmcoKSwgIltvYmplY3QgV2Vha1JlZl0i
KTsKKyAgYXNzZXJ0Tm90U2FtZSh3ci5fX3Byb3RvX18sIE9iamVjdC5wcm90b3R5cGUpOworCisg
IGxldCBkZXJlZl9kZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3ci5fX3By
b3RvX18sICJkZXJlZiIpOworICBhc3NlcnRFcXVhbHModHJ1ZSwgZGVyZWZfZGVzYy5jb25maWd1
cmFibGUpOworICBhc3NlcnRFcXVhbHMoZmFsc2UsIGRlcmVmX2Rlc2MuZW51bWVyYWJsZSk7Cisg
IGFzc2VydEVxdWFscygiZnVuY3Rpb24iLCB0eXBlb2YgZGVyZWZfZGVzYy52YWx1ZSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvcldpdGhOb25PYmplY3QoKSB7Cisg
IGxldCBtZXNzYWdlID0gIldlYWtSZWY6IHRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCI7CisgIGFz
c2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBh
c3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoMSksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cisg
IGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihmYWxzZSksIFR5cGVFcnJvciwgbWVzc2Fn
ZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigiZm9vIiksIFR5cGVFcnJvciwg
bWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihTeW1ib2woKSksIFR5
cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihudWxs
KSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVm
KHVuZGVmaW5lZCksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVz
dFdlYWtSZWZDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFs
c2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRyeSB7CisgICAgbGV0IGYgPSBXZWFrUmVmKHt9
KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIG1lc3NhZ2UgPSBlLm1lc3NhZ2U7CisgICAgY2F1Z2h0
ID0gdHJ1ZTsKKyAgfSBmaW5hbGx5IHsKKyAgICBhc3NlcnRUcnVlKGNhdWdodCk7CisgIH0KK30p
KCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZldpdGhQcm94eSgpIHsKKyAgbGV0IGhhbmRsZXIg
PSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5k
bGVyKTsKKyAgbGV0IHdyID0gbmV3IFdlYWtSZWYocHJveHkpOworfSkoKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzhkYThhMGM5ZmVmYzlkMWRlMjY5NWIyM2Q1MjAxNDI4ZmIyNmIyMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13
ZWFrcmVmLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFr
UmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0t
bm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMi
LCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0
IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBsZXQgaG9sZGluZ3NfbGlzdCA9IFtd
OworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOworICBhc3NlcnRFcXVhbHMoMSwgaG9s
ZGluZ3NfbGlzdC5sZW5ndGgpOworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzIiwgaG9sZGluZ3Nf
bGlzdFswXSk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IHdlYWtfcmVmcyA9IFtdOworKGZ1bmN0
aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxl
dCBvID0ge307CisgICAgICAgIHdlYWtfcmVmcy5wdXNoKG5ldyBXZWFrUmVmKG8pKTsKKyAgICAg
ICAgZmcucmVnaXN0ZXIobywgImhvbGRpbmdzIik7CisgICAgfQorfSkoKTsKKworLy8gU2luY2Ug
dGhlIFdlYWtSZWYgd2FzIGNyZWF0ZWQgZHVyaW5nIHRoaXMgdHVybiwgaXQgaXMgbm90IGNsZWFy
ZWQgYnkgR0MuIFRoZQorLy8gcG9pbnRlciBpbnNpZGUgdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5
IGlzIG5vdCBjbGVhcmVkIGVpdGhlciwgc2luY2UgdGhlIFdlYWtSZWYKKy8vIGtlZXBzIHRoZSB0
YXJnZXQgb2JqZWN0IGFsaXZlLgorZ2MoKTsKKyhmdW5jdGlvbigpIHsKKyAgICB3ZWFrX3JlZnMu
Zm9yRWFjaCgod2Vha19yZWYpID0+IGFzc2VydEVxdWFscygib2JqZWN0IiwgdHlwZW9mKHdlYWtf
cmVmLmRlcmVmKCkpKSk7Cit9KSgpOworCisvLyBUcmlnZ2VyIGdjIGluIG5leHQgdGFzaworc2V0
VGltZW91dCgoKSA9PiB7CisgICAgZ2MoKTsKKworICAgIC8vIENoZWNrIHRoYXQgY2xlYW51cCBj
YWxsYmFjayB3YXMgY2FsbGVkIGluIGEgZm9sbG93IHVwIHRhc2sKKyAgICBzZXRUaW1lb3V0KCgp
ID0+IHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxlZCk7CisgICAgICAgIGFzc2Vy
dFRydWUod2Vha19yZWZzLnNvbWUoKHdlYWtfcmVmKSA9PiB3ZWFrX3JlZi5kZXJlZigpID09PSBu
dWxsKSk7CisgICAgfSwgMCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4
LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzAyYzRiYjhlZTg0ZTAxMGI3NGQ2ZGViMzVhMGNmYWNmMTZkNDkzZgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBz
LWhvbGRpbmdzLWFsaXZlLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1q
c3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxlZCA9IGZh
bHNlOworbGV0IGhvbGRpbmdzX2xpc3QgPSBbXTsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9s
ZGluZ3MpIHsKKyAgYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQpOworICBob2xkaW5nc19saXN0
LnB1c2goaG9sZGluZ3MpOworICBjbGVhbnVwX2NhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9
IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBvMSA9IHt9OworbGV0IGhv
bGRpbmdzID0geydhJzogJ3RoaXMgaXMgdGhlIGhvbGRpbmdzIG9iamVjdCd9OworCisvLyBJZ25p
dGlvbiBob2xkcyByZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4gdGVtcG9yYXJ5IHJlZ2lzdGVycy4g
VGhlc2Ugd2lsbCBiZQorLy8gcmVsZWFzZWQgd2hlbiB0aGUgZnVuY3Rpb24gZXhpdHMuIFNvIG9u
bHkgYWNjZXNzIG8gaW5zaWRlIGEgZnVuY3Rpb24gdG8KKy8vIHByZXZlbnQgYW55IHJlZmVyZW5j
ZXMgdG8gb2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVnaXN0ZXJzIHdoZW4gYSBnYyBpcworLy8gdHJp
Z2dlcmVkLgorKCgpID0+IHtmZy5yZWdpc3RlcihvMSwgaG9sZGluZ3MpO30pKCkKKworZ2MoKTsK
K2Fzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKworLy8gRHJvcCB0aGUgbGFzdCByZWZlcmVu
Y2VzIHRvIG8xLgorKCgpID0+IHtvMSA9IG51bGw7fSkoKQorCisvLyBEcm9wIHRoZSBsYXN0IHJl
ZmVyZW5jZSB0byB0aGUgaG9sZGluZ3MuIFRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeSBrZWVwcyBp
dAorLy8gYWxpdmUsIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIG5v
cm1hbC4KK2hvbGRpbmdzID0gbnVsbDsKK2djKCk7Cithc3NlcnRGYWxzZShjbGVhbnVwX2NhbGxl
ZCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0VHJ1ZShjbGVh
bnVwX2NhbGxlZCk7CisgIGFzc2VydEVxdWFscyhob2xkaW5nc19saXN0Lmxlbmd0aCwgMSk7Cisg
IGFzc2VydEVxdWFscyhob2xkaW5nc19saXN0WzBdLmEsICJ0aGlzIGlzIHRoZSBob2xkaW5ncyBv
YmplY3QiKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVh
bnVwLW11bHRpcGxlLXRpbWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVn
aXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdkOGM5NjM5NzVkMmVjZmI4Nzc2NTkyY2RiNTVmZTg1MzcyNzljMjMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9y
LWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMKQEAgLTAsMCArMSw4NSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJl
ZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKy8vIEZsYWdzOiAtLW5vLXN0
cmVzcy1mbHVzaC1ieXRlY29kZQorCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwg
ImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cDBfY2FsbF9jb3VudCA9IDA7CitsZXQg
Y2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cDBfMV9ob2xkaW5nc19j
b3VudCA9IDA7CisKK2xldCBjbGVhbnVwMV9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMV8w
X2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMV8xX2hvbGRpbmdzX2NvdW50ID0gMDsK
KworbGV0IGNsZWFudXAwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdzW2hv
bGRpbmdzLmxlbmd0aCAtIDFdID09ICIwIikKKyAgICArK2NsZWFudXAwXzBfaG9sZGluZ3NfY291
bnQ7CisgIGVsc2UKKyAgICArK2NsZWFudXAwXzFfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51
cDBfY2FsbF9jb3VudDsKK30KKworbGV0IGNsZWFudXAxID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsK
KyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFdID09ICIwIikKKyAgICArK2NsZWFu
dXAxXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICArK2NsZWFudXAxXzFfaG9sZGluZ3Nf
Y291bnQ7CisgICsrY2xlYW51cDFfY2FsbF9jb3VudDsKK30KKworbGV0IGZnMCA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeShjbGVhbnVwMCk7CitsZXQgZmcxID0gbmV3IEZpbmFsaXphdGlvblJl
Z2lzdHJ5KGNsZWFudXAxKTsKKworLy8gUmVnaXN0ZXIgMSB3ZWFrIHJlZmVyZW5jZSBmb3IgZWFj
aCBGaW5hbGl6YXRpb25SZWdpc3RyeSBhbmQga2lsbCB0aGUgb2JqZWN0cyB0aGV5IHBvaW50IHRv
LgorKGZ1bmN0aW9uKCkgeworICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAg
IC8vIFRoZSBvYmplY3RzIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNh
biByZWxpYWJseSBraWxsIHRoZW0uCisgICAgbGV0IG9iamVjdHMgPSBbXTsKKyAgICBvYmplY3Rz
WzBdID0ge307CisgICAgb2JqZWN0c1sxXSA9IHt9OworCisgICAgZmcwLnJlZ2lzdGVyKG9iamVj
dHNbMF0sICJob2xkaW5nczAtMCIpOworICAgIGZnMS5yZWdpc3RlcihvYmplY3RzWzFdLCAiaG9s
ZGluZ3MxLTAiKTsKKworICAgIC8vIERyb3AgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIG9iamVjdHMu
CisgICAgb2JqZWN0cyA9IFtdOworICB9Cit9KSgpOworCisvLyBXaWxsIHNjaGVkdWxlIGJvdGgg
ZmcwIGFuZCBmZzEgZm9yIGNsZWFudXAuCitnYygpOworCisvLyBCZWZvcmUgdGhlIGNsZWFudXAg
dGFzayBoYXMgYSBjaGFuY2UgdG8gcnVuLCBkbyB0aGUgc2FtZSB0aGluZyBhZ2Fpbiwgc28gYm90
aAorLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBhcmUgKGFnYWluKSBzY2hlZHVsZWQgZm9yIGNs
ZWFudXAuIFRoaXMgaGFzIHRvIGJlIGEgSUlGRSBmdW5jdGlvbgorLy8gKHNvIHRoYXQgd2UgY2Fu
IHJlbGlhYmx5IGtpbGwgdGhlIG9iamVjdHMpIHNvIHdlIGNhbm5vdCB1c2UgdGhlIHNhbWUgZnVu
Y3Rpb24KKy8vIGFzIGJlZm9yZS4KKyhmdW5jdGlvbigpIHsKKyAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICBsZXQgb2JqZWN0cyA9IFtdOworICAgIG9iamVjdHNbMF0gPSB7
fTsKKyAgICBvYmplY3RzWzFdID0ge307CisgICAgZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJo
b2xkaW5nczAtMSIpOworICAgIGZnMS5yZWdpc3RlcihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTEi
KTsKKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisKK2djKCk7CisKK2xldCB0aW1lb3V0
X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwX2NhbGxf
Y291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCk7
CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8xX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNz
ZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMo
MCwgY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVh
bnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKK30KKworLy8gR2l2ZSB0aGUgY2xlYW51cCB0YXNrIGEg
Y2hhbmNlIHRvIHJ1bi4KK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVz
LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lz
dHJpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwNzNhMDMxZGIwNmNjZDMwMjZkOGYyNGYxMjdmYWRkYjg5
OGFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5
LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1y
ZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3Vy
Y2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2Nh
bGxfY291bnQxID0gMDsKK2xldCBjbGVhbnVwX2NhbGxfY291bnQyID0gMDsKK2xldCBjbGVhbnVw
ID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBpZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczEi
KQorICAgICAgICArK2NsZWFudXBfY2FsbF9jb3VudDE7CisgICAgZWxzZSBpZiAoaG9sZGluZ3Mg
PT09ICJob2xkaW5nczIiKQorICAgICAgICArK2NsZWFudXBfY2FsbF9jb3VudDI7CisgICAgZWxz
ZQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KKworbGV0IGZnMSA9IG5ldyBGaW5hbGl6
YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBmZzIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSB0d28gb2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBp
biBGaW5hbGl6YXRpb25SZWdpc3RyaWVzLiBUaGUgb2JqZWN0cyBuZWVkCisvLyB0byBiZSBpbnNp
ZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0
aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxl
dCBvYmplY3QxID0ge307CisgICAgICAgIGZnMS5yZWdpc3RlcihvYmplY3QxLCAiaG9sZGluZ3Mx
Iik7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcyLnJlZ2lzdGVyKG9i
amVjdDIsICJob2xkaW5nczIiKTsKKyAgICB9CisgICAgLy8gb2JqZWN0MSBhbmQgb2JqZWN0MiBn
byBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgZGlzY292ZXIgZGlydHkg
V2Vha0NlbGxzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBj
bGVhbnVwX2NhbGxfY291bnQxKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQy
KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xl
dCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50MSk7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9j
b3VudDIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTk3ZGFh
NGQxZDI2NTI0ODIyMDJkMTFiNWIyY2JjNDVjYjI3MjEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qcwpAQCAtMCwwICsxLDI4
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdo
dCAyMDIwIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczog
LS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZwor
Citsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwor
CitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgcmVlbnRyYW50X2djID0gZnVuY3Rpb24oaG9sZGlu
Z3MpIHsKKyAgICBnYygpOworICAgIGNhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShyZWVudHJhbnRfZ2MpOworCisoZnVuY3Rpb24oKSB7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBmZy5yZWdpc3Rlcih7fSwgNDIp
OworfSkoKTsKKworZ2MoKTsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRU
cnVlKGNhbGxlZCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVz
cy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmUyNGUyY2QzZWM3NmQ1Yzg5NTFjZDJmYTBhNTFhODVmZDA4MDk4MQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0
eS1lbnF1ZXVlLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VX
ZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLXN0cmVzcy1jb21wYWN0aW9uIC0tZXhwb3NlLWdj
CisKKy8vIFRlc3QgdGhhdCB0aGUgZGlydHkgRmluYWxpemF0aW9uUmVnaXN0cmllcyB0aGF0IGFy
ZSBlbnF1ZXVlZCBkdXJpbmcgR0MgaGF2ZQorLy8gdGhlaXIgc2xvdHMgY29ycmVjdGx5IHJlY29y
ZGVkIGJ5IHRoZSBHQy4KKworLy8gMSkgQ3JlYXRlIG1hbnkgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSBvYmplY3RzIHNvIHRoYXQgdGhleSBzcGFuIHNldmVyYWwgcGFnZXMKKy8vIChwYWdlIHNpemUg
aXMgMjU2a2IpLgorbGV0IHJlZ2lzdHJpZXMgPSBbXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAy
NCAqIDg7IGkrKykgeworICByZWdpc3RyaWVzLnB1c2gobmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KCgpID0+IHt9KSk7Cit9CisKKy8vIDIpIEZvcmNlIHR3byBHQ3MgdG8gZW5zdXJlIHRoYXQgSlNG
aW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVjdHMgYXJlIHRlbnVyZWQuCitnYygpOworZ2MoKTsKKwor
Ly8gMykgSW4gYSBmdW5jdGlvbjogY3JlYXRlIGEgZHVtbXkgdGFyZ2V0IGFuZCByZWdpc3RlciBp
dCBpbiBhbGwKKy8vIEpTRmluYWxpemF0b25SZWdpc3RyeSBvYmplY3RzLgorKGZ1bmN0aW9uKCkg
eworICBsZXQgZ2FyYmFnZSA9IHt9OworICByZWdpc3RyaWVzLmZvckVhY2goKGZyKSA9PiB7Cisg
ICAgZnIucmVnaXN0ZXIoZ2FyYmFnZSwgNDIpOworICB9KTsKKyAgZ2FyYmFnZSA9IG51bGw7Cit9
KSgpOworCisvLyA0KSBPdXRzaWRlIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgdGFyZ2V0IGlzIHVu
cmVhY2hhYmxlOiBmb3JjZSBHQyB0byBjb2xsZWN0CisvLyB0aGUgb2JqZWN0LgorZ2MoKTsKKwor
Ly8gNSkgRm9yY2UgYW5vdGhlciBHQyB0byB0ZXN0IHRoYXQgdGhlIHNsb3Qgd2FzIGNvcnJlY3Rs
eSB1cGRhdGVkLgorZ2MoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVmaW5l
ZC1ob2xkaW5ncy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMmM2MGNmZGE3N2YwYWZjYTFiNWNiOWZkZGFmZWFjMGQ5MDc1MGJiCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzCkBA
IC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRh
bC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJl
bGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBm
dW5jdGlvbihob2xkaW5ncykgeworICAgIGFzc2VydEVxdWFscyhob2xkaW5ncywgdW5kZWZpbmVk
KTsKKyAgICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXph
dGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3Rl
ciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUg
aW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQor
CisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAg
ICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QpOworICAg
IH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0IGFu
ZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxf
Y291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVk
LgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydE5vdEVxdWFscygw
LCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFudXAu
anMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFudXAuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGQ3MmIwZjhiM2JiOGViYTY5MGExNjBkMTYzOGQzOWU0M2Y0NzJkMQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcwpA
QCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0g
ZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxzKCJob2xkaW5ncyIsIGhvbGRpbmdz
KTsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRp
b25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07
CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9u
UmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28g
dGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9Owor
ICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIsIGtleSk7CisgICAgfQorfSko
KTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QgYW5kIHNjaGVk
dWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7
CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQg
dGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFu
dXBfY2FsbF9jb3VudCk7CisgICAgbGV0IG9sZF9jbGVhbnVwX2NhbGxfY291bnQgPSBjbGVhbnVw
X2NhbGxfY291bnQ7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFuIGFscmVhZHkgY2xlYW5lZC11cCB3
ZWFrIHJlZmVyZW5jZS4KKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAg
ICAvLyBTaW5jZSB3ZSBtYXkgbm90IGNvbGxlY3QgZXZlcnl0aGluZyB3ZSBkb24ndCBrbm93IHdo
YXQgc3VjY2VzcyB3aWxsIGJlIHVubGlrZSB2OC4KKyAgICAvLyBhc3NlcnRGYWxzZShzdWNjZXNz
KTsKKworICAgIC8vIEFzc2VydCB0aGF0IGl0IGRpZG4ndCBkbyBhbnl0aGluZy4KKyAgICBzZXRU
aW1lb3V0KCgpID0+IHsgYXNzZXJ0RXF1YWxzKG9sZF9jbGVhbnVwX2NhbGxfY291bnQsIGNsZWFu
dXBfY2FsbF9jb3VudCk7IH0sIDApOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVw
LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kY2QxZTNlYzZhM2FlYmZjNzg3NmM3ZGRhZjdkN2RiOGMxNTNmZWFkCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5q
cwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIp
CisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVt
ZW50YWwtbWFya2luZyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNl
cy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxs
X2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVh
bnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShj
bGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUg
YW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRo
ZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4g
cmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsK
KyAgZmcucmVnaXN0ZXIob2JqZWN0LCAibXkgaG9sZGluZ3MiLCBrZXkpOworCisgIC8vIENsZWFy
IHRoZSBXZWFrQ2VsbCBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciBpdC4K
KyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vz
cyk7CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBH
QyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAs
IGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0
aW9uIHdvbid0IGJlIGNhbGxlZCwgc2luY2Ugd2UgY2FsbGVkIHVucmVnaXN0ZXIuCitsZXQgdGlt
ZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxf
Y291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZWZlODI0YjZj
NzRhMDU4Y2IxZDFlYjM4NzFlY2U1YmFmOGJhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qcwpAQCAtMCwwICsxLDQ2IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4
IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJt
b255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2Fk
KCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQg
Y2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3Mp
IHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRp
b25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07
CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9u
UmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28g
dGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgIGxldCBv
YmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiLCBrZXkpOworCisg
IC8vIFVucmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgdGhl
IG9iamVjdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisgIGFzc2VydFRy
dWUoc3VjY2Vzcyk7CisKKyAgLy8gQ2FsbCB1bnJlZ2lzdGVyIGFnYWluIChqdXN0IHRvIGFzc2Vy
dCB3ZSBoYW5kbGUgdGhpcyBncmFjZWZ1bGx5KS4KKyAgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIo
a2V5KTsKKyAgYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9m
IHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmpl
Y3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFz
c2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgc2luY2UgdGhl
IHdlYWsgcmVmZXJlbmNlCisvLyB3YXMgdW5yZWdpc3RlcmVkLgorbGV0IHRpbWVvdXRfZnVuYyA9
IGZ1bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKK30K
Kworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11
bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjIxMjI4NjYzYWQyY2Vk
NTk2OTVhNTNjNWIzYjBlNWY3Y2IwMGJjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMKQEAgLTAsMCArMSw0OSBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0
aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9u
eS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgi
Li9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNh
bGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAvLyBT
ZWUgd2hpY2ggdGFyZ2V0IHdlJ3JlIGNsZWFuaW5nIHVwIGFuZCB1bnJlZ2lzdGVyIHRoZSBvdGhl
ciBvbmUuCisgIGlmIChob2xkaW5ncyA9PSAxKSB7CisgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJl
Z2lzdGVyKGtleTIpOworICAgIGFzc2VydFRydWUoc3VjY2VzcyB8fCBjYWxsZWQpOworICB9IGVs
c2UgeworICAgIGFzc2VydFNhbWUoaG9sZGluZ3MsIDIpOworICAgIGxldCBzdWNjZXNzID0gZmcu
dW5yZWdpc3RlcihrZXkxKTsKKyAgICBhc3NlcnRUcnVlKHN1Y2Nlc3MgfHwgY2FsbGVkKTsKKyAg
fQorICBjYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsiayI6ICJmaXJzdCBrZXkifTsKK2xldCBrZXkyID0g
eyJrIjogInNlY29uZCBrZXkifTsKKy8vIENyZWF0ZSB0d28gb2JqZWN0cyBhbmQgcmVnaXN0ZXIg
dGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3RzCisvLyBuZWVkIHRv
IGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQor
CisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAg
ICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MSwgMSwg
a2V5MSk7CisgICAgICAgIGxldCBvYmplY3QyID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9i
amVjdDIsIDIsIGtleTIpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWlt
IHRhcmdldCBvYmplY3RzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEZhbHNl
KGNhbGxlZCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxs
ZWQgYW5kIGNsZWFuZWQgdXAgb25lIGhvbGRpbmdzIChidXQgbm90IHRoZSBvdGhlciBvbmUpLgor
bGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydFRydWUoY2FsbGVkKTsK
K30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanMgYi9KU1Rlc3RzL3N0cmVzcy92
OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2ZhYTdiNmUzYzQz
YmYyYjEyODY2ZjI0MGNjNmVhYzE4N2QyMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanMKQEAgLTAsMCArMSw1MSBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAx
OCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFy
bW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9h
ZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0
IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7
CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscyhob2xk
aW5ncywgImhvbGRpbmdzIik7CisKKyAgLy8gVGhlcmUncyBtb3JlcyBvYmplY3Qgd2l0aCB0aGUg
c2FtZSBrZXkgdGhhdCB3ZSBoYXZlbid0CisgIC8vIGNsZWFuZWQgdXAgeWV0IHNvIHdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHVucmVnaXN0ZXIgdGhlCisgIC8vIGNhbGxiYWNrIGZvciB0aGF0IG9uZS4K
KyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisKKyAgYXNzZXJ0VHJ1ZShzdWNj
ZXNzKTsKKworICArK2NsZWFudXBfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cF9jYWxsX2Nv
dW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7Cisv
LyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVn
aXN0cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhh
dCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRo
ZSBrZXkifTsKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7
fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiLCBrZXkpOworICAgICAg
ICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGluZ3MiLCBrZXkpOworICAgIH0KK30pKCk7CisK
Ky8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNs
ZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8v
IEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91
dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygxLCBjbGVhbnVwX2NhbGxfY291
bnQpOworICBhc3NlcnRFcXVhbHMoMSwgY2xlYW51cF9ob2xkaW5nc19jb3VudCk7Cit9CisKK3Nl
dFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4
LXVucmVnaXN0ZXItbWFueS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hODMzOTllNjVmMGQyNzQyNjA4YjEzODQ2ZDVhNWQ5MTdhYjM3ZWRlCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzCkBA
IC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRh
bC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJl
bGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXBfaG9s
ZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBh
c3NlcnRFcXVhbHMoImhvbGRpbmdzMiIsIGhvbGRpbmdzKTsKKyAgKytjbGVhbnVwX2hvbGRpbmdz
X2NvdW50OworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleTEgPSB7ImsiOiAia2V5MSJ9OworbGV0
IGtleTIgPSB7ImsiOiAia2V5MiJ9OworLy8gQ3JlYXRlIHRocmVlIG9iamVjdHMgYW5kIHJlZ2lz
dGVyIHRoZW0gaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0cworLy8gbmVl
ZCB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhl
bSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7
CisgICAgICAgIGxldCBvYmplY3QxYSA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3Qx
YSwgImhvbGRpbmdzMWEiLCBrZXkxKTsKKworICAgICAgICBsZXQgb2JqZWN0MWIgPSB7fTsKKyAg
ICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MWIsICJob2xkaW5nczFiIiwga2V5MSk7CisKKyAgICAg
ICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRp
bmdzMiIsIGtleTIpOworCisgICAgICAgIC8vIFVucmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBoYXMg
YSBjaGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdHMuCisgICAgICAgIGxldCBzdWNjZXNzID0g
ZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKyAgICB9
Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdHMuCitn
YygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0
aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgZm9yIHRoZSByZWZl
cmVuY2Ugd2hpY2gKKy8vIHdhcyBub3QgdW5yZWdpc3RlcmVkLgorbGV0IHRpbWVvdXRfZnVuYyA9
IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsK
KyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfaG9sZGluZ3NfY291bnQpOworfQorCitzZXRU
aW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC13
ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3Rl
cnRva2VuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWU4MDBhYTJhY2UwOWY2ZjI5NTJlNGU5N2NiNTY5ODFl
YTJlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0
ZXJ0b2tlbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vh
a1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcy13aXRoLWNsZWFudXAt
c29tZSAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291
cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCit2YXIgRlIgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkgKGZ1bmN0aW9uIChob2xkaW5ncykgeyBnbG9iYWxUaGlzLkZS
UmFuID0gdHJ1ZTsgfSk7Cit7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICAgICAgbGV0IG9iaiA9IHt9OworICAgICAgICAvLyBvYmogaXMgaXRzIG93biB1bnJlZ2lz
dGVyIHRva2VuIGFuZCBiZWNvbWVzIHVucmVhY2hhYmxlIGFmdGVyIHRoaXMKKyAgICAgICAgLy8g
YmxvY2suIElmIHRoZSB1bnJlZ2lzdGVyIHRva2VuIGlzIGhlbGQgc3Ryb25nbHkgdGhpcyB0ZXN0
IHdpbGwgbm90CisgICAgICAgIC8vIHRlcm1pbmF0ZS4KKyAgICAgICAgRlIucmVnaXN0ZXIob2Jq
LCA0Miwgb2JqKTsKKyAgICB9Cit9CisKK2xldCB0cnlBZ2FpbkNvdW50ID0gMTA7CitmdW5jdGlv
biB0cnlBZ2FpbigpIHsKKyAgICBnYygpOworICAgIGlmIChnbG9iYWxUaGlzLkZSUmFuKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCEtLXRyeUFnYWluQ291bnQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigpOworICAgIHNldFRpbWVvdXQodHJ5QWdhaW4sIDApOworfQordHJ5QWdhaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404595</attachid>
            <date>2020-07-17 14:42:17 -0700</date>
            <delta_ts>2020-07-17 15:11:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717144216.patch</filename>
            <type>text/plain</type>
            <size>230037</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjA3Zjk3Y2EwNzllMGFjMjhkOGY1YmY2OGM4Y2IxNTkxN2Q4ZGUwLi5mOWM3YjdjMDlhM2FmNGFm
NGY0OTZiYjhkOTY1NmFiZjg0YjhkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pT
QVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKGZ1bmN0aW9u
RmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeURlYWRDb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAg
ICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwLgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdv
cmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxv
b3ApOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmspOgorICAgICAg
ICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmspOgorICAg
ICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAg
ICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmguCisgICAgICAgICogcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAg
ICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChKU0M6
OnByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlm
aWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cCk6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmxpdmVDb3VudCk6CisgICAgICAg
IChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudCk6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RhY2tPdmVyZmxvd0ZyYW1l
Q2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwU2V0V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRBZGRXYXRjaHBvaW50U2V0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlKb2luV2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
QmFzZT46OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6
aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjAtMDctMTcgIFhh
biBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVs
ZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM5OGQxZmNi
ZjY5ZGMwZjA5MjE2NGZiZjczMDdjNTE5NmM3MjA1NWQuLjhmODIzZmRhZTc1MTk1MjA5MzViZDJi
NTg0NjQ4YTU4N2YxNWFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNy0x
NyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQ
cm9taXNlRGVmZXJyZWRUaW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNv
LCBhZGQgZ2xvYmFsT2JqZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25z
IGZyb20gSlNDJ3MKKyAgICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUds
b2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
Ojpjb21waWxlU3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
aW5zdGFudGlhdGVTdHJlYW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHA6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorCiAyMDIwLTA3LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlY29tbWVuZGVkIGFydGljbGUgdGl0bGVzIG9uIGNzZG4ubmV0IGFy
ZSBjbGlwcGVkIGFmdGVyIHRyYW5zbGF0aW5nIHRvIEVuZ2xpc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFjNDcy
NTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uNGFiNTQ3ZTlkZTBkZjhlYTQ3MTQ1ZjJhZmQ1OWZm
NTY1M2NiMzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBu
dWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VS
ZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3As
CiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGls
ZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBkNjFhYWM3
ZTQ1YzUzNzIwNWE4YWNhN2UwOGVmZDY5NGNiZWRjNDIzLi5kN2Q0ZDg5OGZkNDJmMGYyNTRhNzQ5
MGJhOTMyZTY4ZGI1ODU5ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QubW0KQEAgLTY0LDYgKzY0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG1vZHVsZUxvYWRlckV2YWx1YXRl
LCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rp
b25UcmFja2VyCisgICAgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBu
dWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFt
aW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGNkNzRjMjUyMmVhMmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1
Zi4uYTI2YTk5NzUyNTJkMDY1NDY2YmZhNjFhNWI1YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkzMSwxNiArOTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIw
MDYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEZERTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVk
ZXMubSAqLzsgfTsKIAkJNTMxMUJENEIxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFF
QTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3
NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsg
fTsKLQkJNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRC
MDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAw
NzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9OworICAgICAgICAgICAgICAgIDUzMTgwNDVD
MjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIz
RXh0cmFjdFZhbHVlLmggKi87IH07CisgICAgICAgICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAw
MzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEg
LyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAg
ICA1MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0
MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUz
MzNCQkRDMjExMEY3RDkwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAy
QjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0Ux
MDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi87IH07Ci0JCTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAv
KiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9p
bnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyog
Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50
T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUzMzhFQkEzMjNBQjA0QjgwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0
YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87
IH07Ci0JCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3
MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAg
ICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0
cnkuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyog
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9v
cFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBG
MTJBQzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZC
QjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpT
VHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRX
b3JrVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAg
NTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FG
IC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4
MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1
N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQx
MTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRF
MDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFj
Y2Vzc0Nhc2UuaCAqLzsgfTsKQEAgLTM1OTcsNiArMzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4
NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlv
bkFsbG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFF
QjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3Bw
OyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5
QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzBBNjM0MDFGQTNFMzFDMDAyNkE1NDUgLyogU291cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTb3VyY2VzQ29jb2EudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzBBNjM0MTFGQTNFMzFEMDAyNkE1NDUgLyogU291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU291cmNlcy50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2
NkFEMUZBM0U3NzcwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNl
MTQ0LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3
ICszNjI2LDIyIEBACiAJCTUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAw
NEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFj
dFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4
MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3Qjgx
OTEgLyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9k
dWxlLW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3Bv
aW50T1NSRXhpdFNpZGVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4
RUJBMjIzQUIwNEEzMDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0
aCA9IGZ0bC9GVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQy
RkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIz
V2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFD
MzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2
Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8q
IFByb21pc2VUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNl
VGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAw
RjEyQUMxIC8qIFByb21pc2VUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcm9taXNlVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworICAgICAgICAgICAgICAgIDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJl
ZFdvcmtUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdv
cmtUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZF
MDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5
cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNB
RiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAy
ODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rl
c3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMv
VHlwZWRBcnJheUNUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYg
KzcxNDMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VD
YWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBl
LmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5o
ICovLAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5j
cHAgKi8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVy
LmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oICovLAogCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJn
dW1lbnRzLmNwcCAqLywKQEAgLTcxODQsMTEgKzcxOTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJD
RjI1MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuY3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJE
NzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0Ew
MEFDNDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlubGluZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJE
QUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2Vk
RnV6emVyQWdlbnQuY3BwICovLAogCQkJCUNFQ0ZBRDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFMjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBG
aWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICovLAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2
RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRF
NkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJ
CQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLywKIAkJCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5Lmgg
Ki8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAor
CQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlB
N0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgw
QzAwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJD
MjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03
MzQ1LDcgKzczNjIsMTMgQEAKIAkJCQkwRjdERjEzOTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUw
MDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3
QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2
NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUz
M0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAv
KiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBK
U0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkzNzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0Zp
eGVkQXJyYXkuaCAqLywKKwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFy
cmF5LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICovLAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZG
NjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcg
LyogSlNGdW5jdGlvbi5oICovLApAQCAtNzU0NCw5ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2
MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJF
NkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUw
NkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3BwICovLAotCQkJCTUzNDYzODc0MUU3MERERUMw
MEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLywKLQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0Ey
ODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oICovLAogCQkJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUu
aCAqLywKQEAgLTkyODYsNiArOTMwNyw3IEBACiAJCQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0
IC8qIERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
NTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAw
MkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFG
QTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC05NTI2LDkgKzk1NDgsMTEgQEAKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyog
RXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZC
MTAwMjJCRjZEIC8qIEZhc3RKSVRQZXJtaXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJh
c2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFMjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFz
ZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMw
MDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJC
QjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMx
N0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3
MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1
Nyw3ICs5ODgxLDggQEAKIAkJCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJW
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhw
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNF
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUzM0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURD
NjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8qIFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21p
c2VUaW1lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8q
IFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVy
dHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2
RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIz
MTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4
ZDc0YzI3MDUuLjJhMjg3YTdmZGRiMDgwNGYzYjYwMTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc4Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2Vw
dGlvblNjb3BlLmNwcAogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJh
c2VkRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAK
K3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlRHVtcC5jcHAKQEAgLTg1MCw2ICs4NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAogcnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVu
dGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAg
LTkzMiw3ICs5MzUsNyBAQCBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMu
Y3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCi1ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAK
IHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcAogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxODRiYjk0NDQxZDNmYTQzMzQyYWZiZjk2
NjVjYzFiZTczOWVlMDEzLi5kODFhZGVmZjVmODQyNmE4NTMyNDJjNGU3YTE3YjU3YTY1MjFjNmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQu
aCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRl
ICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2
MTIsOCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAg
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJl
Zj4oKnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0
YW5jZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEVycm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0o
KS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5h
bGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBp
ZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDJlMGQwYTMwZGY1ZjY1MzA4ZTdhOWZjZWI5NjQzNGEyOTdmMTgzMTkuLmM5YmVlZDlmYTgy
MzRmMWExMDYyMWYzMTM2MjBiYmNhZjU2MjlkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29tcGlsZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUg
IkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb25maWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJy
ZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNp
bmNsdWRlICJKU0xvY2suaCIKQEAgLTU2LDcgKzU4LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJE
YXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VI
ZWFwQWNjZXNzU2NvcGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0xNTUsNiArMTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIHsKIAorI2RlZmluZSBFWElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVS
Tl9XSVRIX1ZBTFVFIHN0YXRpYyB2b2lkIGpzY0V4aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0
Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBX
b3JrZXJzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21t
YW5kTGluZSYsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNr
RXhjZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRp
b24sIEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBj
aGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhj
ZXB0aW9uLCBKU1ZhbHVlLCBjb25zdCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBj
bGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1
YmxpYzoKQEAgLTMwMiw3ICszMDUsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGll
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlv
blJlZ2lzdHJ5TGl2ZUNvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRz
U2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDgg
KzU0NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0Zv
ckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFpbk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWlu
TWljcm90YXNrcywgMCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZz
IiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwg
InNldFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVvdXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOwor
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50Iiwg
ZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFs
aXphdGlvblJlZ2lzdHJ5RGVhZENvdW50LCAwKTsKKyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiZ2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2Vl
ZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUs
IDEpOwpAQCAtNjM4LDYgKzY0OCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIg
bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNW
YWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBt
b2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1
ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJD
cmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVy
KiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lk
IHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNl
cHRpb24qKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxP
YmplY3QsIEpTR2xvYmFsT2JqZWN0KTsKIApAQCAtNjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNl
UmVqZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29w
LAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBp
bGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIx
ODcsNiArMjIwMCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJh
aW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhN
RTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBk
b24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sg
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9z
KTsKKworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBsb29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRl
ciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBzY2hlZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOwor
ICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2Fs
bGJhY2tdIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNr
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjaywganNVbmRlZmluZWQoKSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2Vl
IHRoaXMuLi4iKTsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdX
b3JrKGNhbGxiYWNrKTsKKyAgICB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVs
ZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0
aW9uUmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5h
bGl6YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lz
dHJ5Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0
cnktPmNlbGxMb2NrKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmlu
YWxpemF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChsb2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFk
Q291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5
ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVu
dCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQo
bG9ja2VyKSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMz
MkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtMjYxNywxMCArMjY3OSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAKICAgICAvLyBXZSBjYW4ndCB1c2UgZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2lu
ZyBjb2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dzCiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRp
b24gSGFuZGxpbmcKLSAgICBpbnQgcmVzID0gMDsKKyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNT
OwogICAgIFRSWQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQ
VChyZXMgPSAzKQorICAgIEVYQ0VQVChyZXMgPSBFWElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6
ZVN0YXRzQXRFbmRPZlRlc3RpbmcoKTsKICAgICBpZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZP
Ul9JTlBVVF9UT19FWElUIikpIHsKICAgICAgICAgV1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigp
OwpAQCAtMjY5MSw3ICsyNzUzLDcgQEAgc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhD
RVBUSU9OCiB9CiAKLXN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5l
JiBvcHRpb25zKQorc3RhdGljIGJvb2wgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFu
ZExpbmUmIG9wdGlvbnMpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5h
bWUgPSBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRpb25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTI3MjMsNyArMjc4NSw3IEBAIHN0YXRpYyBib29s
IGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wm
IHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBAIC0yNzQyLDYgKzI4MDQsMTUgQEAgc3RhdGlj
IHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNM
YXN0RmlsZSwgYm9vbCBoYXMKICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNh
dWdodEV4Y2VwdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDog
SlNWYWx1ZSgpLCBvcHRpb25zKTsKIH0KIAordm9pZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhj
ZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlv
bi0+dmFsdWUoKSk7CisgICAgYm9vbCBoaWRlTm9SZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRl
Tm9SZXR1cm4pCisgICAgICAgIGpzY0V4aXQoRVhJVF9FWENFUFRJT04pOworfQorCiBzdGF0aWMg
dm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExp
bmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlw
dHMgPSBvcHRpb25zLm1fc2NyaXB0czsKQEAgLTMxNzYsNyArMzI0Nyw3IEBAIGludCBydW5KU0Mo
Y29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1
bmMpCiAgICAgICAgIGZ1bmModm0sIGdsb2JhbE9iamVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZt
LmRyYWluTWljcm90YXNrcygpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxv
b3AoKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAg
ICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50
ZXJhY3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZDNhZDIxZTViYzk3ZWE5
NDUwYzZjZTBiNmY3ZTBjNjI1MTdjOTE5OS4uZWNkMDczY2QzZGYyMGU1YTljZmM2ZDIzZTY1ZGU0
YWUwMDQzZTc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJBcnJheSBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoQXJyYXlJdGVyYXRvclByb3RvdHlwZSkgfTsKK2NvbnN0IENs
YXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBcnJheSBJdGVyYXRv
ciBQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUpIH07CiAKIHZvaWQgQXJyYXlJdGVyYXRv
clByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZi
YS4uNzAxZDY3NDdiZGJhZGRjODgyZTBmZmM0MTRjMWE1NzA4MWY5MDUzNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01Nyw2
ICs1Nyw3IEBACiAgICAgbWFjcm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oU3ltYm9sKSBcCiAgICAg
bWFjcm8oV2Vha1JlZikgXAorICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAg
bWFjcm8oX19kZWZpbmVHZXR0ZXJfXykgXAogICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18pIFwK
ICAgICBtYWNybyhfX2xvb2t1cEdldHRlcl9fKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkzZDMxNjRl
MDg5ZDE2M2UzMjYzMzBlODExOGQ4MmMwN2JmZDhjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsx
LDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisK
KyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworbmFtZXNwYWNlIERlZmVycmVkV29ya1RpbWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3Jr
VGltZXIoVk0mIHZtKQorICAgIDogQmFzZSh2bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKFZNJiB2bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7CisgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIo
KTsKKyAgICBpZiAoIW1fcnVuVGFza3MpIHsKKyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7Cisg
ICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJE
b2luZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1h
eSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3Bl
bmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRh
c2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5
UnVubmluZ1Rhc2sgPSB0cnVlOworICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisK
KyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBj
YW4gcmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVyZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3lu
Y2hyb25vdXNKU0V4ZWN1dGlvbigpOworCisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAo
RXhjZXB0aW9uKiBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9u
QXRFdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0u
ZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKKworICAgICAgICAgICAgbV90YXNrTG9jay5sb2Nr
KCk7CisgICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91
bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOworCisgICAgbV90YXNrTG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZl
cnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgpCit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZt
KCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9v
cDo6Y3VycmVudCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91
bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5k
aW5nVGlja2V0cy5zaXplKCkpCisgICAgICAgIFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZl
Y3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNp
ZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lcklu
dGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRl
cih0aWNrZXQpKTsKKyAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2
bSwgdGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRl
cGVuZGVuY2llcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRX
b3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0
aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7CisgICAgfQorfQorCitib29sIERlZmVy
cmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VS
VCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0
dXJuIG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJl
ZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlND
ZWxsKiBkZXBlbmRlbmN5KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFp
bnModGlja2V0KSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRp
Y2tldCk7CisgICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9v
bCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sK
KyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OworICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50
ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2No
ZWR1bGVXb3JrU29vbihUaWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVw
bGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFt
X2N1cnJlbnRseVJ1bm5pbmdUYXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZjZjZjOWNiMzM0NjJjMTJkYTI2
NTAwN2VmMWNkOTU2ZjJhOTE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKworI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU1Byb21pc2U7CitjbGFzcyBWTTsKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgRGVmZXJyZWRXb3JrVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGlt
ZXIgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKKworICAgIHZv
aWQgZG9Xb3JrKFZNJikgZmluYWw7CisKKyAgICB1c2luZyBUaWNrZXQgPSBKU09iamVjdCo7Cisg
ICAgdm9pZCBhZGRQZW5kaW5nV29yayhWTSYsIFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+
PiYmIGRlcGVuZGVuY2llcyk7CisgICAgYm9vbCBoYXNQZW5kaW5nV29yayhUaWNrZXQpOworICAg
IGJvb2wgaGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVu
Y3kpOworICAgIGJvb2wgY2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKKworICAgIHVzaW5nIFRh
c2sgPSBGdW5jdGlvbjx2b2lkKCk+OworICAgIHZvaWQgc2NoZWR1bGVXb3JrU29vbihUaWNrZXQs
IFRhc2smJik7CisKKyAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBm
YWxzZTsgfQorCisgICAgdm9pZCBydW5SdW5Mb29wKCk7CisKKyAgICBzdGF0aWMgUmVmPERlZmVy
cmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGVmZXJyZWRXb3JrVGltZXIodm0pKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
RGVmZXJyZWRXb3JrVGltZXIoVk0mKTsKKworICAgIExvY2sgbV90YXNrTG9jazsKKyAgICBib29s
IG1fcnVuVGFza3MgeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFs
bFRpY2tldHNGaW5pc2ggeyBmYWxzZSB9OworICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayB7IGZhbHNlIH07CisgICAgRGVxdWU8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tz
OworICAgIEhhc2hNYXA8VGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdU
aWNrZXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yzk2ZWI4NGMwMzQ0ZTQ3OWQwNDFhZTY2YjQ5Mzk2Mjk2
OThkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpIH07
CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiX3MsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXph
dGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxGaW5hbGl6YXRpb25SZWdp
c3RyeSwgY29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpCit7Cit9CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaW5hbGl6YXRpb25S
ZWdpc3RyeSIpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICgh
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKworICAgIEpTT2Jq
ZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBT
dHJ1Y3R1cmUqIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlID0gY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpID09IG5ld1RhcmdldAorICAgICAgICA/IGdsb2JhbE9iamVjdC0+ZmluYWxpemF0aW9u
UmVnaXN0cnlTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxt
KHZtLCBuZXdUYXJnZXQpLT5maW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpjcmVhdGUodm0sIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpKSkpOworfQorCit9CisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZTRjNTYzZjgyY2NlODRlN2E5ZjE4ZjZj
NWYzMzAwYWU0MjQ4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU7CisKK2NsYXNzIEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisKKyAgICBzdGF0
aWMgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUs
IEdldHRlclNldHRlciopCisgICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIHByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqKTsKK307CisKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpID09IHNpemVvZihJ
bnRlcm5hbEZ1bmN0aW9uKSk7CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNhM2YyMDNmNzNmYTk3YTAwNmZhNDVjNmM0YmFjM2NhODY3NDUxNDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKKworICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHByb3BlcnR5IG5hbWUgYmVjYXVzZSBp
dCdzIGEgcmVzZXZlcmVkIHdvcmQgaW4gQysrLi4uCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlZ2lzdGVyIiks
IHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5y
ZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQor
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBnZXRGaW5hbGl6
YXRpb25SZWdpc3RyeShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5
IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvKiBncm91cCA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeSo+KHZtLCBhc09iamVjdCh2YWx1ZSkpOworICAgIGlmIChMSUtFTFkoZ3JvdXApKQorICAg
ICAgICByZXR1cm4gZ3JvdXA7CisKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFs
aXphdGlvblJlZ2lzdHJ5IG9iamVjdCJfcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlS
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6
YXRpb25SZWdpc3RyeSh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJy
ZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgYXMgdGhlIHRhcmdldCJfcyk7CisKKyAgICBKU1Zh
bHVlIGhvbGRpbmdzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoc2FtZVZhbHVl
KGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBob2xkaW5ncykpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciBleHBlY3RzIHRoZSB0YXJn
ZXQgb2JqZWN0IGFuZCB0aGUgaG9sZGluZ3MgcGFyYW1ldGVyIGFyZSBub3QgdGhlIHNhbWUuIE90
aGVyd2lzZSwgdGhlIHRhcmdldCBjYW4gbmV2ZXIgYmUgY29sbGVjdGVkIl9zKTsKKworICAgIEpT
VmFsdWUgdW5yZWdpc3RlclRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAgICBpZiAo
IXVucmVnaXN0ZXJUb2tlbi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9r
ZW4iX3MpOworCisgICAgZ3JvdXAtPnJlZ2lzdGVyVGFyZ2V0KHZtLCB0YXJnZXQuZ2V0T2JqZWN0
KCksIGhvbGRpbmdzLCB1bnJlZ2lzdGVyVG9rZW4pOworICAgIHJldHVybiBlbmNvZGVkSlNVbmRl
ZmluZWQoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNGaW5h
bGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IGdyb3VwID0gZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChhdXRvKiB0b2tlbiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBncm91cC0+dW5y
ZWdpc3Rlcih2bSwgdG9rZW4pOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVu
cmVnaXN0cmF0aW9uIHRva2VuIl9zKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDRkZjhkZDI4YjM4YjM4ZDcwNzFjMjYyNzAyZjJmNDgxYzlmOGFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90
eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7IH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCAxOGU4OGQ3YzBjZTRlZTIx
MjlhMzdkODIwMjY4YWNmNjM2MGY1MmFlLi4xYzVmZGY1MGJkMDU4OWI3NmNhZGE0OGY3ZmY1OTAz
ZDcxMjU4OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50
aWZpZXIoVk0mIHZtLCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwog
ICAgIGNoZWNrQ3VycmVudEF0b21TdHJpbmdUYWJsZSh2bSk7CiAgICAgaWYgKCFzdHJpbmcuaXNO
dWxsKCkpCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBz
dHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmlu
Z1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBv
dGhlciB0aHJlYWQhIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5n
dGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0lu
QXRvbVN0cmluZ1RhYmxlKHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0Jm9taWMgc3RyaW5nIGNvbWVz
IGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAppbmRleCAxZTY5YzhlN2M1MWFhOGU4NDdkMDIzMmNkODc0ZjAzMmExY2Qw
NDhjLi41OWIxMmIyZDVkYTY3ZGZiMzQyNWM3MTIxODgxZTEzNzc5NGUwMDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsRGF0
ZVRpbWVGb3JtYXQuaCIKIAotI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRs
T2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzllMTIwYmQ4MDdhNTU5YzUyMDY4OGQ4MmM5NDAwNGNmZjQzNmNj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkRlZmVycmVkV29ya1Rp
bWVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6c19pbmZvID0geyAiRmluYWxpemF0aW9uUmVnaXN0
cnkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTRmluYWxpemF0aW9uUmVnaXN0cnkpIH07CisKK1N0cnVjdHVyZSogSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNP
YmplY3QqIGNhbGxiYWNrKQoreworICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4odm0u
aGVhcCkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGluc3RhbmNlOwor
fQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoY2FsbGJhY2stPmlzQ2FsbGFibGUodm0pKTsKKyAgICBhdXRvIHZhbHVlcyA9IGlu
aXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2YWx1
ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGluZGV4KS5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlc1tpbmRleF0pOworICAgIGludGVybmFsRmllbGQo
RmllbGQ6OkNhbGxiYWNrKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsKK30KKwor
dm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2
aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSo+KGNlbGwpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0
LT5jZWxsTG9jaygpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2JqZWN0LT5t
X2xpdmVSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDog
aXRlci52YWx1ZSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlvbi5ob2xk
aW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogdGhpc09iamVjdC0+
bV9ub1VucmVnaXN0cmF0aW9uTGl2ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0
aW9uLmhvbGRpbmdzKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2JqZWN0LT5t
X2RlYWRSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9sZGluZ3MgOiBpdGVy
LnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworICAgIH0KKyAg
ICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uRGVh
ZCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworCisgICAgc2l6ZV90IHRvdGFs
QnVmZmVyU2l6ZXNJbkJ5dGVzID0gdGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucy5jYXBh
Y2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMp
OjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyArPSB0aGlz
T2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUo
dGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFpclR5cGUpOworICAg
IHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlv
bkxpdmUuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25vVW5yZWdp
c3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyAr
PSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkLmNhcGFjaXR5KCkgKiBzaXplb2Yo
ZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS50YWtlTGFzdCgpKSk7
CisgICAgdmlzaXRvci52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRvdGFsQnVm
ZmVyU2l6ZXNJbkJ5dGVzKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZXN0
cm95KEpTQ2VsbCogdGFibGUpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdp
c3RyeSo+KHRhYmxlKS0+fkpTRmluYWxpemF0aW9uUmVnaXN0cnkoKTsKK30KKwordm9pZCBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCit7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKworICAgIGF1dG8gcmVtb3Zl
RnJvbVZlY3RvciA9IFtdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBwb3NpdGlvbikgeworICAgICAg
ICBzdGQ6OnN3YXAodmVjdG9yW3Bvc2l0aW9uXSwgdmVjdG9yLmxhc3QoKSk7CisgICAgICAgIHJl
dHVybiB2ZWN0b3IudGFrZUxhc3QoKTsKKyAgICB9OworCisgICAgYm9vbCByZWFkaWVkQ2VsbCA9
IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vVW5yZWdpc3RyYXRpb25M
aXZlLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCghbV9ub1VucmVnaXN0cmF0aW9uTGl2
ZVtpXS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJl
Z2lzdHJhdGlvbkxpdmVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAgICAgaWYg
KCF2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0udGFyZ2V0KSkgewor
ICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5hcHBlbmQocmVtb3ZlRnJvbVZlY3Rv
cihtX25vVW5yZWdpc3RyYXRpb25MaXZlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAgICByZWFk
aWVkQ2VsbCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xpdmVSZWdpc3RyYXRp
b25zLnJlbW92ZUlmKFsmXSAoYXV0byYgYnVja2V0KSAtPiBib29sIHsKKyAgICAgICAgQVNTRVJU
KGJ1Y2tldC52YWx1ZS5zaXplKCkpOworCisgICAgICAgIGJvb2wga2V5SXNEZWFkID0gIXZtLmhl
YXAuaXNNYXJrZWQoYnVja2V0LmtleSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBidWNrZXQudmFsdWUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCghYnVja2V0
LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJrZWQoYnVj
a2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAgICBpZiAo
IXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLnRhcmdldCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRp
b25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9sZGluZ3Mp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGRlYWRM
aXN0ID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5hZGQoYnVja2V0LmtleSwgRGVhZFJlZ2lzdHJhdGlv
bnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlYWRMaXN0Lml0ZXJhdG9yLT52YWx1ZS5hcHBl
bmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVhZGllZENlbGwgPSB0cnVlOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0
aW9uTGl2ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiAhYnVja2V0LnZhbHVlLnNpemUoKTsKKyAgICB9KTsKKwor
ICAgIGlmICghdm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpICYmIChy
ZWFkaWVkQ2VsbCB8fCBkZWFkQ291bnQoTm9Mb2NraW5nTmVjZXNzYXJ5KSkpIHsKKyAgICAgICAg
dm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCB0aGlzLCB7IH0pOworICAg
ICAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpKTsK
KyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24odGhpcywgW3Ro
aXNdIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5n
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICAgICAgICAgIHRoaXMtPnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlz
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgd2hpbGUgKEpTVmFsdWUgdmFsdWUgPSB0YWtlRGVh
ZEhvbGRpbmdzVmFsdWUoKSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwor
ICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBj
YWxsYmFjaygpLCBhcmdzLCAiVGhpcyBzaG91bGQgbm90IGJlIHZpc2libGU6IHBsZWFzZSByZXBv
cnQgYSBidWcgdG8gYnVncy53ZWJraXQub3JnIik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTRmluYWxpemF0aW9uUmVn
aXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjZWxsTG9jaygpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAobV9ub1VucmVn
aXN0cmF0aW9uRGVhZC5zaXplKCkpCisgICAgICAgIHJlc3VsdCA9IG1fbm9VbnJlZ2lzdHJhdGlv
bkRlYWQudGFrZUxhc3QoKS5nZXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0g
bV9kZWFkUmVnaXN0cmF0aW9ucy5iZWdpbigpOworICAgICAgICBpZiAoaXRlciA9PSBtX2RlYWRS
ZWdpc3RyYXRpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAg
ICAgQVNTRVJUKGl0ZXItPnZhbHVlLnNpemUoKSk7CisgICAgICAgIHJlc3VsdCA9IGl0ZXItPnZh
bHVlLnRha2VMYXN0KCkuZ2V0KCk7CisgICAgICAgIGlmICghaXRlci0+dmFsdWUuc2l6ZSgpKQor
ICAgICAgICAgICAgbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgfQorCisg
ICAgaWYgY29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXRlci52YWx1ZS5zaXplKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQoVk0mIHZtLCBKU09i
amVjdCogdGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKQoreworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgUmVnaXN0cmF0aW9uIHJlZ2lz
dHJhdGlvbjsKKyAgICByZWdpc3RyYXRpb24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHJlZ2lzdHJh
dGlvbi5ob2xkaW5ncy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGhvbGRpbmdzKTsKKyAgICBpZiAo
dG9rZW4uaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5hcHBl
bmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX2xpdmVSZWdpc3RyYXRpb25zLmFkZChqc1NlY3VyZUNhc3Q8SlNPYmplY3QqPih2bSwg
dG9rZW4pLCBMaXZlUmVnaXN0cmF0aW9ucygpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5hcHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICB9CisgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIodGhpcyk7Cit9CisKK2Jvb2wgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5y
ZWdpc3RlcihWTSYsIEpTT2JqZWN0KiB0b2tlbikKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IHdyaXRlIGJhcnJpZXIgb3Vyc2VsdmVzIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIG9ubHkgcG9pbnQg
dG8gbGVzcyB0aGluZ3MgYWZ0ZXIgdGhpcyBmaW5pc2hlcy4KKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGNlbGxMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9saXZlUmVnaXN0cmF0aW9u
cy5yZW1vdmUodG9rZW4pOworICAgIHJlc3VsdCB8PSBtX2RlYWRSZWdpc3RyYXRpb25zLnJlbW92
ZSh0b2tlbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6bGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7CisgICAg
c2l6ZV90IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXplKCk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBpdGVyIDogbV9saXZlUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291bnQgKz0g
aXRlci52YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3NpemVfdCBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikK
K3sKKyAgICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUoKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICBj
b3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKworU3Ry
aW5nIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6OkpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9zOworfQorCit9
CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MDUxYmZhMGE4YzY3NjM4ZjAzMTE3NGM0M2Iw
NjViNDEyNmEyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU0Rlc3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsPDE+OworCisgICAgZW51bSBj
bGFzcyBGaWVsZCA6IHVpbnQ4X3QgeyAKKyAgICAgICAgQ2FsbGJhY2ssCisgICAgfTsKKworICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFj
aXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5l
Q2FwYWNpdHkgPT0gMFUpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTRmluYWxpemF0aW9uUmVn
aXN0cnkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2U8bW9k
ZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZklu
dGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsK
KyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICB9IH07CisgICAgfQorCisgICAgY29uc3Qg
V3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7
IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkp
OyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxk
KSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVs
ZCkpOyB9CisKKyAgICBKU09iamVjdCogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpDYWxsYmFjaykuZ2V0KCkpOyB9CisKKyAg
ICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
SlNPYmplY3QqIGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSog
Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlKTsKKworICAgIHZvaWQgcnVuRmluYWxpemF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVj
dCopOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoVk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAg
IEpTVmFsdWUgdGFrZURlYWRIb2xkaW5nc1ZhbHVlKCk7CisKKyAgICBib29sIHVucmVnaXN0ZXIo
Vk0mLCBKU09iamVjdCogdG9rZW4pOworICAgIC8vIHRva2VuIHNob3VsZCBiZSBhIEpTT2JqZWN0
IG9yIHVuZGVmaW5lZC4KKyAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0KFZNJiwgSlNPYmplY3QqIHRh
cmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbik7CisKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzaXplX3QgbGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExv
Y2s+Jik7CisKK3ByaXZhdGU6CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTT2JqZWN0KiBjYWxsYmFjayk7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShj
b25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdHJ1Y3QgUmVnaXN0cmF0
aW9uIHsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+IGhvbGRpbmdzOworICAgIH07CisKKyAgICB1c2luZyBMaXZlUmVnaXN0cmF0aW9ucyA9
IFZlY3RvcjxSZWdpc3RyYXRpb24+OworICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIHRhcmdldCBh
bnltb3JlIHNpbmNlIHdlIGtub3cgaXQncyBkZWFkLgorICAgIHVzaW5nIERlYWRSZWdpc3RyYXRp
b25zID0gVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj47CisKKyAgICAvLyBOb3RlIHRoYXQg
d2UgZG9uJ3QgYm90aGVyIHB1dHRpbmcgYSB3cml0ZSBiYXJyaWVyIG9uIHRoZSBrZXkgb3IgdGFy
Z2V0IGJlY2F1c2UgdGhleSBhcmUgd2Vha2x5IHJlZmVyZW5jZWQuCisgICAgSGFzaE1hcDxKU09i
amVjdCosIExpdmVSZWdpc3RyYXRpb25zPiBtX2xpdmVSZWdpc3RyYXRpb25zOworICAgIEhhc2hN
YXA8SlNPYmplY3QqLCBEZWFkUmVnaXN0cmF0aW9ucz4gbV9kZWFkUmVnaXN0cmF0aW9uczsKKyAg
ICBMaXZlUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25MaXZlOworICAgIERlYWRSZWdp
c3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIzNzAwNi4uYWY2
NjgzZTVjZTEzM2RlZjBhNzA0ZDk2YWQ3YzhkMDc3ODg1NGVhOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjEsNiArNjEsOCBA
QAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlv
blJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJG
dW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCIKQEAgLTk5LDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgogI2luY2x1
ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCisjaW5j
bHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKQEAgLTM4Nyw2ICszOTAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0ds
b2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAv
LyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8v
IG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRy
YWNrZXIKKyAgICBudWxscHRyLCAvLyByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29w
CiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGls
ZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0yMTk5
LDYgKzIyMDMsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVldWVNaWNyb3Rhc2soUmVmPE1p
Y3JvdGFzaz4mJiB0YXNrKQogICAgIHZtKCkucXVldWVNaWNyb3Rhc2soKnRoaXMsIFdURk1vdmUo
dGFzaykpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit7Cisg
ICAgZGF0YUxvZ0xuKCJVbmNhdWdodCBFeGNlcHRpb24gYXQgcnVuIGxvb3A6ICIsIGV4Y2VwdGlv
bi0+dmFsdWUoKSk7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldERlYnVnZ2VyKERlYnVn
Z2VyKiBkZWJ1Z2dlcikKIHsKICAgICBtX2RlYnVnZ2VyID0gZGVidWdnZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZGMzMGI4MmU1
NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi40NzRmZGU2NGZmNmNhZTI4M2U5OWU0NmVl
YzgwNTA4MWJjMGY5YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTEzOCw2ICsxMzgsOCBAQCBjb25zdGV4cHIgYm9vbCB0eXBlRXhw
b3NlZEJ5RGVmYXVsdCA9IHRydWU7CiAgICAgbWFjcm8oSlNQcm9taXNlLCBwcm9taXNlLCBwcm9t
aXNlLCBKU1Byb21pc2UsIFByb21pc2UsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwK
ICAgICBtYWNybyhCaWdJbnQsIGJpZ0ludCwgYmlnSW50T2JqZWN0LCBCaWdJbnRPYmplY3QsIEJp
Z0ludCwgb2JqZWN0LCBPcHRpb25zOjp1c2VCaWdJbnQoKSkgXAogICAgIG1hY3JvKFdlYWtPYmpl
Y3RSZWYsIHdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RSZWYsIEpTV2Vha09iamVjdFJlZiwgV2Vh
a1JlZiwgb2JqZWN0LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisgICAgbWFjcm8oRmluYWxp
emF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJlZ2lzdHJ5LCBmaW5hbGl6YXRpb25SZWdpc3Ry
eSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSwgRmluYWxpemF0aW9uUmVnaXN0cnksIG9iamVjdCwg
T3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXAorCiAKICNkZWZpbmUgRk9SX0VBQ0hfQlVJTFRJTl9E
RVJJVkVEX0lURVJBVE9SX1RZUEUobWFjcm8pIFwKICAgICBtYWNybyhTdHJpbmdJdGVyYXRvciwg
c3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0ZXJhdG9yLCBKU1N0cmluZ0l0ZXJhdG9yLCBTdHJpbmdJ
dGVyYXRvciwgaXRlcmF0b3IsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCkBAIC0yMjcsNiArMjI5
LDkgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIHZvaWQg
KCpQcm9taXNlUmVqZWN0aW9uVHJhY2tlclB0cikoSlNHbG9iYWxPYmplY3QqLCBKU1Byb21pc2Uq
LCBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24pOwogICAgIFByb21pc2VSZWplY3Rpb25UcmFj
a2VyUHRyIHByb21pc2VSZWplY3Rpb25UcmFja2VyOwogCisgICAgdHlwZWRlZiB2b2lkICgqUmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGNl
cHRpb24qKTsKKyAgICBSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyIHJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3A7CisKICAgICB0eXBlZGVmIFN0cmluZyAoKkRl
ZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyKSgpOwogICAgIERlZmF1bHRMYW5ndWFnZUZ1bmN0aW9u
UHRyIGRlZmF1bHRMYW5ndWFnZTsKIApAQCAtNDUzLDIxICs0NTgsNiBAQCBwdWJsaWM6CiAgICAg
V2Vha1JhbmRvbSBtX3dlYWtSYW5kb207CiAgICAgUmVnRXhwR2xvYmFsRGF0YSBtX3JlZ0V4cEds
b2JhbERhdGE7CiAKLSAgICBKU0NhbGxlZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0KLQotICAgIElu
bGluZVdhdGNocG9pbnRTZXQmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7
IHJldHVybiBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxp
bmVXYXRjaHBvaW50U2V0JiBtYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1f
c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50
U2V0JiBzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50
U2V0JiBtYXBTZXRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRjaHBvaW50U2V0
OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fc2V0QWRkV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFy
cmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5U3BlY2llc1dhdGNocG9p
bnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUpvaW5XYXRjaHBvaW50U2V0
KCkgeyByZXR1cm4gbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hw
b2ludFNldCYgbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0KCkKLSAgICB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50U2V0OwotICAgIH0KICAgICAvLyBJZiB0aGlzIGhhc24ndCBiZWVu
IGludmFsaWRhdGVkLCBpdCBtZWFucyB0aGUgYXJyYXkgaXRlcmF0b3IgcHJvdG9jb2wKICAgICAv
LyBpcyBub3Qgb2JzZXJ2YWJsZSB0byB1c2VyIGNvZGUgeWV0LgogICAgIElubGluZVdhdGNocG9p
bnRTZXQgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OwpAQCAtNDk0LDYgKzQ4
NCwyMyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZUFk
ZFdhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX251bWJlclByb3RvdHlwZVRv
U3RyaW5nV2F0Y2hwb2ludDsKIAorcHVibGljOgorICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93
RnJhbWVDYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5n
ZXQoKTsgfQorCisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsg
fQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0KCkgeyByZXR1cm4gbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAg
IElubGluZVdhdGNocG9pbnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
KCkgeyByZXR1cm4gbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAg
IElubGluZVdhdGNocG9pbnRTZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21h
cFNldFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5l
V2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5
Sm9pbldhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0K
KyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOworICAgICAg
ICByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7CisgICAgfQorCiAgICAgYm9v
bCBpc0FycmF5UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7
CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2
YWJsZSgpOwogICAgIGJvb2wgaXNTZXRQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5v
bk9ic2VydmFibGUoKTsKQEAgLTgyNCw2ICs4MzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRV
bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhWTSYgdm0sIEpTT2JqZWN0KiBmdW5jdGlvbikgeyBt
X3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLnNldCh2bSwgZnVuY3Rpb24pOyB9CiAgICAgSlNP
YmplY3QqIHVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV91bmhh
bmRsZWRSZWplY3Rpb25DYWxsYmFjay5nZXQoKTsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiop
OworCiAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9CiAKICAgICBKU09i
amVjdCogYXJyYXlCdWZmZXJQcm90b3R5cGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5n
TW9kZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaAppbmRleCBlMjU3YTFkZjYwMGIyYThlZDQ3NWI3
ZTg5MzZlODRjYTQ4NWIyNWIxLi42ZjA3ODEwZWUwNjY0MWQ0MDQyMzljMzQ0MmU5MDEzMTFiZTg4
ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFs
RmllbGRPYmplY3RJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oCkBAIC0zMCwxMiArMzAsMTEgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAvLyBUaGlzIGlzIHVzZWQgZm9yIHNoYXJpbmcgaW50ZXJmYWNlIGFuZCBpbXBsZW1l
bnRhdGlvbi4gSXQgc2hvdWxkIG5vdCBoYXZlIGl0cyBvd24gY2xhc3NJbmZvLgotdGVtcGxhdGU8
dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDE+Ci1jbGFzcyBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewordGVtcGxhdGU8
dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDEsIHR5cGVuYW1lIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0PgorY2xhc3MgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA6IHB1
YmxpYyBCYXNlIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCi0gICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkludGVybmFsRmllbGRzID0gcGFzc2VkTnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KQEAgLTc2LDQgKzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiBtX2ludGVybmFsRmllbGRzW251bWJlck9mSW50ZXJuYWxGaWVsZHNdIHsgfTsKIH07
CiAKK3RlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAxPgor
dXNpbmcgSlNEZXN0cnVjdGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGw8cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcywgSlNEZXN0cnVjdGli
bGVPYmplY3Q+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5s
aW5lcy5oCmluZGV4IDhmMDNjOGE2ZGIxYmQ1NzUwZTY4NTk4ZTIxYzlhZTFiMzEzYzg1ZTEuLmU2
YTYxZTFkOWJkNDFiMzliYmE2MDkzN2ZlODVkYTliMTg0ZmQ4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbElubGluZXMuaApAQCAtMjksMTEgKzI5LDExIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci10ZW1wbGF0ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzPgotdm9pZCBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit0ZW1wbGF0
ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzLCB0eXBlbmFtZSBCYXNlPgor
dm9pZCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVs
ZHMsIEJhc2U+Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgQmFz
ZTo6aW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1faW50ZXJuYWxGaWVsZHMs
IG51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggODgzMDgzZWNiNzY3ZDA4ODNmOWE0OTIxZjM5OWY1OTA4
ODEzY2ZkZi4uNGYzNGI2YjQ5Y2E4OWU2NjhjYjlhMjY3MTAzMjNjYWUxNzg2NGI0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC0yNywxMSArMjcs
MTEgQEAKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKLSNpbmNs
dWRlICJQcm9taXNlVGltZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE2OCw3ICsxNjgs
NyBAQCB2b2lkIEpTUHJvbWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2
YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
fQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAg
dm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lk
IEpTUHJvbWlzZTo6cmVqZWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZWplY3Qo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAg
ICAgIGNhbGxGdW5jdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlamVj
dFByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2Vs
UGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBl
bmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0QXNIYW5kbGVkKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDhlZmQyYjAwODQzMDI2MjYxODU5ODE5NTg5Zjc4NGNiYmQzNjNk
MDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgi
Ci0KLSNpbmNsdWRlICJKU1Byb21pc2UuaCIKLSNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgSlND
IHsKLQotbmFtZXNwYWNlIFByb21pc2VUaW1lckludGVybmFsIHsKLXN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Ci19Ci0KLVByb21pc2VUaW1lcjo6UHJvbWlzZVRpbWVyKFZN
JiB2bSkKLSAgICA6IEJhc2Uodm0pCi17Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmso
Vk0mIHZtKQotewotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKLSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAgICBjYW5jZWxUaW1lcigpOwotICAgIGlmICgh
bV9ydW5UYXNrcykgewotICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9n
TG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24gcHJvbWlz
ZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJl
YWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgotICAgICAgICBpZiAobV9wZW5kaW5nUHJvbWlz
ZXMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgcnVu
IG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKLQotICAgICAgICAg
ICAgdGFzaygpOwotICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICAgICAg
ICAgIG1fdGFza0xvY2subG9jaygpOwotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2Vz
LmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKQot
ICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwotCi0gICAgbV90YXNrTG9jay51bmxv
Y2soKTsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3AoKQotewotICAgIEFTU0VS
VCghbV9hcGlMb2NrLT52bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgpLT5ydW5Mb29w
KCkpOwotICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggPSB0cnVl
OwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpCi0gICAgICAgIFJ1bkxvb3A6OnJ1
bigpOwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UoVk0mIHZtLCBK
U1Byb21pc2UqIHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykK
LXsKLSAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwotCi0gICAgYXV0byBy
ZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2Vs
bD4+KCkpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5J
ZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5k
KFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRh
TG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5k
ZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMpOwotICAgIH0KLX0K
LQotYm9vbCBQcm9taXNlVGltZXI6Omhhc1BlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0
KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCk7Ci19
Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShKU1By
b21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQotewotICAgIEFTU0VSVCh0aWNrZXQt
PnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJUKG1fcGVu
ZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX3Bl
bmRpbmdQcm9taXNlcy5nZXQodGlja2V0KTsKLSAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRl
cGVuZGVuY3kpOwotfQotCi1ib29sIFByb21pc2VUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2Uo
SlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21p
c2VzLnJlbW92ZSh0aWNrZXQpOwotCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xu
SWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwg
UmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgUHJv
bWlzZVRpbWVyOjpzY2hlZHVsZVdvcmtTb29uKEpTUHJvbWlzZSogdGlja2V0LCBUYXNrJiYgdGFz
aykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKLSAgICBtX3Rhc2tzLmFw
cGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7Ci0gICAgaWYgKCFp
c1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQotICAgICAgICBzZXRUaW1l
VW50aWxGaXJlKDBfcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2E0ZDBmMjlhZTJkMjhjZjNlNDA0YmVmYjU0NmY1M2NkMGJiYWU5Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9taXNlVGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNQcm9taXNlOwot
Y2xhc3MgVk07Ci1jbGFzcyBKU0NlbGw7Ci0KLWNsYXNzIFByb21pc2VUaW1lciBmaW5hbCA6IHB1
YmxpYyBKU1J1bkxvb3BUaW1lciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9v
cFRpbWVyOwotCi0gICAgdm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsKLQotICAgIHZvaWQgYWRkUGVu
ZGluZ1Byb21pc2UoVk0mLCBKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVw
ZW5kZW5jaWVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1BlbmRpbmdQcm9taXNl
KEpTUHJvbWlzZSogdGlja2V0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBKU0NlbGwqIGRlcGVuZGVu
Y3kpOwotICAgIC8vIEpTUHJvbWlzZSBzaG91bGQgaGFuZGxlIGNhbmNlbGluZyB3aGVuIHRoZSBw
cm9taXNlIGlzIHJlc29sdmVkIG9yIHJlamVjdGVkLgotICAgIGJvb2wgY2FuY2VsUGVuZGluZ1By
b21pc2UoSlNQcm9taXNlKik7Ci0KLSAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsK
LSAgICB2b2lkIHNjaGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiwgVGFzayYmKTsKLQotICAgIHZv
aWQgc3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJ1blJ1bkxvb3AoKTsKLQotICAgIHN0YXRpYyBSZWY8UHJvbWlz
ZVRpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUHJvbWlzZVRpbWVyKHZtKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFByb21pc2VUaW1l
cihWTSYpOwotCi0gICAgSGFzaE1hcDxKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+
PiBtX3BlbmRpbmdQcm9taXNlczsKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgYm9vbCBtX3J1
blRhc2tzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9t
aXNlc0ZpbmlzaCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsg
ZmFsc2UgfTsKLSAgICBWZWN0b3I8c3RkOjp0dXBsZTxKU1Byb21pc2UqLCBUYXNrPj4gbV90YXNr
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhY2IzNGM5ZDNkYjI2ZTU4YTYx
ZmZkYjMxNzE3YTUxZTY4MzFmYzVkLi4zODU3Yjc1MGUyMmJmNzkyNmQwZWNmM2Q0Nzk2MjA5ODU0
NWQ3ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcApAQCAtMzIsNiArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQogCituYW1lc3BhY2UgU3RydWN0dXJlSURUYWJsZUludGVybmFsIHsKK2Jv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQorCiBTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJRFRh
YmxlKCkKICAgICA6IG1fdGFibGUobWFrZVVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0Pihz
X2luaXRpYWxTaXplKSkKICAgICAsIG1fc2l6ZSgxKQpAQCAtMTYxLDExICsxNjUsMTQgQEAgU3Ry
dWN0dXJlSUQgU3RydWN0dXJlSURUYWJsZTo6YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5lbmNvZGVkU3RydWN0dXJlQml0cyA9IGVu
Y29kZShzdHJ1Y3R1cmUsIHJlc3VsdCk7CiAgICAgbV9zaXplKys7CiAgICAgQVNTRVJUKCFpc051
a2VkKHJlc3VsdCkpOworCisgICAgZGF0YUxvZ0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVybmFs
Ojp2ZXJib3NlLCAiQWxsb2NhdGVkIFN0cnVjdHVyZUlEICIsIHJlc3VsdCwgIiBmb3IgU3RydWN0
dXJlICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
dm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQogeworICAgIGRhdGFMb2dMbklmKFN0cnVjdHVyZUlE
VGFibGVJbnRlcm5hbDo6dmVyYm9zZSwgIkRlYWxsb2NhdGVkIFN0cnVjdHVyZUlEICIsIHN0cnVj
dHVyZUlEKTsKICAgICBBU1NFUlQoc3RydWN0dXJlSUQgIT0gc191bnVzZWRJRCk7CiAgICAgdWlu
dDMyX3Qgc3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9mRW50cm9weUJp
dHM7CiAgICAgQVNTRVJUKHN0cnVjdHVyZUluZGV4ICYmIHN0cnVjdHVyZUluZGV4IDwgc19tYXhp
bXVtTnVtYmVyT2ZTdHJ1Y3R1cmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCA4Y2FhNDhjMWJlMzExYjVkODdlODYwMzhiYTBmNDA0MTgzODg4YzJhLi43ODM2ZjczZTkz
YWY0MjQyMTc3MjU0NjViN2IxYzJmN2RjMjBmMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJT
Y29wZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmgiCiAjaW5j
bHVkZSAiRXJyb3JJbnN0YW5jZS5oIgpAQCAtODgsNiArODksNyBAQAogI2luY2x1ZGUgIkpTQ2Fs
bGVlLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CkBAIC0xMzMsNyArMTM1LDYgQEAKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgi
Ci0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFi
bGUuaCIKICNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5nRnV6
emVyQWdlbnQuaCIKQEAgLTM2NSw3ICszNjYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAg
ICAsIGNsaWVudERhdGEobnVsbHB0cikKICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKICAg
ICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCi0gICAgLCBwcm9taXNlVGlt
ZXIoUHJvbWlzZVRpbWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgZGVmZXJyZWRXb3JrVGltZXIo
RGVmZXJyZWRXb3JrVGltZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJs
ZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgp
IDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAg
ICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKQEAgLTU3NSw3ICs1NzYsNyBAQCBWTTo6flZNKCkK
ICAgICBhdXRvIGRlc3RydWN0aW9uTG9ja2VyID0gaG9sZExvY2soc19kZXN0cnVjdGlvbkxvY2su
cmVhZCgpKTsKICAgICAKICAgICBHaWdhY2FnZTo6cmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxi
YWNrKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjaywgdGhpcyk7Ci0gICAgcHJvbWlz
ZVRpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CisgICAgZGVmZXJyZWRXb3JrVGltZXItPnN0b3BS
dW5uaW5nVGFza3MoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKFdhc206Oldv
cmtsaXN0KiB3b3JrbGlzdCA9IFdhc206OmV4aXN0aW5nV29ya2xpc3RPck51bGwoKSkKICAgICAg
ICAgd29ya2xpc3QtPnN0b3BBbGxQbGFuc0ZvckNvbnRleHQod2FzbUNvbnRleHQpOwpAQCAtMTQ4
Nyw2ICsxNDg4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdl
YWtNYXBTcGFjZSwgd2Vha01hcEhlYXBDZWxsVHlwZS5nZXQoKSwKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1dpdGhTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFw
cGVyT2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tG
dW5jdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6
MHgxMGY2MTBiOApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNjBmNTk3MjlmZWMy
ZTAyZTY5NzZjMzFlZDUxYjE0OGE1YzZlYWEwNS4uMzdjMGZmYzk2NDc3NmU0OGI2MmZmMWE2NjZl
MGE4MzY5YWJlZmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNTksNyAr
MTU5LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKIGNsYXNzIE9iakNDYWxsYmFja0Z1bmN0
aW9uOwotY2xhc3MgUHJvbWlzZVRpbWVyOworY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFz
cyBSZWdFeHA7CiBjbGFzcyBSZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwpAQCAtNTUwLDYg
KzU1MCw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2Vha09iamVjdFJlZlNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIod2Vha1NldFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2Vha01hcFNwYWNlKQpAQCAtNzA5LDggKzcxMCw4IEBAIHB1YmxpYzoKICAgICBXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+IG1fc2xvd0JvdW5kRXhlY3V0YWJsZTsKICAgICBXZWFrPE5hdGl2ZUV4
ZWN1dGFibGU+IG1fc2xvd0NhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsKIAotICAgIFJlZjxQ
cm9taXNlVGltZXI+IHByb21pc2VUaW1lcjsKLSAgICAKKyAgICBSZWY8RGVmZXJyZWRXb3JrVGlt
ZXI+IGRlZmVycmVkV29ya1RpbWVyOworCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGlu
Z0NhbGxiYWNrT2JqZWN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY3VycmVudGx5RGVzdHJ1Y3Rp
bmdDYWxsYmFja09iamVjdENsYXNzSW5mbyB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAppbmRleCA1ZGE2OTZkNjk3ZGQ0
NzUwNWQ3ZGM1MmI2MDZlMzE3NzRhNGUyNjVkLi5hZjQyZDhkNTcwOWYyMDZhN2E3ODcwOGY2NWQ3
ZTUwYjU1OGU2MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFy
cmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCisjaW5jbHVkZSAiRGVmZXJy
ZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0NCdWls
dGlucy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIgpAQCAtNDEsNyArNDIs
NiBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJQcm9taXNlVGlt
ZXIuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKQEAgLTEzNCwxMCArMTM0LDEwIEBAIHN0
YXRpYyB2b2lkIHdlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRl
bmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFs
T2JqZWN0KSk7CiAKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBw
cm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVy
LT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAog
ICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUo
c291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3By
b21pc2UsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0
JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdv
cmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXIt
PnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNWYWx1ZSBtb2R1
bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKQEAgLTIx
NCwxMSArMjE0LDExIEBAIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlCiAgICAgLy8gVGhlIGluc3Rh
bmNlIGtlZXBzIHRoZSBtb2R1bGUgYWxpdmUuCiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJv
bmc8SlNDZWxsPih2bSwgaW5zdGFuY2UpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9u
ZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBl
bmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKICAgICAvLyBOb3RlOiBUaGlzIGNvbXBsZXRpb24gdGFzayBtYXkgb3Ig
bWF5IG5vdCBnZXQgY2FsbGVkIGltbWVkaWF0ZWx5LgogICAgIG1vZHVsZS0+bW9kdWxlKCkuY29t
cGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgY3JlYXRl
U2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGluc3Rh
bmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZt
XSAoUmVmPFdhc206OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUgewogICAgICAg
ICBSZWZQdHI8V2FzbTo6Q29kZUJsb2NrPiBjb2RlQmxvY2sgPSBXVEZNb3ZlKHJlZkNvZGVCbG9j
ayk7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBb
cHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3Jl
YXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21p
c2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5k
LCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2RlQmxvY2spXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0
YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICByZXNvbHZlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgY29kZUJsb2NrLnJl
bGVhc2VOb25OdWxsKCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsK
QEAgLTIzMywxMyArMjMzLDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzCiAgICAgVmVjdG9y
PFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChT
dHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVu
ZChTdHJvbmc8SlNDZWxsPih2bSwgbW9kdWxlS2V5Q2VsbCkpOwotICAgIHZtLnByb21pc2VUaW1l
ci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7
CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBX
VEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNy
ZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZ2xvYmFsT2JqZWN0LCBidWZmZXIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChnbG9iYWxPYmplY3QsIHNjb3BlLCBw
cm9taXNlKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250
ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxs
YmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9i
amVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxp
ZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVy
LT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVs
ZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCByZXNvbHZl
S2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2Jq
ZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEpT
V2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0
dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVj
dHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkKQEAgLTI2OCwxMCArMjY4LDEwIEBAIHN0YXRpYyB2b2lkIHdlYkFzc2Vt
Ymx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7CiAgICAgZGVw
ZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAg
dm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmso
dm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6
OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNo
YXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
ICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlN
b2R1bGU6OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKQEAgLTMzOSw3ICszMzksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFs
KEpTR2xvYmFsT2JqZWN0KgogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNp
ZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2Jq
ZWN0KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlz
ZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRk
UGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBp
ZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFt
aW5nKQogICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNv
bXBpbGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iagogICAgICAg
ICAgICAgICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgICAgICAg
ICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVj
dCkpOwogICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4o
dm0sIGltcG9ydE9iamVjdCkpOwotICAgICAgICAgICAgICAgIHZtLnByb21pc2VUaW1lci0+YWRk
UGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAg
ICAgICAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9t
aXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzE4NDg4OD4gaWYgdGhlcmUncyBhbiBpbXBvcnRPYmplY3Qg
YW5kIGl0IGNvbnRhaW5zIGEgTWVtb3J5LCB0aGVuIHdlIGNhbiBjb21waWxlIHRoZSBtb2R1bGUg
d2l0aCB0aGUgcmlnaHQgbWVtb3J5IHR5cGUgKGZhc3Qgb3Igbm90KSBieSBsb29raW5nIGF0IHRo
ZSBtZW1vcnkncyB0eXBlLgogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+aW5zdGFudGlhdGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBwcm9t
aXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBpbXBvcnRPYmplY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCmlu
ZGV4IDQ4OTQ5YmY2ZWMyODBmZWYyNzNmMDQwNmVkMWNkMTA3ZDljNTVjZjIuLjgxN2Y3OTQ3MDY4
MzhlMThhNDIwNTk4YjJlNzI4NTVjYTI1ZTRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKQEAgLTI4LDggKzI4
LDggQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8u
aCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgot
I2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1
ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCkBAIC00OSw3ICs0OSw3
IEBAIGNsYXNzIFBsYW47CiBjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
IAogICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjcmVhdGUoVk0mLCBSZWY8V2Fz
bTo6Q29kZUJsb2NrPiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiwgUmVmPFdhc206OkNvZGVC
bG9jaz4mJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGQyOGU1MDlkYjAxYzcwMTBkZDc3
ZTJmZWJjMzVjNzk4OWFkZDdhMzIuLjAzOWVmODIzMGE4NmI2MTM1Y2VlYmRlNDNjM2ExMzcwNWRj
Zjk3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAKQEAgLTIzNCw2ICsyMzQsMTEgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cHJv
bWlzZVJlamVjdGlvblRyYWNrZXIoSlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LAogICAg
IH0KIH0KIAordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25B
dEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0aW9u
KiBleGNlcHRpb24pCit7CisgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2JqZWN0LCBleGNl
cHRpb24pOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKIHsK
ICAgICBjbGFzcyBHZXRDYWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGQyOTg1OGNmYTRiMGJl
MGQ2MjEzOTBhODNkNzZkNWE4NTBiOWQyODAuLjczODY3ZDZhYjJlNWI0ZGJiNzBiNzBhOWEzNjA5
NDg0OWYwY2VlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICBKU0J1aWx0aW5JbnRl
cm5hbEZ1bmN0aW9ucyYgYnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkgeyByZXR1cm4gbV9idWls
dGluSW50ZXJuYWxGdW5jdGlvbnM7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0
RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopOwog
CiBwdWJsaWM6CiAgICAgfkpTRE9NR2xvYmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA4ODMyMTNlOTA2MWYzOGI4YmI0
MzM1NzliMjk4NjA5ODc3ODRlNzgyLi5hY2VhNzY2YWYxYzdkNWZlZWFlMTdhNjlmOWUzYjM1Y2Rl
ZTlhODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvZGVC
bG9jay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1dlYkFzc2VtYmx5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
TWljcm90YXNrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9M
YW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03OCw2ICs3OCw3IEBA
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVBy
b3BlcnRpZXMsCiAgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRlLAogICAgICZwcm9taXNlUmVqZWN0
aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAg
ICAmZGVmYXVsdExhbmd1YWdlLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAmY29tcGls
ZVN0cmVhbWluZywKQEAgLTQ0Myw4ICs0NDQsOCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6Y29t
cGlsZVN0cmVhbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Sgog
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJUKHZtLnByb21p
c2VUaW1lci0+aGFzUGVuZGluZ1Byb21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VSVCh2bS5wcm9t
aXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9i
amVjdCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmso
cHJvbWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5j
eUluUGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpZiAoYXV0byBp
bnB1dFJlc3BvbnNlID0gSlNGZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJjZSkpIHsK
ICAgICAgICAgaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmplY3QsIGlu
cHV0UmVzcG9uc2UsIHByb21pc2UsIFtwcm9taXNlXSAoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVTaXplKSBtdXRh
YmxlIHsKQEAgLTQ2MSw5ICs0NjIsOSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlh
dGVTdHJlYW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1l
ci0+aGFzUGVuZGluZ1Byb21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VSVCh2bS5wcm9taXNlVGlt
ZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9iamVjdCkp
OwotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9t
aXNlKHByb21pc2UsIGltcG9ydGVkT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29y
a1RpbWVyLT5oYXNQZW5kaW5nV29yayhwcm9taXNlKSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVk
V29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBnbG9iYWxPYmpl
Y3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBl
bmRpbmdXb3JrKHByb21pc2UsIGltcG9ydGVkT2JqZWN0KSk7CiAKICAgICBpZiAoYXV0byBpbnB1
dFJlc3BvbnNlID0gSlNGZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJjZSkpIHsKICAg
ICAgICAgaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmplY3QsIGlucHV0
UmVzcG9uc2UsIHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRlZE9iamVjdF0gKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBi
eXRlU2l6ZSkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAppbmRleCA0OWRmNDM5MDU3ZGY1OWQyOTRkNDg0YTk0
ZjI5YjUyNDBmODg2MTgxLi5kY2U3MzgyMGJiYmZkOWI5NWM1ODc5ZDEzZWY2NWVhYjk4YTkwNDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRv
d0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2lu
ZG93QmFzZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNSZW1vdGVET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0KICAg
ICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAg
IG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlz
ZVJlamVjdGlvblRyYWNrZXIKKyAgICBudWxscHRyLCAvLyByZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0
ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFt
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZS5jcHAKaW5kZXggNTM3NmU4MGQwMDA1Mzc3NjI1ODJhYTI1YmU5MWQxMmE4ZjU5
N2VjNC4uYzQ0ZjJmYjNhMGIwNWRhYWIxYThhOWUyZjg5YjUyZDg1MWViNDM2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcApAQCAtNjUsNiArNjUsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZQogICAgIG51bGxw
dHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0
ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIs
CisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRM
YW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwg
Ly8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDA5NjVhODZjNDE4YmU2
MWU2MmUxZmZkYWM2Y2ZlOGJhZjZiNGQ2ZWUuLmIxNGI4MTU0MmRiODg5ZWM2ZDI1OWJjNWI3MGVm
MmE1MDk5Yzk2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNTcsNiArNTcsNyBAQCBjb25zdCBHbG9i
YWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibAogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1l
dGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAm
cHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxl
U3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
aW5kZXggOTMxY2VlNzc3OWJmOTYxNDM4ZTgyMDE1MGM3YTdmOGFiNDY3NTU0Ny4uNzE2YjFhNjli
OGVlYzFkYTY0NzIwMWE0MzI2OTJiMzM4OTdlYjc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM3LDEyICsz
NywxMiBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4
Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2Fs
bGJhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJv
bWlzZVRpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjphZGRUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVy
OjpUaW1lck4KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxi
YWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNr
KCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIucHRyKCkpOworICAgIHBy
b2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7CiB9CiAKIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1
bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKQEAgLTI2NSw3
ICsyNjUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90
aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbQogCiAgICAgcHJvY2Vzc1RpbWVyKG1f
dm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7CiAgICAgcHJvY2Vzc1RpbWVyKG1fdm0t
PmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPnBy
b21pc2VUaW1lci5wdHIoKSk7CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1Rp
bWVyLnB0cigpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1
Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwCmluZGV4IGVjMDdhYzQ2MzUwZDJhMzQyOWVhMDk4NzRlM2ZkZjJkZmRhOWU0
NTEuLjY2ZWNkNTM2ZjgxM2QwMjljNDk3ZjFhZWE3ZjIxOWVkZmM3NWIzNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1
ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VU
aW1lci5oPgogCiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZh
ODhjYWExNDRhZTI3ZmM3YzFmMmQ1ZjMzYmNkMTA4Y2MxMjBhOWUuLjIwYTZmODU2MTg1OGFkZmJl
MmUyYmMxOGViZjcxNTBiOTdhZDE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM3LDExICszNywxMSBAQAogI2lu
Y2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50LmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGlt
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZGQyOTJlMTEwMTU3MmUyYjIyZmM4YmJlMjNkNTFiNzlkMjQ5YjA5MS4uNWZjOGQwNTRj
NjVmNmQyN2QzNTM5NDk5YmQ4ZGI1M2ZiMTFhNWEzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy93ZWFr
cmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKG1ha2VXZWFrUmVm
KToKKyAgICAgICAgKHR1cm5FdmVudExvb3ApOgorICAgICAgICAoYXN5bmMgdGVzdCk6CisgICAg
ICAgICoganMvdW50aXRsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvd2Vha3JlZi1maW5h
bGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWty
ZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbDogQWRkZWQuCisKIDIwMjAtMDctMTcgIExhdXJv
IE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBHYXJkZW4g
c3ZnIGZhaWx1cmVzIGFuZCB1bmlmeSBzb21lIHN2ZyBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5
LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVn
aXN0cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2NjUzYmE5MDljMWIyZGM4ZGFlMDFkMTAyZWE0OTNlYjY5
ODliNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFr
cmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz10cnVlIikKKworYXN5bmNUZXN0U3RhcnQoMSk7Cit2YXIg
b2JqZWN0cyA9IFtdOwordmFyIHdlYWtSZWZzID0gW107Cit2YXIgZmluYWxpemVyQ2FsbGVkID0g
ZmFsc2U7Cit2YXIgZmluYWxpemF0aW9uUmVnaXN0cnkgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoKCkgPT4gZmluYWxpemVyQ2FsbGVkID0gdHJ1ZSk7CitmdW5jdGlvbiBtYWtlV2Vha1JlZigp
IHsgcmV0dXJuIG5ldyBXZWFrUmVmKHsgZm9vOiAxIH0pOyB9Citub0lubGluZShtYWtlV2Vha1Jl
Zik7CisKK2xldCBsb29wQ291bnQgPSAxMDAwOworZnVuY3Rpb24gdHVybkV2ZW50TG9vcCgpIHsK
KyAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgIH0sIDApOworICAgIH0pOworfQorCit2YXIgaTsKK2FzeW5jIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb29wQ291bnQ7IGkrKykgeworICAgICAg
ICBsZXQgd2VhayA9IG1ha2VXZWFrUmVmKCk7CisgICAgICAgIHdlYWtSZWZzLnB1c2god2Vhayk7
CisgICAgICAgIG9iamVjdHMucHVzaCh3ZWFrLmRlcmVmKCkpOworICAgICAgICBmaW5hbGl6YXRp
b25SZWdpc3RyeS5yZWdpc3Rlcih3ZWFrLmRlcmVmKCkpOworICAgIH0KKworICAgIGF3YWl0IHR1
cm5FdmVudExvb3AoKTsKKworICAgIHNob3VsZEJlRmFsc2UoYGZpbmFsaXplckNhbGxlZGApOwor
ICAgIGZvciAoaSA9IDA7IGkgPCBsb29wQ291bnQ7IGkrKykKKyAgICAgICAgc2hvdWxkQmUoYHdl
YWtSZWZzW2ldLmRlcmVmKClgLCBgb2JqZWN0c1tpXWApOworCisgICAgb2JqZWN0cy5sZW5ndGgg
PSAwOworICAgIG9iamVjdHMgPSBudWxsOworCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOwor
ICAgIC8vIFdlIG5lZWQgdG8gdHVybiB0aGUgZXZlbnQgbG9vcCBhZ2FpbiBzaW5jZSBGUiBtYXkg
bm90IGhhdmUgY2FsbGVkIHRoZSBjYWxsYmFjayBpbiB0aGUgbGFzdCB0dXJuLgorICAgIGF3YWl0
IHR1cm5FdmVudExvb3AoKTsKKworICAgIHNob3VsZEJlVHJ1ZShgZmluYWxpemVyQ2FsbGVkYCk7
CisgICAgc2hvdWxkQmVUcnVlKGB3ZWFrUmVmcy5zb21lKCh3ZWFrUmVmKSA9PiB3ZWFrUmVmLmRl
cmVmKCkgPT09IG51bGwpYCk7CisKKyAgICBhc3luY1Rlc3RQYXNzZWQoKTsKK30KKwordGVzdCgp
LmNhdGNoKGUgPT4gZGVidWcoZSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvdW50aXRs
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2pzL3VudGl0bGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwZTFj
YjcwNWE5ZDc3OTA4MDRjNjk4NTI3Yzg0MzIxM2Q0YWQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3VudGl0bGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsganNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlv
bi1yZWdpc3RyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEzY2E2NWMzOGQyNDgyZTdmMjlkYTdiMTViNmVhYjI2M2YyYTE5NGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwMDcgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBmaW5hbGl6ZXJDYWxsZWQgaXMgZmFsc2UK
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIGZpbmFsaXpl
ckNhbGxlZCBpcyB0cnVlCitQQVNTIHdlYWtSZWZzLnNvbWUoKHdlYWtSZWYpID0+IHdlYWtSZWYu
ZGVyZWYoKSA9PT0gbnVsbCkgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy93
ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVm
LWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkN2NmNDdkNGEzNDE2OThi
ZDBkNTVlZDZhODg5MGJmZTQxMjc0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dlYWtyZWYtZmlu
YWxpemF0aW9ucmVnaXN0cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxOWM4NWI2MmNi
YzFjMDE2MGNjNzk3MWY3MjM3NmMzOTVjNzRmNGQ1Li45ZGVmYWM0ZmM3NmIzNGFmYTdhNDM2YjQw
YzUwNDFkMzViNjFhMWVmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVy
ICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmlu
YWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanM6IEFkZGVkLgorICAg
ICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25F
cnJvci5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoY2xh
c3NPZik6CisgICAgICAgIChWYWx1ZU9mKToKKyAgICAgICAgKHByZXR0eVByaW50ZWQpOgorICAg
ICAgICAocHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCk6CisgICAgICAgIChmYWlsV2l0aE1lc3Nh
Z2UpOgorICAgICAgICAoZm9ybWF0RmFpbHVyZVRleHQpOgorICAgICAgICAoZmFpbCk6CisgICAg
ICAgIChkZWVwT2JqZWN0RXF1YWxzKToKKyAgICAgICAgKGRlZXBFcXVhbHMpOgorICAgICAgICAo
YXNzZXJ0U2FtZSk6CisgICAgICAgIChhc3NlcnROb3RTYW1lKToKKyAgICAgICAgKGFzc2VydEVx
dWFscyk6CisgICAgICAgIChhc3NlcnROb3RFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0RXF1YWxz
RGVsdGEpOgorICAgICAgICAoYXNzZXJ0QXJyYXlFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0UHJv
cGVydGllc0VxdWFsKToKKyAgICAgICAgKGFzc2VydFRvU3RyaW5nRXF1YWxzKToKKyAgICAgICAg
KGFzc2VydFRydWUpOgorICAgICAgICAoYXNzZXJ0RmFsc2UpOgorICAgICAgICAoYXNzZXJ0TnVs
bCk6CisgICAgICAgIChhc3NlcnROb3ROdWxsKToKKyAgICAgICAgKGV4ZWN1dGVDb2RlKToKKyAg
ICAgICAgKGNoZWNrRXhjZXB0aW9uKToKKyAgICAgICAgKGFzc2VydFRocm93cyk6CisgICAgICAg
IChhc3NlcnRUaHJvd3NFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0VGhyb3dzQXN5bmMpOgorICAg
ICAgICAoYXNzZXJ0SW5zdGFuY2VvZik6CisgICAgICAgIChhc3NlcnREb2VzTm90VGhyb3cpOgor
ICAgICAgICAoYXNzZXJ0VW5yZWFjaGFibGUpOgorICAgICAgICAoYXNzZXJ0Q29udGFpbnMpOgor
ICAgICAgICAoYXNzZXJ0TWF0Y2hlcyk6CisgICAgICAgIChjb25jYXRlbmF0ZUVycm9ycyk6Cisg
ICAgICAgIChhc3NlcnRQcm9taXNlUmVzdWx0KToKKyAgICAgICAgKE9wdGltaXphdGlvblN0YXR1
cyk6CisgICAgICAgIChhc3NlcnRVbm9wdGltaXplZCk6CisgICAgICAgIChhc3NlcnRPcHRpbWl6
ZWQpOgorICAgICAgICAoaXNOZXZlck9wdGltaXplTGl0ZU1vZGUpOgorICAgICAgICAoaXNOZXZl
ck9wdGltaXplKToKKyAgICAgICAgKGlzQWx3YXlzT3B0aW1pemUpOgorICAgICAgICAoaXNJbnRl
cnByZXRlZCk6CisgICAgICAgIChpc09wdGltaXplZCk6CisgICAgICAgIChpc1R1cmJvRmFubmVk
KToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSk6Cisg
ICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVk
LgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFu
dXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRp
bWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1i
YXNpY3MuanM6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lz
dHJ5KToKKyAgICAgICAgKFRlc3RGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yQ2FsbEFz
RnVuY3Rpb24pOgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xl
YW51cE5vdENhbGxhYmxlKToKKyAgICAgICAgKFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdp
c3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXNDbGVhbnVwKToKKyAgICAgICAgKFRlc3RSZWdpc3Rl
clRhcmdldEFuZEhvbGRpbmdzU2FtZVZhbHVlKToKKyAgICAgICAgKFRlc3RSZWdpc3RlcldpdGhv
dXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25F
eGlzdGVudEtleSk6CisgICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25GaW5hbGl6YXRpb25S
ZWdpc3RyeSk6CisgICAgICAgIChUZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCk6
CisgICAgICAgIChUZXN0V2Vha1JlZldpdGhQcm94eSk6CisgICAgICAgICogc3RyZXNzL3Y4LWZp
bmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5j
bGVhbnVwKToKKyAgICAgICAgKHNldFRpbWVvdXQpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5h
bGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qczogQWRkZWQuCisgICAgICAg
IChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBz
dHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRp
cGxlLXRpbWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwMCk6CisgICAgICAgIChs
ZXQuY2xlYW51cDEpOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3Ry
ZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAg
ICAgICAqIHN0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC5yZWVudHJhbnRfZ2MpOgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAg
ICogc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpz
OiBBZGRlZC4KKyAgICAgICAgKGkucmVnaXN0cmllcy5wdXNoLm5ldy5GaW5hbGl6YXRpb25SZWdp
c3RyeSk6CisgICAgICAgIChyZWdpc3RyaWVzLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy92
OC11bmRlZmluZWQtaG9sZGluZ3MuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgor
ICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYWZ0ZXItY2xlYW51cC5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAg
ICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1i
ZWZvcmUtY2xlYW51cC5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAg
IChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxs
ZWQtdHdpY2UuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0
LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNs
ZWFudXAyLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50
aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVh
bnVwMy5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGlt
ZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgor
ICAgICAgICAqIHN0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qczogQWRkZWQuCisgICAg
ICAgIChGUi5uZXcuRmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAodHJ5QWdhaW4pOgor
CiAyMDIwLTA3LTE3ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRo
Lm1heCgpIGNhbiB5aWVsZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMgYi9KU1Rlc3RzL3N0
cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzc0NjFmNzRjOTAyMjMy
MWZjNjBlNjg2Zjc5NWQ1MGUzOTI5ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMKQEAgLTAsMCArMSw4MDkgQEAKKy8vIENvcHlyaWdo
dCAyMDA4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8g
ICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAg
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworZnVuY3Rpb24gTWpzVW5pdEFzc2VydGlvbkVycm9yKG1lc3NhZ2Up
IHsKKyAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKyAgLy8gVGVtcG9yYXJpbHkgaW5zdGFsbCBh
IGN1c3RvbSBzdGFjayB0cmFjZSBmb3JtYXR0ZXIgYW5kIHJlc3RvcmUgdGhlCisgIC8vIHByZXZp
b3VzIHZhbHVlLgorICBsZXQgcHJldlByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0
YWNrVHJhY2U7CisgIHRyeSB7CisgICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBNanNVbml0
QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CisgICAgLy8gVGhpcyBhbGxvd3MgZmV0
Y2hpbmcgdGhlIHN0YWNrIHRyYWNlIHVzaW5nIFRyeUNhdGNoOjpTdGFja1RyYWNlLgorICAgIHRo
aXMuc3RhY2sgPSBuZXcgRXJyb3IoIk1qc1VuaXRBc3NlcnRpb25FcnJvciIpLnN0YWNrOworICB9
IGZpbmFsbHkgeworICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJldlByZXBhcmVTdGFj
a1RyYWNlOworICB9Cit9CisKKy8qCisgKiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgaW4gYWxsIG1p
bmkganN1bml0IHRlc3QgY2FzZXMuICBUaGUgdGVzdAorICogZnJhbWV3b3JrIGV4cGVjdHMgbGlu
ZXMgdGhhdCBzaWduYWwgZmFpbGVkIHRlc3RzIHRvIHN0YXJ0IHdpdGgKKyAqIHRoZSBmLXdvcmQg
YW5kIGlnbm9yZSBhbGwgb3RoZXIgbGluZXMuCisgKi8KKworTWpzVW5pdEFzc2VydGlvbkVycm9y
LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubWVzc2Fn
ZSArICJcblxuU3RhY2s6ICIgKyB0aGlzLnN0YWNrOworfTsKKworCisvLyBFeHBlY3RlZCBhbmQg
Zm91bmQgdmFsdWVzIHRoZSBzYW1lIG9iamVjdHMsIG9yIHRoZSBzYW1lIHByaW1pdGl2ZQorLy8g
dmFsdWVzLgorLy8gRm9yIGtub3duIHByaW1pdGl2ZSB2YWx1ZXMsIHBsZWFzZSB1c2UgYXNzZXJ0
RXF1YWxzLgordmFyIGFzc2VydFNhbWU7CisKKy8vIEludmVyc2Ugb2YgYXNzZXJ0U2FtZS4KK3Zh
ciBhc3NlcnROb3RTYW1lOworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIGFyZSBpZGVu
dGljYWwgcHJpbWl0aXZlIHZhbHVlcyBvciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1
Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5nIGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcu
LCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5k
IHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1BcnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnRFcXVhbHM7
CisKKy8vIERlZXAgZXF1YWxpdHkgcHJlZGljYXRlIHVzZWQgYnkgYXNzZXJ0RXF1YWxzLgordmFy
IGRlZXBFcXVhbHM7CisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIG5vdCBpZGVu
dGljYWwgcHJpbWl0aXZlIHZhbHVlcyBvciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1
Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5nIGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcu
LCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5k
IHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1BcnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnROb3RFcXVh
bHM7CisKKy8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVl
IGlzIHdpdGhpbiBjZXJ0YWluIHRvbGVyYW5jZS4KK3ZhciBhc3NlcnRFcXVhbHNEZWx0YTsKKwor
Ly8gVGhlIGZvdW5kIG9iamVjdCBpcyBhbiBBcnJheSB3aXRoIHRoZSBzYW1lIGxlbmd0aCBhbmQg
ZWxlbWVudHMKKy8vIGFzIHRoZSBleHBlY3RlZCBvYmplY3QuIFRoZSBleHBlY3RlZCBvYmplY3Qg
ZG9lc24ndCBuZWVkIHRvIGJlIGFuIEFycmF5LAorLy8gYXMgbG9uZyBhcyBpdCdzICJhcnJheS1p
c2giLgordmFyIGFzc2VydEFycmF5RXF1YWxzOworCisvLyBUaGUgZm91bmQgb2JqZWN0IG11c3Qg
aGF2ZSB0aGUgc2FtZSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgYXMgdGhlCisvLyBleHBlY3RlZCBv
YmplY3QuIFRoZSB0eXBlIG9mIG9iamVjdCBpc24ndCBjaGVja2VkLgordmFyIGFzc2VydFByb3Bl
cnRpZXNFcXVhbDsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHN0cmluZyBjb252ZXJzaW9uIG9mIHRo
ZSBmb3VuZCB2YWx1ZSBpcyBlcXVhbCB0bworLy8gdGhlIGV4cGVjdGVkIHN0cmluZy4gT25seSBr
ZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgcGxlYXNlCisvLyBjaGVjayB0aGUgcmVh
bCBzdHJ1Y3R1cmUgb2YgdGhlIGZvdW5kIHZhbHVlLgordmFyIGFzc2VydFRvU3RyaW5nRXF1YWxz
OworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgdHJ1ZS4gVXNlIHdpdGggYm9v
bGVhbiBleHByZXNzaW9ucworLy8gZm9yIHRlc3RzIHRoYXQgZG9lc24ndCBoYXZlIHRoZWlyIG93
biBhc3NlcnRYWFggZnVuY3Rpb24uCit2YXIgYXNzZXJ0VHJ1ZTsKKworLy8gQ2hlY2tzIHRoYXQg
dGhlIGZvdW5kIHZhbHVlIGlzIGZhbHNlLgordmFyIGFzc2VydEZhbHNlOworCisvLyBDaGVja3Mg
dGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgbnVsbC4gS2VwdCBmb3IgaGlzdG9yaWNhbCBjb21wYXRp
YmlsaXR5LAorLy8gcGxlYXNlIGp1c3QgdXNlIGFzc2VydEVxdWFscyhudWxsLCBleHBlY3RlZCku
Cit2YXIgYXNzZXJ0TnVsbDsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzICpu
b3QqIG51bGwuCit2YXIgYXNzZXJ0Tm90TnVsbDsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3Nl
ZCBmdW5jdGlvbiBvciBldmFsIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBvcHRp
b25hbCBzZWNvbmQgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhl
CisvLyB0aHJvd24gZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9m
Ii4KKy8vIFRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJp
bmcgb3IgUmVnRXhwIG9iamVjdCB0aGF0IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBv
ZiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnRUaHJvd3M7CisKKy8vIEFzc2VydCB0
aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBleGNl
cHRpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSBzZWNvbmQgYXJndW1lbnQgdXNpbmcgYXNzZXJ0
RXF1YWxzLgordmFyIGFzc2VydFRocm93c0VxdWFsczsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBh
c3NlZCBwcm9taXNlIGRvZXMgbm90IHJlc29sdmUsIGJ1dCBldmVudHVhbGx5IHRocm93cyBhbgor
Ly8gZXhjZXB0aW9uLiBUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlv
biBjb25zdHJ1Y3RvciB0aGF0IHRoZQorLy8gdGhyb3duIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFn
YWluc3Qgd2l0aCAiaW5zdGFuY2VvZiIuCisvLyBUaGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQg
aXMgYSBtZXNzYWdlIHR5cGUgc3RyaW5nIG9yIFJlZ0V4cCBvYmplY3QgdGhhdCBpcworLy8gY29t
cGFyZWQgdG8gdGhlIG1lc3NhZ2Ugb2YgdGhlIHRocm93biBleGNlcHRpb24uCit2YXIgYXNzZXJ0
VGhyb3dzQXN5bmM7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gb3IgZXZh
bCBjb2RlIGRvZXMgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnREb2VzTm90VGhy
b3c7CisKKy8vIEFzc2VydHMgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2Yg
dGhlIGNvbnN0cnVjdG9yIHBhc3NlZAorLy8gYXMgdGhlIHNlY29uZCBhcmd1bWVudC4KK3ZhciBh
c3NlcnRJbnN0YW5jZW9mOworCisvLyBBc3NlcnQgdGhhdCB0aGlzIGNvZGUgaXMgbmV2ZXIgZXhl
Y3V0ZWQgKGkuZS4sIGFsd2F5cyBmYWlscyBpZiBleGVjdXRlZCkuCit2YXIgYXNzZXJ0VW5yZWFj
aGFibGU7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBmdW5jdGlvbiBjb2RlIGlzIChub3QpIG9wdGlt
aXplZC4gIElmICJubyBzeW5jIiBpcyBwYXNzZWQKKy8vIGFzIHNlY29uZCBhcmd1bWVudCwgd2Ug
ZG8gbm90IHdhaXQgZm9yIHRoZSBjb25jdXJyZW50IG9wdGltaXphdGlvbiB0aHJlYWQgdG8KKy8v
IGZpbmlzaCB3aGVuIHBvbGxpbmcgZm9yIG9wdGltaXphdGlvbiBzdGF0dXMuCisvLyBPbmx5IHdv
cmtzIHdpdGggLS1hbGxvdy1uYXRpdmVzLXN5bnRheC4KK3ZhciBhc3NlcnRPcHRpbWl6ZWQ7Cit2
YXIgYXNzZXJ0VW5vcHRpbWl6ZWQ7CisKKy8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIGNvbnRhaW5z
IGFub3RoZXIgZXhwZWN0ZWQgc3Vic3RyaW5nLgordmFyIGFzc2VydENvbnRhaW5zOworCisvLyBB
c3NlcnQgdGhhdCBhIHN0cmluZyBtYXRjaGVzIGEgZ2l2ZW4gcmVnZXguCit2YXIgYXNzZXJ0TWF0
Y2hlczsKKworLy8gQXNzZXJ0IHRoYXQgYSBwcm9taXNlIHJlc29sdmVzIG9yIHJlamVjdHMuCisv
LyBQYXJhbWV0ZXJzOgorLy8ge3Byb21pc2V9IC0gdGhlIHByb21pc2UKKy8vIHtzdWNjZXNzfSAt
IG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9m
IHRoZQorLy8gICAgICAgICAgICAgcmVzb2x2aW5nIHByb21pc2UuCisvLyAge2ZhaWx9IC0gICBv
cHRpb25hbCAtIGEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiB0
aGUKKy8vICAgICAgICAgICAgIHJlamVjdGluZyBwcm9taXNlLiBJZiB0aGUgcHJvbWlzZSBpcyBy
ZWplY3RlZCBidXQgbm8ge2ZhaWx9CisvLyAgICAgICAgICAgICBjYWxsYmFjayBpcyBzZXQsIHRo
ZSBlcnJvciBpcyBwcm9wYWdhdGVkIG91dCBvZiB0aGUgcHJvbWlzZQorLy8gICAgICAgICAgICAg
Y2hhaW4uCit2YXIgYXNzZXJ0UHJvbWlzZVJlc3VsdDsKKwordmFyIHByb21pc2VUZXN0Q2hhaW47
Cit2YXIgcHJvbWlzZVRlc3RDb3VudCA9IDA7CisKKy8vIFRoZXNlIGJpdHMgbXVzdCBiZSBpbiBz
eW5jIHdpdGggYml0cyBkZWZpbmVkIGluIFJ1bnRpbWVfR2V0T3B0aW1pemF0aW9uU3RhdHVzCit2
YXIgVjhPcHRpbWl6YXRpb25TdGF0dXMgPSB7CisgIGtJc0Z1bmN0aW9uOiAxIDw8IDAsCisgIGtO
ZXZlck9wdGltaXplOiAxIDw8IDEsCisgIGtBbHdheXNPcHRpbWl6ZTogMSA8PCAyLAorICBrTWF5
YmVEZW9wdGVkOiAxIDw8IDMsCisgIGtPcHRpbWl6ZWQ6IDEgPDwgNCwKKyAga1R1cmJvRmFubmVk
OiAxIDw8IDUsCisgIGtJbnRlcnByZXRlZDogMSA8PCA2LAorICBrTWFya2VkRm9yT3B0aW1pemF0
aW9uOiAxIDw8IDcsCisgIGtNYXJrZWRGb3JDb25jdXJyZW50T3B0aW1pemF0aW9uOiAxIDw8IDgs
CisgIGtPcHRpbWl6aW5nQ29uY3VycmVudGx5OiAxIDw8IDksCisgIGtJc0V4ZWN1dGluZzogMSA8
PCAxMCwKKyAga1RvcG1vc3RGcmFtZUlzVHVyYm9GYW5uZWQ6IDEgPDwgMTEsCisgIGtMaXRlTW9k
ZTogMSA8PCAxMiwKKyAga01hcmtlZEZvckRlb3B0aW1pemF0aW9uOiAxIDw8IDEzLAorfTsKKwor
Ly8gUmV0dXJucyB0cnVlIGlmIC0tbGl0ZS1tb2RlIGlzIG9uIGFuZCB3ZSBjYW4ndCBldmVyIHR1
cm4gb24gb3B0aW1pemF0aW9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlOworCisvLyBS
ZXR1cm5zIHRydWUgaWYgLS1uby1vcHQgbW9kZSBpcyBvbi4KK3ZhciBpc05ldmVyT3B0aW1pemU7
CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAtLWFsd2F5cy1vcHQgbW9kZSBpcyBvbi4KK3ZhciBpc0Fs
d2F5c09wdGltaXplOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaW4gaW50
ZXJwcmV0ZWQuCit2YXIgaXNJbnRlcnByZXRlZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVu
IGZ1bmN0aW9uIGlzIG9wdGltaXplZC4KK3ZhciBpc09wdGltaXplZDsKKworLy8gUmV0dXJucyB0
cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlzIGNvbXBpbGVkIGJ5IFR1cmJvRmFuLgordmFyIGlzVHVy
Ym9GYW5uZWQ7CisKKy8vIE1vbmtleS1wYXRjaGFibGUgYWxsLXB1cnBvc2UgZmFpbHVyZSBoYW5k
bGVyLgordmFyIGZhaWxXaXRoTWVzc2FnZTsKKworLy8gUmV0dXJucyB0aGUgZm9ybWF0dGVkIGZh
aWx1cmUgdGV4dC4gIFVzZWQgYnkgdGVzdC1hc3luYy5qcy4KK3ZhciBmb3JtYXRGYWlsdXJlVGV4
dDsKKworLy8gUmV0dXJucyBhIHByZXR0eS1wcmludGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgcGFzc2VkIHZhbHVlLgordmFyIHByZXR0eVByaW50ZWQ7CisKKyhmdW5jdGlvbiAoKSB7
ICAvLyBTY29wZSBmb3IgdXRpbGl0eSBmdW5jdGlvbnMuCisKKyAgdmFyIE9iamVjdFByb3RvdHlw
ZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKyAgdmFyIE51bWJlclByb3Rv
dHlwZVZhbHVlT2YgPSBOdW1iZXIucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBCb29sZWFuUHJv
dG90eXBlVmFsdWVPZiA9IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBTdHJpbmdQ
cm90b3R5cGVWYWx1ZU9mID0gU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgRGF0ZVBy
b3RvdHlwZVZhbHVlT2YgPSBEYXRlLnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgUmVnRXhwUHJv
dG90eXBlVG9TdHJpbmcgPSBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgQXJyYXlQ
cm90b3R5cGVGb3JFYWNoID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2g7CisgIHZhciBBcnJheVBy
b3RvdHlwZUpvaW4gPSBBcnJheS5wcm90b3R5cGUuam9pbjsKKyAgdmFyIEFycmF5UHJvdG90eXBl
TWFwID0gQXJyYXkucHJvdG90eXBlLm1hcDsKKyAgdmFyIEFycmF5UHJvdG90eXBlUHVzaCA9IEFy
cmF5LnByb3RvdHlwZS5wdXNoOworCisgIHZhciBCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOworICAv
LyBUT0RPKG5laXMpOiBSZW1vdmUgdHJ5LWNhdGNoIG9uY2UgQmlnSW50cyBhcmUgZW5hYmxlZCBi
eSBkZWZhdWx0LgorICB0cnkgeworICAgIEJpZ0ludFByb3RvdHlwZVZhbHVlT2YgPSBCaWdJbnQu
cHJvdG90eXBlLnZhbHVlT2Y7CisgIH0gY2F0Y2ggKGUpIHt9CisKKyAgZnVuY3Rpb24gY2xhc3NP
ZihvYmplY3QpIHsKKyAgICAvLyBBcmd1bWVudCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZC4KKyAgICB2YXIgc3RyaW5nID0gT2JqZWN0UHJvdG90eXBlVG9TdHJpbmcuY2FsbChvYmplY3Qp
OworICAgIC8vIFN0cmluZyBoYXMgZm9ybWF0IFtvYmplY3QgPENsYXNzTmFtZT5dLgorICAgIHJl
dHVybiBzdHJpbmcuc3Vic3RyaW5nKDgsIHN0cmluZy5sZW5ndGggLSAxKTsKKyAgfQorCisKKyAg
ZnVuY3Rpb24gVmFsdWVPZih2YWx1ZSkgeworICAgIHN3aXRjaCAoY2xhc3NPZih2YWx1ZSkpIHsK
KyAgICAgIGNhc2UgIk51bWJlciI6CisgICAgICAgIHJldHVybiBOdW1iZXJQcm90b3R5cGVWYWx1
ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiQmlnSW50IjoKKyAgICAgICAgcmV0dXJuIEJp
Z0ludFByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBjYXNlICJTdHJpbmciOgor
ICAgICAgICByZXR1cm4gU3RyaW5nUHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAg
IGNhc2UgIkJvb2xlYW4iOgorICAgICAgICByZXR1cm4gQm9vbGVhblByb3RvdHlwZVZhbHVlT2Yu
Y2FsbCh2YWx1ZSk7CisgICAgICBjYXNlICJEYXRlIjoKKyAgICAgICAgcmV0dXJuIERhdGVQcm90
b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIH0KKyAgfQorCisKKyAgcHJldHR5UHJpbnRlZCA9IGZ1bmN0aW9uIHByZXR0
eVByaW50ZWQodmFsdWUpIHsKKyAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkgeworICAgICAgY2Fz
ZSAic3RyaW5nIjoKKyAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKKyAgICAg
IGNhc2UgImJpZ2ludCI6CisgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpICsgIm4iOworICAg
ICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAgaWYgKHZhbHVlID09PSAwICYmICgxIC8gdmFsdWUp
IDwgMCkgcmV0dXJuICItMCI7CisgICAgICAgIC8vIEZBTExUSFJPVUdILgorICAgICAgY2FzZSAi
Ym9vbGVhbiI6CisgICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgY2FzZSAiZnVuY3Rpb24i
OgorICAgICAgY2FzZSAic3ltYm9sIjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7Cisg
ICAgICBjYXNlICJvYmplY3QiOgorICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAi
bnVsbCI7CisgICAgICAgIHZhciBvYmplY3RDbGFzcyA9IGNsYXNzT2YodmFsdWUpOworICAgICAg
ICBzd2l0Y2ggKG9iamVjdENsYXNzKSB7CisgICAgICAgICAgY2FzZSAiTnVtYmVyIjoKKyAgICAg
ICAgICBjYXNlICJCaWdJbnQiOgorICAgICAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgICAg
Y2FzZSAiQm9vbGVhbiI6CisgICAgICAgICAgY2FzZSAiRGF0ZSI6CisgICAgICAgICAgICByZXR1
cm4gb2JqZWN0Q2xhc3MgKyAiKCIgKyBwcmV0dHlQcmludGVkKFZhbHVlT2YodmFsdWUpKSArICIp
IjsKKyAgICAgICAgICBjYXNlICJSZWdFeHAiOgorICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cFBy
b3RvdHlwZVRvU3RyaW5nLmNhbGwodmFsdWUpOworICAgICAgICAgIGNhc2UgIkFycmF5IjoKKyAg
ICAgICAgICAgIHZhciBtYXBwZWQgPSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKAorICAgICAgICAg
ICAgICAgIHZhbHVlLCBwcmV0dHlQcmludGVkQXJyYXlFbGVtZW50KTsKKyAgICAgICAgICAgIHZh
ciBqb2luZWQgPSBBcnJheVByb3RvdHlwZUpvaW4uY2FsbChtYXBwZWQsICIsIik7CisgICAgICAg
ICAgICByZXR1cm4gIlsiICsgam9pbmVkICsgIl0iOworICAgICAgICAgIGNhc2UgIlVpbnQ4QXJy
YXkiOgorICAgICAgICAgIGNhc2UgIkludDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50MTZB
cnJheSI6CisgICAgICAgICAgY2FzZSAiVWludDE2QXJyYXkiOgorICAgICAgICAgIGNhc2UgIlVp
bnQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQzMkFycmF5IjoKKyAgICAgICAgICBjYXNl
ICJGbG9hdDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkZsb2F0NjRBcnJheSI6CisgICAgICAg
ICAgICB2YXIgam9pbmVkID0gQXJyYXlQcm90b3R5cGVKb2luLmNhbGwodmFsdWUsICIsIik7Cisg
ICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKFsiICsgam9pbmVkICsgIl0pIjsKKyAg
ICAgICAgICBjYXNlICJPYmplY3QiOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoIiArIFN0cmluZyh2YWx1
ZSkgKyAiKSI7CisgICAgICAgIH0KKyAgICAgICAgLy8gY2xhc3NPZigpIHJldHVybmVkICJPYmpl
Y3QiLgorICAgICAgICB2YXIgbmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7CisgICAgICAg
IGlmIChuYW1lKSByZXR1cm4gbmFtZSArICIoKSI7CisgICAgICAgIHJldHVybiAiT2JqZWN0KCki
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICItLSB1bmtub3duIHZhbHVlIC0tIjsK
KyAgICB9CisgIH0KKworCisgIGZ1bmN0aW9uIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQodmFs
dWUsIGluZGV4LCBhcnJheSkgeworICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoaW5k
ZXggaW4gYXJyYXkpKSByZXR1cm4gIiI7CisgICAgcmV0dXJuIHByZXR0eVByaW50ZWQodmFsdWUp
OworICB9CisKKworICBmYWlsV2l0aE1lc3NhZ2UgPSBmdW5jdGlvbiBmYWlsV2l0aE1lc3NhZ2Uo
bWVzc2FnZSkgeworICAgIHRocm93IG5ldyBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSk7
CisgIH0KKworICBmb3JtYXRGYWlsdXJlVGV4dCA9IGZ1bmN0aW9uKGV4cGVjdGVkVGV4dCwgZm91
bmQsIG5hbWVfb3B0KSB7CisgICAgdmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlIjsKKyAgICBp
ZiAobmFtZV9vcHQpIHsKKyAgICAgIC8vIEZpeCB0aGlzIHdoZW4gd2UgZGl0Y2ggdGhlIG9sZCB0
ZXN0IHJ1bm5lci4KKyAgICAgIG1lc3NhZ2UgKz0gIiAoIiArIG5hbWVfb3B0ICsgIikiOworICAg
IH0KKworICAgIHZhciBmb3VuZFRleHQgPSBwcmV0dHlQcmludGVkKGZvdW5kKTsKKyAgICBpZiAo
ZXhwZWN0ZWRUZXh0Lmxlbmd0aCA8PSA0MCAmJiBmb3VuZFRleHQubGVuZ3RoIDw9IDQwKSB7Cisg
ICAgICBtZXNzYWdlICs9ICI6IGV4cGVjdGVkIDwiICsgZXhwZWN0ZWRUZXh0ICsgIj4gZm91bmQg
PCIgKyBmb3VuZFRleHQgKyAiPiI7CisgICAgfSBlbHNlIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjpc
bmV4cGVjdGVkOlxuIiArIGV4cGVjdGVkVGV4dCArICJcbmZvdW5kOlxuIiArIGZvdW5kVGV4dDsK
KyAgICB9CisgICAgcmV0dXJuIG1lc3NhZ2U7CisgIH0KKworICBmdW5jdGlvbiBmYWlsKGV4cGVj
dGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgcmV0dXJuIGZhaWxXaXRoTWVzc2FnZShm
b3JtYXRGYWlsdXJlVGV4dChleHBlY3RlZFRleHQsIGZvdW5kLCBuYW1lX29wdCkpOworICB9CisK
KworICBmdW5jdGlvbiBkZWVwT2JqZWN0RXF1YWxzKGEsIGIpIHsKKyAgICB2YXIgYVByb3BzID0g
T2JqZWN0LmtleXMoYSk7CisgICAgYVByb3BzLnNvcnQoKTsKKyAgICB2YXIgYlByb3BzID0gT2Jq
ZWN0LmtleXMoYik7CisgICAgYlByb3BzLnNvcnQoKTsKKyAgICBpZiAoIWRlZXBFcXVhbHMoYVBy
b3BzLCBiUHJvcHMpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoIWRlZXBFcXVhbHMo
YVthUHJvcHNbaV1dLCBiW2FQcm9wc1tpXV0pKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworCisgIGRlZXBFcXVhbHMgPSBm
dW5jdGlvbiBkZWVwRXF1YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikgeworICAgICAgLy8g
Q2hlY2sgZm9yIC0wLgorICAgICAgaWYgKGEgPT09IDApIHJldHVybiAoMSAvIGEpID09PSAoMSAv
IGIpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICh0eXBlb2YgYSAhPT0gdHlw
ZW9mIGIpIHJldHVybiBmYWxzZTsKKyAgICBpZiAodHlwZW9mIGEgPT09ICJudW1iZXIiKSByZXR1
cm4gaXNOYU4oYSkgJiYgaXNOYU4oYik7CisgICAgaWYgKHR5cGVvZiBhICE9PSAib2JqZWN0IiAm
JiB0eXBlb2YgYSAhPT0gImZ1bmN0aW9uIikgcmV0dXJuIGZhbHNlOworICAgIC8vIE5laXRoZXIg
YSBub3IgYiBpcyBwcmltaXRpdmUuCisgICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NPZihhKTsK
KyAgICBpZiAob2JqZWN0Q2xhc3MgIT09IGNsYXNzT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAob2JqZWN0Q2xhc3MgPT09ICJSZWdFeHAiKSB7CisgICAgICAvLyBGb3IgUmVnRXhwLCBqdXN0
IGNvbXBhcmUgcGF0dGVybiBhbmQgZmxhZ3MgdXNpbmcgaXRzIHRvU3RyaW5nLgorICAgICAgcmV0
dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwoYSkgPT09CisgICAgICAgICAgICAgUmVn
RXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbChiKTsKKyAgICB9CisgICAgLy8gRnVuY3Rpb25zIGFy
ZSBvbmx5IGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLgorICAgIGlmIChvYmplY3RDbGFzcyA9PT0g
IkZ1bmN0aW9uIikgcmV0dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkFycmF5
IikgeworICAgICAgdmFyIGVsZW1lbnRDb3VudCA9IDA7CisgICAgICBpZiAoYS5sZW5ndGggIT09
IGIubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIWRlZXBFcXVhbHMo
YVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09ICJTdHJpbmciIHx8IG9iamVjdENsYXNzID09
PSAiTnVtYmVyIiB8fAorICAgICAgb2JqZWN0Q2xhc3MgPT09ICJCaWdJbnQiIHx8IG9iamVjdENs
YXNzID09PSAiQm9vbGVhbiIgfHwKKyAgICAgIG9iamVjdENsYXNzID09PSAiRGF0ZSIpIHsKKyAg
ICAgIGlmIChWYWx1ZU9mKGEpICE9PSBWYWx1ZU9mKGIpKSByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiBkZWVwT2JqZWN0RXF1YWxzKGEsIGIpOworICB9CisKKyAgYXNzZXJ0U2FtZSA9
IGZ1bmN0aW9uIGFzc2VydFNhbWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlm
IChPYmplY3QuaXMoZXhwZWN0ZWQsIGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwocHJldHR5UHJp
bnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgIH07CisKKyAgYXNzZXJ0Tm90U2Ft
ZSA9IGZ1bmN0aW9uIGFzc2VydE5vdFNhbWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgewor
ICAgIGlmICghT2JqZWN0LmlzKGV4cGVjdGVkLCBmb3VuZCkpIHJldHVybjsKKyAgICBmYWlsKCJu
b3Qgc2FtZSBhcyAiICsgcHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7
CisgIH0KKworICBhc3NlcnRFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQs
IGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmICghZGVlcEVxdWFscyhmb3VuZCwgZXhwZWN0ZWQp
KSB7CisgICAgICBmYWlsKHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQp
OworICAgIH0KKyAgfTsKKworICBhc3NlcnROb3RFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnROb3RF
cXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmIChkZWVwRXF1YWxzKGZv
dW5kLCBleHBlY3RlZCkpIHsKKyAgICAgIGZhaWwoIm5vdCBlcXVhbHMgdG8gIiArIHByZXR0eVBy
aW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFz
c2VydEVxdWFsc0RlbHRhID0KKyAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsc0RlbHRhKGV4cGVj
dGVkLCBmb3VuZCwgZGVsdGEsIG5hbWVfb3B0KSB7CisgICAgaWYgKE1hdGguYWJzKGV4cGVjdGVk
IC0gZm91bmQpID4gZGVsdGEpIHsKKyAgICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCkg
KyAiICstICIgKyBwcmV0dHlQcmludGVkKGRlbHRhKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9
CisgIH07CisKKworICBhc3NlcnRBcnJheUVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydEFycmF5RXF1
YWxzKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIgc3RhcnQgPSAiIjsKKyAg
ICBpZiAobmFtZV9vcHQpIHsKKyAgICAgIHN0YXJ0ID0gbmFtZV9vcHQgKyAiIC0gIjsKKyAgICB9
CisgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmxlbmd0aCwgZm91bmQubGVuZ3RoLCBzdGFydCAr
ICJhcnJheSBsZW5ndGgiKTsKKyAgICBpZiAoZXhwZWN0ZWQubGVuZ3RoID09PSBmb3VuZC5sZW5n
dGgpIHsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkW2ldLCBmb3VuZFtpXSwKKyAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0ICsgImFycmF5IGVsZW1lbnQgYXQgaW5kZXggIiArIGkpOworICAgICAg
fQorICAgIH0KKyAgfTsKKworCisgIGFzc2VydFByb3BlcnRpZXNFcXVhbCA9IGZ1bmN0aW9uIGFz
c2VydFByb3BlcnRpZXNFcXVhbChleHBlY3RlZCwgZm91bmQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29wdCkgeworICAgIC8v
IENoZWNrIHByb3BlcnRpZXMgb25seS4KKyAgICBpZiAoIWRlZXBPYmplY3RFcXVhbHMoZXhwZWN0
ZWQsIGZvdW5kKSkgeworICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAg
ICB9CisgIH07CisKKworICBhc3NlcnRUb1N0cmluZ0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRv
U3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29wdCkgeworICAgIGlmIChleHBlY3Rl
ZCAhPT0gU3RyaW5nKGZvdW5kKSkgeworICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVf
b3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRUcnVlID0gZnVuY3Rpb24gYXNzZXJ0VHJ1
ZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBhc3NlcnRFcXVhbHModHJ1ZSwgdmFsdWUsIG5hbWVf
b3B0KTsKKyAgfTsKKworCisgIGFzc2VydEZhbHNlID0gZnVuY3Rpb24gYXNzZXJ0RmFsc2UodmFs
dWUsIG5hbWVfb3B0KSB7CisgICAgYXNzZXJ0RXF1YWxzKGZhbHNlLCB2YWx1ZSwgbmFtZV9vcHQp
OworICB9OworCisKKyAgYXNzZXJ0TnVsbCA9IGZ1bmN0aW9uIGFzc2VydE51bGwodmFsdWUsIG5h
bWVfb3B0KSB7CisgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7CisgICAgICBmYWlsKCJudWxsIiwg
dmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnROb3ROdWxsID0gZnVu
Y3Rpb24gYXNzZXJ0Tm90TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgPT09
IG51bGwpIHsKKyAgICAgIGZhaWwoIm5vdCBudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9
CisgIH07CisKKyAgZnVuY3Rpb24gZXhlY3V0ZUNvZGUoY29kZSkgeworICAgIGlmICh0eXBlb2Yg
Y29kZSA9PT0gJ2Z1bmN0aW9uJykgIHJldHVybiBjb2RlKCk7CisgICAgaWYgKHR5cGVvZiBjb2Rl
ID09PSAnc3RyaW5nJykgcmV0dXJuIGV2YWwoY29kZSk7CisgICAgZmFpbFdpdGhNZXNzYWdlKAor
ICAgICAgICAnR2l2ZW4gY29kZSBpcyBuZWl0aGVyIGZ1bmN0aW9uIG5vciBzdHJpbmcsIGJ1dCAn
ICsgKHR5cGVvZiBjb2RlKSArCisgICAgICAgICc6IDwnICsgcHJldHR5UHJpbnRlZChjb2RlKSAr
ICc+Jyk7CisgIH0KKworICBmdW5jdGlvbiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1
c2Vfb3B0KSB7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIGFzc2Vy
dEVxdWFscygnZnVuY3Rpb24nLCB0eXBlb2YgdHlwZV9vcHQpOworICAgICAgYXNzZXJ0SW5zdGFu
Y2VvZihlLCB0eXBlX29wdCk7CisgICAgfQorICAgIC8vIGlnbm9yZSBjYXVzZV9vcHQgYmVjYXVz
ZSBvdXIgZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCB0aGUgc2FtZSBhcyBWOCdzCisgICAgcmV0dXJu
OworICAgIGlmIChSZWdFeHAgIT09IHVuZGVmaW5lZCAmJiBjYXVzZV9vcHQgaW5zdGFuY2VvZiBS
ZWdFeHApIHsKKyAgICAgIGFzc2VydE1hdGNoZXMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2UsICdFcnJv
ciBtZXNzYWdlJyk7CisgICAgfSBlbHNlIGlmIChjYXVzZV9vcHQgIT09IHVuZGVmaW5lZCkgewor
ICAgICAgYXNzZXJ0RXF1YWxzKGNhdXNlX29wdCwgZS5tZXNzYWdlLCAnRXJyb3IgbWVzc2FnZScp
OworICAgIH0KKyAgfQorCisgIGFzc2VydFRocm93cyA9IGZ1bmN0aW9uIGFzc2VydFRocm93cyhj
b2RlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAx
ICYmIHR5cGVfb3B0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgnaW52
YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCB1bmtub3duIHR5cGVfb3B0IGdpdmVuJyk7CisgICAg
fQorICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0eXBlX29wdCAhPT0g
J2Z1bmN0aW9uJykgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdpbnZhbGlk
IHVzZSBvZiBhc3NlcnRUaHJvd3MsIG1heWJlIHlvdSB3YW50IGFzc2VydFRocm93c0VxdWFscycp
OworICAgIH0KKyAgICB0cnkgeworICAgICAgZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgY2hlY2tFeGNlcHRpb24oZSwgdHlwZV9vcHQsIGNhdXNlX29wdCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorICAgIGxldCBtc2cgPSAnRGlkIG5vdCB0aHJvdyBleGNlcHRp
b24nOworICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVfb3B0Lm5hbWUgIT09
IHVuZGVmaW5lZCkKKyAgICAgIG1zZyArPSAnLCBleHBlY3RlZCAnICsgdHlwZV9vcHQubmFtZTsK
KyAgICBmYWlsV2l0aE1lc3NhZ2UobXNnKTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NFcXVhbHMg
PSBmdW5jdGlvbiBhc3NlcnRUaHJvd3NFcXVhbHMoZnVuLCB2YWwpIHsKKyAgICB0cnkgeworICAg
ICAgZnVuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgYXNzZXJ0U2FtZSh2YWwsIGUpOwor
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmYWlsV2l0aE1lc3NhZ2UoJ0RpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLCBleHBlY3RlZCAnICsgcHJldHR5UHJpbnRlZCh2YWwpKTsKKyAgfTsKKworICBh
c3NlcnRUaHJvd3NBc3luYyA9IGZ1bmN0aW9uIGFzc2VydFRocm93c0FzeW5jKHByb21pc2UsIHR5
cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlw
ZV9vcHQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVz
ZSBvZiBhc3NlcnRUaHJvd3MsIHVua25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAg
aWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rp
b24nKSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9m
IGFzc2VydFRocm93cywgbWF5YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAg
fQorICAgIGxldCBtc2cgPSAnUHJvbWlzZSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAg
aWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVk
KQorICAgICAgbXNnICs9ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIHJldHVy
biBhc3NlcnRQcm9taXNlUmVzdWx0KAorICAgICAgICBwcm9taXNlLAorICAgICAgICAvLyBVc2Ug
c2V0VGltZW91dCB0byB0aHJvdyB0aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJv
bWlzZQorICAgICAgICAvLyBjaGFpbi4KKyAgICAgICAgcmVzID0+IHNldFRpbWVvdXQoXyA9PiBm
YWlsKCc8dGhyb3c+JywgcmVzLCBtc2cpLCAwKSwKKyAgICAgICAgZSA9PiBjaGVja0V4Y2VwdGlv
bihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSk7CisgIH07CisKKyAgYXNzZXJ0SW5zdGFuY2VvZiA9
IGZ1bmN0aW9uIGFzc2VydEluc3RhbmNlb2Yob2JqLCB0eXBlKSB7CisgICAgaWYgKCEob2JqIGlu
c3RhbmNlb2YgdHlwZSkpIHsKKyAgICAgIHZhciBhY3R1YWxUeXBlTmFtZSA9IG51bGw7CisgICAg
ICB2YXIgYWN0dWFsQ29uc3RydWN0b3IgPSBvYmogJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9i
aikuY29uc3RydWN0b3I7CisgICAgICBpZiAodHlwZW9mIGFjdHVhbENvbnN0cnVjdG9yID09PSAn
ZnVuY3Rpb24nKSB7CisgICAgICAgIGFjdHVhbFR5cGVOYW1lID0gYWN0dWFsQ29uc3RydWN0b3Iu
bmFtZSB8fCBTdHJpbmcoYWN0dWFsQ29uc3RydWN0b3IpOworICAgICAgfQorICAgICAgZmFpbFdp
dGhNZXNzYWdlKAorICAgICAgICAgICdPYmplY3QgPCcgKyBwcmV0dHlQcmludGVkKG9iaikgKyAn
PiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgPCcgKworICAgICAgICAgICh0eXBlLm5hbWUgfHwgdHlw
ZSkgKyAnPicgKworICAgICAgICAgIChhY3R1YWxUeXBlTmFtZSA/ICcgYnV0IG9mIDwnICsgYWN0
dWFsVHlwZU5hbWUgKyAnPicgOiAnJykpOworICAgIH0KKyAgfTsKKworICBhc3NlcnREb2VzTm90
VGhyb3cgPSBmdW5jdGlvbiBhc3NlcnREb2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAg
ICB0cnkgeworICAgICAgZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgaWYgKGUgaW5zdGFuY2VvZiBNanNVbml0QXNzZXJ0aW9uRXJyb3IpIHRocm93IGU7CisgICAg
ICBmYWlsV2l0aE1lc3NhZ2UoInRocmV3IGFuIGV4Y2VwdGlvbjogIiArIChlLm1lc3NhZ2UgfHwg
ZSkpOworICAgIH0KKyAgfTsKKworICBhc3NlcnRVbnJlYWNoYWJsZSA9IGZ1bmN0aW9uIGFzc2Vy
dFVucmVhY2hhYmxlKG5hbWVfb3B0KSB7CisgICAgLy8gRml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0
aGUgb2xkIHRlc3QgcnVubmVyLgorICAgIHZhciBtZXNzYWdlID0gIkZhaWwiICsgInVyZTogdW5y
ZWFjaGFibGUiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAgbWVzc2FnZSArPSAiIC0gIiAr
IG5hbWVfb3B0OworICAgIH0KKyAgICBmYWlsV2l0aE1lc3NhZ2UobWVzc2FnZSk7CisgIH07CisK
KyAgYXNzZXJ0Q29udGFpbnMgPSBmdW5jdGlvbihzdWIsIHZhbHVlLCBuYW1lX29wdCkgeworICAg
IGlmICh2YWx1ZSA9PSBudWxsID8gKHN1YiAhPSBudWxsKSA6IHZhbHVlLmluZGV4T2Yoc3ViKSA9
PSAtMSkgeworICAgICAgZmFpbCgiY29udGFpbnMgJyIgKyBTdHJpbmcoc3ViKSArICInIiwgdmFs
dWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0TWF0Y2hlcyA9IGZ1bmN0aW9u
KHJlZ2V4cCwgc3RyLCBuYW1lX29wdCkgeworICAgIGlmICghKHJlZ2V4cCBpbnN0YW5jZW9mIFJl
Z0V4cCkpIHsKKyAgICAgIHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwKTsKKyAgICB9CisgICAg
aWYgKCFzdHIubWF0Y2gocmVnZXhwKSkgeworICAgICAgZmFpbCgic2hvdWxkIG1hdGNoICciICsg
cmVnZXhwICsgIiciLCBzdHIsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24g
Y29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGV4Y2VwdGlvbikgeworICAgIC8vIElmIHRoZSBleGNl
cHRpb24gZG9lcyBub3QgY29udGFpbiBhIHN0YWNrIHRyYWNlLCB3cmFwIGl0IGluIGEgbmV3IEVy
cm9yLgorICAgIGlmICghZXhjZXB0aW9uLnN0YWNrKSBleGNlcHRpb24gPSBuZXcgRXJyb3IoZXhj
ZXB0aW9uKTsKKworICAgIC8vIElmIHRoZSBleGNlcHRpb24gYWxyZWFkeSBwcm92aWRlcyBhIHNw
ZWNpYWwgc3RhY2sgdHJhY2UsIHdlIGRvIG5vdCBtb2RpZnkKKyAgICAvLyBpdC4KKyAgICBpZiAo
dHlwZW9mIGV4Y2VwdGlvbi5zdGFjayAhPT0gJ3N0cmluZycpIHsKKyAgICAgIHJldHVybiBleGNl
cHRpb247CisgICAgfQorICAgIGV4Y2VwdGlvbi5zdGFjayA9IHN0YWNrICsgJ1xuXG4nICsgZXhj
ZXB0aW9uLnN0YWNrOworICAgIHJldHVybiBleGNlcHRpb247CisgIH0KKworICBhc3NlcnRQcm9t
aXNlUmVzdWx0ID0gZnVuY3Rpb24ocHJvbWlzZSwgc3VjY2VzcywgZmFpbCkgeworICAgIGlmIChz
dWNjZXNzICE9PSB1bmRlZmluZWQpIGFzc2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBlb2Ygc3Vj
Y2Vzcyk7CisgICAgaWYgKGZhaWwgIT09IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5jdGlv
bicsIHR5cGVvZiBmYWlsKTsKKyAgICBhc3NlcnRJbnN0YW5jZW9mKHByb21pc2UsIFByb21pc2Up
OworICAgIGNvbnN0IHN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjazsKKworICAgIHZhciB0ZXN0
X3Byb21pc2UgPSBwcm9taXNlLnRoZW4oCisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGlmICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAoc3VjY2VzcyAhPT0gdW5kZWZpbmVkKSBz
dWNjZXNzKHJlc3VsdCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8g
VXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhl
IHByb21pc2UKKyAgICAgICAgICAgIC8vIGNoYWluLgorICAgICAgICAgICAgc2V0VGltZW91dChf
ID0+IHsKKyAgICAgICAgICAgICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOwor
ICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICByZXN1
bHQgPT4geworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoLS1wcm9taXNlVGVzdENv
dW50ID09IDApIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKGZhaWwg
PT09IHVuZGVmaW5lZCkgdGhyb3cgcmVzdWx0OworICAgICAgICAgICAgZmFpbChyZXN1bHQpOwor
ICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRv
IHRocm93IHRoZSBlcnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAg
ICAgICAvLyBjaGFpbi4KKyAgICAgICAgICAgIHNldFRpbWVvdXQoXyA9PiB7CisgICAgICAgICAg
ICAgIHRocm93IGNvbmNhdGVuYXRlRXJyb3JzKHN0YWNrLCBlKTsKKyAgICAgICAgICAgIH0sIDAp
OworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICBpZiAoIXByb21pc2VUZXN0Q2hhaW4p
IHByb21pc2VUZXN0Q2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAvLyB3YWl0VW50aWxE
b25lIGlzIGlkZW1wb3RlbnQuCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
Kytwcm9taXNlVGVzdENvdW50OworICAgIHJldHVybiBwcm9taXNlVGVzdENoYWluLnRoZW4odGVz
dF9wcm9taXNlKTsKKyAgfTsKKworICB2YXIgT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9IHVuZGVm
aW5lZDsKKworICB2YXIgT3B0aW1pemF0aW9uU3RhdHVzID0gZnVuY3Rpb24oZnVuLCBzeW5jX29w
dCkgeworICAgIGlmIChPcHRpbWl6YXRpb25TdGF0dXNJbXBsID09PSB1bmRlZmluZWQpIHsKKyAg
ICAgIHRyeSB7CisgICAgICAgIE9wdGltaXphdGlvblN0YXR1c0ltcGwgPSBuZXcgRnVuY3Rpb24o
CisgICAgICAgICAgICAiZnVuIiwgInN5bmMiLCAicmV0dXJuICVHZXRPcHRpbWl6YXRpb25TdGF0
dXMoZnVuLCBzeW5jKTsiKTsKKyAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJuYXRpdmVzIHN5bnRheCBub3QgYWxsb3dlZCIpOworICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gT3B0aW1pemF0aW9uU3RhdHVzSW1wbChmdW4sIHN5bmNfb3B0KTsKKyAgfQorCisg
IGFzc2VydFVub3B0aW1pemVkID0gZnVuY3Rpb24gYXNzZXJ0VW5vcHRpbWl6ZWQoCisgICAgICBm
dW4sIHN5bmNfb3B0LCBuYW1lX29wdCwgc2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1ZSkgewor
ICAgIGlmIChzeW5jX29wdCA9PT0gdW5kZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAgIHZhciBv
cHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwgc3luY19vcHQpOworICAgIC8vIFRl
c3RzIHRoYXQgdXNlIGFzc2VydFVub3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1h
bHdheXMtb3B0CisgICAgLy8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11c3QgYWRk
IC0tbm8tYWx3YXlzLW9wdCB0byBmbGFncyBjb21tZW50LgorICAgIGFzc2VydEZhbHNlKChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0Fsd2F5c09wdGltaXplKSAhPT0gMCwKKyAg
ICAgICAgICAgICAgICAidGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1hbHdheXMtb3B0
Iik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJ
c0Z1bmN0aW9uKSAhPT0gMCwgbmFtZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0
ZWQgJiYKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVE
ZW9wdGVkKSAhPT0gMCkgeworICAgICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxh
ZyBpcyBzcGVjaWZpZWQgaXQncyBubyBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBw
YXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHN0aWxsIGRlb3B0aW1pemVkLCBzbyBrZWVwIHJ1bm5pbmcg
dGhlIHRlc3QKKyAgICAgIC8vIHRvIHN0cmVzcyB0ZXN0IHRoZSBkZW9wdGltaXplci4KKyAgICAg
IHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rT3B0aW1pemVkKSAhPT0gMCwgbmFtZV9vcHQpOworICB9CisKKyAgYXNzZXJ0
T3B0aW1pemVkID0gZnVuY3Rpb24gYXNzZXJ0T3B0aW1pemVkKAorICAgICAgZnVuLCBzeW5jX29w
dCwgbmFtZV9vcHQsIHNraXBfaWZfbWF5YmVfZGVvcHRlZCA9IHRydWUpIHsKKyAgICBpZiAoc3lu
Y19vcHQgPT09IHVuZGVmaW5lZCkgc3luY19vcHQgPSAiIjsKKyAgICB2YXIgb3B0X3N0YXR1cyA9
IE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmNfb3B0KTsKKyAgICAvLyBUZXN0cyB0aGF0IHVz
ZSBhc3NlcnRPcHRpbWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBmb3IgTGl0ZSBtb2RlIHdoZXJl
CisgICAgLy8gb3B0aW1pemF0aW9uIGlzIGFsd2F5cyBkaXNhYmxlZCwgZXhwbGljaXRseSBleGl0
IHRoZSB0ZXN0IHdpdGggYSB3YXJuaW5nLgorICAgIGlmIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua0xpdGVNb2RlKSB7CisgICAgICBwcmludCgiV2FybmluZzogVGVzdCB1c2Vz
IGFzc2VydE9wdGltaXplZCBpbiBMaXRlIG1vZGUsIHNraXBwaW5nIHRlc3QuIik7CisgICAgICB0
ZXN0UnVubmVyLnF1aXQoMCk7CisgICAgfQorICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9w
dGltaXplZCgpIGRvIG5vdCBtYWtlIHNlbnNlIGlmIC0tbm8tb3B0CisgICAgLy8gb3B0aW9uIGlz
IHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11c3QgYWRkIC0tb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisg
ICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJP
cHRpbWl6ZSkgIT09IDAsCisgICAgICAgICAgICAgICAgInRlc3QgZG9lcyBub3QgbWFrZSBzZW5z
ZSB3aXRoIC0tbm8tb3B0Iik7CisgICAgYXNzZXJ0VHJ1ZSgKKyAgICAgICAgKG9wdF9zdGF0dXMg
JiBWOE9wdGltaXphdGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICdzaG91
bGQgYmUgYSBmdW5jdGlvbjogJyArIG5hbWVfb3B0KTsKKyAgICBpZiAoc2tpcF9pZl9tYXliZV9k
ZW9wdGVkICYmCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua01h
eWJlRGVvcHRlZCkgIT09IDApIHsKKyAgICAgIC8vIFdoZW4gLS1kZW9wdC1ldmVyeS1uLXRpbWVz
IGZsYWcgaXMgc3BlY2lmaWVkIGl0J3Mgbm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICAgIC8vIHRo
YXQgcGFydGljdWxhciBmdW5jdGlvbiBpcyBzdGlsbCBvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmlu
ZyB0aGUgdGVzdAorICAgICAgLy8gdG8gc3RyZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAm
IFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwLAorICAgICAgICAnc2hvdWxk
IGJlIG9wdGltaXplZDogJyArIG5hbWVfb3B0KTsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZUxp
dGVNb2RlID0gZnVuY3Rpb24gaXNOZXZlck9wdGltaXplTGl0ZU1vZGUoKSB7CisgICAgdmFyIG9w
dF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXModW5kZWZpbmVkLCAiIik7CisgICAgcmV0dXJu
IChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0xpdGVNb2RlKSAhPT0gMDsKKyAg
fQorCisgIGlzTmV2ZXJPcHRpbWl6ZSA9IGZ1bmN0aW9uIGlzTmV2ZXJPcHRpbWl6ZSgpIHsKKyAg
ICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAg
ICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6
ZSkgIT09IDA7CisgIH0KKworICBpc0Fsd2F5c09wdGltaXplID0gZnVuY3Rpb24gaXNBbHdheXNP
cHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRl
ZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1
cy5rQWx3YXlzT3B0aW1pemUpICE9PSAwOworICB9CisKKyAgaXNJbnRlcnByZXRlZCA9IGZ1bmN0
aW9uIGlzSW50ZXJwcmV0ZWQoZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRp
b25TdGF0dXMoZnVuLCAiIik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1p
emF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBm
dW5jdGlvbiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVz
LmtPcHRpbWl6ZWQpID09PSAwICYmCisgICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua0ludGVycHJldGVkKSAhPT0gMDsKKyAgfQorCisgIGlzT3B0aW1pemVkID0g
ZnVuY3Rpb24gaXNPcHRpbWl6ZWQoZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6
YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0
aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3Qg
YSBmdW5jdGlvbiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3Rh
dHVzLmtPcHRpbWl6ZWQpICE9PSAwOworICB9CisKKyAgaXNUdXJib0Zhbm5lZCA9IGZ1bmN0aW9u
IGlzVHVyYm9GYW5uZWQoZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25T
dGF0dXMoZnVuLCAiIik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0
aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5j
dGlvbiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtP
cHRpbWl6ZWQpICE9PSAwICYmCisgICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRp
b25TdGF0dXMua1R1cmJvRmFubmVkKSAhPT0gMDsKKyAgfQorCisgIC8vIEN1c3RvbSBWOC1zcGVj
aWZpYyBzdGFjayB0cmFjZSBmb3JtYXR0ZXIgdGhhdCBpcyB0ZW1wb3JhcmlseSBpbnN0YWxsZWQg
b24KKyAgLy8gdGhlIEVycm9yIG9iamVjdC4KKyAgTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBh
cmVTdGFja1RyYWNlID0gZnVuY3Rpb24oZXJyb3IsIHN0YWNrKSB7CisgICAgLy8gVHJpZ2dlciBk
ZWZhdWx0IGZvcm1hdHRpbmcgd2l0aCByZWN1cnNpb24uCisgICAgdHJ5IHsKKyAgICAgIC8vIEZp
bHRlci1vdXQgYWxsIGJ1dCB0aGUgZmlyc3QgbWpzdW5pdCBmcmFtZS4KKyAgICAgIGxldCBmaWx0
ZXJlZFN0YWNrID0gW107CisgICAgICBsZXQgaW5NanN1bml0ID0gdHJ1ZTsKKyAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IGZyYW1lID0g
c3RhY2tbaV07CisgICAgICAgIGlmIChpbk1qc3VuaXQpIHsKKyAgICAgICAgICBsZXQgZmlsZSA9
IGZyYW1lLmdldEZpbGVOYW1lKCk7CisgICAgICAgICAgaWYgKCFmaWxlIHx8ICFmaWxlLmVuZHNX
aXRoKCJtanN1bml0LmpzIikpIHsKKyAgICAgICAgICAgIGluTWpzdW5pdCA9IGZhbHNlOworICAg
ICAgICAgICAgLy8gUHVzaCB0aGUgbGFzdCBtanN1bml0IGZyYW1lLCB0eXBpY2FsbHkgY29udGFp
bmluZyB0aGUgYXNzZXJ0aW9uCisgICAgICAgICAgICAvLyBmdW5jdGlvbi4KKyAgICAgICAgICAg
IGlmIChpID4gMCkgQXJyYXlQcm90b3R5cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgc3RhY2tb
aS0xXSk7CisgICAgICAgICAgICBBcnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNr
LCBzdGFja1tpXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIEFycmF5UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIGZyYW1lKTsK
KyAgICAgIH0KKyAgICAgIHN0YWNrID0gZmlsdGVyZWRTdGFjazsKKworICAgICAgLy8gSW5mZXIg
ZnVuY3Rpb24gbmFtZXMgYW5kIGNhbGN1bGF0ZSB7bWF4X25hbWVfbGVuZ3RofQorICAgICAgbGV0
IG1heF9uYW1lX2xlbmd0aCA9IDA7CisgICAgICBBcnJheVByb3RvdHlwZUZvckVhY2guY2FsbChz
dGFjaywgZWFjaCA9PiB7CisgICAgICAgIGxldCBuYW1lID0gZWFjaC5nZXRGdW5jdGlvbk5hbWUo
KTsKKyAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCkgbmFtZSA9ICIiOworICAgICAgICBpZiAoZWFj
aC5pc0V2YWwoKSkgeworICAgICAgICAgIG5hbWUgPSBuYW1lOworICAgICAgICB9IGVsc2UgaWYg
KGVhY2guaXNDb25zdHJ1Y3RvcigpKSB7CisgICAgICAgICAgbmFtZSA9ICJuZXcgIiArIG5hbWU7
CisgICAgICAgIH0gZWxzZSBpZiAoZWFjaC5pc05hdGl2ZSgpKSB7CisgICAgICAgICAgbmFtZSA9
ICJuYXRpdmUgIiArIG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoIWVhY2guaXNUb3BsZXZlbCgp
KSB7CisgICAgICAgICAgbmFtZSA9IGVhY2guZ2V0VHlwZU5hbWUoKSArICIuIiArIG5hbWU7Cisg
ICAgICAgIH0KKyAgICAgICAgZWFjaC5uYW1lID0gbmFtZTsKKyAgICAgICAgbWF4X25hbWVfbGVu
Z3RoID0gTWF0aC5tYXgobmFtZS5sZW5ndGgsIG1heF9uYW1lX2xlbmd0aCkKKyAgICAgIH0pOwor
CisgICAgICAvLyBGb3JtYXQgc3RhY2sgZnJhbWVzLgorICAgICAgc3RhY2sgPSBBcnJheVByb3Rv
dHlwZU1hcC5jYWxsKHN0YWNrLCBlYWNoID0+IHsKKyAgICAgICAgbGV0IGZyYW1lID0gIiAgICBh
dCAiICsgZWFjaC5uYW1lLnBhZEVuZChtYXhfbmFtZV9sZW5ndGgpOworICAgICAgICBsZXQgZmls
ZU5hbWUgPSBlYWNoLmdldEZpbGVOYW1lKCk7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSBy
ZXR1cm4gZnJhbWUgKyAiICIgKyBlYWNoLmdldEV2YWxPcmlnaW4oKTsKKyAgICAgICAgZnJhbWUg
Kz0gIiAiICsgKGZpbGVOYW1lID8gZmlsZU5hbWUgOiAiIik7CisgICAgICAgIGxldCBsaW5lPSBl
YWNoLmdldExpbmVOdW1iZXIoKTsKKyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGxpbmUgPyBsaW5l
IDogIiIpOworICAgICAgICBsZXQgY29sdW1uID0gZWFjaC5nZXRDb2x1bW5OdW1iZXIoKTsKKyAg
ICAgICAgZnJhbWUgKz0gKGNvbHVtbiA/ICI6IiArIGNvbHVtbiA6ICIiKTsKKyAgICAgICAgcmV0
dXJuIGZyYW1lOworICAgICAgfSk7CisgICAgICByZXR1cm4gIiIgKyBlcnJvci5tZXNzYWdlICsg
IlxuIiArIEFycmF5UHJvdG90eXBlSm9pbi5jYWxsKHN0YWNrLCAiXG4iKTsKKyAgICB9IGNhdGNo
IChlKSB7fTsKKyAgICByZXR1cm4gZXJyb3Iuc3RhY2s7CisgIH0KK30pKCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODc1MDAxODU3NTljNzJlNmFjYjMyZGIyNjZjNjc1ZWEzNDVlNTQxCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpA
QCAtMCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworbGV0IFJlYWxtID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChy
LCBzKSA9PiAkLmV2YWxTY3JpcHQuY2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVh
dGUoKTsKKworbGV0IGNsZWFudXAgPSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsg
ZnVuY3Rpb24gY2xlYW51cCgpIHsgc3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRoaXM7IH0gY2xlYW51
cDsiKTsKK2xldCByZWFsbV9nbG9iYWxfdGhpcyA9IFJlYWxtLmV2YWwociwgImdsb2JhbFRoaXMi
KTsKKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBD
cmVhdGUgYW4gb2JqZWN0IGFuZCBhIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdp
c3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0
IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAg
ICAgIGZnLnJlZ2lzdGVyKG9iamVjdCk7CisgICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNz
ZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCits
ZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVh
bG0uZXZhbChyLCAic3RvcmVkX2dsb2JhbDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9n
bG9iYWwsIGdsb2JhbFRoaXMpOworICBhc3NlcnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1f
Z2xvYmFsX3RoaXMpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxt
LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFs
bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZDRkMDI0N2UyNzEwZGE0ODVjOTI1NzJhYmE5YzI3NmNkZWYzNWFk
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9t
LWRpZmZlcmVudC1yZWFsbS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4
cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1t
anN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworbGV0IFJlYWxtID0geyBjcmVhdGU6ICQu
Y3JlYXRlUmVhbG0sIGV2YWw6IChyLCBzKSA9PiAkLmV2YWxTY3JpcHQuY2FsbChyLCBzKSAgfTsK
KworbGV0IHIgPSBSZWFsbS5jcmVhdGUoKTsKKworbGV0IGNsZWFudXAgPSBSZWFsbS5ldmFsKHIs
ICJ2YXIgc3RvcmVkX2dsb2JhbDsgbGV0IGNsZWFudXAgPSBuZXcgUHJveHkoZnVuY3Rpb24oKSB7
IHN0b3JlZF9nbG9iYWwgPSBnbG9iYWxUaGlzO30sIHt9KTsgY2xlYW51cCIpOworbGV0IHJlYWxt
X2dsb2JhbF90aGlzID0gUmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3Qg
YW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBu
ZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBr
aWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7
ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9i
amVjdCwgImhvbGRpbmdzIik7CisgICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRo
YXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGlt
ZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZh
bChyLCAic3RvcmVkX2dsb2JhbDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWws
IGdsb2JhbFRoaXMpOworICBhc3NlcnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFs
X3RoaXMpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NTYxNmE1MDIxYWNhNzU1MWM4MTE5ZWI2MWVmZTk0N2I1MTJjM2MxCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpAQCAt
MCwwICsxLDE1MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisv
LyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
Ly8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpz
dW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RG
aW5hbGl6YXRpb25SZWdpc3RyeSgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lz
dHJ5KCgpID0+IHt9KTsKKyAgYXNzZXJ0RXF1YWxzKGZnLnRvU3RyaW5nKCksICJbb2JqZWN0IEZp
bmFsaXphdGlvblJlZ2lzdHJ5XSIpOworICBhc3NlcnROb3RTYW1lKGZnLl9fcHJvdG9fXywgT2Jq
ZWN0LnByb3RvdHlwZSk7CisgIGFzc2VydFNhbWUoZmcuX19wcm90b19fLl9fcHJvdG9fXywgT2Jq
ZWN0LnByb3RvdHlwZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3JDYWxsQXNGdW5jdGlvbigpIHsKKyAgbGV0IGNhdWdodCA9IGZhbHNlOwor
ICBsZXQgbWVzc2FnZSA9ICIiOworICB0cnkgeworICAgIGxldCBmID0gRmluYWxpemF0aW9uUmVn
aXN0cnkoKCkgPT4ge30pOworICB9IGNhdGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVzc2Fn
ZTsKKyAgICBjYXVnaHQgPSB0cnVlOworICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUoY2F1
Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25S
ZWdpc3RyeUNsZWFudXBOb3RDYWxsYWJsZSgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0
aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVzdCBiZSBjYWxsYWJsZSI7CisgIGFzc2VydFRocm93cygo
KSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgpOyB9LCBUeXBlRXJyb3Is
IG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0
aW9uUmVnaXN0cnkoMSk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygo
KSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShudWxsKTsgfSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0
aW9uUmVnaXN0cnlXaXRoQ2FsbGFibGVQcm94eUFzQ2xlYW51cCgpIHsKKyAgbGV0IGhhbmRsZXIg
PSB7fTsKKyAgbGV0IG9iaiA9ICgpID0+IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2Jq
LCBoYW5kbGVyKTsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsK
K30pKCk7CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRo
Tm9uQ2FsbGFibGVQcm94eUFzQ2xlYW51cCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0
aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVzdCBiZSBjYWxsYWJsZSI7CisgIGxldCBoYW5kbGVyID0g
e307CisgIGxldCBvYmogPSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxl
cik7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShwcm94eSk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24g
VGVzdFJlZ2lzdGVyV2l0aE5vbk9iamVjdFRhcmdldCgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9u
UmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyOiB0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiOwor
ICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIoMSwgImhvbGRpbmdzIiksIFR5cGVFcnJv
ciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihmYWxzZSwgImhv
bGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5y
ZWdpc3RlcigiZm9vIiwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2Vy
dFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihTeW1ib2woKSwgImhvbGRpbmdzIiksIFR5cGVFcnJv
ciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihudWxsLCAiaG9s
ZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJl
Z2lzdGVyKHVuZGVmaW5lZCwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxlciA9
IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRs
ZXIpOworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBm
Zy5yZWdpc3Rlcihwcm94eSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyVGFyZ2V0
QW5kSG9sZGluZ3NTYW1lVmFsdWUoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeSgoKSA9PiB7fSk7CisgIGxldCBvYmogPSB7YTogMX07CisgIC8vIFNhbWVWYWx1ZSh0YXJn
ZXQsIGhvbGRpbmdzKSBub3Qgb2sKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKG9i
aiwgb2JqKSwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgIkZpbmFsaXphdGlvblJlZ2lzdHJ5
LnByb3RvdHlwZS5yZWdpc3RlcjogdGFyZ2V0IGFuZCBob2xkaW5ncyBtdXN0IG5vdCBiZSBzYW1l
Iik7CisgIGxldCBob2xkaW5ncyA9IHthOiAxfTsKKyAgZmcucmVnaXN0ZXIob2JqLCBob2xkaW5n
cyk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJl
Z2lzdHJ5KCkgeworICBhc3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0cnkucHJv
dG90eXBlLnJlZ2lzdGVyLmNhbGwoe30sIHt9LCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yKTsKKyAg
Ly8gRG9lcyBub3QgdGhyb3c6CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgo
KSA9PiB7fSk7CisgIEZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlci5jYWxs
KGZnLCB7fSwgImhvbGRpbmdzIik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJX
aXRoTm9uRXhpc3RlbnRLZXkoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3Ry
eSgoKSA9PiB7fSk7CisgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3Rlcih7ImsiOiAid2hhdGV2
ZXIifSk7CisgIGFzc2VydEZhbHNlKHN1Y2Nlc3MpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RV
bnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJvd3Mo
KCkgPT4gRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnVucmVnaXN0ZXIuY2FsbCh7fSwg
e30pLAorICAgICAgICAgICAgICAgVHlwZUVycm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0
VW5yZWdpc3RlcldpdGhOb25PYmplY3RVbnJlZ2lzdGVyVG9rZW4oKSB7CisgIGxldCBmZyA9IG5l
dyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGFzc2VydFRocm93cygoKSA9PiBm
Zy51bnJlZ2lzdGVyKDEpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5y
ZWdpc3RlcihCaWdJbnQoMSkpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
dW5yZWdpc3Rlcignb25lJyksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51
bnJlZ2lzdGVyKFN5bWJvbCgpKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZn
LnVucmVnaXN0ZXIodHJ1ZSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51
bnJlZ2lzdGVyKGZhbHNlKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVu
cmVnaXN0ZXIodW5kZWZpbmVkKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZn
LnVucmVnaXN0ZXIobnVsbCksIFR5cGVFcnJvcik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdl
YWtSZWZDb25zdHJ1Y3RvcigpIHsKKyAgbGV0IHdyID0gbmV3IFdlYWtSZWYoe30pOworICBhc3Nl
cnRFcXVhbHMod3IudG9TdHJpbmcoKSwgIltvYmplY3QgV2Vha1JlZl0iKTsKKyAgYXNzZXJ0Tm90
U2FtZSh3ci5fX3Byb3RvX18sIE9iamVjdC5wcm90b3R5cGUpOworCisgIGxldCBkZXJlZl9kZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3ci5fX3Byb3RvX18sICJkZXJlZiIp
OworICBhc3NlcnRFcXVhbHModHJ1ZSwgZGVyZWZfZGVzYy5jb25maWd1cmFibGUpOworICBhc3Nl
cnRFcXVhbHMoZmFsc2UsIGRlcmVmX2Rlc2MuZW51bWVyYWJsZSk7CisgIGFzc2VydEVxdWFscygi
ZnVuY3Rpb24iLCB0eXBlb2YgZGVyZWZfZGVzYy52YWx1ZSk7Cit9KSgpOworCisoZnVuY3Rpb24g
VGVzdFdlYWtSZWZDb25zdHJ1Y3RvcldpdGhOb25PYmplY3QoKSB7CisgIGxldCBtZXNzYWdlID0g
IldlYWtSZWY6IHRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9
PiBuZXcgV2Vha1JlZigpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkg
PT4gbmV3IFdlYWtSZWYoMSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygo
KSA9PiBuZXcgV2Vha1JlZihmYWxzZSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRo
cm93cygoKSA9PiBuZXcgV2Vha1JlZigiZm9vIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFz
c2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihTeW1ib2woKSksIFR5cGVFcnJvciwgbWVzc2Fn
ZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihudWxsKSwgVHlwZUVycm9yLCBt
ZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKHVuZGVmaW5lZCksIFR5
cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1
Y3RvckNhbGxBc0Z1bmN0aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNz
YWdlID0gIiI7CisgIHRyeSB7CisgICAgbGV0IGYgPSBXZWFrUmVmKHt9KTsKKyAgfSBjYXRjaCAo
ZSkgeworICAgIG1lc3NhZ2UgPSBlLm1lc3NhZ2U7CisgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgfSBm
aW5hbGx5IHsKKyAgICBhc3NlcnRUcnVlKGNhdWdodCk7CisgIH0KK30pKCk7CisKKyhmdW5jdGlv
biBUZXN0V2Vha1JlZldpdGhQcm94eSgpIHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9i
aiA9IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IHdy
ID0gbmV3IFdlYWtSZWYocHJveHkpOworfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkYThh
MGM5ZmVmYzlkMWRlMjY5NWIyM2Q1MjAxNDI4ZmIyNmIyMwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzCkBAIC0w
LDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8g
Q29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8v
IEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1t
YXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0
aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5j
dGlvbihob2xkaW5ncykgeworICBsZXQgaG9sZGluZ3NfbGlzdCA9IFtdOworICBob2xkaW5nc19s
aXN0LnB1c2goaG9sZGluZ3MpOworICBhc3NlcnRFcXVhbHMoMSwgaG9sZGluZ3NfbGlzdC5sZW5n
dGgpOworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzIiwgaG9sZGluZ3NfbGlzdFswXSk7CisgIGNs
ZWFudXBfY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lz
dHJ5KGNsZWFudXApOworbGV0IHdlYWtfcmVmcyA9IFtdOworKGZ1bmN0aW9uKCkgeworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvID0ge307CisgICAg
ICAgIHdlYWtfcmVmcy5wdXNoKG5ldyBXZWFrUmVmKG8pKTsKKyAgICAgICAgZmcucmVnaXN0ZXIo
bywgImhvbGRpbmdzIik7CisgICAgfQorfSkoKTsKKworLy8gU2luY2UgdGhlIFdlYWtSZWYgd2Fz
IGNyZWF0ZWQgZHVyaW5nIHRoaXMgdHVybiwgaXQgaXMgbm90IGNsZWFyZWQgYnkgR0MuIFRoZQor
Ly8gcG9pbnRlciBpbnNpZGUgdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGlzIG5vdCBjbGVhcmVk
IGVpdGhlciwgc2luY2UgdGhlIFdlYWtSZWYKKy8vIGtlZXBzIHRoZSB0YXJnZXQgb2JqZWN0IGFs
aXZlLgorZ2MoKTsKKyhmdW5jdGlvbigpIHsKKyAgICB3ZWFrX3JlZnMuZm9yRWFjaCgod2Vha19y
ZWYpID0+IGFzc2VydEVxdWFscygib2JqZWN0IiwgdHlwZW9mKHdlYWtfcmVmLmRlcmVmKCkpKSk7
Cit9KSgpOworCisvLyBUcmlnZ2VyIGdjIGluIG5leHQgdGFzaworc2V0VGltZW91dCgoKSA9PiB7
CisgICAgZ2MoKTsKKworICAgIC8vIENoZWNrIHRoYXQgY2xlYW51cCBjYWxsYmFjayB3YXMgY2Fs
bGVkIGluIGEgZm9sbG93IHVwIHRhc2sKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg
YXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxlZCk7CisgICAgICAgIGFzc2VydFRydWUod2Vha19yZWZz
LnNvbWUoKHdlYWtfcmVmKSA9PiB3ZWFrX3JlZi5kZXJlZigpID09PSBudWxsKSk7CisgICAgfSwg
MCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJl
Z2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxp
emF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAyYzRi
YjhlZTg0ZTAxMGI3NGQ2ZGViMzVhMGNmYWNmMTZkNDkzZgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZl
LmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0x
IikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNy
ZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2Fs
bGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0IGhvbGRp
bmdzX2xpc3QgPSBbXTsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNz
ZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQpOworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3Mp
OworICBjbGVhbnVwX2NhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRp
b25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBvMSA9IHt9OworbGV0IGhvbGRpbmdzID0geydhJzog
J3RoaXMgaXMgdGhlIGhvbGRpbmdzIG9iamVjdCd9OworCisvLyBJZ25pdGlvbiBob2xkcyByZWZl
cmVuY2VzIHRvIG9iamVjdHMgaW4gdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlc2Ugd2lsbCBiZQor
Ly8gcmVsZWFzZWQgd2hlbiB0aGUgZnVuY3Rpb24gZXhpdHMuIFNvIG9ubHkgYWNjZXNzIG8gaW5z
aWRlIGEgZnVuY3Rpb24gdG8KKy8vIHByZXZlbnQgYW55IHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBp
biB0ZW1wb3JhcnkgcmVnaXN0ZXJzIHdoZW4gYSBnYyBpcworLy8gdHJpZ2dlcmVkLgorKCgpID0+
IHtmZy5yZWdpc3RlcihvMSwgaG9sZGluZ3MpO30pKCkKKworZ2MoKTsKK2Fzc2VydEZhbHNlKGNs
ZWFudXBfY2FsbGVkKTsKKworLy8gRHJvcCB0aGUgbGFzdCByZWZlcmVuY2VzIHRvIG8xLgorKCgp
ID0+IHtvMSA9IG51bGw7fSkoKQorCisvLyBEcm9wIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUg
aG9sZGluZ3MuIFRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeSBrZWVwcyBpdAorLy8gYWxpdmUsIHNv
IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIG5vcm1hbC4KK2hvbGRpbmdz
ID0gbnVsbDsKK2djKCk7Cithc3NlcnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7CisKK2xldCB0aW1l
b3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxlZCk7Cisg
IGFzc2VydEVxdWFscyhob2xkaW5nc19saXN0Lmxlbmd0aCwgMSk7CisgIGFzc2VydEVxdWFscyho
b2xkaW5nc19saXN0WzBdLmEsICJ0aGlzIGlzIHRoZSBob2xkaW5ncyBvYmplY3QiKTsKK30KKwor
c2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
djgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRp
bWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVk
LWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkOGM5NjM5NzVkMmVj
ZmI4Nzc2NTkyY2RiNTVmZTg1MzcyNzljMjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlw
bGUtdGltZXMuanMKQEAgLTAsMCArMSw4NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdl
YWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2Mg
LS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKy8vIEZsYWdzOiAtLW5vLXN0cmVzcy1mbHVzaC1ieXRl
Y29kZQorCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2
ZSIpOworCitsZXQgY2xlYW51cDBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cDBfMF9ob2xk
aW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cDBfMV9ob2xkaW5nc19jb3VudCA9IDA7CisKK2xl
dCBjbGVhbnVwMV9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50
ID0gMDsKK2xldCBjbGVhbnVwMV8xX2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAw
ID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAt
IDFdID09ICIwIikKKyAgICArK2NsZWFudXAwXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAg
ICArK2NsZWFudXAwXzFfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cDBfY2FsbF9jb3VudDsK
K30KKworbGV0IGNsZWFudXAxID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdz
W2hvbGRpbmdzLmxlbmd0aCAtIDFdID09ICIwIikKKyAgICArK2NsZWFudXAxXzBfaG9sZGluZ3Nf
Y291bnQ7CisgIGVsc2UKKyAgICArK2NsZWFudXAxXzFfaG9sZGluZ3NfY291bnQ7CisgICsrY2xl
YW51cDFfY2FsbF9jb3VudDsKK30KKworbGV0IGZnMCA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3Ry
eShjbGVhbnVwMCk7CitsZXQgZmcxID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAx
KTsKKworLy8gUmVnaXN0ZXIgMSB3ZWFrIHJlZmVyZW5jZSBmb3IgZWFjaCBGaW5hbGl6YXRpb25S
ZWdpc3RyeSBhbmQga2lsbCB0aGUgb2JqZWN0cyB0aGV5IHBvaW50IHRvLgorKGZ1bmN0aW9uKCkg
eworICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIC8vIFRoZSBvYmplY3Rz
IG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxs
IHRoZW0uCisgICAgbGV0IG9iamVjdHMgPSBbXTsKKyAgICBvYmplY3RzWzBdID0ge307CisgICAg
b2JqZWN0c1sxXSA9IHt9OworCisgICAgZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5n
czAtMCIpOworICAgIGZnMS5yZWdpc3RlcihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTAiKTsKKwor
ICAgIC8vIERyb3AgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIG9iamVjdHMuCisgICAgb2JqZWN0cyA9
IFtdOworICB9Cit9KSgpOworCisvLyBXaWxsIHNjaGVkdWxlIGJvdGggZmcwIGFuZCBmZzEgZm9y
IGNsZWFudXAuCitnYygpOworCisvLyBCZWZvcmUgdGhlIGNsZWFudXAgdGFzayBoYXMgYSBjaGFu
Y2UgdG8gcnVuLCBkbyB0aGUgc2FtZSB0aGluZyBhZ2Fpbiwgc28gYm90aAorLy8gRmluYWxpemF0
aW9uUmVnaXN0cmllcyBhcmUgKGFnYWluKSBzY2hlZHVsZWQgZm9yIGNsZWFudXAuIFRoaXMgaGFz
IHRvIGJlIGEgSUlGRSBmdW5jdGlvbgorLy8gKHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwg
dGhlIG9iamVjdHMpIHNvIHdlIGNhbm5vdCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24KKy8vIGFzIGJl
Zm9yZS4KKyhmdW5jdGlvbigpIHsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICBsZXQgb2JqZWN0cyA9IFtdOworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3Rz
WzFdID0ge307CisgICAgZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMSIpOwor
ICAgIGZnMS5yZWdpc3RlcihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTEiKTsKKyAgICBvYmplY3Rz
ID0gW107CisgIH0KK30pKCk7CisKK2djKCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlv
bigpIHsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwX2NhbGxfY291bnQpOworICBhc3Nl
cnROb3RFcXVhbHMoMCwgY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVx
dWFscygwLCBjbGVhbnVwMF8xX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAs
IGNsZWFudXAxX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfMF9o
b2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdz
X2NvdW50KTsKK30KKworLy8gR2l2ZSB0aGUgY2xlYW51cCB0YXNrIGEgY2hhbmNlIHRvIHJ1bi4K
K3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTEwNzNhMDMxZGIwNmNjZDMwMjZkOGYyNGYxMjdmYWRkYjg5OGFjNAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1y
ZWdpc3RyaWVzLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VX
ZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdj
IC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQu
anMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQxID0gMDsK
K2xldCBjbGVhbnVwX2NhbGxfY291bnQyID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9s
ZGluZ3MpIHsKKyAgICBpZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczEiKQorICAgICAgICArK2Ns
ZWFudXBfY2FsbF9jb3VudDE7CisgICAgZWxzZSBpZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczIi
KQorICAgICAgICArK2NsZWFudXBfY2FsbF9jb3VudDI7CisgICAgZWxzZQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKK30KKworbGV0IGZnMSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShj
bGVhbnVwKTsKK2xldCBmZzIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisK
Ky8vIENyZWF0ZSB0d28gb2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzLiBUaGUgb2JqZWN0cyBuZWVkCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNv
IHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QxID0ge307
CisgICAgICAgIGZnMS5yZWdpc3RlcihvYmplY3QxLCAiaG9sZGluZ3MxIik7CisKKyAgICAgICAg
bGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcyLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5n
czIiKTsKKyAgICB9CisgICAgLy8gb2JqZWN0MSBhbmQgb2JqZWN0MiBnbyBvdXQgb2Ygc2NvcGUu
Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgZGlzY292ZXIgZGlydHkgV2Vha0NlbGxzIGFuZCBz
Y2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291
bnQxKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQyKTsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMg
PSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50
MSk7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDIpOworfQorCitz
ZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92
OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRy
YW50LWdjLWZyb20tY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTk3ZGFhNGQxZDI2NTI0ODIyMDJk
MTFiNWIyY2JjNDVjYjI3MjEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
cmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDIwIHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291
cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2FsbGVkID0g
ZmFsc2U7CitsZXQgcmVlbnRyYW50X2djID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBnYygp
OworICAgIGNhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShyZWVudHJhbnRfZ2MpOworCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDsgKytpKQorICAgICAgICBmZy5yZWdpc3Rlcih7fSwgNDIpOworfSkoKTsKKworZ2Mo
KTsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRUcnVlKGNhbGxlZCk7Cit9
LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25y
ZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyNGUyY2QzZWM3
NmQ1Yzg5NTFjZDJmYTBhNTFhODVmZDA4MDk4MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzCkBA
IC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLXN0cmVzcy1jb21wYWN0aW9uIC0tZXhwb3NlLWdjCisKKy8vIFRlc3QgdGhh
dCB0aGUgZGlydHkgRmluYWxpemF0aW9uUmVnaXN0cmllcyB0aGF0IGFyZSBlbnF1ZXVlZCBkdXJp
bmcgR0MgaGF2ZQorLy8gdGhlaXIgc2xvdHMgY29ycmVjdGx5IHJlY29yZGVkIGJ5IHRoZSBHQy4K
KworLy8gMSkgQ3JlYXRlIG1hbnkgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3RzIHNvIHRo
YXQgdGhleSBzcGFuIHNldmVyYWwgcGFnZXMKKy8vIChwYWdlIHNpemUgaXMgMjU2a2IpLgorbGV0
IHJlZ2lzdHJpZXMgPSBbXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAyNCAqIDg7IGkrKykgewor
ICByZWdpc3RyaWVzLnB1c2gobmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KSk7Cit9
CisKKy8vIDIpIEZvcmNlIHR3byBHQ3MgdG8gZW5zdXJlIHRoYXQgSlNGaW5hbGl6YXRvblJlZ2lz
dHJ5IG9iamVjdHMgYXJlIHRlbnVyZWQuCitnYygpOworZ2MoKTsKKworLy8gMykgSW4gYSBmdW5j
dGlvbjogY3JlYXRlIGEgZHVtbXkgdGFyZ2V0IGFuZCByZWdpc3RlciBpdCBpbiBhbGwKKy8vIEpT
RmluYWxpemF0b25SZWdpc3RyeSBvYmplY3RzLgorKGZ1bmN0aW9uKCkgeworICBsZXQgZ2FyYmFn
ZSA9IHt9OworICByZWdpc3RyaWVzLmZvckVhY2goKGZyKSA9PiB7CisgICAgZnIucmVnaXN0ZXIo
Z2FyYmFnZSwgNDIpOworICB9KTsKKyAgZ2FyYmFnZSA9IG51bGw7Cit9KSgpOworCisvLyA0KSBP
dXRzaWRlIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgdGFyZ2V0IGlzIHVucmVhY2hhYmxlOiBmb3Jj
ZSBHQyB0byBjb2xsZWN0CisvLyB0aGUgb2JqZWN0LgorZ2MoKTsKKworLy8gNSkgRm9yY2UgYW5v
dGhlciBHQyB0byB0ZXN0IHRoYXQgdGhlIHNsb3Qgd2FzIGNvcnJlY3RseSB1cGRhdGVkLgorZ2Mo
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM2
MGNmZGE3N2YwYWZjYTFiNWNiOWZkZGFmZWFjMGQ5MDc1MGJiCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzCkBAIC0wLDAgKzEsMzggQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIw
MTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhh
cm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xv
YWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xl
dCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5n
cykgeworICAgIGFzc2VydEVxdWFscyhob2xkaW5ncywgdW5kZWZpbmVkKTsKKyAgICArK2NsZWFu
dXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNs
ZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmlu
YWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisvLyBhIGNs
b3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVj
dCA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QpOworICAgIH0KK30pKCk7CisKKy8v
IFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0IGFuZCBzY2hlZHVsZSBjbGVh
bnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBB
c3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRf
ZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxf
Y291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0
cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ3MmIwZjhi
M2JiOGViYTY5MGExNjBkMTYzOGQzOWU0M2Y0NzJkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcwpAQCAtMCwwICsxLDQ3IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAy
MDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1o
YXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCits
b2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCits
ZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGlu
Z3MpIHsKKyAgYXNzZXJ0RXF1YWxzKCJob2xkaW5ncyIsIGhvbGRpbmdzKTsKKyAgKytjbGVhbnVw
X2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVh
bnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4g
b2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBv
YmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVs
aWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdp
c3RlcihvYmplY3QsICJob2xkaW5ncyIsIGtleSk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBH
QyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitn
YygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0
aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0g
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7
CisgICAgbGV0IG9sZF9jbGVhbnVwX2NhbGxfY291bnQgPSBjbGVhbnVwX2NhbGxfY291bnQ7CisK
KyAgICAvLyBVbnJlZ2lzdGVyIGFuIGFscmVhZHkgY2xlYW5lZC11cCB3ZWFrIHJlZmVyZW5jZS4K
KyAgICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgICAvLyBTaW5jZSB3ZSBt
YXkgbm90IGNvbGxlY3QgZXZlcnl0aGluZyB3ZSBkb24ndCBrbm93IHdoYXQgc3VjY2VzcyB3aWxs
IGJlIHVubGlrZSB2OC4KKyAgICAvLyBhc3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAgIC8vIEFz
c2VydCB0aGF0IGl0IGRpZG4ndCBkbyBhbnl0aGluZy4KKyAgICBzZXRUaW1lb3V0KCgpID0+IHsg
YXNzZXJ0RXF1YWxzKG9sZF9jbGVhbnVwX2NhbGxfY291bnQsIGNsZWFudXBfY2FsbF9jb3VudCk7
IH0sIDApOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2QxZTNl
YzZhM2FlYmZjNzg3NmM3ZGRhZjdkN2RiOGMxNTNmZWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qcwpAQCAtMCwwICsxLDQx
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdo
dCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczog
LS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZyAt
LW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0Lmpz
IiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xl
dCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7
Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBr
ZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCBy
ZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMK
Ky8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0
aGVtIQorCisoZnVuY3Rpb24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIo
b2JqZWN0LCAibXkgaG9sZGluZ3MiLCBrZXkpOworCisgIC8vIENsZWFyIHRoZSBXZWFrQ2VsbCBi
ZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciBpdC4KKyAgbGV0IHN1Y2Nlc3Mg
PSBmZy51bnJlZ2lzdGVyKGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gb2Jq
ZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0g
dGhlIHRhcmdldCBvYmplY3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9j
b3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJlIGNh
bGxlZCwgc2luY2Ugd2UgY2FsbGVkIHVucmVnaXN0ZXIuCitsZXQgdGltZW91dF9mdW5jID0gZnVu
Y3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitz
ZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92
OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItY2FsbGVkLXR3aWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZWZlODI0YjZjNzRhMDU4Y2IxZDFlYjM4
NzFlY2U1YmFmOGJhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJl
Z2lzdGVyLWNhbGxlZC10d2ljZS5qcwpAQCAtMCwwICsxLDQ2IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0
IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAt
LWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92
OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2Nv
dW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVhbnVw
X2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVh
bnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4g
b2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBv
YmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVs
aWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsKKyAg
ZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiLCBrZXkpOworCisgIC8vIFVucmVnaXN0ZXIg
YmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdC4KKyAgbGV0
IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisK
KyAgLy8gQ2FsbCB1bnJlZ2lzdGVyIGFnYWluIChqdXN0IHRvIGFzc2VydCB3ZSBoYW5kbGUgdGhp
cyBncmFjZWZ1bGx5KS4KKyAgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0
RmFsc2Uoc3VjY2Vzcyk7CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgorfSkoKTsK
KworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygpOworYXNz
ZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBj
bGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgc2luY2UgdGhlIHdlYWsgcmVmZXJlbmNl
CisvLyB3YXMgdW5yZWdpc3RlcmVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgewor
ICBhc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0
aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rl
ci1pbnNpZGUtY2xlYW51cDIuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lk
ZS1jbGVhbnVwMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjIxMjI4NjYzYWQyY2VkNTk2OTVhNTNjNWIzYjBl
NWY3Y2IwMGJjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rl
ci1pbnNpZGUtY2xlYW51cDIuanMKQEAgLTAsMCArMSw0OSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBh
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1l
eHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgt
bWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNhbGxlZCA9IGZhbHNlOwor
bGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAvLyBTZWUgd2hpY2ggdGFyZ2V0
IHdlJ3JlIGNsZWFuaW5nIHVwIGFuZCB1bnJlZ2lzdGVyIHRoZSBvdGhlciBvbmUuCisgIGlmICho
b2xkaW5ncyA9PSAxKSB7CisgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTIpOwor
ICAgIGFzc2VydFRydWUoc3VjY2VzcyB8fCBjYWxsZWQpOworICB9IGVsc2UgeworICAgIGFzc2Vy
dFNhbWUoaG9sZGluZ3MsIDIpOworICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkx
KTsKKyAgICBhc3NlcnRUcnVlKHN1Y2Nlc3MgfHwgY2FsbGVkKTsKKyAgfQorICBjYWxsZWQgPSB0
cnVlOworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7Cits
ZXQga2V5MSA9IHsiayI6ICJmaXJzdCBrZXkifTsKK2xldCBrZXkyID0geyJrIjogInNlY29uZCBr
ZXkifTsKKy8vIENyZWF0ZSB0d28gb2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmlu
YWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNs
b3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVj
dDEgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MSwgMSwga2V5MSk7CisgICAgICAg
IGxldCBvYmplY3QyID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsIDIsIGtleTIp
OworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRhcmdldCBvYmplY3Rz
IGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEZhbHNlKGNhbGxlZCk7CisKKy8v
IEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQgYW5kIGNsZWFuZWQg
dXAgb25lIGhvbGRpbmdzIChidXQgbm90IHRoZSBvdGhlciBvbmUpLgorbGV0IHRpbWVvdXRfZnVu
YyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydFRydWUoY2FsbGVkKTsKK30KKworc2V0VGltZW91
dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdp
c3Rlci1pbnNpZGUtY2xlYW51cDMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWlu
c2lkZS1jbGVhbnVwMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2ZhYTdiNmUzYzQzYmYyYjEyODY2ZjI0MGNj
NmVhYzE4N2QyMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdp
c3Rlci1pbnNpZGUtY2xlYW51cDMuanMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVj
dCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMg
LS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMv
djgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9j
b3VudCA9IDA7CitsZXQgY2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9
IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscyhob2xkaW5ncywgImhvbGRpbmdz
Iik7CisKKyAgLy8gVGhlcmUncyBtb3JlcyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXkgdGhhdCB3
ZSBoYXZlbid0CisgIC8vIGNsZWFuZWQgdXAgeWV0IHNvIHdlIHNob3VsZCBiZSBhYmxlIHRvIHVu
cmVnaXN0ZXIgdGhlCisgIC8vIGNhbGxiYWNrIGZvciB0aGF0IG9uZS4KKyAgbGV0IHN1Y2Nlc3Mg
PSBmZy51bnJlZ2lzdGVyKGtleSk7CisKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICArK2Ns
ZWFudXBfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQg
ZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisvLyBDcmVhdGUgYW4gb2Jq
ZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmpl
Y3QgbmVlZHMgdG8gYmUgaW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFi
bHkga2lsbCB0aGVtIQorbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKworKGZ1
bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAg
IGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcu
cmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiLCBrZXkpOworICAgICAgICBmZy5yZWdpc3Rlcihv
YmplY3QyLCAiaG9sZGluZ3MiLCBrZXkpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2ls
bCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOwor
YXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRo
ZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rp
b24oKSB7CisgIGFzc2VydEVxdWFscygxLCBjbGVhbnVwX2NhbGxfY291bnQpOworICBhc3NlcnRF
cXVhbHMoMSwgY2xlYW51cF9ob2xkaW5nc19jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91
dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFu
eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ODMzOTllNjVmMGQyNzQyNjA4YjEzODQ2ZDVhNWQ5MTdhYjM3ZWRlCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzCkBAIC0wLDAgKzEsNTMgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIw
MTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhh
cm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xv
YWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xl
dCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXBfaG9sZGluZ3NfY291bnQgPSAw
OworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhv
bGRpbmdzMiIsIGhvbGRpbmdzKTsKKyAgKytjbGVhbnVwX2hvbGRpbmdzX2NvdW50OworICArK2Ns
ZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KGNsZWFudXApOworbGV0IGtleTEgPSB7ImsiOiAia2V5MSJ9OworbGV0IGtleTIgPSB7ImsiOiAi
a2V5MiJ9OworLy8gQ3JlYXRlIHRocmVlIG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4gdGhl
IEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0cworLy8gbmVlZCB0byBiZSBpbnNpZGUg
YSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9u
KCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBv
YmplY3QxYSA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxYSwgImhvbGRpbmdzMWEi
LCBrZXkxKTsKKworICAgICAgICBsZXQgb2JqZWN0MWIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0
ZXIob2JqZWN0MWIsICJob2xkaW5nczFiIiwga2V5MSk7CisKKyAgICAgICAgbGV0IG9iamVjdDIg
PSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIsIGtleTIpOwor
CisgICAgICAgIC8vIFVucmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlz
Y292ZXIgdGhlIG9iamVjdHMuCisgICAgICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3Rlcihr
ZXkxKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKyAgICB9Cit9KSgpOworCisvLyBU
aGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdHMuCitnYygpOworYXNzZXJ0RXF1
YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVw
IGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgZm9yIHRoZSByZWZlcmVuY2Ugd2hpY2gKKy8v
IHdhcyBub3QgdW5yZWdpc3RlcmVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgewor
ICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1
YWxzKDAsIGNsZWFudXBfaG9sZGluZ3NfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRf
ZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0
b2tlbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0MWU4MDBhYTJhY2UwOWY2ZjI5NTJlNGU5N2NiNTY5ODFlYTJlM2UKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcwpAQCAt
MCwwICsxLDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcy13aXRoLWNsZWFudXAtc29tZSAtLWV4cG9zZS1n
YyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0
LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCit2YXIgRlIgPSBuZXcgRmluYWxpemF0aW9uUmVn
aXN0cnkgKGZ1bmN0aW9uIChob2xkaW5ncykgeyBnbG9iYWxUaGlzLkZSUmFuID0gdHJ1ZTsgfSk7
Cit7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9i
aiA9IHt9OworICAgICAgICAvLyBvYmogaXMgaXRzIG93biB1bnJlZ2lzdGVyIHRva2VuIGFuZCBi
ZWNvbWVzIHVucmVhY2hhYmxlIGFmdGVyIHRoaXMKKyAgICAgICAgLy8gYmxvY2suIElmIHRoZSB1
bnJlZ2lzdGVyIHRva2VuIGlzIGhlbGQgc3Ryb25nbHkgdGhpcyB0ZXN0IHdpbGwgbm90CisgICAg
ICAgIC8vIHRlcm1pbmF0ZS4KKyAgICAgICAgRlIucmVnaXN0ZXIob2JqLCA0Miwgb2JqKTsKKyAg
ICB9Cit9CisKK2xldCB0cnlBZ2FpbkNvdW50ID0gMTA7CitmdW5jdGlvbiB0cnlBZ2FpbigpIHsK
KyAgICBnYygpOworICAgIGlmIChnbG9iYWxUaGlzLkZSUmFuKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKCEtLXRyeUFnYWluQ291bnQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAg
IHNldFRpbWVvdXQodHJ5QWdhaW4sIDApOworfQordHJ5QWdhaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404602</attachid>
            <date>2020-07-17 15:11:09 -0700</date>
            <delta_ts>2020-07-17 15:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717151108.patch</filename>
            <type>text/plain</type>
            <size>230877</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjA3Zjk3Y2EwNzllMGFjMjhkOGY1YmY2OGM4Y2IxNTkxN2Q4ZGUwLi5mOWM3YjdjMDlhM2FmNGFm
NGY0OTZiYjhkOTY1NmFiZjg0YjhkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pT
QVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKGZ1bmN0aW9u
RmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeURlYWRDb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAg
ICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwLgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdv
cmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxv
b3ApOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmspOgorICAgICAg
ICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmspOgorICAg
ICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAg
ICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmguCisgICAgICAgICogcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAg
ICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChKU0M6
OnByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlm
aWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cCk6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmxpdmVDb3VudCk6CisgICAgICAg
IChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudCk6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RhY2tPdmVyZmxvd0ZyYW1l
Q2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwU2V0V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRBZGRXYXRjaHBvaW50U2V0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlKb2luV2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
QmFzZT46OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6
aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjAtMDctMTcgIFhh
biBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVs
ZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM5OGQxZmNi
ZjY5ZGMwZjA5MjE2NGZiZjczMDdjNTE5NmM3MjA1NWQuLjhmODIzZmRhZTc1MTk1MjA5MzViZDJi
NTg0NjQ4YTU4N2YxNWFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNy0x
NyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQ
cm9taXNlRGVmZXJyZWRUaW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNv
LCBhZGQgZ2xvYmFsT2JqZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25z
IGZyb20gSlNDJ3MKKyAgICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUds
b2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
Ojpjb21waWxlU3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
aW5zdGFudGlhdGVTdHJlYW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHA6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorCiAyMDIwLTA3LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlY29tbWVuZGVkIGFydGljbGUgdGl0bGVzIG9uIGNzZG4ubmV0IGFy
ZSBjbGlwcGVkIGFmdGVyIHRyYW5zbGF0aW5nIHRvIEVuZ2xpc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFjNDcy
NTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uNGFiNTQ3ZTlkZTBkZjhlYTQ3MTQ1ZjJhZmQ1OWZm
NTY1M2NiMzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBu
dWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VS
ZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3As
CiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGls
ZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBkNjFhYWM3
ZTQ1YzUzNzIwNWE4YWNhN2UwOGVmZDY5NGNiZWRjNDIzLi5kN2Q0ZDg5OGZkNDJmMGYyNTRhNzQ5
MGJhOTMyZTY4ZGI1ODU5ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QubW0KQEAgLTY0LDYgKzY0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG1vZHVsZUxvYWRlckV2YWx1YXRl
LCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rp
b25UcmFja2VyCisgICAgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBu
dWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFt
aW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNmEwODMwZmE1MWU5YjIyOWE0ZWYzMThhOTBjOWU3NTIy
YzBhYmU3Li4zNjc2NTkzNzRlYjJkM2NiMzE0NjRhNWE5MTRlZWU5OGEyYWM5OWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MzAsNiArODMwLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0RhdGFWaWV3
LmgKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VD
YWNoZS5oCisgICAgcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCiAgICAgcnVudGltZS9EZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAogICAgIHJ1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgK
ICAgICBydW50aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5oCkBAIC05NjgsNyArOTY5LDYgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1l
L1BhcnNlSW50LmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dy
YW1FeGVjdXRhYmxlLmgKLSAgICBydW50aW1lL1Byb21pc2VUaW1lci5oCiAgICAgcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAog
ICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNGNkNzRjMjUyMmVhMmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1Zi4uYTI2YTk5NzUyNTJk
MDY1NDY2YmZhNjFhNWI1YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTkzMSwxNiArOTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIwMDYwMDA1OUQ2NSAvKiB0
ZXN0SW5jbHVkZXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzMEZERTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSAqLzsgfTsKIAkJ
NTMxMUJENEIxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEg
LyogV2FzbU9NR1BsYW4uaCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdh
c21QbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsgfTsKLQkJNTMxODA0NUMy
MkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNF
eHRyYWN0VmFsdWUuaCAqLzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwICovOyB9OworICAgICAgICAgICAgICAgIDUzMTgwNDVDMjJFQUFDNEIwMDRBNzM0
MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmgg
Ki87IH07CisgICAgICAgICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzMzQkJEQjIxMTBG
N0QyMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIg
LyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUzMzNCQkRDMjExMEY3RDkw
MDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAyQjJBRDcgLyogREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0UxMDA3NjE4RUMgLyogREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgKi87IH07Ci0JCTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTMzOEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKyAg
ICAgICAgICAgICAgICA1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4
aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUz
MzhFQkEzMjNBQjA0QjgwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEVCQTIyM0FCMDRB
MzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87IH07Ci0JCTUzNDFGQzcy
MURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMzNDNDMDBFN0U0
RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUz
M0QwNzQ0MjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0
MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICov
OyB9OworCQk1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3
NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLzsgfTsKKyAg
ICAgICAgICAgICAgICA1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hl
Y2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsg
fTsKIAkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3MDFFNzBDRjNE
MDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlz
ZVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZCQjcxQzE3OTVDMzAwRjZG
M0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKyAgICAgICAgICAg
ICAgICA1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODc0MUU3MERE
RUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAgNTM0ODZCQjcxQzE3OTVD
MzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0
OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJD
QjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3
NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRFMDM0RTFFNEQ0QjE2MDAy
MTNGNjQgLyogQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCAqLzsg
fTsKQEAgLTM1OTcsNiArMzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4NjgwMDhGNEM5MyAvKiBG
dW5jdGlvbkFsbG93bGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkFsbG93bGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFFQjA4MDA4MUY0Q0MgLyog
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBwYXRoID0ganMvV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24uaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5QUNCMyAvKiBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MDFGQTNFMzFD
MDAyNkE1NDUgLyogU291cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3Vy
Y2VzQ29jb2EudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MTFGQTNF
MzFEMDAyNkE1NDUgLyogU291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNl
cy50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2NkFEMUZBM0U3NzcwMDI2
QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0LmNwcCI7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3ICszNjI2LDIyIEBACiAJ
CTUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBCM0V4dHJhY3RWYWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0VmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAwNEE3MzQyIC8qIEIzRXh0
cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFjdFZhbHVlLmNwcDsgcGF0
aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gdGVzdGFwaS5jcHA7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3Ry
eVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFFRTdCQzIyREU2
RUM2MDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3QjgxOTEgLyogSmF2YVNjcmlw
dENvcmUubW9kdWxlbWFwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9kdWxlLW1hcCI7IHBhdGgg
PSBKYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3BvaW50T1NSRXhpdFNpZGVT
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RUJBMjIzQUIwNEEzMDAz
ODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0aCA9IGZ0bC9GVExTZWxl
Y3RQcmVkaWN0YWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNCMTVE
RTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXYXNtT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQz
MjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTM0MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNr
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8q
IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3MDFFNzBDRjNEMDBG
MTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4
NzIxRTcwRDAxNTAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNlVGltZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIFByb21p
c2VUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9taXNl
VGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzQ4NkJCNjFDMTc5NUMz
MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAg
ICAgICAgIDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdvcmtUaW1lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVm
ZXJyZWRXb3JrVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVmZXJyZWRXb3JrVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAg
ICAgICAgICAgIDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJy
YXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIxQzcyNDJDODAwMTJC
Q0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlD
VGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgzMUM3MjQyQzgw
MDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gVHlwZWRBcnJheUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJheUNUZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYgKzcxNDMsOCBAQAogCQkJ
CTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oICovLAogCQkJ
CUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlC
Q0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAorCQkJCTUzNDYz
ODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5jcHAgKi8sCisJCQkJNTM0
NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi8sCiAJCQkJMTY5
OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovLAog
CQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLywK
IAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAqLywK
QEAgLTcxODQsMTEgKzcxOTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJDRjI1MDBBQTI5QkEgLyog
RXhlY3V0YWJsZUJhc2UuY3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBF
eGVjdXRhYmxlQmFzZS5oICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0EwMEFDNDQ3NCAvKiBFeGVj
dXRhYmxlQmFzZUlubGluZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyog
RmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3Bw
ICovLAogCQkJCUNFQ0ZBRDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2Vu
dC5oICovLAogCQkJCUNFMjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJB
Z2VudEJhc2UuY3BwICovLAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFz
ZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IuY3BwICovLAorCQkJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRFNkVDNjAwMzBEQTgxIC8q
IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJCQk1MzFFRTdCOTIyREU2
QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLywKIAkJCQlB
N0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFG
MjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3QThBRjJBMTdB
REI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYyQTE3QURCNUYz
MDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgwQzAwRTE2RDRFOTAwQTA2
RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMjY4MEMxMEUxNkQ0RTkw
MEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03MzQ1LDcgKzczNjIsMTMg
QEAKIAkJCQkwRjdERjEzOTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUwMDk1OTUxQiAvKiBKU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3QjRBQ0FFMTQ4NEM5Q0Uw
MEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2NkMxMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5j
cHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ2MjJDMkQ5RDEw
MDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXku
Y3BwICovLAorCQkJCTc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3Bw
ICovLAorCQkJCTc5ODkzNzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuaCAqLywK
KwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmggKi8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0Zsb2F0MzJBcnJheS5oICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zs
b2F0NjRBcnJheS5oICovLAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0
aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5o
ICovLApAQCAtNzU0NCw5ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEg
LyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQ
cm9ncmFtRXhlY3V0YWJsZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQ
cm9taXNlVGltZXIuY3BwICovLAotCQkJCTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9t
aXNlVGltZXIuaCAqLywKLQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlE
ZXNjcmlwdG9yLmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdGQjYw
QTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdG
QjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJD
OTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLAogCQkJ
CTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKQEAgLTkyODYs
NiArOTMwNyw3IEBACiAJCQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0IC8qIERlZmVyR0MuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTA2ODY1MUFFMjQ2Mzkw
MDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNDYz
ODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0
ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFGQTMyMjQwREIxRDMwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTI2LDkgKzk1
NDgsMTEgQEAKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZCMTAwMjJCRjZEIC8qIEZh
c3RKSVRQZXJtaXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTcxRjMzQTQ1MzAw
RjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAq
LywKLQkJCQlDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQu
aCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNGQUQz
NzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFMjBCRDA1MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJh
c2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9h
dDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJB
cnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3
IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3MURCNUZGQzkwMERDODdB
NSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1Nyw3ICs5ODgxLDggQEAK
IAkJCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJB
cnJheS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUz
M0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEYyQjY2RUYxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZG
MDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURDNjA1QjYwMUNFMjZFQTcw
MDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMTAxRENB
OTI5NDAwMTRGOUZFIC8qIFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
NzM0MUQ0MURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0
aW9uLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEZE
M0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlN
YXBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5
QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IGMwNTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0YzI3MDUuLjJhMjg3
YTdmZGRiMDgwNGYzYjYwMTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTc4Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAog
cnVudGltZS9FeGVjdXRhYmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQu
Y3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKK3J1bnRpbWUvRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5j
cHAKQEAgLTg1MCw2ICs4NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcuY3BwCiBydW50aW1lL0pT
RGF0YVZpZXdQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiBydW50aW1lL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGltZS9KU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcAogcnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0dlbmVyYXRv
ci5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTkzMiw3ICs5MzUsNyBA
QCBydW50aW1lL09wZXJhdGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3BwCiBydW50aW1lL1By
ZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1
dGFibGUuY3BwCi1ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRpbWUvRGVmZXJyZWRXb3Jr
VGltZXIuY3BwCiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKIHJ1bnRpbWUvUHJvcGVy
dHlTbG90LmNwcAogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAppbmRleCAxODRiYjk0NDQxZDNmYTQzMzQyYWZiZjk2NjVjYzFiZTczOWVlMDEz
Li5kODFhZGVmZjVmODQyNmE4NTMyNDJjNGU3YTE3YjU3YTY1MjFjNmUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIklzb0NlbGxT
ZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNpbmNsdWRlICJK
SVRXb3JrbGlzdC5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIK
ICNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2MTIsOCBAQCB2b2lkIEhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICBmaW5hbGl6ZU1h
cmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtKCkubV93ZWFr
T2JqZWN0UmVmU3BhY2UpOwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQogICAg
ICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+
KCp2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5tX2ZpbmFsaXphdGlv
blJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5hbGl6YXRpb25SZWdpc3Ry
eVNwYWNlKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFz
c2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDJlMGQwYTMwZGY1
ZjY1MzA4ZTdhOWZjZWI5NjQzNGEyOTdmMTgzMTkuLmM5YmVlZDlmYTgyMzRmMWExMDYyMWYzMTM2
MjBiYmNhZjU2MjlkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ29tcGlsZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIK
ICNpbmNsdWRlICJDb25maWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
ICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNB
cnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5o
IgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKQEAgLTU2LDcgKzU4LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgotI2lu
Y2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFwQWNjZXNzU2NvcGUu
aCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9y
LmgiCkBAIC0xNTUsNiArMTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IHsKIAorI2RlZmluZSBFWElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIHN0
YXRpYyB2b2lkIGpzY0V4aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0Rm9yQXN5bmNocm9ub3Vz
RGlzYXNzZW1ibHkoKTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBXb3JrZXJzOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYsIGJvb2wg
aXNXb3JrZXIsIGNvbnN0IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2Jh
bE9iamVjdCosIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUsIENv
bW1hbmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihH
bG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVl
LCBjb25zdCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBjbGFzcyBNZXNzYWdlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1YmxpYzoKQEAgLTMwMiw3
ICszMDUsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
YWxsTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNy
b3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVs
ZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNv
dW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVs
ZVN5bnRheChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxl
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDggKzU0NCwxMiBAQCBwcml2
YXRlOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyIs
IGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAKICAgICAgICAgYWRkRnVu
Y3Rpb24odm0sICJkcmFpbk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWluTWljcm90YXNrcywgMCk7
Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxl
YXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFRpbWVvdXQiLCBm
dW5jdGlvblNldFRpbWVvdXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFz
ZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50IiwgZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeUxpdmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZmlu
YWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50LCAwKTsKKyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0UmFu
ZG9tU2VlZCIsIGZ1bmN0aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAic2V0UmFuZG9tU2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZCwgMSk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUsIDEpOwpAQCAtNjM4LDYg
KzY0OCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVz
b2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwg
SlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRj
aChKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRh
UHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNN
b2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0
RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKIH07CiBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxPYmplY3QsIEpTR2xvYmFs
T2JqZWN0KTsKIApAQCAtNjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9k
dWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAgbnVsbHB0ciwgLy8gbW9k
dWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tl
cgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51bGxwdHIs
IC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAg
ICBudWxscHRyLCAvLyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIxODcsNiArMjIwMCwyOSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
ZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBtZWFucyB3
ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBkb24ndCB0aGluayB0aGF0
J3MgY29tbW9uIGZvciB0ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sgPSBqc0R5bmFtaWNDYXN0
PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFjYWxs
YmFjaykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsKKworICAgIC8vIEZJ
WE1FOiBXZSBkb24ndCBsb29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRv
bid0IGhhdmUgYSBzY2hlZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2bS5kZWZlcnJlZFdvcmtU
aW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOworICAgIHZtLmRlZmVycmVk
V29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2FsbGJhY2tdIHsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNrLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFj
aywganNVbmRlZmluZWQoKSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2VlIHRoaXMuLi4iKTsKKyAg
ICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKGNhbGxiYWNrKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRp
b25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZmluYWxp
emF0aW9uUmVnaXN0cnkgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih2
bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5hbGl6YXRpb25SZWdpc3Ry
eSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lzdHJ5Il9zKTsKKworICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxpemF0aW9uUmVnaXN0
cnktPmxpdmVDb3VudChsb2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2Fz
dDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwor
ICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5h
bGl6YXRpb25SZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFs
aXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQobG9ja2VyKSkpOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjYx
NywxMCArMjY3OSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICAv
LyBXZSBjYW4ndCB1c2UgZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2luZyBjb2RlIGJlY2F1c2Ug
aXQgdXNlcyBXaW5kb3dzCiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRpb24gSGFuZGxpbmcKLSAg
ICBpbnQgcmVzID0gMDsKKyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNTOwogICAgIFRSWQogICAg
ICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQVChyZXMgPSAzKQorICAg
IEVYQ0VQVChyZXMgPSBFWElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6ZVN0YXRzQXRFbmRPZlRl
c3RpbmcoKTsKICAgICBpZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZPUl9JTlBVVF9UT19FWElU
IikpIHsKICAgICAgICAgV1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigpOwpAQCAtMjY5MSw3ICsy
NzUzLDcgQEAgc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBleGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhDRVBUSU9OCiB9CiAKLXN0
YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5lJiBvcHRpb25zKQorc3Rh
dGljIGJvb2wgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMp
CiB7CiAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5hbWUgPSBvcHRpb25zLm1f
dW5jYXVnaHRFeGNlcHRpb25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKQEAgLTI3MjMsNyArMjc4NSw3IEBAIHN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRF
eGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwg
SlNWYWx1ZSB2YWx1ZSwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCitzdGF0
aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBp
c0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgQ29tbWFu
ZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogCkBAIC0yNzQyLDYgKzI4MDQsMTUgQEAgc3RhdGljIHZvaWQgY2hlY2tFeGNl
cHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBo
YXMKICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDogSlNWYWx1ZSgpLCBvcHRp
b25zKTsKIH0KIAordm9pZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRp
b24pCit7CisgICAgYXV0byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCk7CisgICAgZHVtcEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7Cisg
ICAgYm9vbCBoaWRlTm9SZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRlTm9SZXR1cm4pCisgICAg
ICAgIGpzY0V4aXQoRVhJVF9FWENFUFRJT04pOworfQorCiBzdGF0aWMgdm9pZCBydW5XaXRoT3B0
aW9ucyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJv
b2wmIHN1Y2Nlc3MpCiB7CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlwdHMgPSBvcHRpb25zLm1f
c2NyaXB0czsKQEAgLTMxNzYsNyArMzI0Nyw3IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExp
bmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIGZ1
bmModm0sIGdsb2JhbE9iamVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZtLmRyYWluTWljcm90YXNr
cygpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxvb3AoKTsKKyAgICB2bS5k
ZWZlcnJlZFdvcmtUaW1lci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3RpdmUgJiYgc3Vj
Y2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJ
dGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZDNhZDIxZTViYzk3ZWE5NDUwYzZjZTBiNmY3ZTBj
NjI1MTdjOTE5OS4uZWNkMDczY2QzZGYyMGU1YTljZmM2ZDIzZTY1ZGU0YWUwMDQzZTc3OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNv
bnN0IENsYXNzSW5mbyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBcnJheSBJ
dGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoQXJyYXlJdGVyYXRvclByb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBBcnJheUl0
ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBcnJheSBJdGVyYXRvciBQcm90b3R5cGUiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5
SXRlcmF0b3JQcm90b3R5cGUpIH07CiAKIHZvaWQgQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZiYS4uNzAxZDY3NDdiZGJh
ZGRjODgyZTBmZmM0MTRjMWE1NzA4MWY5MDUzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAg
bWFjcm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oU3ltYm9sKSBcCiAgICAgbWFjcm8oV2Vha1JlZikg
XAorICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oX19kZWZpbmVH
ZXR0ZXJfXykgXAogICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18pIFwKICAgICBtYWNybyhfX2xv
b2t1cEdldHRlcl9fKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWZlcnJlZFdvcmtUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkzZDMxNjRlMDg5ZDE2M2UzMjYzMzBl
ODExOGQ4MmMwN2JmZDhjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisKKyNpbmNsdWRlICJKU1By
b21pc2UuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIERl
ZmVycmVkV29ya1RpbWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQorCitEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIoVk0mIHZtKQor
ICAgIDogQmFzZSh2bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3JrKFZN
JiB2bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7
CisgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIoKTsKKyAgICBpZiAoIW1f
cnVuVGFza3MpIHsKKyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGRhdGFMb2dM
bklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uOiAi
LCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkg
Y2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmNv
bnRhaW5zKHRpY2tldCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cg
dG8gc2NoZWR1bGUgd29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0
cnVlOworICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBjYW4gcmVsZWFzZSBhbnkg
d2Vha3JlZnMgaGVyZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3luY2hyb25vdXNKU0V4ZWN1
dGlvbigpOworCisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAoRXhjZXB0aW9uKiBleGNl
cHRpb24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgc2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoZ2xv
YmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2bS5k
cmFpbk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uRm9ySW5z
cGVjdGlvbigpKTsKKworICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgICAgICAg
ICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdo
ZW5BbGxUaWNrZXRzRmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwor
CisgICAgbV90YXNrTG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6
cnVuUnVuTG9vcCgpCit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJl
YWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09
ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91bGRTdG9wUnVuTG9vcFdo
ZW5BbGxUaWNrZXRzRmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5zaXpl
KCkpCisgICAgICAgIFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERlZmVycmVkV29ya1RpbWVy
OjphZGRQZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlND
ZWxsPj4mJiBkZXBlbmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXBlbmRlbmNp
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkgIT0g
dGlja2V0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5hZGQodGlja2V0
LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkg
eworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3Nl
LCAiQWRkaW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAg
ICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7Cisg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5h
bDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVj
dG9yKGRlcGVuZGVuY2llcyk7CisgICAgfQorfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpo
YXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCku
Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0dXJuIG1fcGVuZGluZ1Rp
Y2tldHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFz
RGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5
KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSk7CisK
KyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRpY2tldCk7CisgICAgcmV0
dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtU
aW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQodGlj
a2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGJvb2wgcmVz
dWx0ID0gbV9wZW5kaW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKworICAgIGlmIChyZXN1bHQp
CisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2Us
ICJDYW5jZWxpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbihU
aWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rh
c2tMb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZN
b3ZlKHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5p
bmdUYXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJy
ZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29y
a1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZjZjZjOWNiMzM0NjJjMTJkYTI2NTAwN2VmMWNkOTU2ZjJh
OTE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNSdW5M
b29wVGltZXIuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2U7
CitjbGFzcyBWTTsKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVm
ZXJyZWRXb3JrVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGltZXIgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKKworICAgIHZvaWQgZG9Xb3JrKFZNJikg
ZmluYWw7CisKKyAgICB1c2luZyBUaWNrZXQgPSBKU09iamVjdCo7CisgICAgdm9pZCBhZGRQZW5k
aW5nV29yayhWTSYsIFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2ll
cyk7CisgICAgYm9vbCBoYXNQZW5kaW5nV29yayhUaWNrZXQpOworICAgIGJvb2wgaGFzRGVwZW5k
YW5jeUluUGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpOworICAgIGJvb2wg
Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKKworICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2
b2lkKCk+OworICAgIHZvaWQgc2NoZWR1bGVXb3JrU29vbihUaWNrZXQsIFRhc2smJik7CisKKyAg
ICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBmYWxzZTsgfQorCisgICAg
dm9pZCBydW5SdW5Mb29wKCk7CisKKyAgICBzdGF0aWMgUmVmPERlZmVycmVkV29ya1RpbWVyPiBj
cmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJy
ZWRXb3JrVGltZXIodm0pKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGVmZXJyZWRXb3JrVGlt
ZXIoVk0mKTsKKworICAgIExvY2sgbV90YXNrTG9jazsKKyAgICBib29sIG1fcnVuVGFza3MgeyB0
cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07Cisg
ICAgRGVxdWU8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tzOworICAgIEhhc2hNYXA8
VGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdUaWNrZXRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2Yzk2ZWI4NGMwMzQ0ZTQ3OWQwNDFhZTY2YjQ5Mzk2Mjk2OThkN2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
SXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpIH07CisKK3ZvaWQgRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiX3MsIE5hbWVBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworCitGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSwgY29uc3RydWN0
RmluYWxpemF0aW9uUmVnaXN0cnkpCit7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RmluYWxpemF0
aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZpbmFsaXphdGlvblJlZ2lz
dHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQg
PSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIGZpbmFs
aXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpID09IG5ld1Rh
cmdldAorICAgICAgICA/IGdsb2JhbE9iamVjdC0+ZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1
cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxtKHZtLCBuZXdUYXJnZXQp
LT5maW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUodm0sIGZp
bmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLmdldE9iamVjdCgpKSkpOworfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZjZTRjNTYzZjgyY2NlODRlN2E5ZjE4ZjZjNWYzMzAwYWU0MjQ4NmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGU7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisKKyAgICBzdGF0aWMgRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciop
CisgICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3I+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3Rv
dHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUqKTsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9u
KSk7CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2Yy
MDNmNzNmYTk3YTAwNmZhNDVjNmM0YmFjM2NhODY3NDUxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9G
dW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxp
emF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisK
K3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIC8vIFdl
IGNhbid0IG1ha2UgdGhpcyBhIHByb3BlcnR5IG5hbWUgYmVjYXVzZSBpdCdzIGEgcmVzZXZlcmVk
IHdvcmQgaW4gQysrLi4uCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZWdpc3RlciIpLCBwcm90
b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNT
dHJpbmcodm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCitBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKFVOTElL
RUxZKCF2YWx1ZS5pc09iamVjdCgpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIG5v
bi1vYmplY3QiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRv
KiBncm91cCA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHZtLCBhc09i
amVjdCh2YWx1ZSkpOworICAgIGlmIChMSUtFTFkoZ3JvdXApKQorICAgICAgICByZXR1cm4gZ3Jv
dXA7CisKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFsaXphdGlvblJlZ2lzdHJ5
IG9iamVjdCJfcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSh2
bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOworICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciByZXF1aXJl
cyBhbiBvYmplY3QgYXMgdGhlIHRhcmdldCJfcyk7CisKKyAgICBKU1ZhbHVlIGhvbGRpbmdzID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoc2FtZVZhbHVlKGdsb2JhbE9iamVjdCwg
dGFyZ2V0LCBob2xkaW5ncykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciBleHBlY3RzIHRoZSB0YXJnZXQgb2JqZWN0IGFuZCB0
aGUgaG9sZGluZ3MgcGFyYW1ldGVyIGFyZSBub3QgdGhlIHNhbWUuIE90aGVyd2lzZSwgdGhlIHRh
cmdldCBjYW4gbmV2ZXIgYmUgY29sbGVjdGVkIl9zKTsKKworICAgIEpTVmFsdWUgdW5yZWdpc3Rl
clRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAgICBpZiAoIXVucmVnaXN0ZXJUb2tl
bi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworCisgICAg
Z3JvdXAtPnJlZ2lzdGVyVGFyZ2V0KHZtLCB0YXJnZXQuZ2V0T2JqZWN0KCksIGhvbGRpbmdzLCB1
bnJlZ2lzdGVyVG9rZW4pOworICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3Ry
eVVucmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGdyb3VwID0gZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChhdXRv
KiB0b2tlbiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBncm91cC0+dW5yZWdpc3Rlcih2bSwgdG9r
ZW4pOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsK
KyAgICB9CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVucmVnaXN0cmF0aW9uIHRv
a2VuIl9zKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NDRkZjhkZDI4YjM4YjM4ZDcwNzFjMjYyNzAyZjJmNDgxYzlmOGFkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKKyAgICB7IH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCopOworfTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllcklubGluZXMuaAppbmRleCAxOGU4OGQ3YzBjZTRlZTIxMjlhMzdkODIwMjY4YWNm
NjM2MGY1MmFlLi4xYzVmZGY1MGJkMDU4OWI3NmNhZGE0OGY3ZmY1OTAzZDcxMjU4OTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoVk0mIHZtLCBj
b25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVu
dEF0b21TdHJpbmdUYWJsZSh2bSk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5p
c1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmluZ1RhYmxlKHN0cmluZy5p
bXBsKCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcu
aW1wbCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmluZ1RhYmxl
KHN0cmluZy5pbXBsKCkpLCAiVGhlIGF0Jm9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIg
dGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApp
bmRleCAxZTY5YzhlN2M1MWFhOGU4NDdkMDIzMmNkODc0ZjAzMmExY2QwNDhjLi41OWIxMmIyZDVk
YTY3ZGZiMzQyNWM3MTIxODgxZTEzNzc5NGUwMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTI3LDcgKzI3LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIK
IAotI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYzllMTIwYmQ4MDdhNTU5YzUyMDY4OGQ4MmM5NDAwNGNmZjQzNmNjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eS5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0
aW9uUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxp
bmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6c19pbmZvID0geyAiRmluYWxpemF0aW9uUmVnaXN0cnkiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmluYWxpemF0aW9u
UmVnaXN0cnkpIH07CisKK1N0cnVjdHVyZSogSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGNhbGxiYWNr
KQoreworICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4odm0uaGVhcCkpIEpTRmluYWxp
emF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0
aW9uKHZtLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCit2b2lkIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIGNhbGxi
YWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoY2FsbGJh
Y2stPmlzQ2FsbGFibGUodm0pKTsKKyAgICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGluZGV4KS5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKHZhbHVlc1tpbmRleF0pOworICAgIGludGVybmFsRmllbGQoRmllbGQ6OkNhbGxiYWNr
KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsKK30KKwordm9pZCBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKworICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KGNlbGwp
OworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxsTG9jaygpKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRp
b25zKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogaXRlci52YWx1ZSkKKyAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlvbi5ob2xkaW5ncyk7CisgICAgfQor
ICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0
aW9uTGl2ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0aW9uLmhvbGRpbmdzKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRp
b25zKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9sZGluZ3MgOiBpdGVyLnZhbHVlKQorICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworICAgIH0KKyAgICBmb3IgKGF1dG8mIGhv
bGRpbmdzIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uRGVhZCkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoaG9sZGluZ3MpOworCisgICAgc2l6ZV90IHRvdGFsQnVmZmVyU2l6ZXNJbkJ5
dGVzID0gdGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9m
KGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMpOjpLZXlWYWx1ZVBhaXJU
eXBlKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyArPSB0aGlzT2JqZWN0LT5tX2xpdmVS
ZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9k
ZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFpclR5cGUpOworICAgIHRvdGFsQnVmZmVyU2l6
ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuY2FwYWNpdHko
KSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLnRh
a2VMYXN0KCkpKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyArPSB0aGlzT2JqZWN0LT5t
X25vVW5yZWdpc3RyYXRpb25EZWFkLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09i
amVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS50YWtlTGFzdCgpKSk7CisgICAgdmlzaXRvci52
bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVz
KTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KEpTQ2VsbCogdGFi
bGUpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHRhYmxlKS0+
fkpTRmluYWxpemF0aW9uUmVnaXN0cnkoKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCit7CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhjZWxsTG9jaygpKTsKKworICAgIGF1dG8gcmVtb3ZlRnJvbVZlY3RvciA9IFtd
IChhdXRvJiB2ZWN0b3IsIHNpemVfdCBwb3NpdGlvbikgeworICAgICAgICBzdGQ6OnN3YXAodmVj
dG9yW3Bvc2l0aW9uXSwgdmVjdG9yLmxhc3QoKSk7CisgICAgICAgIHJldHVybiB2ZWN0b3IudGFr
ZUxhc3QoKTsKKyAgICB9OworCisgICAgYm9vbCByZWFkaWVkQ2VsbCA9IGZhbHNlOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vVW5yZWdpc3RyYXRpb25MaXZlLnNpemUoKTsgKytp
KSB7CisgICAgICAgIEFTU0VSVCghbV9ub1VucmVnaXN0cmF0aW9uTGl2ZVtpXS5ob2xkaW5ncy5n
ZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVb
aV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFy
a2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0udGFyZ2V0KSkgeworICAgICAgICAgICAgbV9u
b1VucmVnaXN0cmF0aW9uRGVhZC5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihtX25vVW5yZWdpc3Ry
YXRpb25MaXZlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAgICByZWFkaWVkQ2VsbCA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xpdmVSZWdpc3RyYXRpb25zLnJlbW92ZUlmKFsm
XSAoYXV0byYgYnVja2V0KSAtPiBib29sIHsKKyAgICAgICAgQVNTRVJUKGJ1Y2tldC52YWx1ZS5z
aXplKCkpOworCisgICAgICAgIGJvb2wga2V5SXNEZWFkID0gIXZtLmhlYXAuaXNNYXJrZWQoYnVj
a2V0LmtleSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBidWNrZXQudmFsdWUu
c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCghYnVja2V0LnZhbHVlW2ldLmhvbGRp
bmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLmhv
bGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJr
ZWQoYnVja2V0LnZhbHVlW2ldLnRhcmdldCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2V5SXNE
ZWFkKQorICAgICAgICAgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25EZWFkLmFwcGVuZChy
ZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9sZGluZ3MpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGRlYWRMaXN0ID0gbV9kZWFkUmVn
aXN0cmF0aW9ucy5hZGQoYnVja2V0LmtleSwgRGVhZFJlZ2lzdHJhdGlvbnMoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRlYWRMaXN0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQocmVtb3ZlRnJvbVZl
Y3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcmVhZGllZENlbGwgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChr
ZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5hcHBlbmQo
cmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiAhYnVja2V0LnZhbHVlLnNpemUoKTsKKyAgICB9KTsKKworICAgIGlmICghdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpICYmIChyZWFkaWVkQ2VsbCB8fCBk
ZWFkQ291bnQoTm9Mb2NraW5nTmVjZXNzYXJ5KSkpIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3Jr
VGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCB0aGlzLCB7IH0pOworICAgICAgICBBU1NFUlQodm0u
ZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpKTsKKyAgICAgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24odGhpcywgW3RoaXNdIHsKKyAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsK
KyAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgICAgIHRo
aXMtPnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKKyAgICAgICAgfSk7
CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJ1bkZpbmFsaXphdGlv
bkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgd2hpbGUgKEpTVmFsdWUgdmFsdWUgPSB0YWtlRGVhZEhvbGRpbmdzVmFsdWUo
KSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBhcmdzLmFw
cGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaygpLCBhcmdz
LCAiVGhpcyBzaG91bGQgbm90IGJlIHZpc2libGU6IHBsZWFzZSByZXBvcnQgYSBidWcgdG8gYnVn
cy53ZWJraXQub3JnIik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFk
SG9sZGluZ3NWYWx1ZSgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAobV9ub1VucmVnaXN0cmF0aW9uRGVhZC5z
aXplKCkpCisgICAgICAgIHJlc3VsdCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQudGFrZUxhc3Qo
KS5nZXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9kZWFkUmVnaXN0cmF0
aW9ucy5iZWdpbigpOworICAgICAgICBpZiAoaXRlciA9PSBtX2RlYWRSZWdpc3RyYXRpb25zLmVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKGl0ZXIt
PnZhbHVlLnNpemUoKSk7CisgICAgICAgIHJlc3VsdCA9IGl0ZXItPnZhbHVlLnRha2VMYXN0KCku
Z2V0KCk7CisgICAgICAgIGlmICghaXRlci0+dmFsdWUuc2l6ZSgpKQorICAgICAgICAgICAgbV9k
ZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgfQorCisgICAgaWYgY29uc3RleHBy
IChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2Rl
YWRSZWdpc3RyYXRpb25zKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlci52YWx1ZS5z
aXplKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNGaW5hbGl6
YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQoVk0mIHZtLCBKU09iamVjdCogdGFyZ2V0LCBK
U1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soY2VsbExvY2soKSk7CisgICAgUmVnaXN0cmF0aW9uIHJlZ2lzdHJhdGlvbjsKKyAgICBy
ZWdpc3RyYXRpb24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHJlZ2lzdHJhdGlvbi5ob2xkaW5ncy5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKGhvbGRpbmdzKTsKKyAgICBpZiAodG9rZW4uaXNVbmRlZmlu
ZWQoKSkKKyAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5hcHBlbmQoV1RGTW92ZShyZWdp
c3RyYXRpb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2xpdmVSZWdp
c3RyYXRpb25zLmFkZChqc1NlY3VyZUNhc3Q8SlNPYmplY3QqPih2bSwgdG9rZW4pLCBMaXZlUmVn
aXN0cmF0aW9ucygpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RG
TW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICB9CisgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhp
cyk7Cit9CisKK2Jvb2wgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3RlcihWTSYsIEpT
T2JqZWN0KiB0b2tlbikKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdyaXRlIGJhcnJpZXIg
b3Vyc2VsdmVzIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIG9ubHkgcG9pbnQgdG8gbGVzcyB0aGluZ3Mg
YWZ0ZXIgdGhpcyBmaW5pc2hlcy4KKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2Nr
KCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9saXZlUmVnaXN0cmF0aW9ucy5yZW1vdmUodG9rZW4p
OworICAgIHJlc3VsdCB8PSBtX2RlYWRSZWdpc3RyYXRpb25zLnJlbW92ZSh0b2tlbik7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2
ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7CisgICAgc2l6ZV90IGNvdW50ID0g
bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXplKCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVy
IDogbV9saXZlUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291bnQgKz0gaXRlci52YWx1ZS5zaXpl
KCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3NpemVfdCBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikKK3sKKyAgICBzaXplX3Qg
Y291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUoKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICBjb3VudCArPSBpdGVyLnZh
bHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKworU3RyaW5nIEpTRmluYWxpemF0
aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9zOworfQorCit9CisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM5MDUxYmZhMGE4YzY3NjM4ZjAzMTE3NGM0M2IwNjViNDEyNmEyOTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGw8MT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0Rlc3RydWN0aWJs
ZUludGVybmFsRmllbGRPYmplY3RJbXBsPDE+OworCisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVp
bnQ4X3QgeyAKKyAgICAgICAgQ2FsbGJhY2ssCisgICAgfTsKKworICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5lQ2FwYWNpdHkgPT0gMFUp
OworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHZtLmZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2U8bW9kZT4oKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBp
bml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpz
TnVsbCgpLAorICAgICAgICB9IH07CisgICAgfQorCisgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVu
a25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjpp
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNl
OjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisKKyAgICBK
U09iamVjdCogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRl
cm5hbEZpZWxkKEZpZWxkOjpDYWxsYmFjaykuZ2V0KCkpOyB9CisKKyAgICBzdGF0aWMgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGNhbGxi
YWNrKTsKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogY3JlYXRlV2l0aEluaXRp
YWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAg
IHZvaWQgcnVuRmluYWxpemF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVjdCopOworCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0m
KTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIEpTVmFsdWUgdGFrZURl
YWRIb2xkaW5nc1ZhbHVlKCk7CisKKyAgICBib29sIHVucmVnaXN0ZXIoVk0mLCBKU09iamVjdCog
dG9rZW4pOworICAgIC8vIHRva2VuIHNob3VsZCBiZSBhIEpTT2JqZWN0IG9yIHVuZGVmaW5lZC4K
KyAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0KFZNJiwgSlNPYmplY3QqIHRhcmdldCwgSlNWYWx1ZSBo
b2xkaW5ncywgSlNWYWx1ZSB0b2tlbik7CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qg
bGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+Jik7CisKK3ByaXZh
dGU6CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTT2JqZWN0KiBjYWxs
YmFjayk7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdHJ1Y3QgUmVnaXN0cmF0aW9uIHsKKyAgICAgICAg
SlNPYmplY3QqIHRhcmdldDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGhvbGRpbmdz
OworICAgIH07CisKKyAgICB1c2luZyBMaXZlUmVnaXN0cmF0aW9ucyA9IFZlY3RvcjxSZWdpc3Ry
YXRpb24+OworICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIHRhcmdldCBhbnltb3JlIHNpbmNlIHdl
IGtub3cgaXQncyBkZWFkLgorICAgIHVzaW5nIERlYWRSZWdpc3RyYXRpb25zID0gVmVjdG9yPFdy
aXRlQmFycmllcjxVbmtub3duPj47CisKKyAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVy
IHB1dHRpbmcgYSB3cml0ZSBiYXJyaWVyIG9uIHRoZSBrZXkgb3IgdGFyZ2V0IGJlY2F1c2UgdGhl
eSBhcmUgd2Vha2x5IHJlZmVyZW5jZWQuCisgICAgSGFzaE1hcDxKU09iamVjdCosIExpdmVSZWdp
c3RyYXRpb25zPiBtX2xpdmVSZWdpc3RyYXRpb25zOworICAgIEhhc2hNYXA8SlNPYmplY3QqLCBE
ZWFkUmVnaXN0cmF0aW9ucz4gbV9kZWFkUmVnaXN0cmF0aW9uczsKKyAgICBMaXZlUmVnaXN0cmF0
aW9ucyBtX25vVW5yZWdpc3RyYXRpb25MaXZlOworICAgIERlYWRSZWdpc3RyYXRpb25zIG1fbm9V
bnJlZ2lzdHJhdGlvbkRlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2Vh
MzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIzNzAwNi4uYWY2NjgzZTVjZTEzM2RlZjBh
NzA0ZDk2YWQ3YzhkMDc3ODg1NGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjEsNiArNjEsOCBAQAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKQEAgLTk5LDYg
KzEwMSw3IEBACiAjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgogI2luY2x1ZGUgIkpTRGF0YVZpZXdQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTM4Nyw2ICsz
OTAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJD
cmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2
YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICBudWxs
cHRyLCAvLyByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wCiAgICAgbnVsbHB0ciwg
Ly8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAg
IG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0yMTk5LDYgKzIyMDMsMTEgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6cXVldWVNaWNyb3Rhc2soUmVmPE1pY3JvdGFzaz4mJiB0YXNr
KQogICAgIHZtKCkucXVldWVNaWNyb3Rhc2soKnRoaXMsIFdURk1vdmUodGFzaykpOwogfQogCit2
b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgZGF0YUxvZ0xuKCJV
bmNhdWdodCBFeGNlcHRpb24gYXQgcnVuIGxvb3A6ICIsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7Cit9
CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldERlYnVnZ2VyKERlYnVnZ2VyKiBkZWJ1Z2dlcikK
IHsKICAgICBtX2RlYnVnZ2VyID0gZGVidWdnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNi
ZDE3ZTM2YWIyMDMxNGMxLi40NzRmZGU2NGZmNmNhZTI4M2U5OWU0NmVlYzgwNTA4MWJjMGY5YmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTEzOCw2ICsxMzgsOCBAQCBjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9
IHRydWU7CiAgICAgbWFjcm8oSlNQcm9taXNlLCBwcm9taXNlLCBwcm9taXNlLCBKU1Byb21pc2Us
IFByb21pc2UsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhCaWdJ
bnQsIGJpZ0ludCwgYmlnSW50T2JqZWN0LCBCaWdJbnRPYmplY3QsIEJpZ0ludCwgb2JqZWN0LCBP
cHRpb25zOjp1c2VCaWdJbnQoKSkgXAogICAgIG1hY3JvKFdlYWtPYmplY3RSZWYsIHdlYWtPYmpl
Y3RSZWYsIHdlYWtPYmplY3RSZWYsIEpTV2Vha09iamVjdFJlZiwgV2Vha1JlZiwgb2JqZWN0LCBP
cHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisgICAgbWFjcm8oRmluYWxpemF0aW9uUmVnaXN0cnks
IGZpbmFsaXphdGlvblJlZ2lzdHJ5LCBmaW5hbGl6YXRpb25SZWdpc3RyeSwgSlNGaW5hbGl6YXRp
b25SZWdpc3RyeSwgRmluYWxpemF0aW9uUmVnaXN0cnksIG9iamVjdCwgT3B0aW9uczo6dXNlV2Vh
a1JlZnMoKSkgXAorCiAKICNkZWZpbmUgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9S
X1RZUEUobWFjcm8pIFwKICAgICBtYWNybyhTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3Is
IHN0cmluZ0l0ZXJhdG9yLCBKU1N0cmluZ0l0ZXJhdG9yLCBTdHJpbmdJdGVyYXRvciwgaXRlcmF0
b3IsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCkBAIC0yMjcsNiArMjI5LDkgQEAgc3RydWN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIHZvaWQgKCpQcm9taXNlUmVqZWN0
aW9uVHJhY2tlclB0cikoSlNHbG9iYWxPYmplY3QqLCBKU1Byb21pc2UqLCBKU1Byb21pc2VSZWpl
Y3Rpb25PcGVyYXRpb24pOwogICAgIFByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyIHByb21pc2VS
ZWplY3Rpb25UcmFja2VyOwogCisgICAgdHlwZWRlZiB2b2lkICgqUmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcFB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKyAgICBS
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyIHJlcG9ydFVuY2F1Z2h0RXhjZXB0
aW9uQXRFdmVudExvb3A7CisKICAgICB0eXBlZGVmIFN0cmluZyAoKkRlZmF1bHRMYW5ndWFnZUZ1
bmN0aW9uUHRyKSgpOwogICAgIERlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRMYW5n
dWFnZTsKIApAQCAtNDUzLDIxICs0NTgsNiBAQCBwdWJsaWM6CiAgICAgV2Vha1JhbmRvbSBtX3dl
YWtSYW5kb207CiAgICAgUmVnRXhwR2xvYmFsRGF0YSBtX3JlZ0V4cEdsb2JhbERhdGE7CiAKLSAg
ICBKU0NhbGxlZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGFja092ZXJmbG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0KLQotICAgIElubGluZVdhdGNocG9pbnRT
ZXQmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0
JiBtYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzdHJpbmdJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc3RyaW5nSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBTZXRXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5l
V2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0
Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5U3BlY2llc1dhdGNo
cG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQ7IH0KLSAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUpvaW5XYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9h
cnJheUpvaW5XYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50U2V0KCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKE9w
dGlvbnM6OnVzZUpJVCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBv
aW50U2V0OwotICAgIH0KICAgICAvLyBJZiB0aGlzIGhhc24ndCBiZWVuIGludmFsaWRhdGVkLCBp
dCBtZWFucyB0aGUgYXJyYXkgaXRlcmF0b3IgcHJvdG9jb2wKICAgICAvLyBpcyBub3Qgb2JzZXJ2
YWJsZSB0byB1c2VyIGNvZGUgeWV0LgogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hcnJheUl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OwpAQCAtNDk0LDYgKzQ4NCwyMyBAQCBwdWJsaWM6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2lu
dDsKIAorcHVibGljOgorICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBj
b25zdCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQorCisgICAg
SW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgp
IHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElu
bGluZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyBy
ZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdh
dGNocG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9p
bnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9p
bnRTZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnRT
ZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkgeyBy
ZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYg
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hw
b2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9pbnRT
ZXQoKSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOworICAgICAgICByZXR1cm4gbV9udW1i
ZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7CisgICAgfQorCiAgICAgYm9vbCBpc0FycmF5UHJvdG90
eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc01h
cFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAgIGJv
b2wgaXNTZXRQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsK
QEAgLTgyNCw2ICs4MzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVbmhhbmRsZWRSZWplY3Rp
b25DYWxsYmFjayhWTSYgdm0sIEpTT2JqZWN0KiBmdW5jdGlvbikgeyBtX3VuaGFuZGxlZFJlamVj
dGlvbkNhbGxiYWNrLnNldCh2bSwgZnVuY3Rpb24pOyB9CiAgICAgSlNPYmplY3QqIHVuaGFuZGxl
ZFJlamVjdGlvbkNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV91bmhhbmRsZWRSZWplY3Rpb25D
YWxsYmFjay5nZXQoKTsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRp
b25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworCiAgICAgSlNPYmpl
Y3QqIGFycmF5QnVmZmVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVmZmVy
U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZm
ZXJQcm90b3R5cGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGwuaAppbmRleCBlMjU3YTFkZjYwMGIyYThlZDQ3NWI3ZTg5MzZlODRjYTQ4NWIy
NWIxLi42ZjA3ODEwZWUwNjY0MWQ0MDQyMzljMzQ0MmU5MDEzMTFiZTg4ZTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbC5oCkBAIC0zMCwxMiArMzAsMTEgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBUaGlz
IGlzIHVzZWQgZm9yIHNoYXJpbmcgaW50ZXJmYWNlIGFuZCBpbXBsZW1lbnRhdGlvbi4gSXQgc2hv
dWxkIG5vdCBoYXZlIGl0cyBvd24gY2xhc3NJbmZvLgotdGVtcGxhdGU8dW5zaWduZWQgcGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDE+Ci1jbGFzcyBKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewordGVtcGxhdGU8dW5zaWduZWQgcGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDEsIHR5cGVuYW1lIEJhc2UgPSBKU05vbkZpbmFsT2Jq
ZWN0PgorY2xhc3MgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA6IHB1YmxpYyBCYXNlIHsKIHB1
YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBudW1iZXJPZkludGVybmFsRmllbGRzID0gcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KQEAgLTc2
LDQgKzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVy
bmFsRmllbGRzW251bWJlck9mSW50ZXJuYWxGaWVsZHNdIHsgfTsKIH07CiAKK3RlbXBsYXRlPHVu
c2lnbmVkIHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAxPgordXNpbmcgSlNEZXN0cnVj
dGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8
cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcywgSlNEZXN0cnVjdGlibGVPYmplY3Q+OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oCmluZGV4IDhm
MDNjOGE2ZGIxYmQ1NzUwZTY4NTk4ZTIxYzlhZTFiMzEzYzg1ZTEuLmU2YTYxZTFkOWJkNDFiMzli
YmE2MDkzN2ZlODVkYTliMTg0ZmQ4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMu
aApAQCAtMjksMTEgKzI5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx1bnNp
Z25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzPgotdm9pZCBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit0ZW1wbGF0ZTx1bnNpZ25lZCBwYXNz
ZWROdW1iZXJPZkludGVybmFsRmllbGRzLCB0eXBlbmFtZSBCYXNlPgordm9pZCBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMsIEJhc2U+Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ludGVybmFsRmllbGRPYmplY3RJbXBsKj4oY2VsbCk7
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgQmFzZTo6aW5mbygpKTsKICAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1faW50ZXJuYWxGaWVsZHMsIG51bWJlck9mSW50ZXJu
YWxGaWVsZHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5j
cHAKaW5kZXggODgzMDgzZWNiNzY3ZDA4ODNmOWE0OTIxZjM5OWY1OTA4ODEzY2ZkZi4uNGYzNGI2
YjQ5Y2E4OWU2NjhjYjlhMjY3MTAzMjNjYWUxNzg2NGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRl
ICJKU1Byb21pc2UuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkRl
ZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKLSNpbmNsdWRlICJQcm9taXNlVGlt
ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEpTUHJv
bWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnByb21p
c2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRXb3Jr
VGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpA
QCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZWplY3QoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5jdGlv
bihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlamVjdFByb21pc2VGdW5jdGlv
bigpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CiAgICAgfQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2Uo
dGhpcyk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMp
OwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0QXNIYW5kbGVkKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhlZmQyYjAwODQzMDI2MjYxODU5ODE5NTg5Zjc4NGNiYmQzNjNkMDUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCi0KLSNpbmNsdWRlICJK
U1Byb21pc2UuaCIKLSNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVk0uaCIK
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotbmFtZXNwYWNl
IFByb21pc2VUaW1lckludGVybmFsIHsKLXN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Ci19Ci0KLVByb21pc2VUaW1lcjo6UHJvbWlzZVRpbWVyKFZNJiB2bSkKLSAgICA6IEJh
c2Uodm0pCi17Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQotewotICAg
IEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBtX3Rhc2tM
b2NrLmxvY2soKTsKLSAgICBjYW5jZWxUaW1lcigpOwotICAgIGlmICghbV9ydW5UYXNrcykgewot
ICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIFt0aWNrZXQsIHRh
c2tdID0gbV90YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGlt
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24gcHJvbWlzZTogIiwgUmF3UG9pbnRl
cih0aWNrZXQpKTsKLQotICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRo
ZXNlIHByb21pc2VzLgotICAgICAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlj
a2V0KSkgewotICAgICAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVs
ZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRydWU7Ci0gICAg
ICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKLQotICAgICAgICAgICAgdGFzaygpOwotICAg
ICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICAgICAgICAgIG1fdGFza0xvY2su
bG9jaygpOwotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBt
X3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKQotICAgICAgICBSdW5Mb29w
OjpjdXJyZW50KCkuc3RvcCgpOwotCi0gICAgbV90YXNrTG9jay51bmxvY2soKTsKLX0KLQotdm9p
ZCBQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3AoKQotewotICAgIEFTU0VSVCghbV9hcGlMb2NrLT52
bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBBU1NFUlQoJlJ1bkxv
b3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgpLT5ydW5Mb29wKCkpOwotICAgIG1fc2hv
dWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggPSB0cnVlOwotICAgIGlmIChtX3Bl
bmRpbmdQcm9taXNlcy5zaXplKCkpCi0gICAgICAgIFJ1bkxvb3A6OnJ1bigpOwotfQotCi12b2lk
IFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UoVk0mIHZtLCBKU1Byb21pc2UqIHRpY2tl
dCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykKLXsKLSAgICBBU1NFUlQo
dm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKLSAgICAgICAgQVNTRVJUKGRlcGVu
ZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX3BlbmRp
bmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwotICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGltZXJJ
bnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyBwcm9taXNlOiAiLCBSYXdQb2lu
dGVyKHRpY2tldCkpOwotICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+
KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUo
ZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNl
VGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMpOwotICAgIH0KLX0KLQotYm9vbCBQcm9taXNl
VGltZXI6Omhhc1BlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0KQotewotICAgIEFTU0VS
VCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgcmV0
dXJuIG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCk7Ci19Ci0KLWJvb2wgUHJvbWlz
ZVRpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCwg
SlNDZWxsKiBkZXBlbmRlbmN5KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRo
cmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJUKG1fcGVuZGluZ1Byb21pc2VzLmNv
bnRhaW5zKHRpY2tldCkpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5n
ZXQodGlja2V0KTsKLSAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRlcGVuZGVuY3kpOwotfQot
Ci1ib29sIFByb21pc2VUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNr
ZXQpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKLSAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2VzLnJlbW92ZSh0aWNr
ZXQpOwotCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVy
SW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNr
ZXQpKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpzY2hl
ZHVsZVdvcmtTb29uKEpTUHJvbWlzZSogdGlja2V0LCBUYXNrJiYgdGFzaykKLXsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKLSAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7Ci0gICAgaWYgKCFpc1NjaGVkdWxlZCgpICYm
ICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQotICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9taXNlVGltZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E0ZDBmMjlh
ZTJkMjhjZjNlNDA0YmVmYjU0NmY1M2NkMGJiYWU5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9t
aXNlVGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
IkpTUnVuTG9vcFRpbWVyLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCi0KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNQcm9taXNlOwotY2xhc3MgVk07Ci1jbGFz
cyBKU0NlbGw7Ci0KLWNsYXNzIFByb21pc2VUaW1lciBmaW5hbCA6IHB1YmxpYyBKU1J1bkxvb3BU
aW1lciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOwotCi0gICAg
dm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsKLQotICAgIHZvaWQgYWRkUGVuZGluZ1Byb21pc2UoVk0m
LCBKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1BlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlj
a2V0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdQ
cm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpOwotICAgIC8vIEpT
UHJvbWlzZSBzaG91bGQgaGFuZGxlIGNhbmNlbGluZyB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29s
dmVkIG9yIHJlamVjdGVkLgotICAgIGJvb2wgY2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9taXNl
Kik7Ci0KLSAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAgICB2b2lkIHNjaGVk
dWxlV29ya1Nvb24oSlNQcm9taXNlKiwgVGFzayYmKTsKLQotICAgIHZvaWQgc3RvcFJ1bm5pbmdU
YXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHJ1blJ1bkxvb3AoKTsKLQotICAgIHN0YXRpYyBSZWY8UHJvbWlzZVRpbWVyPiBjcmVhdGUo
Vk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvbWlzZVRpbWVy
KHZtKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFByb21pc2VUaW1lcihWTSYpOwotCi0gICAg
SGFzaE1hcDxKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdQcm9t
aXNlczsKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9
OwotICAgIGJvb2wgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKLSAgICBW
ZWN0b3I8c3RkOjp0dXBsZTxKU1Byb21pc2UqLCBUYXNrPj4gbV90YXNrczsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhY2IzNGM5ZDNkYjI2ZTU4YTYxZmZkYjMxNzE3YTUxZTY4
MzFmYzVkLi4zODU3Yjc1MGUyMmJmNzkyNmQwZWNmM2Q0Nzk2MjA5ODU0NWQ3ZDNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcApA
QCAtMzIsNiArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQog
CituYW1lc3BhY2UgU3RydWN0dXJlSURUYWJsZUludGVybmFsIHsKK2Jvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQorCiBTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJRFRhYmxlKCkKICAgICA6IG1f
dGFibGUobWFrZVVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0PihzX2luaXRpYWxTaXplKSkK
ICAgICAsIG1fc2l6ZSgxKQpAQCAtMTYxLDExICsxNjUsMTQgQEAgU3RydWN0dXJlSUQgU3RydWN0
dXJlSURUYWJsZTo6YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB0YWJsZSgp
W3N0cnVjdHVyZUluZGV4XS5lbmNvZGVkU3RydWN0dXJlQml0cyA9IGVuY29kZShzdHJ1Y3R1cmUs
IHJlc3VsdCk7CiAgICAgbV9zaXplKys7CiAgICAgQVNTRVJUKCFpc051a2VkKHJlc3VsdCkpOwor
CisgICAgZGF0YUxvZ0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVybmFsOjp2ZXJib3NlLCAiQWxs
b2NhdGVkIFN0cnVjdHVyZUlEICIsIHJlc3VsdCwgIiBmb3IgU3RydWN0dXJlICIsIFJhd1BvaW50
ZXIoc3RydWN0dXJlKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBTdHJ1Y3R1cmVJ
RFRhYmxlOjpkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUlEIHN0
cnVjdHVyZUlEKQogeworICAgIGRhdGFMb2dMbklmKFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbDo6
dmVyYm9zZSwgIkRlYWxsb2NhdGVkIFN0cnVjdHVyZUlEICIsIHN0cnVjdHVyZUlEKTsKICAgICBB
U1NFUlQoc3RydWN0dXJlSUQgIT0gc191bnVzZWRJRCk7CiAgICAgdWludDMyX3Qgc3RydWN0dXJl
SW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9mRW50cm9weUJpdHM7CiAgICAgQVNTRVJU
KHN0cnVjdHVyZUluZGV4ICYmIHN0cnVjdHVyZUluZGV4IDwgc19tYXhpbXVtTnVtYmVyT2ZTdHJ1
Y3R1cmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4Y2FhNDhjMWJl
MzExYjVkODdlODYwMzhiYTBmNDA0MTgzODg4YzJhLi43ODM2ZjczZTkzYWY0MjQyMTc3MjU0NjVi
N2IxYzJmN2RjMjBmMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgorI2luY2x1
ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5j
bHVkZSAiRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JJbnN0
YW5jZS5oIgpAQCAtODgsNiArODksNyBAQAogI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCiAjaW5jbHVk
ZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0xMzMsNyArMTM1
LDYgQEAKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCi0jaW5jbHVkZSAiUHJv
bWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRl
ICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5nRnV6emVyQWdlbnQuaCIKQEAg
LTM2NSw3ICszNjYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUs
IFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICAsIGNsaWVudERhdGEo
bnVsbHB0cikKICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFt
ZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCi0gICAgLCBwcm9taXNlVGltZXIoUHJvbWlzZVRpbWVy
OjpjcmVhdGUoKnRoaXMpKQorICAgICwgZGVmZXJyZWRXb3JrVGltZXIoRGVmZXJyZWRXb3JrVGlt
ZXI6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVm
YXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJp
bmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChu
ZXcgQXJnTGlzdCkKQEAgLTU3NSw3ICs1NzYsNyBAQCBWTTo6flZNKCkKICAgICBhdXRvIGRlc3Ry
dWN0aW9uTG9ja2VyID0gaG9sZExvY2soc19kZXN0cnVjdGlvbkxvY2sucmVhZCgpKTsKICAgICAK
ICAgICBHaWdhY2FnZTo6cmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHByaW1pdGl2ZUdp
Z2FjYWdlRGlzYWJsZWRDYWxsYmFjaywgdGhpcyk7Ci0gICAgcHJvbWlzZVRpbWVyLT5zdG9wUnVu
bmluZ1Rhc2tzKCk7CisgICAgZGVmZXJyZWRXb3JrVGltZXItPnN0b3BSdW5uaW5nVGFza3MoKTsK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKFdhc206OldvcmtsaXN0KiB3b3JrbGlz
dCA9IFdhc206OmV4aXN0aW5nV29ya2xpc3RPck51bGwoKSkKICAgICAgICAgd29ya2xpc3QtPnN0
b3BBbGxQbGFuc0ZvckNvbnRleHQod2FzbUNvbnRleHQpOwpAQCAtMTQ4Nyw2ICsxNDg4LDcgQEAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgd2Vh
a01hcEhlYXBDZWxsVHlwZS5nZXQoKSwKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha1Nl
dCkgLy8gSGFzaDoweDRjNzgxYjMwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtP
YmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1dp
dGhTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmaW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2Us
IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNB
UElXcmFwcGVyT2JqZWN0PikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxs
VHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNjBmNTk3MjlmZWMyZTAyZTY5NzZjMzFlZDUx
YjE0OGE1YzZlYWEwNS4uMzdjMGZmYzk2NDc3NmU0OGI2MmZmMWE2NjZlMGE4MzY5YWJlZmMwZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3Mg
SlNXZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKIGNsYXNzIE9iakNDYWxsYmFja0Z1bmN0aW9uOwotY2xhc3MgUHJv
bWlzZVRpbWVyOworY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBSZWdFeHA7CiBjbGFz
cyBSZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwpAQCAtNTUwLDYgKzU1MCw3IEBAIHB1Ymxp
YzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJl
ZlNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha01hcFNwYWNl
KQpAQCAtNzA5LDggKzcxMCw4IEBAIHB1YmxpYzoKICAgICBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+
IG1fc2xvd0JvdW5kRXhlY3V0YWJsZTsKICAgICBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+IG1fc2xv
d0NhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsKIAotICAgIFJlZjxQcm9taXNlVGltZXI+IHBy
b21pc2VUaW1lcjsKLSAgICAKKyAgICBSZWY8RGVmZXJyZWRXb3JrVGltZXI+IGRlZmVycmVkV29y
a1RpbWVyOworCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0
OwogICAgIGNvbnN0IENsYXNzSW5mbyogY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVj
dENsYXNzSW5mbyB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5LmNwcAppbmRleCA1ZGE2OTZkNjk3ZGQ0NzUwNWQ3ZGM1MmI2MDZl
MzE3NzRhNGUyNjVkLi5hZjQyZDhkNTcwOWYyMDZhN2E3ODcwOGY2NWQ3ZTUwYjU1OGU2MzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklubGluZXMuaCIK
ICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIgpAQCAtNDEsNyArNDIsNiBAQAogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRl
ICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlRocm93U2NvcGUuaCIKQEAgLTEzNCwxMCArMTM0LDEwIEBAIHN0YXRpYyB2b2lkIHdlYkFz
c2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVw
ZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7CiAKLSAg
ICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3Zl
KGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29y
ayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIFdhc206Ok1vZHVs
ZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRl
U2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGdsb2JhbE9i
amVjdCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2Us
IFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nv
b24ocHJvbWlzZSwgW3Byb21pc2UsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNWYWx1ZSBtb2R1bGUgPSBKU1dlYkFzc2Vt
Ymx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKQEAgLTIxNCwxMSArMjE0LDExIEBA
IHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNQcm9taXNlKiBwcm9taXNlCiAgICAgLy8gVGhlIGluc3RhbmNlIGtlZXBzIHRoZSBt
b2R1bGUgYWxpdmUuCiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwg
aW5zdGFuY2UpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBp
bXBvcnRPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZt
LCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1Rp
bWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsK
ICAgICAvLyBOb3RlOiBUaGlzIGNvbXBsZXRpb24gdGFzayBtYXkgb3IgbWF5IG5vdCBnZXQgY2Fs
bGVkIGltbWVkaWF0ZWx5LgogICAgIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZUFzeW5jKCZ2bS53
YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNt
OjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGlt
cG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoUmVmPFdhc206OkNv
ZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUgewogICAgICAgICBSZWZQdHI8V2FzbTo6
Q29kZUJsb2NrPiBjb2RlQmxvY2sgPSBXVEZNb3ZlKHJlZkNvZGVCbG9jayk7Ci0gICAgICAgIHZt
LnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFu
Y2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0s
IGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBp
bnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUs
ICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgICAgICAgICByZXNvbHZlKHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UsIGlu
c3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgY29kZUJsb2NrLnJlbGVhc2VOb25OdWxsKCks
IHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsKQEAgLTIzMywxMyArMjMz
LDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+
PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2
bSwgaW1wb3J0T2JqZWN0KSk7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxs
Pih2bSwgbW9kdWxlS2V5Q2VsbCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1By
b21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJy
ZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVu
Y2llcykpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZl
ckZyb21WYWx1ZSh2bSwgZ2xvYmFsT2JqZWN0LCBidWZmZXIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHJlamVjdChnbG9iYWxPYmplY3QsIHNjb3BlLCBwcm9taXNlKSk7CiAKICAg
ICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNv
dXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9t
aXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzb2x2ZUtp
bmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2Jh
bE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCByZXNvbHZlS2luZCwgY3JlYXRpb25N
b2RlLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2No
ZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlD
ZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQs
IGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3Zl
KHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkK
QEAgLTI2OCwxMCArMjY4LDEwIEBAIHN0YXRpYyB2b2lkIHdlYkFzc2VtYmx5TW9kdWxlSW5zdGFu
dGluYXRlQXN5bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgVmVjdG9y
PFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChT
dHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVu
ZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVy
LT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsK
KyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdU
Rk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMo
JnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6
TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVj
dCwgJnZtXSAoV2FzbTo6TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtw
cm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpLCAmdm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2No
ZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEpT
V2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0
dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVj
dHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkKQEAgLTMzOSw3ICszMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KgogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAgdm0u
cHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBl
bmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0s
IHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKQogICAgICAgICBn
bG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmco
Z2xvYmFsT2JqZWN0LCBwcm9taXNlLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKQEAgLTM3Miw3
ICszNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFu
dGlhdGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgICAgICAgICAgICAgIGRlcGVuZGVu
Y2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogICAgICAgICAg
ICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVj
dCkpOwotICAgICAgICAgICAgICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uo
dm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgICAgICAgICAgICAgdm0u
ZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRl
cGVuZGVuY2llcykpOwogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0
Lm9yZy9iLzE4NDg4OD4gaWYgdGhlcmUncyBhbiBpbXBvcnRPYmplY3QgYW5kIGl0IGNvbnRhaW5z
IGEgTWVtb3J5LCB0aGVuIHdlIGNhbiBjb21waWxlIHRoZSBtb2R1bGUgd2l0aCB0aGUgcmlnaHQg
bWVtb3J5IHR5cGUgKGZhc3Qgb3Igbm90KSBieSBsb29raW5nIGF0IHRoZSBtZW1vcnkncyB0eXBl
LgogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KS0+aW5zdGFudGlhdGVTdHJlYW1pbmcoZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBpbXBvcnRPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCmluZGV4IDQ4OTQ5YmY2ZWMy
ODBmZWYyNzNmMDQwNmVkMWNkMTA3ZDljNTVjZjIuLjgxN2Y3OTQ3MDY4MzhlMThhNDIwNTk4YjJl
NzI4NTVjYTI1ZTRkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKQEAgLTI4LDggKzI4LDggQEAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJE
ZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlByb21p
c2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUu
aCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFBsYW47
CiBjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBjcmVhdGUoVk0mLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiwg
Y29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiwgY29uc3Qg
V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCmluZGV4IGQyOGU1MDlkYjAxYzcwMTBkZDc3ZTJmZWJjMzVjNzk4OWFk
ZDdhMzIuLjAzOWVmODIzMGE4NmI2MTM1Y2VlYmRlNDNjM2ExMzcwNWRjZjk3ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTIz
NCw2ICsyMzQsMTEgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cHJvbWlzZVJlamVjdGlvblRy
YWNrZXIoSlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LAogICAgIH0KIH0KIAordm9pZCBK
U0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0ds
b2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCit7
CisgICAgcmVwb3J0RXhjZXB0aW9uKGpzR2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworfQorCiBK
U0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKIHsKICAgICBjbGFzcyBHZXRD
YWxsZXJHbG9iYWxPYmplY3RGdW5jdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGQyOTg1OGNmYTRiMGJlMGQ2MjEzOTBhODNkNzZk
NWE4NTBiOWQyODAuLjczODY3ZDZhYjJlNWI0ZGJiNzBiNzBhOWEzNjA5NDg0OWYwY2VlNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAt
NzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICBKU0J1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucyYg
YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkgeyByZXR1cm4gbV9idWlsdGluSW50ZXJuYWxGdW5j
dGlvbnM7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopOwogCiBwdWJsaWM6CiAgICAg
fkpTRE9NR2xvYmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCA4ODMyMTNlOTA2MWYzOGI4YmI0MzM1NzliMjk4NjA5ODc3
ODRlNzgyLi5hY2VhNzY2YWYxYzdkNWZlZWFlMTdhNjlmOWUzYjM1Y2RlZTlhODhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTQ4LDEw
ICs0OCwxMCBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvZGVCbG9jay5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1dlYkFzc2VtYmx5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWljcm90YXNrLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03OCw2ICs3OCw3IEBAIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAg
Jm1vZHVsZUxvYWRlckV2YWx1YXRlLAogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAg
ICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICAmZGVmYXVsdExhbmd1
YWdlLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAmY29tcGlsZVN0cmVhbWluZywKQEAg
LTQ0Myw4ICs0NDQsOCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6Y29tcGlsZVN0cmVhbWluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SgogCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFzUGVu
ZGluZ1Byb21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc0Rl
cGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOworICAgIEFT
U0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsocHJvbWlzZSkpOworICAg
IEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmso
cHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpZiAoYXV0byBpbnB1dFJlc3BvbnNlID0g
SlNGZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJjZSkpIHsKICAgICAgICAgaGFuZGxl
UmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmplY3QsIGlucHV0UmVzcG9uc2UsIHBy
b21pc2UsIFtwcm9taXNlXSAoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVTaXplKSBtdXRhYmxlIHsKQEAgLTQ2MSw5
ICs0NjIsOSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlhdGVTdHJlYW1pbmcoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogCi0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFzUGVuZGluZ1By
b21pc2UocHJvbWlzZSkpOwotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc0RlcGVuZGFu
Y3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOwotICAgIEFTU0VSVCh2
bS5wcm9taXNlVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKHByb21pc2UsIGlt
cG9ydGVkT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5k
aW5nV29yayhwcm9taXNlKSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKKyAgICBBU1NF
UlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21p
c2UsIGltcG9ydGVkT2JqZWN0KSk7CiAKICAgICBpZiAoYXV0byBpbnB1dFJlc3BvbnNlID0gSlNG
ZXRjaFJlc3BvbnNlOjp0b1dyYXBwZWQodm0sIHNvdXJjZSkpIHsKICAgICAgICAgaGFuZGxlUmVz
cG9uc2VPblN0cmVhbWluZ0FjdGlvbihnbG9iYWxPYmplY3QsIGlucHV0UmVzcG9uc2UsIHByb21p
c2UsIFtwcm9taXNlLCBpbXBvcnRlZE9iamVjdF0gKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJs
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdp
bmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dCYXNlLmNwcAppbmRleCA0OWRmNDM5MDU3ZGY1OWQyOTRkNDg0YTk0ZjI5YjUyNDBmODg2MTgx
Li5kY2U3MzgyMGJiYmZkOWI5NWM1ODc5ZDEzZWY2NWVhYjk4YTkwNDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNSZW1vdGVET01X
aW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0KICAgICBudWxscHRyLCAvLyBt
b2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1v
ZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNr
ZXIKKyAgICBudWxscHRyLCAvLyByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wCiAg
ICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0
cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAK
aW5kZXggNTM3NmU4MGQwMDA1Mzc3NjI1ODJhYTI1YmU5MWQxMmE4ZjU5N2VjNC4uYzQ0ZjJmYjNh
MGIwNWRhYWIxYThhOWUyZjg5YjUyZDg1MWViNDM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNjUsNiAr
NjUsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZQogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxv
YWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9h
ZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVu
Y2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBu
dWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVT
dHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDA5NjVhODZjNDE4YmU2MWU2MmUxZmZkYWM2Y2Zl
OGJhZjZiNGQ2ZWUuLmIxNGI4MTU0MmRiODg5ZWM2ZDI1OWJjNWI3MGVmMmE1MDk5Yzk2ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmNwcApAQCAtNTcsNiArNTcsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibAog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAg
ICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlv
blRyYWNrZXIsCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAg
JmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAg
bnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOTMxY2VlNzc3
OWJmOTYxNDM4ZTgyMDE1MGM3YTdmOGFiNDY3NTU0Ny4uNzE2YjFhNjliOGVlYzFkYTY0NzIwMWE0
MzI2OTJiMzM4OTdlYjc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM3LDEyICszNywxMiBAQAogI2luY2x1
ZGUgIldvcmtlckNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjph
ZGRUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck4KIAogICAg
IHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwogICAgIHBy
b2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nl
c3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIucHRyKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3Zt
LT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGlt
ZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lk
IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6
SlNSdW5Mb29wVGltZXI6OlRpbQogCiAgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFj
dGl2aXR5Q2FsbGJhY2soKSk7CiAgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2
aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPnByb21pc2VUaW1lci5wdHIo
KSk7CisgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKIH0K
IAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVn
Z2VyKiBkZWJ1Z2dlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmlu
ZGV4IGVjMDdhYzQ2MzUwZDJhMzQyOWVhMDk4NzRlM2ZkZjJkZmRhOWU0NTEuLjY2ZWNkNTM2Zjgx
M2QwMjljNDk3ZjFhZWE3ZjIxOWVkZmM3NWIzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIldvcmtlclJ1bkxv
b3AuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogCiAjaWYg
VVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZhODhjYWExNDRhZTI3ZmM3
YzFmMmQ1ZjMzYmNkMTA4Y2MxMjBhOWUuLjIwYTZmODU2MTg1OGFkZmJlMmUyYmMxOGViZjcxNTBi
OTdhZDE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTM3LDExICszNywxMSBAQAogI2luY2x1ZGUgIldvcmtsZXRD
b25zb2xlQ2xpZW50LmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9F
eGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNh
bGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGQyOTJlMTEw
MTU3MmUyYjIyZmM4YmJlMjNkNTFiNzlkMjQ5YjA5MS4uNWZjOGQwNTRjNjVmNmQyN2QzNTM5NDk5
YmQ4ZGI1M2ZiMTFhNWEzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA3LTE3ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBGaW5hbGl6YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlv
bnJlZ2lzdHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKG1ha2VXZWFrUmVmKToKKyAgICAgICAgKHR1
cm5FdmVudExvb3ApOgorICAgICAgICAoYXN5bmMgdGVzdCk6CisgICAgICAgICoganMvdW50aXRs
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3Ry
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9u
cmVnaXN0cnkuaHRtbDogQWRkZWQuCisKIDIwMjAtMDctMTcgIExhdXJvIE1vdXJhICA8bG1vdXJh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBHYXJkZW4gc3ZnIGZhaWx1cmVzIGFu
ZCB1bmlmeSBzb21lIHN2ZyBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQ2NjUzYmE5MDljMWIyZGM4ZGFlMDFkMTAyZWE0OTNlYjY5ODliNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlv
bnJlZ2lzdHJ5LmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VX
ZWFrUmVmcz10cnVlIikKKworYXN5bmNUZXN0U3RhcnQoMSk7Cit2YXIgb2JqZWN0cyA9IFtdOwor
dmFyIHdlYWtSZWZzID0gW107Cit2YXIgZmluYWxpemVyQ2FsbGVkID0gZmFsc2U7Cit2YXIgZmlu
YWxpemF0aW9uUmVnaXN0cnkgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4gZmluYWxp
emVyQ2FsbGVkID0gdHJ1ZSk7CitmdW5jdGlvbiBtYWtlV2Vha1JlZigpIHsgcmV0dXJuIG5ldyBX
ZWFrUmVmKHsgZm9vOiAxIH0pOyB9Citub0lubGluZShtYWtlV2Vha1JlZik7CisKK2xldCBsb29w
Q291bnQgPSAxMDAwOworZnVuY3Rpb24gdHVybkV2ZW50TG9vcCgpIHsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK
KyAgICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0sIDAp
OworICAgIH0pOworfQorCit2YXIgaTsKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBsb29wQ291bnQ7IGkrKykgeworICAgICAgICBsZXQgd2VhayA9IG1h
a2VXZWFrUmVmKCk7CisgICAgICAgIHdlYWtSZWZzLnB1c2god2Vhayk7CisgICAgICAgIG9iamVj
dHMucHVzaCh3ZWFrLmRlcmVmKCkpOworICAgICAgICBmaW5hbGl6YXRpb25SZWdpc3RyeS5yZWdp
c3Rlcih3ZWFrLmRlcmVmKCkpOworICAgIH0KKworICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsK
KworICAgIHNob3VsZEJlRmFsc2UoYGZpbmFsaXplckNhbGxlZGApOworICAgIGZvciAoaSA9IDA7
IGkgPCBsb29wQ291bnQ7IGkrKykKKyAgICAgICAgc2hvdWxkQmUoYHdlYWtSZWZzW2ldLmRlcmVm
KClgLCBgb2JqZWN0c1tpXWApOworCisgICAgb2JqZWN0cy5sZW5ndGggPSAwOworICAgIG9iamVj
dHMgPSBudWxsOworCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOworICAgIC8vIFdlIG5lZWQg
dG8gdHVybiB0aGUgZXZlbnQgbG9vcCBhZ2FpbiBzaW5jZSBGUiBtYXkgbm90IGhhdmUgY2FsbGVk
IHRoZSBjYWxsYmFjayBpbiB0aGUgbGFzdCB0dXJuLgorICAgIGF3YWl0IHR1cm5FdmVudExvb3Ao
KTsKKworICAgIHNob3VsZEJlVHJ1ZShgZmluYWxpemVyQ2FsbGVkYCk7CisgICAgc2hvdWxkQmVU
cnVlKGB3ZWFrUmVmcy5zb21lKCh3ZWFrUmVmKSA9PiB3ZWFrUmVmLmRlcmVmKCkgPT09IG51bGwp
YCk7CisKKyAgICBhc3luY1Rlc3RQYXNzZWQoKTsKK30KKwordGVzdCgpLmNhdGNoKGUgPT4gZGVi
dWcoZSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbCBiL0xheW91
dFRlc3RzL2pzL3VudGl0bGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwZTFjYjcwNWE5ZDc3OTA4MDRj
Njk4NTI3Yzg0MzIxM2Q0YWQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Vu
dGl0bGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0t
LXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbi1yZWdpc3RyeS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy93ZWFr
cmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3dl
YWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzY2E2
NWMzOGQyNDgyZTdmMjlkYTdiMTViNmVhYjI2M2YyYTE5NGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwMDcgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorUEFTUyBmaW5hbGl6ZXJDYWxsZWQgaXMgZmFsc2UKK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIGZpbmFsaXplckNhbGxlZCBpcyB0cnVl
CitQQVNTIHdlYWtSZWZzLnNvbWUoKHdlYWtSZWYpID0+IHdlYWtSZWYuZGVyZWYoKSA9PT0gbnVs
bCkgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXph
dGlvbnJlZ2lzdHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJl
Z2lzdHJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkN2NmNDdkNGEzNDE2OThiZDBkNTVlZDZhODg5MGJm
ZTQxMjc0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxp
emF0aW9ucmVnaXN0cnkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NP
cHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0
cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxOWM4NWI2MmNiYzFjMDE2MGNjNzk3MWY3
MjM3NmMzOTVjNzRmNGQ1Li45ZGVmYWM0ZmM3NmIzNGFmYTdhNDM2YjQwYzUwNDFkMzViNjFhMWVm
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDExNiBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0
cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5
ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanM6IEFkZGVkLgorICAgICAgICAoTWpzVW5pdEFz
c2VydGlvbkVycm9yKToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcm90b3R5cGUu
dG9TdHJpbmcpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoY2xhc3NPZik6CisgICAgICAg
IChWYWx1ZU9mKToKKyAgICAgICAgKHByZXR0eVByaW50ZWQpOgorICAgICAgICAocHJldHR5UHJp
bnRlZEFycmF5RWxlbWVudCk6CisgICAgICAgIChmYWlsV2l0aE1lc3NhZ2UpOgorICAgICAgICAo
Zm9ybWF0RmFpbHVyZVRleHQpOgorICAgICAgICAoZmFpbCk6CisgICAgICAgIChkZWVwT2JqZWN0
RXF1YWxzKToKKyAgICAgICAgKGRlZXBFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0U2FtZSk6Cisg
ICAgICAgIChhc3NlcnROb3RTYW1lKToKKyAgICAgICAgKGFzc2VydEVxdWFscyk6CisgICAgICAg
IChhc3NlcnROb3RFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0RXF1YWxzRGVsdGEpOgorICAgICAg
ICAoYXNzZXJ0QXJyYXlFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0UHJvcGVydGllc0VxdWFsKToK
KyAgICAgICAgKGFzc2VydFRvU3RyaW5nRXF1YWxzKToKKyAgICAgICAgKGFzc2VydFRydWUpOgor
ICAgICAgICAoYXNzZXJ0RmFsc2UpOgorICAgICAgICAoYXNzZXJ0TnVsbCk6CisgICAgICAgIChh
c3NlcnROb3ROdWxsKToKKyAgICAgICAgKGV4ZWN1dGVDb2RlKToKKyAgICAgICAgKGNoZWNrRXhj
ZXB0aW9uKToKKyAgICAgICAgKGFzc2VydFRocm93cyk6CisgICAgICAgIChhc3NlcnRUaHJvd3NF
cXVhbHMpOgorICAgICAgICAoYXNzZXJ0VGhyb3dzQXN5bmMpOgorICAgICAgICAoYXNzZXJ0SW5z
dGFuY2VvZik6CisgICAgICAgIChhc3NlcnREb2VzTm90VGhyb3cpOgorICAgICAgICAoYXNzZXJ0
VW5yZWFjaGFibGUpOgorICAgICAgICAoYXNzZXJ0Q29udGFpbnMpOgorICAgICAgICAoYXNzZXJ0
TWF0Y2hlcyk6CisgICAgICAgIChjb25jYXRlbmF0ZUVycm9ycyk6CisgICAgICAgIChhc3NlcnRQ
cm9taXNlUmVzdWx0KToKKyAgICAgICAgKE9wdGltaXphdGlvblN0YXR1cyk6CisgICAgICAgIChh
c3NlcnRVbm9wdGltaXplZCk6CisgICAgICAgIChhc3NlcnRPcHRpbWl6ZWQpOgorICAgICAgICAo
aXNOZXZlck9wdGltaXplTGl0ZU1vZGUpOgorICAgICAgICAoaXNOZXZlck9wdGltaXplKToKKyAg
ICAgICAgKGlzQWx3YXlzT3B0aW1pemUpOgorICAgICAgICAoaXNJbnRlcnByZXRlZCk6CisgICAg
ICAgIChpc09wdGltaXplZCk6CisgICAgICAgIChpc1R1cmJvRmFubmVkKToKKyAgICAgICAgKE1q
c1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSk6CisgICAgICAgICogc3RyZXNz
L3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0
LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1k
aWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6Cisg
ICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanM6IEFkZGVk
LgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAg
KFRlc3RGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24pOgorICAg
ICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxl
KToKKyAgICAgICAgKFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxs
YWJsZVByb3h5QXNDbGVhbnVwKToKKyAgICAgICAgKFRlc3RSZWdpc3RlclRhcmdldEFuZEhvbGRp
bmdzU2FtZVZhbHVlKToKKyAgICAgICAgKFRlc3RSZWdpc3RlcldpdGhvdXRGaW5hbGl6YXRpb25S
ZWdpc3RyeSk6CisgICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSk6Cisg
ICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAg
ICAgIChUZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCk6CisgICAgICAgIChUZXN0
V2Vha1JlZldpdGhQcm94eSk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LWFuZC13ZWFrcmVmLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAg
ICAgKHNldFRpbWVvdXQpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3Ry
eS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6
CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxp
emF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwMCk6CisgICAgICAgIChsZXQuY2xlYW51cDEpOgor
ICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LW11bHRpcGxl
LWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5j
bGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92
OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5yZWVu
dHJhbnRfZ2MpOgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LXN0
cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGkucmVnaXN0cmllcy5wdXNoLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAg
IChyZWdpc3RyaWVzLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy92OC11bmRlZmluZWQtaG9s
ZGluZ3MuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRp
bWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51
cC5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91
dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5q
czogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9m
dW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanM6IEFk
ZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6
CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgor
ICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qczogQWRkZWQu
CisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAg
ICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzOiBBZGRlZC4KKyAgICAgICAgKGxl
dC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVz
cy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qczogQWRkZWQuCisgICAgICAgIChGUi5uZXcuRmlu
YWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAodHJ5QWdhaW4pOgorCiAyMDIwLTA3LTE3ICBY
YW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVs
ZCB0aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMv
djgtbWpzdW5pdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzc0NjFmNzRjOTAyMjMyMWZjNjBlNjg2Zjc5NWQ1
MGUzOTI5ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4
LW1qc3VuaXQuanMKQEAgLTAsMCArMSw4MDkgQEAKKy8vIENvcHlyaWdodCAyMDA4IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnVuY3Rpb24gTWpzVW5pdEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpIHsKKyAgdGhpcy5tZXNz
YWdlID0gbWVzc2FnZTsKKyAgLy8gVGVtcG9yYXJpbHkgaW5zdGFsbCBhIGN1c3RvbSBzdGFjayB0
cmFjZSBmb3JtYXR0ZXIgYW5kIHJlc3RvcmUgdGhlCisgIC8vIHByZXZpb3VzIHZhbHVlLgorICBs
ZXQgcHJldlByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CisgIHRy
eSB7CisgICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBNanNVbml0QXNzZXJ0aW9uRXJyb3Iu
cHJlcGFyZVN0YWNrVHJhY2U7CisgICAgLy8gVGhpcyBhbGxvd3MgZmV0Y2hpbmcgdGhlIHN0YWNr
IHRyYWNlIHVzaW5nIFRyeUNhdGNoOjpTdGFja1RyYWNlLgorICAgIHRoaXMuc3RhY2sgPSBuZXcg
RXJyb3IoIk1qc1VuaXRBc3NlcnRpb25FcnJvciIpLnN0YWNrOworICB9IGZpbmFsbHkgeworICAg
IEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJldlByZXBhcmVTdGFja1RyYWNlOworICB9Cit9
CisKKy8qCisgKiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgaW4gYWxsIG1pbmkganN1bml0IHRlc3Qg
Y2FzZXMuICBUaGUgdGVzdAorICogZnJhbWV3b3JrIGV4cGVjdHMgbGluZXMgdGhhdCBzaWduYWwg
ZmFpbGVkIHRlc3RzIHRvIHN0YXJ0IHdpdGgKKyAqIHRoZSBmLXdvcmQgYW5kIGlnbm9yZSBhbGwg
b3RoZXIgbGluZXMuCisgKi8KKworTWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0
cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubWVzc2FnZSArICJcblxuU3RhY2s6
ICIgKyB0aGlzLnN0YWNrOworfTsKKworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIHRo
ZSBzYW1lIG9iamVjdHMsIG9yIHRoZSBzYW1lIHByaW1pdGl2ZQorLy8gdmFsdWVzLgorLy8gRm9y
IGtub3duIHByaW1pdGl2ZSB2YWx1ZXMsIHBsZWFzZSB1c2UgYXNzZXJ0RXF1YWxzLgordmFyIGFz
c2VydFNhbWU7CisKKy8vIEludmVyc2Ugb2YgYXNzZXJ0U2FtZS4KK3ZhciBhc3NlcnROb3RTYW1l
OworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIGFyZSBpZGVudGljYWwgcHJpbWl0aXZl
IHZhbHVlcyBvciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMg
KGNoZWNraW5nIGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERh
dGUgb2JqZWN0cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVz
IG9mIG5vbi1BcnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnRFcXVhbHM7CisKKy8vIERlZXAgZXF1
YWxpdHkgcHJlZGljYXRlIHVzZWQgYnkgYXNzZXJ0RXF1YWxzLgordmFyIGRlZXBFcXVhbHM7CisK
Ky8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIG5vdCBpZGVudGljYWwgcHJpbWl0aXZl
IHZhbHVlcyBvciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMg
KGNoZWNraW5nIGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERh
dGUgb2JqZWN0cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVz
IG9mIG5vbi1BcnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnROb3RFcXVhbHM7CisKKy8vIFRoZSBk
aWZmZXJlbmNlIGJldHdlZW4gZXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlIGlzIHdpdGhpbiBjZXJ0
YWluIHRvbGVyYW5jZS4KK3ZhciBhc3NlcnRFcXVhbHNEZWx0YTsKKworLy8gVGhlIGZvdW5kIG9i
amVjdCBpcyBhbiBBcnJheSB3aXRoIHRoZSBzYW1lIGxlbmd0aCBhbmQgZWxlbWVudHMKKy8vIGFz
IHRoZSBleHBlY3RlZCBvYmplY3QuIFRoZSBleHBlY3RlZCBvYmplY3QgZG9lc24ndCBuZWVkIHRv
IGJlIGFuIEFycmF5LAorLy8gYXMgbG9uZyBhcyBpdCdzICJhcnJheS1pc2giLgordmFyIGFzc2Vy
dEFycmF5RXF1YWxzOworCisvLyBUaGUgZm91bmQgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc2FtZSBl
bnVtZXJhYmxlIHByb3BlcnRpZXMgYXMgdGhlCisvLyBleHBlY3RlZCBvYmplY3QuIFRoZSB0eXBl
IG9mIG9iamVjdCBpc24ndCBjaGVja2VkLgordmFyIGFzc2VydFByb3BlcnRpZXNFcXVhbDsKKwor
Ly8gQXNzZXJ0IHRoYXQgdGhlIHN0cmluZyBjb252ZXJzaW9uIG9mIHRoZSBmb3VuZCB2YWx1ZSBp
cyBlcXVhbCB0bworLy8gdGhlIGV4cGVjdGVkIHN0cmluZy4gT25seSBrZXB0IGZvciBiYWNrd2Fy
ZHMgY29tcGF0aWJpbGl0eSwgcGxlYXNlCisvLyBjaGVjayB0aGUgcmVhbCBzdHJ1Y3R1cmUgb2Yg
dGhlIGZvdW5kIHZhbHVlLgordmFyIGFzc2VydFRvU3RyaW5nRXF1YWxzOworCisvLyBDaGVja3Mg
dGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgdHJ1ZS4gVXNlIHdpdGggYm9vbGVhbiBleHByZXNzaW9u
cworLy8gZm9yIHRlc3RzIHRoYXQgZG9lc24ndCBoYXZlIHRoZWlyIG93biBhc3NlcnRYWFggZnVu
Y3Rpb24uCit2YXIgYXNzZXJ0VHJ1ZTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVl
IGlzIGZhbHNlLgordmFyIGFzc2VydEZhbHNlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQg
dmFsdWUgaXMgbnVsbC4gS2VwdCBmb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LAorLy8gcGxl
YXNlIGp1c3QgdXNlIGFzc2VydEVxdWFscyhudWxsLCBleHBlY3RlZCkuCit2YXIgYXNzZXJ0TnVs
bDsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzICpub3QqIG51bGwuCit2YXIg
YXNzZXJ0Tm90TnVsbDsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBl
dmFsIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJn
dW1lbnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhj
ZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRp
b25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9i
amVjdCB0aGF0IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4
Y2VwdGlvbi4KK3ZhciBhc3NlcnRUaHJvd3M7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQg
ZnVuY3Rpb24gdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBleGNlcHRpb24gaXMgY2hlY2tl
ZCBhZ2FpbnN0IHRoZSBzZWNvbmQgYXJndW1lbnQgdXNpbmcgYXNzZXJ0RXF1YWxzLgordmFyIGFz
c2VydFRocm93c0VxdWFsczsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBwcm9taXNlIGRv
ZXMgbm90IHJlc29sdmUsIGJ1dCBldmVudHVhbGx5IHRocm93cyBhbgorLy8gZXhjZXB0aW9uLiBU
aGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlvbiBjb25zdHJ1Y3RvciB0
aGF0IHRoZQorLy8gdGhyb3duIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qgd2l0aCAiaW5z
dGFuY2VvZiIuCisvLyBUaGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBtZXNzYWdlIHR5
cGUgc3RyaW5nIG9yIFJlZ0V4cCBvYmplY3QgdGhhdCBpcworLy8gY29tcGFyZWQgdG8gdGhlIG1l
c3NhZ2Ugb2YgdGhlIHRocm93biBleGNlcHRpb24uCit2YXIgYXNzZXJ0VGhyb3dzQXN5bmM7CisK
Ky8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gb3IgZXZhbCBjb2RlIGRvZXMgbm90
IHRocm93IGFuIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnREb2VzTm90VGhyb3c7CisKKy8vIEFzc2Vy
dHMgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvbnN0cnVjdG9y
IHBhc3NlZAorLy8gYXMgdGhlIHNlY29uZCBhcmd1bWVudC4KK3ZhciBhc3NlcnRJbnN0YW5jZW9m
OworCisvLyBBc3NlcnQgdGhhdCB0aGlzIGNvZGUgaXMgbmV2ZXIgZXhlY3V0ZWQgKGkuZS4sIGFs
d2F5cyBmYWlscyBpZiBleGVjdXRlZCkuCit2YXIgYXNzZXJ0VW5yZWFjaGFibGU7CisKKy8vIEFz
c2VydCB0aGF0IHRoZSBmdW5jdGlvbiBjb2RlIGlzIChub3QpIG9wdGltaXplZC4gIElmICJubyBz
eW5jIiBpcyBwYXNzZWQKKy8vIGFzIHNlY29uZCBhcmd1bWVudCwgd2UgZG8gbm90IHdhaXQgZm9y
IHRoZSBjb25jdXJyZW50IG9wdGltaXphdGlvbiB0aHJlYWQgdG8KKy8vIGZpbmlzaCB3aGVuIHBv
bGxpbmcgZm9yIG9wdGltaXphdGlvbiBzdGF0dXMuCisvLyBPbmx5IHdvcmtzIHdpdGggLS1hbGxv
dy1uYXRpdmVzLXN5bnRheC4KK3ZhciBhc3NlcnRPcHRpbWl6ZWQ7Cit2YXIgYXNzZXJ0VW5vcHRp
bWl6ZWQ7CisKKy8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIGNvbnRhaW5zIGFub3RoZXIgZXhwZWN0
ZWQgc3Vic3RyaW5nLgordmFyIGFzc2VydENvbnRhaW5zOworCisvLyBBc3NlcnQgdGhhdCBhIHN0
cmluZyBtYXRjaGVzIGEgZ2l2ZW4gcmVnZXguCit2YXIgYXNzZXJ0TWF0Y2hlczsKKworLy8gQXNz
ZXJ0IHRoYXQgYSBwcm9taXNlIHJlc29sdmVzIG9yIHJlamVjdHMuCisvLyBQYXJhbWV0ZXJzOgor
Ly8ge3Byb21pc2V9IC0gdGhlIHByb21pc2UKKy8vIHtzdWNjZXNzfSAtIG9wdGlvbmFsIC0gYSBj
YWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAg
ICAgICAgcmVzb2x2aW5nIHByb21pc2UuCisvLyAge2ZhaWx9IC0gICBvcHRpb25hbCAtIGEgY2Fs
bGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUKKy8vICAgICAgICAg
ICAgIHJlamVjdGluZyBwcm9taXNlLiBJZiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCBidXQgbm8g
e2ZhaWx9CisvLyAgICAgICAgICAgICBjYWxsYmFjayBpcyBzZXQsIHRoZSBlcnJvciBpcyBwcm9w
YWdhdGVkIG91dCBvZiB0aGUgcHJvbWlzZQorLy8gICAgICAgICAgICAgY2hhaW4uCit2YXIgYXNz
ZXJ0UHJvbWlzZVJlc3VsdDsKKwordmFyIHByb21pc2VUZXN0Q2hhaW47Cit2YXIgcHJvbWlzZVRl
c3RDb3VudCA9IDA7CisKKy8vIFRoZXNlIGJpdHMgbXVzdCBiZSBpbiBzeW5jIHdpdGggYml0cyBk
ZWZpbmVkIGluIFJ1bnRpbWVfR2V0T3B0aW1pemF0aW9uU3RhdHVzCit2YXIgVjhPcHRpbWl6YXRp
b25TdGF0dXMgPSB7CisgIGtJc0Z1bmN0aW9uOiAxIDw8IDAsCisgIGtOZXZlck9wdGltaXplOiAx
IDw8IDEsCisgIGtBbHdheXNPcHRpbWl6ZTogMSA8PCAyLAorICBrTWF5YmVEZW9wdGVkOiAxIDw8
IDMsCisgIGtPcHRpbWl6ZWQ6IDEgPDwgNCwKKyAga1R1cmJvRmFubmVkOiAxIDw8IDUsCisgIGtJ
bnRlcnByZXRlZDogMSA8PCA2LAorICBrTWFya2VkRm9yT3B0aW1pemF0aW9uOiAxIDw8IDcsCisg
IGtNYXJrZWRGb3JDb25jdXJyZW50T3B0aW1pemF0aW9uOiAxIDw8IDgsCisgIGtPcHRpbWl6aW5n
Q29uY3VycmVudGx5OiAxIDw8IDksCisgIGtJc0V4ZWN1dGluZzogMSA8PCAxMCwKKyAga1RvcG1v
c3RGcmFtZUlzVHVyYm9GYW5uZWQ6IDEgPDwgMTEsCisgIGtMaXRlTW9kZTogMSA8PCAxMiwKKyAg
a01hcmtlZEZvckRlb3B0aW1pemF0aW9uOiAxIDw8IDEzLAorfTsKKworLy8gUmV0dXJucyB0cnVl
IGlmIC0tbGl0ZS1tb2RlIGlzIG9uIGFuZCB3ZSBjYW4ndCBldmVyIHR1cm4gb24gb3B0aW1pemF0
aW9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlOworCisvLyBSZXR1cm5zIHRydWUgaWYg
LS1uby1vcHQgbW9kZSBpcyBvbi4KK3ZhciBpc05ldmVyT3B0aW1pemU7CisKKy8vIFJldHVybnMg
dHJ1ZSBpZiAtLWFsd2F5cy1vcHQgbW9kZSBpcyBvbi4KK3ZhciBpc0Fsd2F5c09wdGltaXplOwor
CisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaW4gaW50ZXJwcmV0ZWQuCit2YXIg
aXNJbnRlcnByZXRlZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlzIG9w
dGltaXplZC4KK3ZhciBpc09wdGltaXplZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1
bmN0aW9uIGlzIGNvbXBpbGVkIGJ5IFR1cmJvRmFuLgordmFyIGlzVHVyYm9GYW5uZWQ7CisKKy8v
IE1vbmtleS1wYXRjaGFibGUgYWxsLXB1cnBvc2UgZmFpbHVyZSBoYW5kbGVyLgordmFyIGZhaWxX
aXRoTWVzc2FnZTsKKworLy8gUmV0dXJucyB0aGUgZm9ybWF0dGVkIGZhaWx1cmUgdGV4dC4gIFVz
ZWQgYnkgdGVzdC1hc3luYy5qcy4KK3ZhciBmb3JtYXRGYWlsdXJlVGV4dDsKKworLy8gUmV0dXJu
cyBhIHByZXR0eS1wcmludGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGFzc2VkIHZh
bHVlLgordmFyIHByZXR0eVByaW50ZWQ7CisKKyhmdW5jdGlvbiAoKSB7ICAvLyBTY29wZSBmb3Ig
dXRpbGl0eSBmdW5jdGlvbnMuCisKKyAgdmFyIE9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKyAgdmFyIE51bWJlclByb3RvdHlwZVZhbHVlT2YgPSBO
dW1iZXIucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBCb29sZWFuUHJvdG90eXBlVmFsdWVPZiA9
IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBTdHJpbmdQcm90b3R5cGVWYWx1ZU9m
ID0gU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgRGF0ZVByb3RvdHlwZVZhbHVlT2Yg
PSBEYXRlLnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcg
PSBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgQXJyYXlQcm90b3R5cGVGb3JFYWNo
ID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2g7CisgIHZhciBBcnJheVByb3RvdHlwZUpvaW4gPSBB
cnJheS5wcm90b3R5cGUuam9pbjsKKyAgdmFyIEFycmF5UHJvdG90eXBlTWFwID0gQXJyYXkucHJv
dG90eXBlLm1hcDsKKyAgdmFyIEFycmF5UHJvdG90eXBlUHVzaCA9IEFycmF5LnByb3RvdHlwZS5w
dXNoOworCisgIHZhciBCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOworICAvLyBUT0RPKG5laXMpOiBS
ZW1vdmUgdHJ5LWNhdGNoIG9uY2UgQmlnSW50cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICB0
cnkgeworICAgIEJpZ0ludFByb3RvdHlwZVZhbHVlT2YgPSBCaWdJbnQucHJvdG90eXBlLnZhbHVl
T2Y7CisgIH0gY2F0Y2ggKGUpIHt9CisKKyAgZnVuY3Rpb24gY2xhc3NPZihvYmplY3QpIHsKKyAg
ICAvLyBBcmd1bWVudCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgc3Ry
aW5nID0gT2JqZWN0UHJvdG90eXBlVG9TdHJpbmcuY2FsbChvYmplY3QpOworICAgIC8vIFN0cmlu
ZyBoYXMgZm9ybWF0IFtvYmplY3QgPENsYXNzTmFtZT5dLgorICAgIHJldHVybiBzdHJpbmcuc3Vi
c3RyaW5nKDgsIHN0cmluZy5sZW5ndGggLSAxKTsKKyAgfQorCisKKyAgZnVuY3Rpb24gVmFsdWVP
Zih2YWx1ZSkgeworICAgIHN3aXRjaCAoY2xhc3NPZih2YWx1ZSkpIHsKKyAgICAgIGNhc2UgIk51
bWJlciI6CisgICAgICAgIHJldHVybiBOdW1iZXJQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUp
OworICAgICAgY2FzZSAiQmlnSW50IjoKKyAgICAgICAgcmV0dXJuIEJpZ0ludFByb3RvdHlwZVZh
bHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBjYXNlICJTdHJpbmciOgorICAgICAgICByZXR1cm4g
U3RyaW5nUHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkJvb2xlYW4i
OgorICAgICAgICByZXR1cm4gQm9vbGVhblByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7Cisg
ICAgICBjYXNlICJEYXRlIjoKKyAgICAgICAgcmV0dXJuIERhdGVQcm90b3R5cGVWYWx1ZU9mLmNh
bGwodmFsdWUpOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0K
KyAgfQorCisKKyAgcHJldHR5UHJpbnRlZCA9IGZ1bmN0aW9uIHByZXR0eVByaW50ZWQodmFsdWUp
IHsKKyAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkgeworICAgICAgY2FzZSAic3RyaW5nIjoKKyAg
ICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKKyAgICAgIGNhc2UgImJpZ2ludCI6
CisgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpICsgIm4iOworICAgICAgY2FzZSAibnVtYmVy
IjoKKyAgICAgICAgaWYgKHZhbHVlID09PSAwICYmICgxIC8gdmFsdWUpIDwgMCkgcmV0dXJuICIt
MCI7CisgICAgICAgIC8vIEZBTExUSFJPVUdILgorICAgICAgY2FzZSAiYm9vbGVhbiI6CisgICAg
ICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgY2FzZSAiZnVuY3Rpb24iOgorICAgICAgY2FzZSAi
c3ltYm9sIjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7CisgICAgICBjYXNlICJvYmpl
Y3QiOgorICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAibnVsbCI7CisgICAgICAg
IHZhciBvYmplY3RDbGFzcyA9IGNsYXNzT2YodmFsdWUpOworICAgICAgICBzd2l0Y2ggKG9iamVj
dENsYXNzKSB7CisgICAgICAgICAgY2FzZSAiTnVtYmVyIjoKKyAgICAgICAgICBjYXNlICJCaWdJ
bnQiOgorICAgICAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgICAgY2FzZSAiQm9vbGVhbiI6
CisgICAgICAgICAgY2FzZSAiRGF0ZSI6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3Mg
KyAiKCIgKyBwcmV0dHlQcmludGVkKFZhbHVlT2YodmFsdWUpKSArICIpIjsKKyAgICAgICAgICBj
YXNlICJSZWdFeHAiOgorICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5n
LmNhbGwodmFsdWUpOworICAgICAgICAgIGNhc2UgIkFycmF5IjoKKyAgICAgICAgICAgIHZhciBt
YXBwZWQgPSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKAorICAgICAgICAgICAgICAgIHZhbHVlLCBw
cmV0dHlQcmludGVkQXJyYXlFbGVtZW50KTsKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJh
eVByb3RvdHlwZUpvaW4uY2FsbChtYXBwZWQsICIsIik7CisgICAgICAgICAgICByZXR1cm4gIlsi
ICsgam9pbmVkICsgIl0iOworICAgICAgICAgIGNhc2UgIlVpbnQ4QXJyYXkiOgorICAgICAgICAg
IGNhc2UgIkludDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CisgICAgICAg
ICAgY2FzZSAiVWludDE2QXJyYXkiOgorICAgICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKKyAg
ICAgICAgICBjYXNlICJJbnQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJGbG9hdDMyQXJyYXki
OgorICAgICAgICAgIGNhc2UgIkZsb2F0NjRBcnJheSI6CisgICAgICAgICAgICB2YXIgam9pbmVk
ID0gQXJyYXlQcm90b3R5cGVKb2luLmNhbGwodmFsdWUsICIsIik7CisgICAgICAgICAgICByZXR1
cm4gb2JqZWN0Q2xhc3MgKyAiKFsiICsgam9pbmVkICsgIl0pIjsKKyAgICAgICAgICBjYXNlICJP
YmplY3QiOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoIiArIFN0cmluZyh2YWx1ZSkgKyAiKSI7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gY2xhc3NPZigpIHJldHVybmVkICJPYmplY3QiLgorICAgICAgICB2
YXIgbmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7CisgICAgICAgIGlmIChuYW1lKSByZXR1
cm4gbmFtZSArICIoKSI7CisgICAgICAgIHJldHVybiAiT2JqZWN0KCkiOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuICItLSB1bmtub3duIHZhbHVlIC0tIjsKKyAgICB9CisgIH0KKwor
CisgIGZ1bmN0aW9uIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQodmFsdWUsIGluZGV4LCBhcnJh
eSkgeworICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoaW5kZXggaW4gYXJyYXkpKSBy
ZXR1cm4gIiI7CisgICAgcmV0dXJuIHByZXR0eVByaW50ZWQodmFsdWUpOworICB9CisKKworICBm
YWlsV2l0aE1lc3NhZ2UgPSBmdW5jdGlvbiBmYWlsV2l0aE1lc3NhZ2UobWVzc2FnZSkgeworICAg
IHRocm93IG5ldyBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSk7CisgIH0KKworICBmb3Jt
YXRGYWlsdXJlVGV4dCA9IGZ1bmN0aW9uKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSB7
CisgICAgdmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlIjsKKyAgICBpZiAobmFtZV9vcHQpIHsK
KyAgICAgIC8vIEZpeCB0aGlzIHdoZW4gd2UgZGl0Y2ggdGhlIG9sZCB0ZXN0IHJ1bm5lci4KKyAg
ICAgIG1lc3NhZ2UgKz0gIiAoIiArIG5hbWVfb3B0ICsgIikiOworICAgIH0KKworICAgIHZhciBm
b3VuZFRleHQgPSBwcmV0dHlQcmludGVkKGZvdW5kKTsKKyAgICBpZiAoZXhwZWN0ZWRUZXh0Lmxl
bmd0aCA8PSA0MCAmJiBmb3VuZFRleHQubGVuZ3RoIDw9IDQwKSB7CisgICAgICBtZXNzYWdlICs9
ICI6IGV4cGVjdGVkIDwiICsgZXhwZWN0ZWRUZXh0ICsgIj4gZm91bmQgPCIgKyBmb3VuZFRleHQg
KyAiPiI7CisgICAgfSBlbHNlIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjpcbmV4cGVjdGVkOlxuIiAr
IGV4cGVjdGVkVGV4dCArICJcbmZvdW5kOlxuIiArIGZvdW5kVGV4dDsKKyAgICB9CisgICAgcmV0
dXJuIG1lc3NhZ2U7CisgIH0KKworICBmdW5jdGlvbiBmYWlsKGV4cGVjdGVkVGV4dCwgZm91bmQs
IG5hbWVfb3B0KSB7CisgICAgcmV0dXJuIGZhaWxXaXRoTWVzc2FnZShmb3JtYXRGYWlsdXJlVGV4
dChleHBlY3RlZFRleHQsIGZvdW5kLCBuYW1lX29wdCkpOworICB9CisKKworICBmdW5jdGlvbiBk
ZWVwT2JqZWN0RXF1YWxzKGEsIGIpIHsKKyAgICB2YXIgYVByb3BzID0gT2JqZWN0LmtleXMoYSk7
CisgICAgYVByb3BzLnNvcnQoKTsKKyAgICB2YXIgYlByb3BzID0gT2JqZWN0LmtleXMoYik7Cisg
ICAgYlByb3BzLnNvcnQoKTsKKyAgICBpZiAoIWRlZXBFcXVhbHMoYVByb3BzLCBiUHJvcHMpKSB7
CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYVBy
b3BzLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoIWRlZXBFcXVhbHMoYVthUHJvcHNbaV1dLCBi
W2FQcm9wc1tpXV0pKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0KKworCisgIGRlZXBFcXVhbHMgPSBmdW5jdGlvbiBkZWVwRXF1
YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikgeworICAgICAgLy8gQ2hlY2sgZm9yIC0wLgor
ICAgICAgaWYgKGEgPT09IDApIHJldHVybiAoMSAvIGEpID09PSAoMSAvIGIpOworICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHJldHVybiBm
YWxzZTsKKyAgICBpZiAodHlwZW9mIGEgPT09ICJudW1iZXIiKSByZXR1cm4gaXNOYU4oYSkgJiYg
aXNOYU4oYik7CisgICAgaWYgKHR5cGVvZiBhICE9PSAib2JqZWN0IiAmJiB0eXBlb2YgYSAhPT0g
ImZ1bmN0aW9uIikgcmV0dXJuIGZhbHNlOworICAgIC8vIE5laXRoZXIgYSBub3IgYiBpcyBwcmlt
aXRpdmUuCisgICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NPZihhKTsKKyAgICBpZiAob2JqZWN0
Q2xhc3MgIT09IGNsYXNzT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICBpZiAob2JqZWN0Q2xhc3Mg
PT09ICJSZWdFeHAiKSB7CisgICAgICAvLyBGb3IgUmVnRXhwLCBqdXN0IGNvbXBhcmUgcGF0dGVy
biBhbmQgZmxhZ3MgdXNpbmcgaXRzIHRvU3RyaW5nLgorICAgICAgcmV0dXJuIFJlZ0V4cFByb3Rv
dHlwZVRvU3RyaW5nLmNhbGwoYSkgPT09CisgICAgICAgICAgICAgUmVnRXhwUHJvdG90eXBlVG9T
dHJpbmcuY2FsbChiKTsKKyAgICB9CisgICAgLy8gRnVuY3Rpb25zIGFyZSBvbmx5IGlkZW50aWNh
bCB0byB0aGVtc2VsdmVzLgorICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkZ1bmN0aW9uIikgcmV0
dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkFycmF5IikgeworICAgICAgdmFy
IGVsZW1lbnRDb3VudCA9IDA7CisgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YS5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIWRlZXBFcXVhbHMoYVtpXSwgYltpXSkpIHJl
dHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAo
b2JqZWN0Q2xhc3MgPT09ICJTdHJpbmciIHx8IG9iamVjdENsYXNzID09PSAiTnVtYmVyIiB8fAor
ICAgICAgb2JqZWN0Q2xhc3MgPT09ICJCaWdJbnQiIHx8IG9iamVjdENsYXNzID09PSAiQm9vbGVh
biIgfHwKKyAgICAgIG9iamVjdENsYXNzID09PSAiRGF0ZSIpIHsKKyAgICAgIGlmIChWYWx1ZU9m
KGEpICE9PSBWYWx1ZU9mKGIpKSByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBkZWVw
T2JqZWN0RXF1YWxzKGEsIGIpOworICB9CisKKyAgYXNzZXJ0U2FtZSA9IGZ1bmN0aW9uIGFzc2Vy
dFNhbWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmIChPYmplY3QuaXMoZXhw
ZWN0ZWQsIGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCks
IGZvdW5kLCBuYW1lX29wdCk7CisgIH07CisKKyAgYXNzZXJ0Tm90U2FtZSA9IGZ1bmN0aW9uIGFz
c2VydE5vdFNhbWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmICghT2JqZWN0
LmlzKGV4cGVjdGVkLCBmb3VuZCkpIHJldHVybjsKKyAgICBmYWlsKCJub3Qgc2FtZSBhcyAiICsg
cHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgIH0KKworICBhc3Nl
cnRFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29w
dCkgeworICAgIGlmICghZGVlcEVxdWFscyhmb3VuZCwgZXhwZWN0ZWQpKSB7CisgICAgICBmYWls
KHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsK
KworICBhc3NlcnROb3RFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHMoZXhwZWN0ZWQs
IGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmIChkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkp
IHsKKyAgICAgIGZhaWwoIm5vdCBlcXVhbHMgdG8gIiArIHByZXR0eVByaW50ZWQoZXhwZWN0ZWQp
LCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEVxdWFsc0RlbHRh
ID0KKyAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsc0RlbHRhKGV4cGVjdGVkLCBmb3VuZCwgZGVs
dGEsIG5hbWVfb3B0KSB7CisgICAgaWYgKE1hdGguYWJzKGV4cGVjdGVkIC0gZm91bmQpID4gZGVs
dGEpIHsKKyAgICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCkgKyAiICstICIgKyBwcmV0
dHlQcmludGVkKGRlbHRhKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBh
c3NlcnRBcnJheUVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydEFycmF5RXF1YWxzKGV4cGVjdGVkLCBm
b3VuZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIgc3RhcnQgPSAiIjsKKyAgICBpZiAobmFtZV9vcHQp
IHsKKyAgICAgIHN0YXJ0ID0gbmFtZV9vcHQgKyAiIC0gIjsKKyAgICB9CisgICAgYXNzZXJ0RXF1
YWxzKGV4cGVjdGVkLmxlbmd0aCwgZm91bmQubGVuZ3RoLCBzdGFydCArICJhcnJheSBsZW5ndGgi
KTsKKyAgICBpZiAoZXhwZWN0ZWQubGVuZ3RoID09PSBmb3VuZC5sZW5ndGgpIHsKKyAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkW2ldLCBmb3VuZFtpXSwKKyAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
ICsgImFycmF5IGVsZW1lbnQgYXQgaW5kZXggIiArIGkpOworICAgICAgfQorICAgIH0KKyAgfTsK
KworCisgIGFzc2VydFByb3BlcnRpZXNFcXVhbCA9IGZ1bmN0aW9uIGFzc2VydFByb3BlcnRpZXNF
cXVhbChleHBlY3RlZCwgZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29wdCkgeworICAgIC8vIENoZWNrIHByb3BlcnRp
ZXMgb25seS4KKyAgICBpZiAoIWRlZXBPYmplY3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kKSkgewor
ICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKwor
ICBhc3NlcnRUb1N0cmluZ0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRvU3RyaW5nRXF1YWxzKGV4
cGVjdGVkLCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lX29wdCkgeworICAgIGlmIChleHBlY3RlZCAhPT0gU3RyaW5nKGZv
dW5kKSkgeworICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9Cisg
IH07CisKKworICBhc3NlcnRUcnVlID0gZnVuY3Rpb24gYXNzZXJ0VHJ1ZSh2YWx1ZSwgbmFtZV9v
cHQpIHsKKyAgICBhc3NlcnRFcXVhbHModHJ1ZSwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgfTsKKwor
CisgIGFzc2VydEZhbHNlID0gZnVuY3Rpb24gYXNzZXJ0RmFsc2UodmFsdWUsIG5hbWVfb3B0KSB7
CisgICAgYXNzZXJ0RXF1YWxzKGZhbHNlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAg
YXNzZXJ0TnVsbCA9IGZ1bmN0aW9uIGFzc2VydE51bGwodmFsdWUsIG5hbWVfb3B0KSB7CisgICAg
aWYgKHZhbHVlICE9PSBudWxsKSB7CisgICAgICBmYWlsKCJudWxsIiwgdmFsdWUsIG5hbWVfb3B0
KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnROb3ROdWxsID0gZnVuY3Rpb24gYXNzZXJ0Tm90
TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgPT09IG51bGwpIHsKKyAgICAg
IGZhaWwoIm5vdCBudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVu
Y3Rpb24gZXhlY3V0ZUNvZGUoY29kZSkgeworICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ2Z1bmN0
aW9uJykgIHJldHVybiBjb2RlKCk7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJykg
cmV0dXJuIGV2YWwoY29kZSk7CisgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAnR2l2ZW4g
Y29kZSBpcyBuZWl0aGVyIGZ1bmN0aW9uIG5vciBzdHJpbmcsIGJ1dCAnICsgKHR5cGVvZiBjb2Rl
KSArCisgICAgICAgICc6IDwnICsgcHJldHR5UHJpbnRlZChjb2RlKSArICc+Jyk7CisgIH0KKwor
ICBmdW5jdGlvbiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAg
aWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIGFzc2VydEVxdWFscygnZnVuY3Rp
b24nLCB0eXBlb2YgdHlwZV9vcHQpOworICAgICAgYXNzZXJ0SW5zdGFuY2VvZihlLCB0eXBlX29w
dCk7CisgICAgfQorICAgIC8vIGlnbm9yZSBjYXVzZV9vcHQgYmVjYXVzZSBvdXIgZXJyb3IgbWVz
c2FnZXMgYXJlIG5vdCB0aGUgc2FtZSBhcyBWOCdzCisgICAgcmV0dXJuOworICAgIGlmIChSZWdF
eHAgIT09IHVuZGVmaW5lZCAmJiBjYXVzZV9vcHQgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAg
IGFzc2VydE1hdGNoZXMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7Cisg
ICAgfSBlbHNlIGlmIChjYXVzZV9vcHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1
YWxzKGNhdXNlX29wdCwgZS5tZXNzYWdlLCAnRXJyb3IgbWVzc2FnZScpOworICAgIH0KKyAgfQor
CisgIGFzc2VydFRocm93cyA9IGZ1bmN0aW9uIGFzc2VydFRocm93cyhjb2RlLCB0eXBlX29wdCwg
Y2F1c2Vfb3B0KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVfb3B0ID09
PSB1bmRlZmluZWQpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgnaW52YWxpZCB1c2Ugb2YgYXNz
ZXJ0VGhyb3dzLCB1bmtub3duIHR5cGVfb3B0IGdpdmVuJyk7CisgICAgfQorICAgIGlmICh0eXBl
X29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0eXBlX29wdCAhPT0gJ2Z1bmN0aW9uJykgewor
ICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdpbnZhbGlkIHVzZSBvZiBhc3NlcnRU
aHJvd3MsIG1heWJlIHlvdSB3YW50IGFzc2VydFRocm93c0VxdWFscycpOworICAgIH0KKyAgICB0
cnkgeworICAgICAgZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
Y2hlY2tFeGNlcHRpb24oZSwgdHlwZV9vcHQsIGNhdXNlX29wdCk7CisgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGxldCBtc2cgPSAnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24nOworICAgIGlmICh0
eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVfb3B0Lm5hbWUgIT09IHVuZGVmaW5lZCkKKyAg
ICAgIG1zZyArPSAnLCBleHBlY3RlZCAnICsgdHlwZV9vcHQubmFtZTsKKyAgICBmYWlsV2l0aE1l
c3NhZ2UobXNnKTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NFcXVhbHMgPSBmdW5jdGlvbiBhc3Nl
cnRUaHJvd3NFcXVhbHMoZnVuLCB2YWwpIHsKKyAgICB0cnkgeworICAgICAgZnVuKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgYXNzZXJ0U2FtZSh2YWwsIGUpOworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBmYWlsV2l0aE1lc3NhZ2UoJ0RpZCBub3QgdGhyb3cgZXhjZXB0aW9uLCBleHBl
Y3RlZCAnICsgcHJldHR5UHJpbnRlZCh2YWwpKTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NBc3lu
YyA9IGZ1bmN0aW9uIGFzc2VydFRocm93c0FzeW5jKHByb21pc2UsIHR5cGVfb3B0LCBjYXVzZV9v
cHQpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVm
aW5lZCkgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJv
d3MsIHVua25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9
PSB1bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBm
YWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywg
bWF5YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIGxldCBtc2cg
PSAnUHJvbWlzZSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9
PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9
ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIHJldHVybiBhc3NlcnRQcm9taXNl
UmVzdWx0KAorICAgICAgICBwcm9taXNlLAorICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0
aHJvdyB0aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAv
LyBjaGFpbi4KKyAgICAgICAgcmVzID0+IHNldFRpbWVvdXQoXyA9PiBmYWlsKCc8dGhyb3c+Jywg
cmVzLCBtc2cpLCAwKSwKKyAgICAgICAgZSA9PiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwg
Y2F1c2Vfb3B0KSk7CisgIH07CisKKyAgYXNzZXJ0SW5zdGFuY2VvZiA9IGZ1bmN0aW9uIGFzc2Vy
dEluc3RhbmNlb2Yob2JqLCB0eXBlKSB7CisgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgdHlwZSkp
IHsKKyAgICAgIHZhciBhY3R1YWxUeXBlTmFtZSA9IG51bGw7CisgICAgICB2YXIgYWN0dWFsQ29u
c3RydWN0b3IgPSBvYmogJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikuY29uc3RydWN0b3I7
CisgICAgICBpZiAodHlwZW9mIGFjdHVhbENvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7Cisg
ICAgICAgIGFjdHVhbFR5cGVOYW1lID0gYWN0dWFsQ29uc3RydWN0b3IubmFtZSB8fCBTdHJpbmco
YWN0dWFsQ29uc3RydWN0b3IpOworICAgICAgfQorICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAg
ICAgICAgICdPYmplY3QgPCcgKyBwcmV0dHlQcmludGVkKG9iaikgKyAnPiBpcyBub3QgYW4gaW5z
dGFuY2Ugb2YgPCcgKworICAgICAgICAgICh0eXBlLm5hbWUgfHwgdHlwZSkgKyAnPicgKworICAg
ICAgICAgIChhY3R1YWxUeXBlTmFtZSA/ICcgYnV0IG9mIDwnICsgYWN0dWFsVHlwZU5hbWUgKyAn
PicgOiAnJykpOworICAgIH0KKyAgfTsKKworICBhc3NlcnREb2VzTm90VGhyb3cgPSBmdW5jdGlv
biBhc3NlcnREb2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAgICB0cnkgeworICAgICAg
ZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKGUgaW5zdGFu
Y2VvZiBNanNVbml0QXNzZXJ0aW9uRXJyb3IpIHRocm93IGU7CisgICAgICBmYWlsV2l0aE1lc3Nh
Z2UoInRocmV3IGFuIGV4Y2VwdGlvbjogIiArIChlLm1lc3NhZ2UgfHwgZSkpOworICAgIH0KKyAg
fTsKKworICBhc3NlcnRVbnJlYWNoYWJsZSA9IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKG5h
bWVfb3B0KSB7CisgICAgLy8gRml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVu
bmVyLgorICAgIHZhciBtZXNzYWdlID0gIkZhaWwiICsgInVyZTogdW5yZWFjaGFibGUiOworICAg
IGlmIChuYW1lX29wdCkgeworICAgICAgbWVzc2FnZSArPSAiIC0gIiArIG5hbWVfb3B0OworICAg
IH0KKyAgICBmYWlsV2l0aE1lc3NhZ2UobWVzc2FnZSk7CisgIH07CisKKyAgYXNzZXJ0Q29udGFp
bnMgPSBmdW5jdGlvbihzdWIsIHZhbHVlLCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PSBu
dWxsID8gKHN1YiAhPSBudWxsKSA6IHZhbHVlLmluZGV4T2Yoc3ViKSA9PSAtMSkgeworICAgICAg
ZmFpbCgiY29udGFpbnMgJyIgKyBTdHJpbmcoc3ViKSArICInIiwgdmFsdWUsIG5hbWVfb3B0KTsK
KyAgICB9CisgIH07CisKKyAgYXNzZXJ0TWF0Y2hlcyA9IGZ1bmN0aW9uKHJlZ2V4cCwgc3RyLCBu
YW1lX29wdCkgeworICAgIGlmICghKHJlZ2V4cCBpbnN0YW5jZW9mIFJlZ0V4cCkpIHsKKyAgICAg
IHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXhwKTsKKyAgICB9CisgICAgaWYgKCFzdHIubWF0Y2go
cmVnZXhwKSkgeworICAgICAgZmFpbCgic2hvdWxkIG1hdGNoICciICsgcmVnZXhwICsgIiciLCBz
dHIsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gY29uY2F0ZW5hdGVFcnJv
cnMoc3RhY2ssIGV4Y2VwdGlvbikgeworICAgIC8vIElmIHRoZSBleGNlcHRpb24gZG9lcyBub3Qg
Y29udGFpbiBhIHN0YWNrIHRyYWNlLCB3cmFwIGl0IGluIGEgbmV3IEVycm9yLgorICAgIGlmICgh
ZXhjZXB0aW9uLnN0YWNrKSBleGNlcHRpb24gPSBuZXcgRXJyb3IoZXhjZXB0aW9uKTsKKworICAg
IC8vIElmIHRoZSBleGNlcHRpb24gYWxyZWFkeSBwcm92aWRlcyBhIHNwZWNpYWwgc3RhY2sgdHJh
Y2UsIHdlIGRvIG5vdCBtb2RpZnkKKyAgICAvLyBpdC4KKyAgICBpZiAodHlwZW9mIGV4Y2VwdGlv
bi5zdGFjayAhPT0gJ3N0cmluZycpIHsKKyAgICAgIHJldHVybiBleGNlcHRpb247CisgICAgfQor
ICAgIGV4Y2VwdGlvbi5zdGFjayA9IHN0YWNrICsgJ1xuXG4nICsgZXhjZXB0aW9uLnN0YWNrOwor
ICAgIHJldHVybiBleGNlcHRpb247CisgIH0KKworICBhc3NlcnRQcm9taXNlUmVzdWx0ID0gZnVu
Y3Rpb24ocHJvbWlzZSwgc3VjY2VzcywgZmFpbCkgeworICAgIGlmIChzdWNjZXNzICE9PSB1bmRl
ZmluZWQpIGFzc2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBlb2Ygc3VjY2Vzcyk7CisgICAgaWYg
KGZhaWwgIT09IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBmYWls
KTsKKyAgICBhc3NlcnRJbnN0YW5jZW9mKHByb21pc2UsIFByb21pc2UpOworICAgIGNvbnN0IHN0
YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjazsKKworICAgIHZhciB0ZXN0X3Byb21pc2UgPSBwcm9t
aXNlLnRoZW4oCisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGlmICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICBpZiAoc3VjY2VzcyAhPT0gdW5kZWZpbmVkKSBzdWNjZXNzKHJlc3VsdCk7
CisgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQg
dG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAg
ICAgICAgIC8vIGNoYWluLgorICAgICAgICAgICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAg
ICAgICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICByZXN1bHQgPT4geworICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoLS1wcm9taXNlVGVzdENvdW50ID09IDApIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKGZhaWwgPT09IHVuZGVmaW5lZCkg
dGhyb3cgcmVzdWx0OworICAgICAgICAgICAgZmFpbChyZXN1bHQpOworICAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJv
ciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgICAgICAvLyBjaGFpbi4K
KyAgICAgICAgICAgIHNldFRpbWVvdXQoXyA9PiB7CisgICAgICAgICAgICAgIHRocm93IGNvbmNh
dGVuYXRlRXJyb3JzKHN0YWNrLCBlKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0K
KyAgICAgICAgfSk7CisKKyAgICBpZiAoIXByb21pc2VUZXN0Q2hhaW4pIHByb21pc2VUZXN0Q2hh
aW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAvLyB3YWl0VW50aWxEb25lIGlzIGlkZW1wb3Rl
bnQuCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgKytwcm9taXNlVGVzdENv
dW50OworICAgIHJldHVybiBwcm9taXNlVGVzdENoYWluLnRoZW4odGVzdF9wcm9taXNlKTsKKyAg
fTsKKworICB2YXIgT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9IHVuZGVmaW5lZDsKKworICB2YXIg
T3B0aW1pemF0aW9uU3RhdHVzID0gZnVuY3Rpb24oZnVuLCBzeW5jX29wdCkgeworICAgIGlmIChP
cHRpbWl6YXRpb25TdGF0dXNJbXBsID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHRyeSB7CisgICAg
ICAgIE9wdGltaXphdGlvblN0YXR1c0ltcGwgPSBuZXcgRnVuY3Rpb24oCisgICAgICAgICAgICAi
ZnVuIiwgInN5bmMiLCAicmV0dXJuICVHZXRPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jKTsi
KTsKKyAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJuYXRpdmVz
IHN5bnRheCBub3QgYWxsb3dlZCIpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gT3B0aW1p
emF0aW9uU3RhdHVzSW1wbChmdW4sIHN5bmNfb3B0KTsKKyAgfQorCisgIGFzc2VydFVub3B0aW1p
emVkID0gZnVuY3Rpb24gYXNzZXJ0VW5vcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBu
YW1lX29wdCwgc2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29w
dCA9PT0gdW5kZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0
aW1pemF0aW9uU3RhdHVzKGZ1biwgc3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFz
c2VydFVub3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1hbHdheXMtb3B0CisgICAg
Ly8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11c3QgYWRkIC0tbm8tYWx3YXlzLW9w
dCB0byBmbGFncyBjb21tZW50LgorICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRp
bWl6YXRpb25TdGF0dXMua0Fsd2F5c09wdGltaXplKSAhPT0gMCwKKyAgICAgICAgICAgICAgICAi
dGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1hbHdheXMtb3B0Iik7CisgICAgYXNzZXJ0
VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0g
MCwgbmFtZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAg
KG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkg
eworICAgICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQg
aXQncyBubyBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0
aW9uIGlzIHN0aWxsIGRlb3B0aW1pemVkLCBzbyBrZWVwIHJ1bm5pbmcgdGhlIHRlc3QKKyAgICAg
IC8vIHRvIHN0cmVzcyB0ZXN0IHRoZSBkZW9wdGltaXplci4KKyAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rT3B0
aW1pemVkKSAhPT0gMCwgbmFtZV9vcHQpOworICB9CisKKyAgYXNzZXJ0T3B0aW1pemVkID0gZnVu
Y3Rpb24gYXNzZXJ0T3B0aW1pemVkKAorICAgICAgZnVuLCBzeW5jX29wdCwgbmFtZV9vcHQsIHNr
aXBfaWZfbWF5YmVfZGVvcHRlZCA9IHRydWUpIHsKKyAgICBpZiAoc3luY19vcHQgPT09IHVuZGVm
aW5lZCkgc3luY19vcHQgPSAiIjsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0
YXR1cyhmdW4sIHN5bmNfb3B0KTsKKyAgICAvLyBUZXN0cyB0aGF0IHVzZSBhc3NlcnRPcHRpbWl6
ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBmb3IgTGl0ZSBtb2RlIHdoZXJlCisgICAgLy8gb3B0aW1p
emF0aW9uIGlzIGFsd2F5cyBkaXNhYmxlZCwgZXhwbGljaXRseSBleGl0IHRoZSB0ZXN0IHdpdGgg
YSB3YXJuaW5nLgorICAgIGlmIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0xp
dGVNb2RlKSB7CisgICAgICBwcmludCgiV2FybmluZzogVGVzdCB1c2VzIGFzc2VydE9wdGltaXpl
ZCBpbiBMaXRlIG1vZGUsIHNraXBwaW5nIHRlc3QuIik7CisgICAgICB0ZXN0UnVubmVyLnF1aXQo
MCk7CisgICAgfQorICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5v
dCBtYWtlIHNlbnNlIGlmIC0tbm8tb3B0CisgICAgLy8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNo
IHRlc3RzIG11c3QgYWRkIC0tb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2Uo
KG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDAs
CisgICAgICAgICAgICAgICAgInRlc3QgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIC0tbm8tb3B0
Iik7CisgICAgYXNzZXJ0VHJ1ZSgKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlv
blN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgYSBmdW5jdGlv
bjogJyArIG5hbWVfb3B0KTsKKyAgICBpZiAoc2tpcF9pZl9tYXliZV9kZW9wdGVkICYmCisgICAg
ICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua01heWJlRGVvcHRlZCkgIT09
IDApIHsKKyAgICAgIC8vIFdoZW4gLS1kZW9wdC1ldmVyeS1uLXRpbWVzIGZsYWcgaXMgc3BlY2lm
aWVkIGl0J3Mgbm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICAgIC8vIHRoYXQgcGFydGljdWxhciBm
dW5jdGlvbiBpcyBzdGlsbCBvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAg
ICAgLy8gdG8gc3RyZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBhc3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9u
U3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwLAorICAgICAgICAnc2hvdWxkIGJlIG9wdGltaXplZDog
JyArIG5hbWVfb3B0KTsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlID0gZnVuY3Rp
b24gaXNOZXZlck9wdGltaXplTGl0ZU1vZGUoKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRp
bWl6YXRpb25TdGF0dXModW5kZWZpbmVkLCAiIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYg
VjhPcHRpbWl6YXRpb25TdGF0dXMua0xpdGVNb2RlKSAhPT0gMDsKKyAgfQorCisgIGlzTmV2ZXJP
cHRpbWl6ZSA9IGZ1bmN0aW9uIGlzTmV2ZXJPcHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1
cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDA7CisgIH0K
KworICBpc0Fsd2F5c09wdGltaXplID0gZnVuY3Rpb24gaXNBbHdheXNPcHRpbWl6ZSgpIHsKKyAg
ICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAg
ICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0aW1p
emUpICE9PSAwOworICB9CisKKyAgaXNJbnRlcnByZXRlZCA9IGZ1bmN0aW9uIGlzSW50ZXJwcmV0
ZWQoZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAi
Iik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJ
c0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAg
IHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpID09
PSAwICYmCisgICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lu
dGVycHJldGVkKSAhPT0gMDsKKyAgfQorCisgIGlzT3B0aW1pemVkID0gZnVuY3Rpb24gaXNPcHRp
bWl6ZWQoZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVu
LCAiIik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVz
LmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOwor
ICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQp
ICE9PSAwOworICB9CisKKyAgaXNUdXJib0Zhbm5lZCA9IGZ1bmN0aW9uIGlzVHVyYm9GYW5uZWQo
ZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7
CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1
bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJl
dHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAw
ICYmCisgICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua1R1cmJv
RmFubmVkKSAhPT0gMDsKKyAgfQorCisgIC8vIEN1c3RvbSBWOC1zcGVjaWZpYyBzdGFjayB0cmFj
ZSBmb3JtYXR0ZXIgdGhhdCBpcyB0ZW1wb3JhcmlseSBpbnN0YWxsZWQgb24KKyAgLy8gdGhlIEVy
cm9yIG9iamVjdC4KKyAgTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlID0g
ZnVuY3Rpb24oZXJyb3IsIHN0YWNrKSB7CisgICAgLy8gVHJpZ2dlciBkZWZhdWx0IGZvcm1hdHRp
bmcgd2l0aCByZWN1cnNpb24uCisgICAgdHJ5IHsKKyAgICAgIC8vIEZpbHRlci1vdXQgYWxsIGJ1
dCB0aGUgZmlyc3QgbWpzdW5pdCBmcmFtZS4KKyAgICAgIGxldCBmaWx0ZXJlZFN0YWNrID0gW107
CisgICAgICBsZXQgaW5NanN1bml0ID0gdHJ1ZTsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
c3RhY2subGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IGZyYW1lID0gc3RhY2tbaV07CisgICAg
ICAgIGlmIChpbk1qc3VuaXQpIHsKKyAgICAgICAgICBsZXQgZmlsZSA9IGZyYW1lLmdldEZpbGVO
YW1lKCk7CisgICAgICAgICAgaWYgKCFmaWxlIHx8ICFmaWxlLmVuZHNXaXRoKCJtanN1bml0Lmpz
IikpIHsKKyAgICAgICAgICAgIGluTWpzdW5pdCA9IGZhbHNlOworICAgICAgICAgICAgLy8gUHVz
aCB0aGUgbGFzdCBtanN1bml0IGZyYW1lLCB0eXBpY2FsbHkgY29udGFpbmluZyB0aGUgYXNzZXJ0
aW9uCisgICAgICAgICAgICAvLyBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmIChpID4gMCkgQXJy
YXlQcm90b3R5cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgc3RhY2tbaS0xXSk7CisgICAgICAg
ICAgICBBcnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpXSk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEFycmF5
UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIGZyYW1lKTsKKyAgICAgIH0KKyAgICAg
IHN0YWNrID0gZmlsdGVyZWRTdGFjazsKKworICAgICAgLy8gSW5mZXIgZnVuY3Rpb24gbmFtZXMg
YW5kIGNhbGN1bGF0ZSB7bWF4X25hbWVfbGVuZ3RofQorICAgICAgbGV0IG1heF9uYW1lX2xlbmd0
aCA9IDA7CisgICAgICBBcnJheVByb3RvdHlwZUZvckVhY2guY2FsbChzdGFjaywgZWFjaCA9PiB7
CisgICAgICAgIGxldCBuYW1lID0gZWFjaC5nZXRGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgaWYg
KG5hbWUgPT0gbnVsbCkgbmFtZSA9ICIiOworICAgICAgICBpZiAoZWFjaC5pc0V2YWwoKSkgewor
ICAgICAgICAgIG5hbWUgPSBuYW1lOworICAgICAgICB9IGVsc2UgaWYgKGVhY2guaXNDb25zdHJ1
Y3RvcigpKSB7CisgICAgICAgICAgbmFtZSA9ICJuZXcgIiArIG5hbWU7CisgICAgICAgIH0gZWxz
ZSBpZiAoZWFjaC5pc05hdGl2ZSgpKSB7CisgICAgICAgICAgbmFtZSA9ICJuYXRpdmUgIiArIG5h
bWU7CisgICAgICAgIH0gZWxzZSBpZiAoIWVhY2guaXNUb3BsZXZlbCgpKSB7CisgICAgICAgICAg
bmFtZSA9IGVhY2guZ2V0VHlwZU5hbWUoKSArICIuIiArIG5hbWU7CisgICAgICAgIH0KKyAgICAg
ICAgZWFjaC5uYW1lID0gbmFtZTsKKyAgICAgICAgbWF4X25hbWVfbGVuZ3RoID0gTWF0aC5tYXgo
bmFtZS5sZW5ndGgsIG1heF9uYW1lX2xlbmd0aCkKKyAgICAgIH0pOworCisgICAgICAvLyBGb3Jt
YXQgc3RhY2sgZnJhbWVzLgorICAgICAgc3RhY2sgPSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKHN0
YWNrLCBlYWNoID0+IHsKKyAgICAgICAgbGV0IGZyYW1lID0gIiAgICBhdCAiICsgZWFjaC5uYW1l
LnBhZEVuZChtYXhfbmFtZV9sZW5ndGgpOworICAgICAgICBsZXQgZmlsZU5hbWUgPSBlYWNoLmdl
dEZpbGVOYW1lKCk7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSByZXR1cm4gZnJhbWUgKyAi
ICIgKyBlYWNoLmdldEV2YWxPcmlnaW4oKTsKKyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGZpbGVO
YW1lID8gZmlsZU5hbWUgOiAiIik7CisgICAgICAgIGxldCBsaW5lPSBlYWNoLmdldExpbmVOdW1i
ZXIoKTsKKyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGxpbmUgPyBsaW5lIDogIiIpOworICAgICAg
ICBsZXQgY29sdW1uID0gZWFjaC5nZXRDb2x1bW5OdW1iZXIoKTsKKyAgICAgICAgZnJhbWUgKz0g
KGNvbHVtbiA/ICI6IiArIGNvbHVtbiA6ICIiKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lOworICAg
ICAgfSk7CisgICAgICByZXR1cm4gIiIgKyBlcnJvci5tZXNzYWdlICsgIlxuIiArIEFycmF5UHJv
dG90eXBlSm9pbi5jYWxsKHN0YWNrLCAiXG4iKTsKKyAgICB9IGNhdGNoIChlKSB7fTsKKyAgICBy
ZXR1cm4gZXJyb3Iuc3RhY2s7CisgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
Y2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODc1MDAxODU3NTlj
NzJlNmFjYjMyZGIyNjZjNjc1ZWEzNDVlNTQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpAQCAtMCwwICsxLDM4IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAy
MDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1o
YXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCits
b2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworbGV0
IFJlYWxtID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChyLCBzKSA9PiAkLmV2YWxT
Y3JpcHQuY2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVhdGUoKTsKKworbGV0IGNs
ZWFudXAgPSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsgZnVuY3Rpb24gY2xlYW51
cCgpIHsgc3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRoaXM7IH0gY2xlYW51cDsiKTsKK2xldCByZWFs
bV9nbG9iYWxfdGhpcyA9IFJlYWxtLmV2YWwociwgImdsb2JhbFRoaXMiKTsKKworbGV0IGZnID0g
bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0
IGFuZCBhIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVj
dCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJs
eSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVy
KG9iamVjdCk7CisgICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNs
ZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5j
ID0gZnVuY3Rpb24oKSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3Rv
cmVkX2dsb2JhbDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRo
aXMpOworICBhc3NlcnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOwor
fQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZDRkMDI0N2UyNzEwZGE0ODVjOTI1NzJhYmE5YzI3NmNkZWYzNWFkCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFs
bS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9
MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5j
cmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNh
bGxlciByZWxhdGl2ZSIpOworbGV0IFJlYWxtID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2
YWw6IChyLCBzKSA9PiAkLmV2YWxTY3JpcHQuY2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFs
bS5jcmVhdGUoKTsKKworbGV0IGNsZWFudXAgPSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2ds
b2JhbDsgbGV0IGNsZWFudXAgPSBuZXcgUHJveHkoZnVuY3Rpb24oKSB7IHN0b3JlZF9nbG9iYWwg
PSBnbG9iYWxUaGlzO30sIHt9KTsgY2xlYW51cCIpOworbGV0IHJlYWxtX2dsb2JhbF90aGlzID0g
UmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9u
UmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0
IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUg
aW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhm
dW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAg
ICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdz
Iik7CisgICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAg
ZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVu
Y3Rpb24oKSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2ds
b2JhbDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOwor
ICBhc3NlcnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitz
ZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92
OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmlu
YWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTYxNmE1MDIxYWNhNzU1
MWM4MTE5ZWI2MWVmZTk0N2I1MTJjM2MxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpAQCAtMCwwICsxLDE1MiBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAx
OCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFy
bW9ueS13ZWFrLXJlZnMKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxs
ZXIgcmVsYXRpdmUiKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdp
c3RyeSgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsK
KyAgYXNzZXJ0RXF1YWxzKGZnLnRvU3RyaW5nKCksICJbb2JqZWN0IEZpbmFsaXphdGlvblJlZ2lz
dHJ5XSIpOworICBhc3NlcnROb3RTYW1lKGZnLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7
CisgIGFzc2VydFNhbWUoZmcuX19wcm90b19fLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7
Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JD
YWxsQXNGdW5jdGlvbigpIHsKKyAgbGV0IGNhdWdodCA9IGZhbHNlOworICBsZXQgbWVzc2FnZSA9
ICIiOworICB0cnkgeworICAgIGxldCBmID0gRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30p
OworICB9IGNhdGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVnaHQg
PSB0cnVlOworICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQorfSko
KTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeUNsZWFudXBO
b3RDYWxsYWJsZSgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNs
ZWFudXAgbXVzdCBiZSBjYWxsYWJsZSI7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9
IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBh
c3NlcnRUaHJvd3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoMSk7
IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9
IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShudWxsKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsK
K30pKCk7CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRo
Q2FsbGFibGVQcm94eUFzQ2xlYW51cCgpIHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9i
aiA9ICgpID0+IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAg
bGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsKK30pKCk7CisKKyhmdW5j
dGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoTm9uQ2FsbGFibGVQcm94
eUFzQ2xlYW51cCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNs
ZWFudXAgbXVzdCBiZSBjYWxsYWJsZSI7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmog
PSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGFzc2VydFRo
cm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShwcm94eSk7IH0s
IFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0
aE5vbk9iamVjdFRhcmdldCgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KCgpID0+IHt9KTsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90
eXBlLnJlZ2lzdGVyOiB0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiOworICBhc3NlcnRUaHJvd3Mo
KCkgPT4gZmcucmVnaXN0ZXIoMSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cisg
IGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihmYWxzZSwgImhvbGRpbmdzIiksIFR5cGVF
cnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcigiZm9vIiwg
ImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBm
Zy5yZWdpc3RlcihTeW1ib2woKSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cisg
IGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihudWxsLCAiaG9sZGluZ3MiKSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKHVuZGVmaW5l
ZCwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24g
VGVzdFJlZ2lzdGVyV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2Jq
ID0ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcg
PSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBmZy5yZWdpc3Rlcihwcm94
eSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1l
VmFsdWUoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7
CisgIGxldCBvYmogPSB7YTogMX07CisgIC8vIFNhbWVWYWx1ZSh0YXJnZXQsIGhvbGRpbmdzKSBu
b3Qgb2sKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKG9iaiwgb2JqKSwgVHlwZUVy
cm9yLAorICAgICAgICAgICAgICAgIkZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdp
c3RlcjogdGFyZ2V0IGFuZCBob2xkaW5ncyBtdXN0IG5vdCBiZSBzYW1lIik7CisgIGxldCBob2xk
aW5ncyA9IHthOiAxfTsKKyAgZmcucmVnaXN0ZXIob2JqLCBob2xkaW5ncyk7Cit9KSgpOworCiso
ZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBh
c3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVy
LmNhbGwoe30sIHt9LCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yKTsKKyAgLy8gRG9lcyBub3QgdGhy
b3c6CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIEZp
bmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKGZnLCB7fSwgImhvbGRp
bmdzIik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRXhpc3RlbnRL
ZXkoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7Cisg
IGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3Rlcih7ImsiOiAid2hhdGV2ZXIifSk7CisgIGFzc2Vy
dEZhbHNlKHN1Y2Nlc3MpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5v
bkZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0
aW9uUmVnaXN0cnkucHJvdG90eXBlLnVucmVnaXN0ZXIuY2FsbCh7fSwge30pLAorICAgICAgICAg
ICAgICAgVHlwZUVycm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhO
b25PYmplY3RVbnJlZ2lzdGVyVG9rZW4oKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25S
ZWdpc3RyeSgoKSA9PiB7fSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKDEp
LCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihCaWdJbnQo
MSkpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcignb25l
JyksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKFN5bWJv
bCgpKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodHJ1
ZSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKGZhbHNl
KSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodW5kZWZp
bmVkKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIobnVs
bCksIFR5cGVFcnJvcik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3Rv
cigpIHsKKyAgbGV0IHdyID0gbmV3IFdlYWtSZWYoe30pOworICBhc3NlcnRFcXVhbHMod3IudG9T
dHJpbmcoKSwgIltvYmplY3QgV2Vha1JlZl0iKTsKKyAgYXNzZXJ0Tm90U2FtZSh3ci5fX3Byb3Rv
X18sIE9iamVjdC5wcm90b3R5cGUpOworCisgIGxldCBkZXJlZl9kZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih3ci5fX3Byb3RvX18sICJkZXJlZiIpOworICBhc3NlcnRFcXVh
bHModHJ1ZSwgZGVyZWZfZGVzYy5jb25maWd1cmFibGUpOworICBhc3NlcnRFcXVhbHMoZmFsc2Us
IGRlcmVmX2Rlc2MuZW51bWVyYWJsZSk7CisgIGFzc2VydEVxdWFscygiZnVuY3Rpb24iLCB0eXBl
b2YgZGVyZWZfZGVzYy52YWx1ZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25z
dHJ1Y3RvcldpdGhOb25PYmplY3QoKSB7CisgIGxldCBtZXNzYWdlID0gIldlYWtSZWY6IHRhcmdl
dCBtdXN0IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigp
LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYo
MSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1Jl
ZihmYWxzZSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcg
V2Vha1JlZigiZm9vIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9
PiBuZXcgV2Vha1JlZihTeW1ib2woKSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRo
cm93cygoKSA9PiBuZXcgV2Vha1JlZihudWxsKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNz
ZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKHVuZGVmaW5lZCksIFR5cGVFcnJvciwgbWVzc2Fn
ZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0
aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRy
eSB7CisgICAgbGV0IGYgPSBXZWFrUmVmKHt9KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIG1lc3Nh
Z2UgPSBlLm1lc3NhZ2U7CisgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgfSBmaW5hbGx5IHsKKyAgICBh
c3NlcnRUcnVlKGNhdWdodCk7CisgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZldp
dGhQcm94eSgpIHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQg
cHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IHdyID0gbmV3IFdlYWtSZWYo
cHJveHkpOworfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlv
bnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9u
cmVnaXN0cnktYW5kLXdlYWtyZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkYThhMGM5ZmVmYzlkMWRlMjY5
NWIyM2Q1MjAxNDI4ZmIyNmIyMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4
LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTgg
dGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1v
bnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQo
Ii4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBj
bGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykg
eworICBsZXQgaG9sZGluZ3NfbGlzdCA9IFtdOworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGlu
Z3MpOworICBhc3NlcnRFcXVhbHMoMSwgaG9sZGluZ3NfbGlzdC5sZW5ndGgpOworICBhc3NlcnRF
cXVhbHMoImhvbGRpbmdzIiwgaG9sZGluZ3NfbGlzdFswXSk7CisgIGNsZWFudXBfY2FsbGVkID0g
dHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOwor
bGV0IHdlYWtfcmVmcyA9IFtdOworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvID0ge307CisgICAgICAgIHdlYWtfcmVmcy5w
dXNoKG5ldyBXZWFrUmVmKG8pKTsKKyAgICAgICAgZmcucmVnaXN0ZXIobywgImhvbGRpbmdzIik7
CisgICAgfQorfSkoKTsKKworLy8gU2luY2UgdGhlIFdlYWtSZWYgd2FzIGNyZWF0ZWQgZHVyaW5n
IHRoaXMgdHVybiwgaXQgaXMgbm90IGNsZWFyZWQgYnkgR0MuIFRoZQorLy8gcG9pbnRlciBpbnNp
ZGUgdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGlzIG5vdCBjbGVhcmVkIGVpdGhlciwgc2luY2Ug
dGhlIFdlYWtSZWYKKy8vIGtlZXBzIHRoZSB0YXJnZXQgb2JqZWN0IGFsaXZlLgorZ2MoKTsKKyhm
dW5jdGlvbigpIHsKKyAgICB3ZWFrX3JlZnMuZm9yRWFjaCgod2Vha19yZWYpID0+IGFzc2VydEVx
dWFscygib2JqZWN0IiwgdHlwZW9mKHdlYWtfcmVmLmRlcmVmKCkpKSk7Cit9KSgpOworCisvLyBU
cmlnZ2VyIGdjIGluIG5leHQgdGFzaworc2V0VGltZW91dCgoKSA9PiB7CisgICAgZ2MoKTsKKwor
ICAgIC8vIENoZWNrIHRoYXQgY2xlYW51cCBjYWxsYmFjayB3YXMgY2FsbGVkIGluIGEgZm9sbG93
IHVwIHRhc2sKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShjbGVh
bnVwX2NhbGxlZCk7CisgICAgICAgIGFzc2VydFRydWUod2Vha19yZWZzLnNvbWUoKHdlYWtfcmVm
KSA9PiB3ZWFrX3JlZi5kZXJlZigpID09PSBudWxsKSk7CisgICAgfSwgMCk7Cit9LCAwKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhv
bGRpbmdzLWFsaXZlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
a2VlcHMtaG9sZGluZ3MtYWxpdmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAyYzRiYjhlZTg0ZTAxMGI3NGQ2
ZGViMzVhMGNmYWNmMTZkNDkzZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4
LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzCkBAIC0wLDAgKzEs
NDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJp
Z2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdz
OiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CisKK2xldCBjbGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0IGhvbGRpbmdzX2xpc3QgPSBbXTsK
K2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RmFsc2UoY2xlYW51
cF9jYWxsZWQpOworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOworICBjbGVhbnVwX2Nh
bGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVh
bnVwKTsKK2xldCBvMSA9IHt9OworbGV0IGhvbGRpbmdzID0geydhJzogJ3RoaXMgaXMgdGhlIGhv
bGRpbmdzIG9iamVjdCd9OworCisvLyBJZ25pdGlvbiBob2xkcyByZWZlcmVuY2VzIHRvIG9iamVj
dHMgaW4gdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlc2Ugd2lsbCBiZQorLy8gcmVsZWFzZWQgd2hl
biB0aGUgZnVuY3Rpb24gZXhpdHMuIFNvIG9ubHkgYWNjZXNzIG8gaW5zaWRlIGEgZnVuY3Rpb24g
dG8KKy8vIHByZXZlbnQgYW55IHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVn
aXN0ZXJzIHdoZW4gYSBnYyBpcworLy8gdHJpZ2dlcmVkLgorKCgpID0+IHtmZy5yZWdpc3Rlcihv
MSwgaG9sZGluZ3MpO30pKCkKKworZ2MoKTsKK2Fzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsK
KworLy8gRHJvcCB0aGUgbGFzdCByZWZlcmVuY2VzIHRvIG8xLgorKCgpID0+IHtvMSA9IG51bGw7
fSkoKQorCisvLyBEcm9wIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgaG9sZGluZ3MuIFRoZSBG
aW5hbGl6YXRpb25SZWdpc3RyeSBrZWVwcyBpdAorLy8gYWxpdmUsIHNvIHRoZSBjbGVhbnVwIGZ1
bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIG5vcm1hbC4KK2hvbGRpbmdzID0gbnVsbDsKK2djKCk7
Cithc3NlcnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5j
dGlvbigpIHsKKyAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxlZCk7CisgIGFzc2VydEVxdWFscyho
b2xkaW5nc19saXN0Lmxlbmd0aCwgMSk7CisgIGFzc2VydEVxdWFscyhob2xkaW5nc19saXN0WzBd
LmEsICJ0aGlzIGlzIHRoZSBob2xkaW5ncyBvYmplY3QiKTsKK30KKworc2V0VGltZW91dCh0aW1l
b3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9u
cmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11
bHRpcGxlLXRpbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkOGM5NjM5NzVkMmVjZmI4Nzc2NTkyY2RiNTVm
ZTg1MzcyNzljMjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6
YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMKQEAg
LTAsMCArMSw4NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisv
LyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
Ly8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFs
LW1hcmtpbmcKKy8vIEZsYWdzOiAtLW5vLXN0cmVzcy1mbHVzaC1ieXRlY29kZQorCitsb2FkKCIu
L3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xl
YW51cDBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCA9IDA7
CitsZXQgY2xlYW51cDBfMV9ob2xkaW5nc19jb3VudCA9IDA7CisKK2xldCBjbGVhbnVwMV9jYWxs
X2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVh
bnVwMV8xX2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAwID0gZnVuY3Rpb24oaG9s
ZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFdID09ICIwIikKKyAg
ICArK2NsZWFudXAwXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICArK2NsZWFudXAwXzFf
aG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cDBfY2FsbF9jb3VudDsKK30KKworbGV0IGNsZWFu
dXAxID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0
aCAtIDFdID09ICIwIikKKyAgICArK2NsZWFudXAxXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UK
KyAgICArK2NsZWFudXAxXzFfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cDFfY2FsbF9jb3Vu
dDsKK30KKworbGV0IGZnMCA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwMCk7Cits
ZXQgZmcxID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAxKTsKKworLy8gUmVnaXN0
ZXIgMSB3ZWFrIHJlZmVyZW5jZSBmb3IgZWFjaCBGaW5hbGl6YXRpb25SZWdpc3RyeSBhbmQga2ls
bCB0aGUgb2JqZWN0cyB0aGV5IHBvaW50IHRvLgorKGZ1bmN0aW9uKCkgeworICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIC8vIFRoZSBvYmplY3RzIG5lZWQgdG8gYmUgaW5z
aWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0uCisgICAgbGV0
IG9iamVjdHMgPSBbXTsKKyAgICBvYmplY3RzWzBdID0ge307CisgICAgb2JqZWN0c1sxXSA9IHt9
OworCisgICAgZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMCIpOworICAgIGZn
MS5yZWdpc3RlcihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTAiKTsKKworICAgIC8vIERyb3AgdGhl
IHJlZmVyZW5jZXMgdG8gdGhlIG9iamVjdHMuCisgICAgb2JqZWN0cyA9IFtdOworICB9Cit9KSgp
OworCisvLyBXaWxsIHNjaGVkdWxlIGJvdGggZmcwIGFuZCBmZzEgZm9yIGNsZWFudXAuCitnYygp
OworCisvLyBCZWZvcmUgdGhlIGNsZWFudXAgdGFzayBoYXMgYSBjaGFuY2UgdG8gcnVuLCBkbyB0
aGUgc2FtZSB0aGluZyBhZ2Fpbiwgc28gYm90aAorLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBh
cmUgKGFnYWluKSBzY2hlZHVsZWQgZm9yIGNsZWFudXAuIFRoaXMgaGFzIHRvIGJlIGEgSUlGRSBm
dW5jdGlvbgorLy8gKHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlIG9iamVjdHMpIHNv
IHdlIGNhbm5vdCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24KKy8vIGFzIGJlZm9yZS4KKyhmdW5jdGlv
bigpIHsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBsZXQgb2JqZWN0
cyA9IFtdOworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisgICAg
ZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMSIpOworICAgIGZnMS5yZWdpc3Rl
cihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTEiKTsKKyAgICBvYmplY3RzID0gW107CisgIH0KK30p
KCk7CisKK2djKCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0
Tm90RXF1YWxzKDAsIGNsZWFudXAwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwg
Y2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVw
MF8xX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxX2NhbGxf
Y291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudCk7
CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKK30KKwor
Ly8gR2l2ZSB0aGUgY2xlYW51cCB0YXNrIGEgY2hhbmNlIHRvIHJ1bi4KK3NldFRpbWVvdXQodGlt
ZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRp
cnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlw
bGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwNzNhMDMx
ZGIwNmNjZDMwMjZkOGYyNGYxMjdmYWRkYjg5OGFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzCkBA
IC0wLDAgKzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRh
bC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJl
bGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQxID0gMDsKK2xldCBjbGVhbnVwX2Nh
bGxfY291bnQyID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBp
ZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczEiKQorICAgICAgICArK2NsZWFudXBfY2FsbF9jb3Vu
dDE7CisgICAgZWxzZSBpZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczIiKQorICAgICAgICArK2Ns
ZWFudXBfY2FsbF9jb3VudDI7CisgICAgZWxzZQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsK
K30KKworbGV0IGZnMSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBm
ZzIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSB0d28g
b2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiBGaW5hbGl6YXRpb25SZWdpc3RyaWVzLiBUaGUg
b2JqZWN0cyBuZWVkCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJl
bGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QxID0ge307CisgICAgICAgIGZnMS5y
ZWdpc3RlcihvYmplY3QxLCAiaG9sZGluZ3MxIik7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7
fTsKKyAgICAgICAgZmcyLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5nczIiKTsKKyAgICB9Cisg
ICAgLy8gb2JqZWN0MSBhbmQgb2JqZWN0MiBnbyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBU
aGlzIEdDIHdpbGwgZGlzY292ZXIgZGlydHkgV2Vha0NlbGxzIGFuZCBzY2hlZHVsZSBjbGVhbnVw
LgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKK2Fzc2VydEVx
dWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQyKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFu
dXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50MSk7CisgICAgYXNzZXJ0
Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDIpOworfQorCitzZXRUaW1lb3V0KHRpbWVv
dXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2Mt
ZnJvbS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xl
YW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yYTk3ZGFhNGQxZDI2NTI0ODIyMDJkMTFiNWIyY2JjNDVjYjI3
MjEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZy
b20tY2xlYW51cC5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
V2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDIwIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1n
YyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0
LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgcmVl
bnRyYW50X2djID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBnYygpOworICAgIGNhbGxlZCA9
IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShyZWVudHJhbnRf
Z2MpOworCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKQor
ICAgICAgICBmZy5yZWdpc3Rlcih7fSwgNDIpOworfSkoKTsKKworZ2MoKTsKKworc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRUcnVlKGNhbGxlZCk7Cit9LCAwKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1l
bnF1ZXVlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5
LWRpcnR5LWVucXVldWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyNGUyY2QzZWM3NmQ1Yzg5NTFjZDJmYTBh
NTFhODVmZDA4MDk4MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVz
cy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzCkBAIC0wLDAgKzEsMzggQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIw
MjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLXN0
cmVzcy1jb21wYWN0aW9uIC0tZXhwb3NlLWdjCisKKy8vIFRlc3QgdGhhdCB0aGUgZGlydHkgRmlu
YWxpemF0aW9uUmVnaXN0cmllcyB0aGF0IGFyZSBlbnF1ZXVlZCBkdXJpbmcgR0MgaGF2ZQorLy8g
dGhlaXIgc2xvdHMgY29ycmVjdGx5IHJlY29yZGVkIGJ5IHRoZSBHQy4KKworLy8gMSkgQ3JlYXRl
IG1hbnkgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3RzIHNvIHRoYXQgdGhleSBzcGFuIHNl
dmVyYWwgcGFnZXMKKy8vIChwYWdlIHNpemUgaXMgMjU2a2IpLgorbGV0IHJlZ2lzdHJpZXMgPSBb
XTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAyNCAqIDg7IGkrKykgeworICByZWdpc3RyaWVzLnB1
c2gobmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KSk7Cit9CisKKy8vIDIpIEZvcmNl
IHR3byBHQ3MgdG8gZW5zdXJlIHRoYXQgSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVjdHMgYXJl
IHRlbnVyZWQuCitnYygpOworZ2MoKTsKKworLy8gMykgSW4gYSBmdW5jdGlvbjogY3JlYXRlIGEg
ZHVtbXkgdGFyZ2V0IGFuZCByZWdpc3RlciBpdCBpbiBhbGwKKy8vIEpTRmluYWxpemF0b25SZWdp
c3RyeSBvYmplY3RzLgorKGZ1bmN0aW9uKCkgeworICBsZXQgZ2FyYmFnZSA9IHt9OworICByZWdp
c3RyaWVzLmZvckVhY2goKGZyKSA9PiB7CisgICAgZnIucmVnaXN0ZXIoZ2FyYmFnZSwgNDIpOwor
ICB9KTsKKyAgZ2FyYmFnZSA9IG51bGw7Cit9KSgpOworCisvLyA0KSBPdXRzaWRlIHRoZSBmdW5j
dGlvbiB3aGVyZSB0aGUgdGFyZ2V0IGlzIHVucmVhY2hhYmxlOiBmb3JjZSBHQyB0byBjb2xsZWN0
CisvLyB0aGUgb2JqZWN0LgorZ2MoKTsKKworLy8gNSkgRm9yY2UgYW5vdGhlciBHQyB0byB0ZXN0
IHRoYXQgdGhlIHNsb3Qgd2FzIGNvcnJlY3RseSB1cGRhdGVkLgorZ2MoKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM2MGNmZGE3N2YwYWZjYTFi
NWNiOWZkZGFmZWFjMGQ5MDc1MGJiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
djgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2pl
Y3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZz
IC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2Vz
L3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxf
Y291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGFzc2Vy
dEVxdWFscyhob2xkaW5ncywgdW5kZWZpbmVkKTsKKyAgICArK2NsZWFudXBfY2FsbF9jb3VudDsK
K30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBD
cmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0
cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhhdCB3
ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAg
ICBmZy5yZWdpc3RlcihvYmplY3QpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCBy
ZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0IGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fz
c2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUg
Y2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitz
ZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92
OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWFmdGVyLWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ3MmIwZjhiM2JiOGViYTY5MGExNjBk
MTYzOGQzOWU0M2Y0NzJkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVu
cmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVm
cyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNl
cy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxs
X2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0
RXF1YWxzKCJob2xkaW5ncyIsIGhvbGRpbmdzKTsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9
CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkg
PSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdp
c3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8v
IHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVt
IQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJo
b2xkaW5ncyIsIGtleSk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0g
dGhlIHRhcmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1
YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVw
IGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7Cisg
ICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisgICAgbGV0IG9sZF9j
bGVhbnVwX2NhbGxfY291bnQgPSBjbGVhbnVwX2NhbGxfY291bnQ7CisKKyAgICAvLyBVbnJlZ2lz
dGVyIGFuIGFscmVhZHkgY2xlYW5lZC11cCB3ZWFrIHJlZmVyZW5jZS4KKyAgICBsZXQgc3VjY2Vz
cyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgICAvLyBTaW5jZSB3ZSBtYXkgbm90IGNvbGxlY3Qg
ZXZlcnl0aGluZyB3ZSBkb24ndCBrbm93IHdoYXQgc3VjY2VzcyB3aWxsIGJlIHVubGlrZSB2OC4K
KyAgICAvLyBhc3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAgIC8vIEFzc2VydCB0aGF0IGl0IGRp
ZG4ndCBkbyBhbnl0aGluZy4KKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgYXNzZXJ0RXF1YWxzKG9s
ZF9jbGVhbnVwX2NhbGxfY291bnQsIGNsZWFudXBfY2FsbF9jb3VudCk7IH0sIDApOworfQorCitz
ZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92
OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdp
c3Rlci1iZWZvcmUtY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2QxZTNlYzZhM2FlYmZjNzg3NmM3
ZGRhZjdkN2RiOGMxNTNmZWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
dW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVu
Y3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9
IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhp
cyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0
aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lk
ZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rp
b24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAibXkgaG9s
ZGluZ3MiLCBrZXkpOworCisgIC8vIENsZWFyIHRoZSBXZWFrQ2VsbCBiZWZvcmUgdGhlIEdDIGhh
cyBhIGNoYW5jZSB0byBkaXNjb3ZlciBpdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVy
KGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9m
IHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmpl
Y3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFz
c2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgc2luY2Ugd2Ug
Y2FsbGVkIHVucmVnaXN0ZXIuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFz
c2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVv
dXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNh
bGxlZC10d2ljZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4ZWZlODI0YjZjNzRhMDU4Y2IxZDFlYjM4NzFlY2U1YmFmOGJhNzMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10
d2ljZS5qcwpAQCAtMCwwICsxLDQ2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1Jl
ZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5v
aW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwg
ImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBj
bGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9
CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkg
PSB7ImsiOiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdp
c3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8v
IHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVt
IQorCisoZnVuY3Rpb24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2Jq
ZWN0LCAiaG9sZGluZ3MiLCBrZXkpOworCisgIC8vIFVucmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBo
YXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51
bnJlZ2lzdGVyKGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gQ2FsbCB1bnJl
Z2lzdGVyIGFnYWluIChqdXN0IHRvIGFzc2VydCB3ZSBoYW5kbGUgdGhpcyBncmFjZWZ1bGx5KS4K
KyAgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7
CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3
aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNs
ZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9u
IHdvbid0IGJlIGNhbGxlZCwgc2luY2UgdGhlIHdlYWsgcmVmZXJlbmNlCisvLyB3YXMgdW5yZWdp
c3RlcmVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMo
MCwgY2xlYW51cF9jYWxsX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDAp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51
cDIuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYjIxMjI4NjYzYWQyY2VkNTk2OTVhNTNjNWIzYjBlNWY3Y2IwMGJjCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51
cDIuanMKQEAgLTAsMCArMSw0OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZz
PTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2lu
Y3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJj
YWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNhbGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBm
dW5jdGlvbihob2xkaW5ncykgeworICAvLyBTZWUgd2hpY2ggdGFyZ2V0IHdlJ3JlIGNsZWFuaW5n
IHVwIGFuZCB1bnJlZ2lzdGVyIHRoZSBvdGhlciBvbmUuCisgIGlmIChob2xkaW5ncyA9PSAxKSB7
CisgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTIpOworICAgIGFzc2VydFRydWUo
c3VjY2VzcyB8fCBjYWxsZWQpOworICB9IGVsc2UgeworICAgIGFzc2VydFNhbWUoaG9sZGluZ3Ms
IDIpOworICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICBhc3NlcnRU
cnVlKHN1Y2Nlc3MgfHwgY2FsbGVkKTsKKyAgfQorICBjYWxsZWQgPSB0cnVlOworfQorCitsZXQg
ZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsiayI6
ICJmaXJzdCBrZXkifTsKK2xldCBrZXkyID0geyJrIjogInNlY29uZCBrZXkifTsKKy8vIENyZWF0
ZSB0d28gb2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0
cnkuIFRoZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3
ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAg
ICAgZmcucmVnaXN0ZXIob2JqZWN0MSwgMSwga2V5MSk7CisgICAgICAgIGxldCBvYmplY3QyID0g
e307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsIDIsIGtleTIpOworICAgIH0KK30pKCk7
CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRhcmdldCBvYmplY3RzIGFuZCBzY2hlZHVsZSBj
bGVhbnVwLgorZ2MoKTsKK2Fzc2VydEZhbHNlKGNhbGxlZCk7CisKKy8vIEFzc2VydCB0aGF0IHRo
ZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQgYW5kIGNsZWFuZWQgdXAgb25lIGhvbGRpbmdz
IChidXQgbm90IHRoZSBvdGhlciBvbmUpLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkg
eworICAgIGFzc2VydFRydWUoY2FsbGVkKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMs
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xl
YW51cDMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iN2ZhYTdiNmUzYzQzYmYyYjEyODY2ZjI0MGNjNmVhYzE4N2QyMWI5Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xl
YW51cDMuanMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtS
ZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1u
b2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIs
ICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQg
Y2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRp
bmdzKSB7CisgIGFzc2VydEVxdWFscyhob2xkaW5ncywgImhvbGRpbmdzIik7CisKKyAgLy8gVGhl
cmUncyBtb3JlcyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXkgdGhhdCB3ZSBoYXZlbid0CisgIC8v
IGNsZWFuZWQgdXAgeWV0IHNvIHdlIHNob3VsZCBiZSBhYmxlIHRvIHVucmVnaXN0ZXIgdGhlCisg
IC8vIGNhbGxiYWNrIGZvciB0aGF0IG9uZS4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVy
KGtleSk7CisKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICArK2NsZWFudXBfaG9sZGluZ3Nf
Y291bnQ7CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3Rl
ciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUg
aW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQor
bGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKworKGZ1bmN0aW9uKCkgeworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7
fTsKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0
LCAiaG9sZGluZ3MiLCBrZXkpOworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGlu
Z3MiLCBrZXkpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0
eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAs
IGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0
aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2Vy
dEVxdWFscygxLCBjbGVhbnVwX2NhbGxfY291bnQpOworICBhc3NlcnRFcXVhbHMoMSwgY2xlYW51
cF9ob2xkaW5nc19jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODMzOTllNjVmMGQyNzQy
NjA4YjEzODQ2ZDVhNWQ5MTdhYjM3ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2pl
Y3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZz
IC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2Vz
L3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxf
Y291bnQgPSAwOworbGV0IGNsZWFudXBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzMiIsIGhvbGRp
bmdzKTsKKyAgKytjbGVhbnVwX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXBfY2FsbF9jb3Vu
dDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0
IGtleTEgPSB7ImsiOiAia2V5MSJ9OworbGV0IGtleTIgPSB7ImsiOiAia2V5MiJ9OworLy8gQ3Jl
YXRlIHRocmVlIG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4gdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBUaGUgb2JqZWN0cworLy8gbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRo
YXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QxYSA9IHt9Owor
ICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxYSwgImhvbGRpbmdzMWEiLCBrZXkxKTsKKworICAg
ICAgICBsZXQgb2JqZWN0MWIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MWIsICJo
b2xkaW5nczFiIiwga2V5MSk7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAg
ZmcucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIsIGtleTIpOworCisgICAgICAgIC8vIFVu
cmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVj
dHMuCisgICAgICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICAgICAg
YXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVj
bGFpbSB0aGUgdGFyZ2V0IG9iamVjdHMuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBf
Y2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwg
YmUgY2FsbGVkIG9ubHkgZm9yIHRoZSByZWZlcmVuY2Ugd2hpY2gKKy8vIHdhcyBub3QgdW5yZWdp
c3RlcmVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVh
bHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBf
aG9sZGluZ3NfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcyBiL0pTVGVz
dHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWU4MDBh
YTJhY2UwOWY2ZjI5NTJlNGU5N2NiNTY5ODFlYTJlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcwpAQCAtMCwwICsxLDMxIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE5
IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJt
b255LXdlYWstcmVmcy13aXRoLWNsZWFudXAtc29tZSAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworCit2YXIgRlIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkgKGZ1bmN0aW9u
IChob2xkaW5ncykgeyBnbG9iYWxUaGlzLkZSUmFuID0gdHJ1ZTsgfSk7Cit7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9OworICAgICAg
ICAvLyBvYmogaXMgaXRzIG93biB1bnJlZ2lzdGVyIHRva2VuIGFuZCBiZWNvbWVzIHVucmVhY2hh
YmxlIGFmdGVyIHRoaXMKKyAgICAgICAgLy8gYmxvY2suIElmIHRoZSB1bnJlZ2lzdGVyIHRva2Vu
IGlzIGhlbGQgc3Ryb25nbHkgdGhpcyB0ZXN0IHdpbGwgbm90CisgICAgICAgIC8vIHRlcm1pbmF0
ZS4KKyAgICAgICAgRlIucmVnaXN0ZXIob2JqLCA0Miwgb2JqKTsKKyAgICB9Cit9CisKK2xldCB0
cnlBZ2FpbkNvdW50ID0gMTA7CitmdW5jdGlvbiB0cnlBZ2FpbigpIHsKKyAgICBnYygpOworICAg
IGlmIChnbG9iYWxUaGlzLkZSUmFuKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCEtLXRyeUFn
YWluQ291bnQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIHNldFRpbWVvdXQodHJ5
QWdhaW4sIDApOworfQordHJ5QWdhaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404609</attachid>
            <date>2020-07-17 15:33:56 -0700</date>
            <delta_ts>2020-07-17 16:00:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717153354.patch</filename>
            <type>text/plain</type>
            <size>231251</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGJhMmZhZGUwNDJkODZmOWVkYzExNTZkMGQ4NjQyY2JmYzUwZTk3Li42ZTA1Njg2MjEyNjU4YmY4
NDNjY2JkNDJmYjg1NzI2YTEzNjMxYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pT
QVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKGZ1bmN0aW9u
RmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeURlYWRDb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAg
ICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwLgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdv
cmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxv
b3ApOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmspOgorICAgICAg
ICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmspOgorICAg
ICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAg
ICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmguCisgICAgICAgICogcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAg
ICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChKU0M6
OnByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlm
aWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cCk6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmxpdmVDb3VudCk6CisgICAgICAg
IChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudCk6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RhY2tPdmVyZmxvd0ZyYW1l
Q2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwU2V0V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRBZGRXYXRjaHBvaW50U2V0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlKb2luV2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
QmFzZT46OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6
aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjAtMDctMTcgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBDbGVhbiB1
cCByZXNvbHZlTG9jYWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDgwZWM5MWVjNmRjZWQxZWRjZTY4NGU4YzVk
ZTZiMTY0ZGYyM2YyNS4uNDNlOTMxYWY4MDI4MTU4YTgyYzRjNjZkY2Q4MDYwNjk5NTgzODY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6
YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZWZhY3RvciB0aGluZ3MgZm9yIGNoYW5naW5nIFByb21pc2VEZWZlcnJlZFRpbWVy
IHRvIERlZmVycmVkV29ya1RpbWVyLgorCisgICAgICAgIEFsc28sIGFkZCBnbG9iYWxPYmplY3Qg
aG9vayBmb3IgcmVwb3J0aW5nIHVuY2F1Z2h0IGV4Y2VwdGlvbnMgZnJvbSBKU0MncworICAgICAg
ICBydW5sb29wIGNhbGxiYWNrcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjppbnN0YW50aWF0ZVN0cmVhbWlu
Zyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphZGRUaW1lclNldE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNl
dE5vdGlmaWNhdGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAg
ICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisKIDIwMjAtMDct
MTcgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYkdM
Ml0gUmVhZFBpeGVscyB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QuY3BwCmluZGV4IGQ3NWM1OGQ0OTlhYzQ3MjU2ZWM4ZGU3ZGExMjYwMWQz
YzYwYTYzMzguLjRhYjU0N2U5ZGUwZGY4ZWE0NzE0NWYyYWZkNTlmZjU2NTNjYjM4ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCkBAIC00
NCw2ICs0NCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xvYmFsT2Jq
ZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxwdHIsIC8vIG1vZHVs
ZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgor
ICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51bGxwdHIsIC8v
IGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBu
dWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZDYxYWFjN2U0NWM1MzcyMDVhOGFjYTdl
MDhlZmQ2OTRjYmVkYzQyMy4uZDdkNGQ4OThmZDQyZjBmMjU0YTc0OTBiYTkzMmU2OGRiNTg1OWY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVj
dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1t
CkBAIC02NCw2ICs2NCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2Fk
ZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcywgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMKICAgICBtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVy
RXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgorICAgIHJl
cG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVs
dExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIs
IC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggMzZhMDgzMGZhNTFlOWIyMjlhNGVmMzE4YTkwYzllNzUyMmMwYWJlNy4uMzY3NjU5Mzc0
ZWIyZDNjYjMxNDY0YTVhOTE0ZWVlOThhMmFjOTljNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtODMwLDYgKzgzMCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9EYXRhVmlldy5oCiAgICAgcnVudGltZS9E
YXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAorICAgIHJ1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuaAogICAgIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmgKICAgICBydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJl
Y3RBcmd1bWVudHNPZmZzZXQuaApAQCAtOTY4LDcgKzk2OSw2IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9QYXJzZUludC5oCiAgICAg
cnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCi0g
ICAgcnVudGltZS9Qcm9taXNlVGltZXIuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgKICAgICBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKICAgICBydW50aW1lL1Byb3Bl
cnR5TmFtZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjZDc0YzI1MjJlYTJi
ZTlkMTI2Yzg4ZmRiMjA5ODM3ZDlhNTJiNWYuLmEyNmE5OTc1MjUyZDA2NTQ2NmJmYTYxYTViNWMy
ZWYzMGYyNGY2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzEsMTYgKzkz
MSwxOSBAQAogCQk1MzBGREU3NTIxRkFCMDA2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBGREU3MzIxRkFB
RkM2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gKi87IH07CiAJCTUzMTFCRDRCMUVBNTgxRTUw
MDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmgg
Ki87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAw
QUY3QTBCIC8qIFdhc21QbGFuLmggKi87IH07Ci0JCTUzMTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAv
KiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi87
IH07Ci0JCTUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgw
RjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsK
KyAgICAgICAgICAgICAgICA1MzE4MDQ1QzIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTgw
NDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oICovOyB9OworICAgICAgICAg
ICAgICAgIDUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBl
LmggKi87IH07CisgICAgICAgICAgICAgICAgNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwICovOyB9OwogCQk1MzMzQkJEQzIxMTBGN0Q5MDA3NjE4RUMgLyogREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAq
LzsgfTsKIAkJNTMzM0JCREQyMTEwRjdFMTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBG
NEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovOyB9OwotCQk1
MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5
NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAgNTMz
OEUyQTcyMzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RTJBNjIzOTZF
RkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MzM4RUJBMzIzQUIwNEI4MDAz
ODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAvKiBGVExT
ZWxlY3RQcmVkaWN0YWJpbGl0eS5oICovOyB9OwotCQk1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcg
LyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJENzk3MDA0
RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUy
IC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNTMzRDA3NDcy
MkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZF
MiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi87IH07CisgICAgICAgICAgICAgICAgNTM0
MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CiAJCTUzNDYzODcxMUU3
MENGM0QwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVu
TG9vcFRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzQxRTcwRERFQzAw
RjEyQUMxIC8qIFByb21pc2VUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2
QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisgICAgICAgICAgICAgICAgNTM0NjM4NzUxRTcw
RERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVm
ZXJyZWRXb3JrVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5
cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTUzNDkwMjg1MUM3Mjc2QjcwMDEy
QkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlD
VGVzdC5jcHAgKi87IH07CiAJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuaCAqLzsgfTsKIAkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNEUw
MzREMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggKi87IH07CkBAIC0zNTk3LDYgKzM2
MDAsNyBAQAogCQk1MkVFRDc5MzI0OTJCODY4MDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25BbGxvd2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTJGNkMzNUIxRTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNkMzNUMxRTcxRUIw
ODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHBhdGggPSBq
cy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDAxRkEzRTMxQzAwMjZBNTQ1IC8qIFNvdXJj
ZXNDb2NvYS50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlc0NvY29hLnR4dDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDExRkEzRTMxRDAwMjZBNTQ1IC8qIFNv
dXJjZXMudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNvdXJjZXMudHh0OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjZBRDFGQTNFNzc3MDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTE0NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVk
U291cmNlMTQ0LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlm
aWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE0NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwpAQCAtMzYyMiwxNyArMzYyNiwyMiBAQAogCQk1MzE4MDQ1QjIyRUFBQzRC
MDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNFeHRyYWN0VmFs
dWUuaDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzMTgwNDVEMjJFQUFGMEYwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0V4dHJhY3RW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMUQ0RTE5MUY1OUNERDIw
MEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBw
YXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRUU3QkMyMkRFNkVDNjAwMzBEQTgxIC8qIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTMyNjMxQjMyMTg3NzdBNTAwN0I4MTkxIC8qIEphdmFTY3JpcHRDb3JlLm1vZHVsZW1hcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9ICJzb3VyY2Vjb2RlLm1vZHVsZS1tYXAiOyBwYXRoID0gSmF2YVNjcmlwdENvcmUu
bW9kdWxlbWFwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RTJBNjIzOTZFRkVD
MDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVj
dFByZWRpY3RhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNl
bGVjdFByZWRpY3RhYmlsaXR5Lmg7IHBhdGggPSBmdGwvRlRMU2VsZWN0UHJlZGljdGFiaWxpdHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBB
IC8qIFdhc21PcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9wcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIg
LyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzM0QwNzQ1MjJDMkQ4N0YwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzNEMDc0NjIyQzJEOUQx
MDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFG
QzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3Bw
OyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9v
cFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDYzODcyMUU3MEQwMTUwMEYxMkFD
MSAvKiBKU1J1bkxvb3BUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1J1bkxvb3BUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUz
NDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvbWlzZVRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvbWlzZVRpbWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlw
ZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NDFF
NzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVycmVkV29ya1RpbWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAgICAgICAgICAgICAgICA1MzQ4NkJC
NjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5
Q1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJh
eUNUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRB
cnJheUNUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVkQXJyYXlD
VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzEzNCw2ICs3MTQzLDggQEAKIAkJCQkxNEExNTYzMDEwOTY2MzY1
MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCAqLywKIAkJCQlCQ0QyMDM0NzBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkNEMjAzNDgwRTE3MTM1RTAw
MkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKKwkJCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJB
QzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovLAorCQkJCTUzNDYzODc0MUU3MERERUMwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovLAogCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFF
Rjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywKIAkJCQk3MzRCNjU1NDIzRjRB
MzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8sCiAJCQkJMEZFMDUwMEYxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8sCkBAIC03MTg0LDExICs3MTk1
LDE3IEBACiAJCQkJMTQ3MzQxRTkxREMyQ0YyNTAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmNw
cCAqLywKIAkJCQkxNDczNDFDQjFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCAq
LywKIAkJCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVz
LmggKi8sCi0JCQkJQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFn
ZW50LmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDRkFEMzMyMzcy
REFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKIAkJCQlDRUNGQUQz
MjIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRTIw
QkQwNDIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCAqLywK
IAkJCQlDRTIwQkQwMzIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNl
LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ1MjJDMkQ4N0Yw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1
MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
ci5oICovLAorCQkJCTUzMUVFN0JDMjJERTZFQzYwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZS5jcHAgKi8sCisJCQkJNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggKi8sCiAJCQkJQTdBOEFGMjkxN0FEQjVGMzAw
NUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3QThBRjI5MTdBREI1RjMwMDVBQjE3
NCAvKiBGbG9hdDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyog
RmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oICovLApAQCAtNzM0NSw3ICs3MzYyLDEzIEBACiAJCQkJMEY3REYxMzkx
RTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcCAq
LywKIAkJCQkwRjdERjEzQTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlBN0I0QUNBRTE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBv
cnRNYWNyb3MuaCAqLywKLQkJCQkwRjJCNjZDMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMy
QXJyYXkuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMwMDc0MEMyMkRE
NkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwICovLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NjIyQzJEOUQxMDA0RDJGRTIgLyogSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmNwcCAqLywKKwkJCQk3OTg5
Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmNwcCAqLywKKwkJCQk3OTg5Mzc3
NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmggKi8sCisJCQkJNzk4OTM3NzcxRENB
QjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwRjJCNjZDMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCAq
LywKIAkJCQkwRjJCNjZDMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCAqLywK
IAkJCQlGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCiAJCQkJ
RjY5MkE4NUYwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uaCAqLywKQEAgLTc1NDQsOSAr
NzU2Nyw3IEBACiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
Ki8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNw
cCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
aCAqLywKLQkJCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmNwcCAq
LywKLQkJCQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi8sCi0J
CQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4
NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3
QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3
MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk4NjE1OEFCMjE1NUM4QjNG
MDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCkBAIC05Mjg2LDYgKzkzMDcsNyBAQAogCQkJ
CTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1NCAvKiBEZWZlckdDLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkM3MTJERjE3Q0Q4NzdDMDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJy
ZWRTb3VyY2VEdW1wLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJB
QzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLApAQCAtOTUyNiw5ICs5NTQ4LDExIEBACiAJCQkJMEYw
QjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyNjdDRjgyMjQ5MzE2QjEwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0VDRkFEMzcy
MzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5
IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTIwQkQwNTIz
N0QzRTIzMDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDQyMkMyRDc5
NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3Ry
eVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJz
LmggaW4gSGVhZGVycyAqLywKQEAgLTk4NTcsNyArOTg4MSw4IEBACiAJCQkJRkUzODRFRTYxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0
MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFD
QUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NzIyQzJEOUQyMDA0
RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zs
b2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3
NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTEw
MTQ3LDggKzEwMTcyLDcgQEAKIAkJCQlEQzYwNUI2MDFDRTI2RUE3MDA1OTM3MTggLyogUHJvZmls
ZXJVSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTEwMURDQTkyOTQwMDE0RjlGRSAvKiBQ
cm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFENDFEQzAyRTZEMDBB
QTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUzNDYzODc1
MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBG
RDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGRDNFNDBFMUI2MThCNjYwMEM4
MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGQjYxMDAx
MDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1l
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEz
NGE2NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li4yYTI4N2E3ZmRkYjA4MDRmM2I2MDEy
MGRjYTBiZTc1Yjc1NWU3OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03ODYs
NiArNzg2LDggQEAgcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAKIHJ1bnRpbWUvRXhlY3V0YWJs
ZUJhc2UuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50LmNwcAogcnVudGltZS9GaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCitydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuY3BwCitydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAog
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwCkBAIC04NTAsNiArODUy
LDcgQEAgcnVudGltZS9KU0RhdGFWaWV3LmNwcAogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAogcnVudGltZS9KU0RhdGVNYXRoLmNwcAogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5jcHAKK3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCiBydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC05MzIsNyArOTM1LDcgQEAgcnVudGltZS9PcGVyYXRp
b25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0
aW5nRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAotcnVudGlt
ZS9Qcm9taXNlVGltZXIuY3BwCitydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAogcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKIHJ1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXgg
MTg0YmI5NDQ0MWQzZmE0MzM0MmFmYmY5NjY1Y2MxYmU3MzllZTAxMy4uZDgxYWRlZmY1Zjg0MjZh
ODUzMjQyYzRlN2ExN2I1N2E2NTIxYzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKKyNp
bmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFj
aGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFr
T2JqZWN0UmVmLmgiCkBAIC02MTEsNiArNjEyLDggQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCp2bSgpLm1fd2Vha09iamVjdFJlZlNwYWNlKTsK
ICAgICBpZiAodm0oKS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkKICAgICAgICAgZmluYWxpemVNYXJr
ZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0oKS5tX2Vycm9ySW5z
dGFuY2VTcGFjZSk7CisgICAgaWYgKHZtKCkubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQor
ICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0
aW9uUmVnaXN0cnk+KCp2bSgpLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CiAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKHZtKCkubV93ZWJBc3NlbWJseUNvZGVCbG9ja1Nw
YWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyZTBkMGEzMGRmNWY2NTMwOGU3YTlmY2ViOTY0
MzRhMjk3ZjE4MzE5Li5jOWJlZWQ5ZmE4MjM0ZjFhMTA2MjFmMzEzNjIwYmJjYWY1NjI5ZGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbXBpbGVy
VGltaW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29uZmln
RmlsZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVs
cGVycy5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC01Niw3ICs1OCw2
IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJv
ci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJQcm9taXNlVGlt
ZXIuaCIKICNpbmNsdWRlICJSZWxlYXNlSGVhcEFjY2Vzc1Njb3BlLmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpAQCAtMTU1LDYgKzE1
Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSB7CiAKKyNkZWZpbmUgRVhJ
VF9FWENFUFRJT04gMworCiBOT19SRVRVUk5fV0lUSF9WQUxVRSBzdGF0aWMgdm9pZCBqc2NFeGl0
KGludCBzdGF0dXMpCiB7CiAgICAgd2FpdEZvckFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5KCk7CkBA
IC0xODgsNyArMTkxLDcgQEAgY2xhc3MgV29ya2VyczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmLCBib29sIGlzV29ya2VyLCBjb25zdCBG
dW5jJik7Ci1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBib29sIGlz
TGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlLCBDb21tYW5kTGluZSYsIGJvb2wm
IHN1Y2Nlc3MpOworc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiwgYm9v
bCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSwgY29uc3QgQ29tbWFuZExp
bmUmLCBib29sJiBzdWNjZXNzKTsKIAogY2xhc3MgTWVzc2FnZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxNZXNzYWdlPiB7CiBwdWJsaWM6CkBAIC0zMDIsNyArMzA1LDEwIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbE1hc3F1ZXJhZGVyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9y
QWxsVmFyaWFibGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMy
Qml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKQEAgLTUzOCw4ICs1NDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJkdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMiLCBmdW5jdGlvbkR1bXBUeXBl
c0ZvckFsbFZhcmlhYmxlcyAsIDApOwogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHJhaW5N
aWNyb3Rhc2tzIiwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MsIDApOwotICAgICAgICBhZGRGdW5j
dGlvbih2bSwgInJlbGVhc2VXZWFrUmVmcyIsIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzLCAwKTsK
KyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRUaW1lb3V0IiwgZnVuY3Rpb25TZXRUaW1lb3V0
LCAyKTsKIAorICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlbGVhc2VXZWFrUmVmcyIsIGZ1bmN0
aW9uUmVsZWFzZVdlYWtSZWZzLCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJmaW5hbGl6
YXRpb25SZWdpc3RyeUxpdmVDb3VudCIsIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZl
Q291bnQsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50IiwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudCwgMCk7Cisg
ICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImdldFJhbmRvbVNlZWQiLCBmdW5jdGlv
bkdldFJhbmRvbVNlZWQsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFJhbmRvbVNl
ZWQiLCBmdW5jdGlvblNldFJhbmRvbVNlZWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImlzUm9wZSIsIGZ1bmN0aW9uSXNSb3BlLCAxKTsKQEAgLTYzOCw2ICs2NDgsOCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBJZGVudGlmaWVyIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0
YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3Qq
LCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRp
YyBKU09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNW
YWx1ZSk7CisKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRM
b29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7CiB9OwogU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCk7CiAKQEAgLTY2
MCw2ICs2NzIsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6
OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUlt
cG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3Vh
Z2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5z
dGFudGluYXRlU3RyZWFtaW5nCkBAIC0yMTg3LDYgKzIyMDAsMjkgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VGltZW91dChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgLy8gRklYTUU6IFRoaXMgbWVhbnMgd2UgY2FuJ3QgcGFzcyBhbnkg
aW50ZXJuYWwgZnVuY3Rpb24gYnV0IEkgZG9uJ3QgdGhpbmsgdGhhdCdzIGNvbW1vbiBmb3IgdGVz
dGluZy4KKyAgICBhdXRvIGNhbGxiYWNrID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVu
dCBpcyBub3QgYSBKUyBmdW5jdGlvbiJfcyk7CisKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbG9v
ayBhdCB0aGUgdGltZW91dCBwYXJhbWV0ZXIgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgc2NoZWR1
bGUgd29yayBsYXRlciBBUEkuCisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdX
b3JrKHZtLCBjYWxsYmFjaywgeyB9KTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1
bGVXb3JrU29vbihjYWxsYmFjaywgW2NhbGxiYWNrXSB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOworICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGpzVW5kZWZpbmVkKCks
IGFyZ3MsICJZb3Ugc2hvdWxkbid0IHNlZSB0aGlzLi4uIik7CisgICAgICAgIHZtLmRlZmVycmVk
V29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayhjYWxsYmFjayk7CisgICAgfSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTIxOTQsNiArMjIzMCwzMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0g
anNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBp
cyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5saXZlQ291bnQobG9j
a2VyKSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIWZpbmFsaXph
dGlvblJlZ2lzdHJ5KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnki
X3MpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmaW5hbGl6YXRpb25SZWdpc3RyeS0+
Y2VsbExvY2soKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmaW5hbGl6
YXRpb25SZWdpc3RyeS0+ZGVhZENvdW50KGxvY2tlcikpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTI2MTcsMTAgKzI2NzksMTAgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgICAgLy8gV2UgY2FuJ3QgdXNlIGRl
c3RydWN0b3JzIGluIHRoZSBmb2xsb3dpbmcgY29kZSBiZWNhdXNlIGl0IHVzZXMgV2luZG93cwog
ICAgIC8vIFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsaW5nCi0gICAgaW50IHJlcyA9IDA7Cisg
ICAgaW50IHJlcyA9IEVYSVRfU1VDQ0VTUzsKICAgICBUUlkKICAgICAgICAgcmVzID0ganNjbWFp
bihhcmdjLCBhcmd2KTsKLSAgICBFWENFUFQocmVzID0gMykKKyAgICBFWENFUFQocmVzID0gRVhJ
VF9FWENFUFRJT04pCiAgICAgZmluYWxpemVTdGF0c0F0RW5kT2ZUZXN0aW5nKCk7CiAgICAgaWYg
KGdldGVudigiSlNfU0hFTExfV0FJVF9GT1JfSU5QVVRfVE9fRVhJVCIpKSB7CiAgICAgICAgIFdU
Rjo6ZmFzdERpc2FibGVTY2F2ZW5nZXIoKTsKQEAgLTI2OTEsNyArMjc1Myw3IEBAIHN0YXRpYyB2
b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXhj
ZXB0aW9uKQogI3VuZGVmIENIRUNLX0VYQ0VQVElPTgogfQogCi1zdGF0aWMgYm9vbCBjaGVja1Vu
Y2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgZXhjZXB0aW9uLCBDb21tYW5kTGluZSYgb3B0aW9ucykKK3N0YXRpYyBib29sIGNoZWNrVW5j
YXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBleGNlcHRpb24sIGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zKQogewogICAgIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRFeGNlcHRpb25OYW1lID0gb3B0aW9ucy5tX3VuY2F1Z2h0RXhjZXB0aW9u
TmFtZTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkBAIC0yNzIz
LDcgKzI3ODUsNyBAQCBzdGF0aWMgYm9vbCBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwg
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIENv
bW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQorc3RhdGljIHZvaWQgY2hlY2tFeGNl
cHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBo
YXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBi
b29sJiBzdWNjZXNzKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAt
Mjc0Miw2ICsyODA0LDE1IEBAIHN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzCiAgICAgICAgIHN1Y2Nl
c3MgPSBzdWNjZXNzICYmIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24odm0sIGdsb2JhbE9iamVjdCwg
KGhhc0V4Y2VwdGlvbikgPyB2YWx1ZSA6IEpTVmFsdWUoKSwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQg
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGF1dG8q
IGdsb2JhbCA9IGpzQ2FzdDxHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpOworICAgIGR1bXBF
eGNlcHRpb24oZ2xvYmFsLCBleGNlcHRpb24tPnZhbHVlKCkpOworICAgIGJvb2wgaGlkZU5vUmV0
dXJuID0gdHJ1ZTsKKyAgICBpZiAoaGlkZU5vUmV0dXJuKQorICAgICAgICBqc2NFeGl0KEVYSVRf
RVhDRVBUSU9OKTsKK30KKwogc3RhdGljIHZvaWQgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQogewog
ICAgIFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzID0gb3B0aW9ucy5tX3NjcmlwdHM7CkBAIC0zMTc2
LDcgKzMyNDcsNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29s
IGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBmdW5jKHZtLCBnbG9iYWxPYmpl
Y3QsIHN1Y2Nlc3MpOwogICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICB9Ci0gICAg
dm0ucHJvbWlzZVRpbWVyLT5ydW5SdW5Mb29wKCk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXIt
PnJ1blJ1bkxvb3AoKTsKICAgICB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwog
ICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
Y3BwCmluZGV4IGQzYWQyMWU1YmM5N2VhOTQ1MGM2Y2UwYjZmN2UwYzYyNTE3YzkxOTkuLmVjZDA3
M2NkM2RmMjBlNWE5Y2ZjNmQyM2U2NWRlNGFlMDA0M2U3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gQXJy
YXlJdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiQXJyYXkgSXRlcmF0b3IiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5SXRlcmF0
b3JQcm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6
c19pbmZvID0geyAiQXJyYXkgSXRlcmF0b3IgUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUl0ZXJhdG9yUHJvdG90eXBl
KSB9OwogCiB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2OGVmZWRhMTRkNDYx
MDUyNjA3NWFmZGViYWM5YWRiYTI1MjY2YmEuLjcwMWQ2NzQ3YmRiYWRkYzg4MmUwZmZjNDE0YzFh
NTcwODFmOTA1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtNTcsNiArNTcsNyBAQAogICAgIG1hY3JvKFN0cmluZykgXAog
ICAgIG1hY3JvKFN5bWJvbCkgXAogICAgIG1hY3JvKFdlYWtSZWYpIFwKKyAgICBtYWNybyhGaW5h
bGl6YXRpb25SZWdpc3RyeSkgXAogICAgIG1hY3JvKF9fZGVmaW5lR2V0dGVyX18pIFwKICAgICBt
YWNybyhfX2RlZmluZVNldHRlcl9fKSBcCiAgICAgbWFjcm8oX19sb29rdXBHZXR0ZXJfXykgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGlt
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU5M2QzMTY0ZTA4OWQxNjNlMzI2MzMwZTgxMThkODJjMDdiZmQ4YzkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJl
ZFdvcmtUaW1lci5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJEZWZlcnJlZFdvcmtUaW1lci5oIgorCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVk
ZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBEZWZlcnJlZFdvcmtUaW1lcklu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKworRGVmZXJy
ZWRXb3JrVGltZXI6OkRlZmVycmVkV29ya1RpbWVyKFZNJiB2bSkKKyAgICA6IEJhc2Uodm0pCit7
Cit9CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRvV29yayhWTSYgdm0pCit7CisgICAgQVNT
RVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIG1fdGFza0xvY2su
bG9jaygpOworICAgIGNhbmNlbFRpbWVyKCk7CisgICAgaWYgKCFtX3J1blRhc2tzKSB7CisgICAg
ICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3
aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VGaXJzdCgpOworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtU
aW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbjogIiwgUmF3UG9pbnRlcih0aWNr
ZXQpKTsKKworICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHBy
b21pc2VzLgorICAgICAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpKSB7
CisgICAgICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBydW4gbm93IHRvIHNjaGVkdWxlIHdvcmsu
CisgICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKKyAgICAgICAgICAg
IG1fdGFza0xvY2sudW5sb2NrKCk7IAorCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFy
dCBvZiBhIHJ1bmxvb3AgdHVybiwgd2UgY2FuIHJlbGVhc2UgYW55IHdlYWtyZWZzIGhlcmUuCisg
ICAgICAgICAgICB2bS5maW5hbGl6ZVN5bmNocm9ub3VzSlNFeGVjdXRpb24oKTsKKworICAgICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgICAgICAgICAg
dGFzaygpOworICAgICAgICAgICAgaWYgKEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gc2NvcGUuZXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0aWNrZXQt
Pmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKGdsb2JhbE9iamVjdCwgZXhjZXB0
aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7
CisgICAgICAgICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7CisKKyAg
ICAgICAgICAgIG1fdGFza0xvY2subG9jaygpOworICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5u
aW5nVGFzayA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fcGVuZGluZ1Rp
Y2tldHMuaXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0Zpbmlz
aCkKKyAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKKworICAgIG1fdGFza0xvY2su
dW5sb2NrKCk7Cit9CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxvb3AoKQorewor
ICAgIEFTU0VSVCghbV9hcGlMb2NrLT52bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9j
aygpKTsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgp
LT5ydW5Mb29wKCkpOworICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0Zpbmlz
aCA9IHRydWU7CisgICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuc2l6ZSgpKQorICAgICAgICBSdW5M
b29wOjpydW4oKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmso
Vk0mIHZtLCBUaWNrZXQgdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5j
aWVzKQoreworICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQor
ICAgICAgICBBU1NFUlQoZGVwZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tldCk7CisKKyAgICBh
dXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuYWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxK
U0NlbGw+PigpKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgZGF0YUxv
Z0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVu
ZGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIHRpY2tldCkpOworICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gV1RGTW92ZShkZXBlbmRlbmNpZXMpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRp
bmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMp
OworICAgIH0KK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmsoVGlj
a2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKCkpOworICAgIHJldHVybiBtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRp
Y2tldCk7Cit9CisKK2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRp
bmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSkKK3sKKyAgICBBU1NFUlQo
dGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VS
VChtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpOworCisgICAgYXV0byByZXN1bHQg
PSBtX3BlbmRpbmdUaWNrZXRzLmdldCh0aWNrZXQpOworICAgIHJldHVybiByZXN1bHQuY29udGFp
bnMoZGVwZW5kZW5jeSk7Cit9CisKK2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRp
bmdXb3JrKFRpY2tldCB0aWNrZXQpCit7CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Rp
Y2tldHMucmVtb3ZlKHRpY2tldCk7CisKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBkYXRhTG9n
TG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQ2FuY2VsaW5nIHRpY2tl
dDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Zv
aWQgRGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxlV29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFz
ayYmIHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgbV90
YXNrcy5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHRpY2tldCwgV1RGTW92ZSh0YXNrKSkpOworICAg
IGlmICghaXNTY2hlZHVsZWQoKSAmJiAhbV9jdXJyZW50bHlSdW5uaW5nVGFzaykKKyAgICAgICAg
c2V0VGltZVVudGlsRmlyZSgwX3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmY2Y2YzljYjMzNDYyYzEyZGEyNjUwMDdlZjFjZDk1NmYyYTkxOGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5o
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCisjaW5j
bHVkZSAiU3Ryb25nLmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlOworY2xhc3MgVk07CitjbGFz
cyBKU0NlbGw7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlZmVycmVkV29ya1RpbWVyIGZp
bmFsIDogcHVibGljIEpTUnVuTG9vcFRpbWVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNSdW5Mb29wVGltZXI7CisKKyAgICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOworCisgICAgdXNp
bmcgVGlja2V0ID0gSlNPYmplY3QqOworICAgIHZvaWQgYWRkUGVuZGluZ1dvcmsoVk0mLCBUaWNr
ZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOworICAgIGJvb2wgaGFz
UGVuZGluZ1dvcmsoVGlja2V0KTsKKyAgICBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3Jr
KFRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKKyAgICBib29sIGNhbmNlbFBlbmRpbmdXb3Jr
KFRpY2tldCk7CisKKyAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB2b2lk
IHNjaGVkdWxlV29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworCisgICAgdm9pZCBzdG9wUnVubmlu
Z1Rhc2tzKCkgeyBtX3J1blRhc2tzID0gZmFsc2U7IH0KKworICAgIHZvaWQgcnVuUnVuTG9vcCgp
OworCisgICAgc3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIERlZmVycmVkV29ya1RpbWVyKFZNJik7CisKKyAgICBM
b2NrIG1fdGFza0xvY2s7CisgICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OworICAgIGJvb2wg
bV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OworICAgIERlcXVlPHN0ZDo6dHVw
bGU8VGlja2V0LCBUYXNrPj4gbV90YXNrczsKKyAgICBIYXNoTWFwPFRpY2tldCwgVmVjdG9yPFN0
cm9uZzxKU0NlbGw+Pj4gbV9wZW5kaW5nVGlja2V0czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmM5NmViODRj
MDM0NGU0NzlkMDQxYWU2NmI0OTM5NjI5Njk4ZDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5j
cHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9u
cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dElubGluZXMuaCIKKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yKSB9OworCit2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJh
bnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
RmluYWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlLCBjYWxsRmluYWxpemF0aW9uUmVnaXN0cnksIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lz
dHJ5KQoreworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmlu
YWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNDYWxsYWJs
ZSh2bSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGaXJzdCBhcmd1bWVudCB0byBGaW5hbGl6YXRpb25SZWdpc3RyeSBzaG91bGQgYmUgYSBm
dW5jdGlvbiJfcyk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBmaW5hbGl6YXRpb25SZWdpc3RyeVN0
cnVjdHVyZSA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKSA9PSBuZXdUYXJnZXQKKyAgICAgICAgPyBn
bG9iYWxPYmplY3QtPmZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkKKyAgICAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG5l
d1RhcmdldCwgZ2V0RnVuY3Rpb25SZWFsbSh2bSwgbmV3VGFyZ2V0KS0+ZmluYWxpemF0aW9uUmVn
aXN0cnlTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKHZtLCBmaW5hbGl6YXRpb25SZWdpc3Ry
eVN0cnVjdHVyZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKSkp
KTsKK30KKworfQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
Y2U0YzU2M2Y4MmNjZTg0ZTdhOWYxOGY2YzVmMzMwMGFlNDI0ODZiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rp
b24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlOworCitjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yIGZpbmFsIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRl
cm5hbEZ1bmN0aW9uOworCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAg
RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yPih2bS5oZWFw
KSkgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRl
cm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKik7Cit9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yKSA9PSBzaXplb2YoSW50ZXJuYWxGdW5jdGlvbikpOworCisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTNmMjAzZjczZmE5N2EwMDZmYTQ1
YzZjNGJhYzNjYTg2NzQ1MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
MTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJG
aW5hbGl6YXRpb25SZWdpc3RyeSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUpIH07CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5y
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit2b2lkIEZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICAvLyBXZSBjYW4ndCBtYWtlIHRoaXMg
YSBwcm9wZXJ0eSBuYW1lIGJlY2F1c2UgaXQncyBhIHJlc2V2ZXJlZCB3b3JkIGluIEMrKy4uLgor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJyZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVJl
Z2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVnaXN0ZXIiKSwgcHJvdG9GdW5jRmluYWxpemF0aW9u
UmVnaXN0cnlVbnJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiRmluYWxp
emF0aW9uUmVnaXN0cnkiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6
YXRpb25SZWdpc3RyeSogZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmpl
Y3QoKSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bGxlZCBGaW5hbGl6YXRpb25SZWdpc3RyeSBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byogZ3JvdXAgPSBqc0R5bmFt
aWNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih2bSwgYXNPYmplY3QodmFsdWUpKTsKKyAg
ICBpZiAoTElLRUxZKGdyb3VwKSkKKyAgICAgICAgcmV0dXJuIGdyb3VwOworCisgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdpc3Ry
eSBmdW5jdGlvbiBvbiBhIG5vbi1GaW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3QiX3MpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIGdyb3VwID0gZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAg
ICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRo
ZSB0YXJnZXQiX3MpOworCisgICAgSlNWYWx1ZSBob2xkaW5ncyA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CisgICAgaWYgKHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIHRhcmdldCwgaG9sZGluZ3Mp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cmVnaXN0ZXIgZXhwZWN0cyB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgdGhlIGhvbGRpbmdzIHBhcmFt
ZXRlciBhcmUgbm90IHRoZSBzYW1lLiBPdGhlcndpc2UsIHRoZSB0YXJnZXQgY2FuIG5ldmVyIGJl
IGNvbGxlY3RlZCJfcyk7CisKKyAgICBKU1ZhbHVlIHVucmVnaXN0ZXJUb2tlbiA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMik7CisgICAgaWYgKCF1bnJlZ2lzdGVyVG9rZW4uaXNVbmRlZmluZWQoKSAm
JiAhdW5yZWdpc3RlclRva2VuLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3Qg
YXMgdGhlIHVucmVnaXN0cmF0aW9uIHRva2VuIl9zKTsKKworICAgIGdyb3VwLT5yZWdpc3RlclRh
cmdldCh2bSwgdGFyZ2V0LmdldE9iamVjdCgpLCBob2xkaW5ncywgdW5yZWdpc3RlclRva2VuKTsK
KyAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5
KHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byogdG9rZW4gPSBqc0R5bmFt
aWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSB7CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gZ3JvdXAtPnVucmVnaXN0ZXIodm0sIHRva2VuKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgfQorCisgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVx
dWlyZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7Cit9CisKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0ZGY4ZGQyOGIzOGIzOGQ3
MDcxYzI2MjcwMmYyZjQ4MWM5ZjhhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgIH0KKworICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGU+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeyB9CisK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVz
LmgKaW5kZXggMThlODhkN2MwY2U0ZWUyMTI5YTM3ZDgyMDI2OGFjZjYzNjBmNTJhZS4uMWM1ZmRm
NTBiZDA1ODliNzZjYWRhNDhmN2ZmNTkwM2Q3MTI1ODkzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC00OSw3ICs0OSw3IEBA
IGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgQXRvbVN0cmluZyYg
c3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFibGUo
dm0pOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+aXNTeW1ib2woKSB8fCBBdG9t
U3RyaW5nSW1wbDo6aXNJbkF0b21TdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9t
aWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+aXNTeW1ib2wo
KSB8fCBBdG9tU3RyaW5nSW1wbDo6aXNJbkF0b21TdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwg
IlRoZSBhdCZvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMzI3YWNlZTljOTI3
MGU0OTI1YWJkNjY2M2ZjYTVmNDUyYWM2OWIwOC4uMTBjNmZmZDRkNmM3ZTIzN2MxNzFkZmQzYTQ3
YmFhYWZiYWNmNTM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAKLSNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0Jv
dW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAppbmRleCAxNTEwYTRmYWI1ODk1ODAxZGM4N2ZhNjcz
NjY0NzhmMjhjYmE2OWM5Li5lOGY0OGMzZWMwZDM4NTQ5MmJhMzVlMGVlZjE0ZjI4MTY2OTA0ZTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSA8dW5p
Y29kZS91cmVsZGF0ZWZtdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2M5ZTEyMGJkODA3YTU1OWM1MjA2ODhkODJjOTQwMDRjZmY0MzZjYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9u
UmVnaXN0cnkuY3BwCkBAIC0wLDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5KSB9OworCitTdHJ1Y3R1cmUqIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBj
YWxsYmFjaykKK3sKKyAgICBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KHZtLmhlYXApKSBK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBzdHJ1Y3R1cmUpOworICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbih2bSwgY2FsbGJhY2spOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KKwordm9p
ZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTT2JqZWN0
KiBjYWxsYmFjaykKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGNhbGxiYWNrLT5pc0NhbGxhYmxlKHZtKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFs
dWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0V2l0aG91
dFdyaXRlQmFycmllcih2YWx1ZXNbaW5kZXhdKTsKKyAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpD
YWxsYmFjaykuc2V0V2l0aG91dFdyaXRlQmFycmllcihjYWxsYmFjayk7Cit9CisKK3ZvaWQgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7
CisKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkq
PihjZWxsKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExv
Y2soKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyIDogdGhpc09iamVjdC0+bV9saXZlUmVn
aXN0cmF0aW9ucykgeworICAgICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IGl0ZXIudmFs
dWUpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChyZWdpc3RyYXRpb24uaG9sZGluZ3MpOwor
ICAgIH0KKyAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IHRoaXNPYmplY3QtPm1fbm9VbnJl
Z2lzdHJhdGlvbkxpdmUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlvbi5ob2xk
aW5ncyk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyIDogdGhpc09iamVjdC0+bV9kZWFkUmVn
aXN0cmF0aW9ucykgeworICAgICAgICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogaXRlci52YWx1ZSkK
KyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGhvbGRpbmdzKTsKKyAgICB9CisgICAgZm9yIChh
dXRvJiBob2xkaW5ncyA6IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQpCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKGhvbGRpbmdzKTsKKworICAgIHNpemVfdCB0b3RhbEJ1ZmZlclNp
emVzSW5CeXRlcyA9IHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMuY2FwYWNpdHkoKSAq
IHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKTo6S2V5VmFs
dWVQYWlyVHlwZSk7CisgICAgdG90YWxCdWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09iamVjdC0+
bV9saXZlUmVnaXN0cmF0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmpl
Y3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMpOjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1
ZmZlclNpemVzSW5CeXRlcyArPSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLmNh
cGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9u
TGl2ZS50YWtlTGFzdCgpKSk7CisgICAgdG90YWxCdWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09i
amVjdC0+bV9ub1VucmVnaXN0cmF0aW9uRGVhZC5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBl
KHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUudGFrZUxhc3QoKSkpOworICAgIHZp
c2l0b3Iudm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0b3RhbEJ1ZmZlclNpemVz
SW5CeXRlcyk7Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveShKU0Nl
bGwqIHRhYmxlKQoreworICAgIHN0YXRpY19jYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih0
YWJsZSktPn5KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KCk7Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQoreworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisKKyAgICBhdXRvIHJlbW92ZUZyb21WZWN0
b3IgPSBbXSAoYXV0byYgdmVjdG9yLCBzaXplX3QgcG9zaXRpb24pIHsKKyAgICAgICAgc3RkOjpz
d2FwKHZlY3Rvcltwb3NpdGlvbl0sIHZlY3Rvci5sYXN0KCkpOworICAgICAgICByZXR1cm4gdmVj
dG9yLnRha2VMYXN0KCk7CisgICAgfTsKKworICAgIGJvb2wgcmVhZGllZENlbGwgPSBmYWxzZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXpl
KCk7ICsraSkgeworICAgICAgICBBU1NFUlQoIW1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0uaG9s
ZGluZ3MuZ2V0KCkuaXNDZWxsKCkgfHwgdm0uaGVhcC5pc01hcmtlZChtX25vVW5yZWdpc3RyYXRp
b25MaXZlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgIGlmICghdm0uaGVh
cC5pc01hcmtlZChtX25vVW5yZWdpc3RyYXRpb25MaXZlW2ldLnRhcmdldCkpIHsKKyAgICAgICAg
ICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuYXBwZW5kKHJlbW92ZUZyb21WZWN0b3IobV9ub1Vu
cmVnaXN0cmF0aW9uTGl2ZSwgaSkuaG9sZGluZ3MpOworICAgICAgICAgICAgcmVhZGllZENlbGwg
PSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgbV9saXZlUmVnaXN0cmF0aW9ucy5yZW1v
dmVJZihbJl0gKGF1dG8mIGJ1Y2tldCkgLT4gYm9vbCB7CisgICAgICAgIEFTU0VSVChidWNrZXQu
dmFsdWUuc2l6ZSgpKTsKKworICAgICAgICBib29sIGtleUlzRGVhZCA9ICF2bS5oZWFwLmlzTWFy
a2VkKGJ1Y2tldC5rZXkpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYnVja2V0
LnZhbHVlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBBU1NFUlQoIWJ1Y2tldC52YWx1ZVtp
XS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKGJ1Y2tldC52YWx1
ZVtpXS5ob2xkaW5ncy5nZXQoKS5hc0NlbGwoKSkpOworICAgICAgICAgICAgaWYgKCF2bS5oZWFw
LmlzTWFya2VkKGJ1Y2tldC52YWx1ZVtpXS50YXJnZXQpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGtleUlzRGVhZCkKKyAgICAgICAgICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5h
cHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBkZWFkTGlzdCA9IG1f
ZGVhZFJlZ2lzdHJhdGlvbnMuYWRkKGJ1Y2tldC5rZXksIERlYWRSZWdpc3RyYXRpb25zKCkpOwor
ICAgICAgICAgICAgICAgICAgICBkZWFkTGlzdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHJlbW92
ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJlYWRpZWRDZWxsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUu
YXBwZW5kKHJlbW92ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gIWJ1Y2tldC52YWx1ZS5zaXplKCk7CisgICAgfSk7CisKKyAgICBpZiAo
IXZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29yayh0aGlzKSAmJiAocmVhZGllZENl
bGwgfHwgZGVhZENvdW50KE5vTG9ja2luZ05lY2Vzc2FyeSkpKSB7CisgICAgICAgIHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgdGhpcywgeyB9KTsKKyAgICAgICAgQVNT
RVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29yayh0aGlzKSk7CisgICAgICAg
IHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHRoaXMsIFt0aGlzXSB7Cisg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAg
ICAgICB0aGlzLT5ydW5GaW5hbGl6YXRpb25DbGVhbnVwKGdsb2JhbE9iamVjdCk7CisgICAgICAg
ICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+Y2FuY2VsUGVuZGluZ1dvcmsodGhpcyk7CisgICAg
ICAgIH0pOworICAgIH0KK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpydW5GaW5h
bGl6YXRpb25DbGVhbnVwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIHdoaWxlIChKU1ZhbHVlIHZhbHVlID0gdGFrZURlYWRIb2xkaW5n
c1ZhbHVlKCkpIHsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAg
YXJncy5hcHBlbmQodmFsdWUpOworICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgY2FsbGJhY2so
KSwgYXJncywgIlRoaXMgc2hvdWxkIG5vdCBiZSB2aXNpYmxlOiBwbGVhc2UgcmVwb3J0IGEgYnVn
IHRvIGJ1Z3Mud2Via2l0Lm9yZyIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIH0KK30KKworSlNWYWx1ZSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp0
YWtlRGVhZEhvbGRpbmdzVmFsdWUoKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Vs
bExvY2soKSk7CisgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgaWYgKG1fbm9VbnJlZ2lzdHJhdGlv
bkRlYWQuc2l6ZSgpKQorICAgICAgICByZXN1bHQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnRh
a2VMYXN0KCkuZ2V0KCk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fZGVhZFJl
Z2lzdHJhdGlvbnMuYmVnaW4oKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9kZWFkUmVnaXN0cmF0
aW9ucy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIEFTU0VS
VChpdGVyLT52YWx1ZS5zaXplKCkpOworICAgICAgICByZXN1bHQgPSBpdGVyLT52YWx1ZS50YWtl
TGFzdCgpLmdldCgpOworICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLnNpemUoKSkKKyAgICAgICAg
ICAgIG1fZGVhZFJlZ2lzdHJhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0KKworICAgIGlmIGNv
bnN0ZXhwciAoQVNTRVJUX0VOQUJMRUQpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVy
IDogbV9kZWFkUmVnaXN0cmF0aW9ucykKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIu
dmFsdWUuc2l6ZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0KFZNJiB2bSwgSlNPYmplY3QqIHRh
cmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbikKK3sKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIFJlZ2lzdHJhdGlvbiByZWdpc3RyYXRpb247
CisgICAgcmVnaXN0cmF0aW9uLnRhcmdldCA9IHRhcmdldDsKKyAgICByZWdpc3RyYXRpb24uaG9s
ZGluZ3Muc2V0V2l0aG91dFdyaXRlQmFycmllcihob2xkaW5ncyk7CisgICAgaWYgKHRva2VuLmlz
VW5kZWZpbmVkKCkpCisgICAgICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuYXBwZW5kKFdURk1v
dmUocmVnaXN0cmF0aW9uKSk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9s
aXZlUmVnaXN0cmF0aW9ucy5hZGQoanNTZWN1cmVDYXN0PEpTT2JqZWN0Kj4odm0sIHRva2VuKSwg
TGl2ZVJlZ2lzdHJhdGlvbnMoKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBw
ZW5kKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgfQorICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKHRoaXMpOworfQorCitib29sIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnVucmVnaXN0ZXIo
Vk0mLCBKU09iamVjdCogdG9rZW4pCit7CisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3cml0ZSBi
YXJyaWVyIG91cnNlbHZlcyBoZXJlIGJlY2F1c2Ugd2Ugd2lsbCBvbmx5IHBvaW50IHRvIGxlc3Mg
dGhpbmdzIGFmdGVyIHRoaXMgZmluaXNoZXMuCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhj
ZWxsTG9jaygpKTsKKyAgICBib29sIHJlc3VsdCA9IG1fbGl2ZVJlZ2lzdHJhdGlvbnMucmVtb3Zl
KHRva2VuKTsKKyAgICByZXN1bHQgfD0gbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUodG9rZW4p
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc2l6ZV90IEpTRmluYWxpemF0aW9uUmVnaXN0
cnk6OmxpdmVDb3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKQoreworICAgIHNpemVfdCBj
b3VudCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuc2l6ZSgpOworICAgIGZvciAoY29uc3QgYXV0
byYgaXRlciA6IG1fbGl2ZVJlZ2lzdHJhdGlvbnMpCisgICAgICAgIGNvdW50ICs9IGl0ZXIudmFs
dWUuc2l6ZSgpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitzaXplX3QgSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6ZGVhZENvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7CisgICAg
c2l6ZV90IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5zaXplKCk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBpdGVyIDogbV9kZWFkUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291bnQgKz0g
aXRlci52YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK1N0cmluZyBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNDOjpKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KikKK3sKKyAgICByZXR1cm4gIk9iamVjdCJfczsKK30KKworfQorCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVn
aXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVn
aXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zOTA1MWJmYTBhOGM2NzYzOGYwMzExNzRjNDNiMDY1YjQxMjZh
MjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZUludGVy
bmFsRmllbGRPYmplY3RJbXBsPDE+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNEZXN0
cnVjdGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwxPjsKKworICAgIGVudW0gY2xhc3MgRmll
bGQgOiB1aW50OF90IHsgCisgICAgICAgIENhbGxiYWNrLAorICAgIH07CisKKyAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksIGlubGluZUNhcGFjaXR5
ID09IDBVKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3Mg
bW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7
CisgICAgICAgIHJldHVybiB2bS5maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlPG1vZGU+KCk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNWYWx1ZSwgbnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkcz4gaW5pdGlhbFZhbHVlcygpCisgICAgeworICAgICAgICByZXR1cm4geyB7CisgICAgICAg
ICAgICBqc051bGwoKSwKKyAgICAgICAgfSB9OworICAgIH0KKworICAgIGNvbnN0IFdyaXRlQmFy
cmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1cm4g
QmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1
cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQor
CisgICAgSlNPYmplY3QqIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0
Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6Q2FsbGJhY2spLmdldCgpKTsgfQorCisgICAgc3RhdGlj
IEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0
KiBjYWxsYmFjayk7CisgICAgc3RhdGljIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGNyZWF0ZVdp
dGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7
CisKKyAgICB2b2lkIHJ1bkZpbmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqKTsKKwor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBKU1ZhbHVl
IHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpOworCisgICAgYm9vbCB1bnJlZ2lzdGVyKFZNJiwgSlNP
YmplY3QqIHRva2VuKTsKKyAgICAvLyB0b2tlbiBzaG91bGQgYmUgYSBKU09iamVjdCBvciB1bmRl
ZmluZWQuCisgICAgdm9pZCByZWdpc3RlclRhcmdldChWTSYsIEpTT2JqZWN0KiB0YXJnZXQsIEpT
VmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9rZW4pOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGxpdmVDb3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3QgZGVhZENvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOwor
Citwcml2YXRlOgorICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVj
dCogY2FsbGJhY2spOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopOworCisgICAgc3RydWN0IFJlZ2lzdHJhdGlvbiB7Cisg
ICAgICAgIEpTT2JqZWN0KiB0YXJnZXQ7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBo
b2xkaW5nczsKKyAgICB9OworCisgICAgdXNpbmcgTGl2ZVJlZ2lzdHJhdGlvbnMgPSBWZWN0b3I8
UmVnaXN0cmF0aW9uPjsKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRoZSB0YXJnZXQgYW55bW9yZSBz
aW5jZSB3ZSBrbm93IGl0J3MgZGVhZC4KKyAgICB1c2luZyBEZWFkUmVnaXN0cmF0aW9ucyA9IFZl
Y3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+OworCisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0
IGJvdGhlciBwdXR0aW5nIGEgd3JpdGUgYmFycmllciBvbiB0aGUga2V5IG9yIHRhcmdldCBiZWNh
dXNlIHRoZXkgYXJlIHdlYWtseSByZWZlcmVuY2VkLgorICAgIEhhc2hNYXA8SlNPYmplY3QqLCBM
aXZlUmVnaXN0cmF0aW9ucz4gbV9saXZlUmVnaXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPEpTT2Jq
ZWN0KiwgRGVhZFJlZ2lzdHJhdGlvbnM+IG1fZGVhZFJlZ2lzdHJhdGlvbnM7CisgICAgTGl2ZVJl
Z2lzdHJhdGlvbnMgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZTsKKyAgICBEZWFkUmVnaXN0cmF0aW9u
cyBtX25vVW5yZWdpc3RyYXRpb25EZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDNlYTMwZGI5ZTJlNGQ1MzhkYThmMjMyY2Y4OWI5ZTRjOTgyMzcwMDYuLmFmNjY4M2U1Y2Ux
MzNkZWYwYTcwNGQ5NmFkN2M4ZDA3Nzg4NTRlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTYxLDYgKzYxLDggQEAKICNpbmNs
dWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Q
cm90b3R5cGUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCkBA
IC05OSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIKICNpbmNsdWRlICJKU0Rh
dGFWaWV3UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0z
ODcsNiArMzkwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmpl
Y3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVM
b2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisg
ICAgbnVsbHB0ciwgLy8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAogICAgIG51
bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1p
bmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpAQCAtMjE5OSw2ICsyMjAz
LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKFJlZjxNaWNyb3Rhc2s+
JiYgdGFzaykKICAgICB2bSgpLnF1ZXVlTWljcm90YXNrKCp0aGlzLCBXVEZNb3ZlKHRhc2spKTsK
IH0KIAordm9pZCBKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGRhdGFM
b2dMbigiVW5jYXVnaHQgRXhjZXB0aW9uIGF0IHJ1biBsb29wOiAiLCBleGNlcHRpb24tPnZhbHVl
KCkpOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXREZWJ1Z2dlcihEZWJ1Z2dlciogZGVi
dWdnZXIpCiB7CiAgICAgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZGRjMzBiODJlNTU4Mzg3YjA3
N2U2ZDljYmQxN2UzNmFiMjAzMTRjMS4uNDc0ZmRlNjRmZjZjYWUyODNlOTllNDZlZWM4MDUwODFi
YzBmOWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0xMzgsNiArMTM4LDggQEAgY29uc3RleHByIGJvb2wgdHlwZUV4cG9zZWRCeURl
ZmF1bHQgPSB0cnVlOwogICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlzZSwgcHJvbWlzZSwgSlNQ
cm9taXNlLCBQcm9taXNlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFj
cm8oQmlnSW50LCBiaWdJbnQsIGJpZ0ludE9iamVjdCwgQmlnSW50T2JqZWN0LCBCaWdJbnQsIG9i
amVjdCwgT3B0aW9uczo6dXNlQmlnSW50KCkpIFwKICAgICBtYWNybyhXZWFrT2JqZWN0UmVmLCB3
ZWFrT2JqZWN0UmVmLCB3ZWFrT2JqZWN0UmVmLCBKU1dlYWtPYmplY3RSZWYsIFdlYWtSZWYsIG9i
amVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXAorICAgIG1hY3JvKEZpbmFsaXphdGlvblJl
Z2lzdHJ5LCBmaW5hbGl6YXRpb25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnksIEZpbmFsaXphdGlvblJlZ2lzdHJ5LCBvYmplY3QsIE9wdGlvbnM6
OnVzZVdlYWtSZWZzKCkpIFwKKwogCiAjZGVmaW5lIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9J
VEVSQVRPUl9UWVBFKG1hY3JvKSBcCiAgICAgbWFjcm8oU3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0
ZXJhdG9yLCBzdHJpbmdJdGVyYXRvciwgSlNTdHJpbmdJdGVyYXRvciwgU3RyaW5nSXRlcmF0b3Is
IGl0ZXJhdG9yLCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCkgXApAQCAtMjI3LDYgKzIyOSw5IEBAIHN0
cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiB2b2lkICgqUHJvbWlz
ZVJlamVjdGlvblRyYWNrZXJQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNQcm9taXNlKiwgSlNQcm9t
aXNlUmVqZWN0aW9uT3BlcmF0aW9uKTsKICAgICBQcm9taXNlUmVqZWN0aW9uVHJhY2tlclB0ciBw
cm9taXNlUmVqZWN0aW9uVHJhY2tlcjsKIAorICAgIHR5cGVkZWYgdm9pZCAoKlJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7
CisgICAgUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0ciByZXBvcnRVbmNhdWdo
dEV4Y2VwdGlvbkF0RXZlbnRMb29wOworCiAgICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZhdWx0TGFu
Z3VhZ2VGdW5jdGlvblB0cikoKTsKICAgICBEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0ciBkZWZh
dWx0TGFuZ3VhZ2U7CiAKQEAgLTQ1MywyMSArNDU4LDYgQEAgcHVibGljOgogICAgIFdlYWtSYW5k
b20gbV93ZWFrUmFuZG9tOwogICAgIFJlZ0V4cEdsb2JhbERhdGEgbV9yZWdFeHBHbG9iYWxEYXRh
OwogCi0gICAgSlNDYWxsZWUqIHN0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlLmdldCgpOyB9Ci0KLSAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hw
b2ludFNldCYgbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21h
cEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNl
dCYgc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFw
U2V0V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwU2V0V2F0Y2hwb2ludFNldDsgfQotICAg
IElubGluZVdhdGNocG9pbnRTZXQmIHNldEFkZFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3Nl
dEFkZFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheVNwZWNp
ZXNXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0OyB9
Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlKb2luV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQm
IG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCgpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVChPcHRpb25zOjp1c2VKSVQoKSk7Ci0gICAgICAgIHJldHVybiBtX251bWJlclRvU3RyaW5n
V2F0Y2hwb2ludFNldDsKLSAgICB9CiAgICAgLy8gSWYgdGhpcyBoYXNuJ3QgYmVlbiBpbnZhbGlk
YXRlZCwgaXQgbWVhbnMgdGhlIGFycmF5IGl0ZXJhdG9yIHByb3RvY29sCiAgICAgLy8gaXMgbm90
IG9ic2VydmFibGUgdG8gdXNlciBjb2RlIHlldC4KICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1f
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsKQEAgLTQ5NCw2ICs0ODQsMjMgQEAg
cHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBv
aW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQ7CiAKK3B1YmxpYzoKKyAgICBKU0NhbGxlZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2Fs
bGVlKCkgY29uc3QgeyByZXR1cm4gbV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0K
KworICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0K
KyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0JiBzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsg
cmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBtYXBTZXRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRj
aHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9p
bnRTZXQmIGFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5U3BlY2ll
c1dhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUpvaW5XYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OyB9CisgICAgSW5s
aW5lV2F0Y2hwb2ludFNldCYgbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0KCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKKyAgICAgICAgcmV0dXJu
IG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0OworICAgIH0KKwogICAgIGJvb2wgaXNBcnJh
eVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAgIGJv
b2wgaXNNYXBQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsK
ICAgICBib29sIGlzU2V0UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZh
YmxlKCk7CkBAIC04MjQsNiArODMxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VW5oYW5kbGVk
UmVqZWN0aW9uQ2FsbGJhY2soVk0mIHZtLCBKU09iamVjdCogZnVuY3Rpb24pIHsgbV91bmhhbmRs
ZWRSZWplY3Rpb25DYWxsYmFjay5zZXQodm0sIGZ1bmN0aW9uKTsgfQogICAgIEpTT2JqZWN0KiB1
bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5oYW5kbGVkUmVq
ZWN0aW9uQ2FsbGJhY2suZ2V0KCk7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0
RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKwogICAg
IEpTT2JqZWN0KiBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hcnJh
eUJ1ZmZlclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQogCiAgICAgSlNPYmplY3QqIGFy
cmF5QnVmZmVyUHJvdG90eXBlKEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFs
RmllbGRPYmplY3RJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsLmgKaW5kZXggZTI1N2ExZGY2MDBiMmE4ZWQ0NzViN2U4OTM2ZTg0
Y2E0ODViMjViMS4uNmYwNzgxMGVlMDY2NDFkNDA0MjM5YzM0NDJlOTAxMzExYmU4OGU0NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwuaApAQCAtMzAsMTIgKzMwLDExIEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Ly8gVGhpcyBpcyB1c2VkIGZvciBzaGFyaW5nIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24u
IEl0IHNob3VsZCBub3QgaGF2ZSBpdHMgb3duIGNsYXNzSW5mby4KLXRlbXBsYXRlPHVuc2lnbmVk
IHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAxPgotY2xhc3MgSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3RlbXBsYXRlPHVuc2lnbmVk
IHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAxLCB0eXBlbmFtZSBCYXNlID0gSlNOb25G
aW5hbE9iamVjdD4KK2NsYXNzIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgOiBwdWJsaWMgQmFz
ZSB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAot
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IHBhc3NlZE51bWJlck9mSW50ZXJuYWxG
aWVsZHM7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CkBAIC03Niw0ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4g
bV9pbnRlcm5hbEZpZWxkc1tudW1iZXJPZkludGVybmFsRmllbGRzXSB7IH07CiB9OwogCit0ZW1w
bGF0ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzID0gMT4KK3VzaW5nIEpT
RGVzdHJ1Y3RpYmxlSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgPSBKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
PjsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaApp
bmRleCA4ZjAzYzhhNmRiMWJkNTc1MGU2ODU5OGUyMWM5YWUxYjMxM2M4NWUxLi5lNmE2MWUxZDli
ZDQxYjM5YmJhNjA5MzdmZTg1ZGE5YjE4NGZkOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJ
bmxpbmVzLmgKQEAgLTI5LDExICsyOSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxh
dGU8dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz4KLXZvaWQgSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDxwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzPjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordGVtcGxhdGU8dW5zaWdu
ZWQgcGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcywgdHlwZW5hbWUgQmFzZT4KK3ZvaWQgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzLCBCYXNl
Pjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCo+
KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIEJhc2U6OmluZm8o
KSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2ludGVybmFsRmllbGRzLCBudW1iZXJP
ZkludGVybmFsRmllbGRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2UuY3BwCmluZGV4IDg4MzA4M2VjYjc2N2QwODgzZjlhNDkyMWYzOTlmNTkwODgxM2NmZGYu
LjRmMzRiNmI0OWNhODllNjY4Y2I5YTI2NzEwMzIzY2FlMTc4NjRiNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAj
aW5jbHVkZSAiSlNQcm9taXNlLmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNs
dWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCi0jaW5jbHVkZSAiUHJv
bWlzZVRpbWVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9p
ZCBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5jdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPnJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywgdmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIH0KLSAgICB2
bS5wcm9taXNlVGltZXItPmNhbmNlbFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAgIHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9pZCBKU1Byb21p
c2U6OnJlamVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0KEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBjYWxs
RnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5yZWplY3RQcm9taXNl
RnVuY3Rpb24oKSwgdGhpcywgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNhbmNlbFBlbmRpbmdQ
cm9taXNlKHRoaXMpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29y
ayh0aGlzKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnJlamVjdEFzSGFuZGxlZChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZWZkMmIwMDg0MzAyNjI2MTg1OTgxOTU4OWY3ODRjYmJkMzYzZDA1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgotCi0jaW5j
bHVkZSAiSlNQcm9taXNlLmgiCi0jaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUg
IlZNLmgiCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLW5h
bWVzcGFjZSBQcm9taXNlVGltZXJJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOwotfQotCi1Qcm9taXNlVGltZXI6OlByb21pc2VUaW1lcihWTSYgdm0pCi0g
ICAgOiBCYXNlKHZtKQotewotfQotCi12b2lkIFByb21pc2VUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkK
LXsKLSAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
bV90YXNrTG9jay5sb2NrKCk7Ci0gICAgY2FuY2VsVGltZXIoKTsKLSAgICBpZiAoIW1fcnVuVGFz
a3MpIHsKLSAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbdGlj
a2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUxhc3QoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJv
bWlzZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJh
d1BvaW50ZXIodGlja2V0KSk7Ci0KLSAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5j
ZWxlZCB0aGVzZSBwcm9taXNlcy4KLSAgICAgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmNvbnRh
aW5zKHRpY2tldCkpIHsKLSAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8g
c2NoZWR1bGUgd29yay4KLSAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVl
OwotICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCi0KLSAgICAgICAgICAgIHRhc2so
KTsKLSAgICAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOwotCi0gICAgICAgICAgICBtX3Rh
c2tMb2NrLmxvY2soKTsKLSAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5
KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkKLSAgICAgICAg
UnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKLQotICAgIG1fdGFza0xvY2sudW5sb2NrKCk7Ci19
Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpydW5SdW5Mb29wKCkKLXsKLSAgICBBU1NFUlQoIW1fYXBp
TG9jay0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJU
KCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKLSAg
ICBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoID0gdHJ1ZTsKLSAgICBp
ZiAobV9wZW5kaW5nUHJvbWlzZXMuc2l6ZSgpKQotICAgICAgICBSdW5Mb29wOjpydW4oKTsKLX0K
LQotdm9pZCBQcm9taXNlVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKFZNJiB2bSwgSlNQcm9taXNl
KiB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCi17Ci0gICAg
QVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIEFTU0VS
VChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKLQotICAgIGF1dG8gcmVzdWx0ID0g
bV9wZW5kaW5nUHJvbWlzZXMuYWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PigpKTsK
LSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlz
ZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTogIiwg
UmF3UG9pbnRlcih0aWNrZXQpKTsKLSAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8
SlNDZWxsPih2bSwgdGlja2V0KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBX
VEZNb3ZlKGRlcGVuZGVuY2llcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYo
UHJvbWlzZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBm
b3IgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsKLSAgICB9Ci19Ci0KLWJvb2wg
UHJvbWlzZVRpbWVyOjpoYXNQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCkKLXsKLSAg
ICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwot
ICAgIHJldHVybiBtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0aWNrZXQpOwotfQotCi1ib29s
IFByb21pc2VUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0
aWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdQcm9t
aXNlcy5jb250YWlucyh0aWNrZXQpKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJv
bWlzZXMuZ2V0KHRpY2tldCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5
KTsKLX0KLQotYm9vbCBQcm9taXNlVGltZXI6OmNhbmNlbFBlbmRpbmdQcm9taXNlKEpTUHJvbWlz
ZSogdGlja2V0KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5yZW1v
dmUodGlja2V0KTsKLQotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIGRhdGFMb2dMbklmKFByb21p
c2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50
ZXIodGlja2V0KSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFByb21pc2VUaW1l
cjo6c2NoZWR1bGVXb3JrU29vbihKU1Byb21pc2UqIHRpY2tldCwgVGFzayYmIHRhc2spCi17Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7Ci0gICAgbV90YXNrcy5hcHBlbmQoc3Rk
OjptYWtlX3R1cGxlKHRpY2tldCwgV1RGTW92ZSh0YXNrKSkpOwotICAgIGlmICghaXNTY2hlZHVs
ZWQoKSAmJiAhbV9jdXJyZW50bHlSdW5uaW5nVGFzaykKLSAgICAgICAgc2V0VGltZVVudGlsRmly
ZSgwX3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvbWlzZVRpbWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNh
NGQwZjI5YWUyZDI4Y2YzZTQwNGJlZmI1NDZmNTNjZDBiYmFlOWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvbWlzZVRpbWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJKU1J1bkxvb3BUaW1lci5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgotCi0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTUHJvbWlzZTsKLWNsYXNzIFZN
OwotY2xhc3MgSlNDZWxsOwotCi1jbGFzcyBQcm9taXNlVGltZXIgZmluYWwgOiBwdWJsaWMgSlNS
dW5Mb29wVGltZXIgewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsK
LQotICAgIHZvaWQgZG9Xb3JrKFZNJikgZmluYWw7Ci0KLSAgICB2b2lkIGFkZFBlbmRpbmdQcm9t
aXNlKFZNJiwgSlNQcm9taXNlKiwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2ll
cyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQZW5kaW5nUHJvbWlzZShKU1Byb21p
c2UqIHRpY2tldCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNEZXBlbmRhbmN5SW5Q
ZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKLSAg
ICAvLyBKU1Byb21pc2Ugc2hvdWxkIGhhbmRsZSBjYW5jZWxpbmcgd2hlbiB0aGUgcHJvbWlzZSBp
cyByZXNvbHZlZCBvciByZWplY3RlZC4KLSAgICBib29sIGNhbmNlbFBlbmRpbmdQcm9taXNlKEpT
UHJvbWlzZSopOwotCi0gICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdm9p
ZCBzY2hlZHVsZVdvcmtTb29uKEpTUHJvbWlzZSosIFRhc2smJik7Ci0KLSAgICB2b2lkIHN0b3BS
dW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBmYWxzZTsgfQotCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBydW5SdW5Mb29wKCk7Ci0KLSAgICBzdGF0aWMgUmVmPFByb21pc2VUaW1lcj4g
Y3JlYXRlKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb21p
c2VUaW1lcih2bSkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBQcm9taXNlVGltZXIoVk0mKTsK
LQotICAgIEhhc2hNYXA8SlNQcm9taXNlKiwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+Pj4gbV9wZW5k
aW5nUHJvbWlzZXM7Ci0gICAgTG9jayBtX3Rhc2tMb2NrOwotICAgIGJvb2wgbV9ydW5UYXNrcyB7
IHRydWUgfTsKLSAgICBib29sIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5p
c2ggeyBmYWxzZSB9OwotICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07
Ci0gICAgVmVjdG9yPHN0ZDo6dHVwbGU8SlNQcm9taXNlKiwgVGFzaz4+IG1fdGFza3M7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHAKaW5kZXggYWNiMzRjOWQzZGIyNmU1OGE2MWZmZGIzMTcx
N2E1MWU2ODMxZmM1ZC4uMzg1N2I3NTBlMjJiZjc5MjZkMGVjZjNkNDc5NjIwOTg1NDVkN2QzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHAKQEAgLTMyLDYgKzMyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgVVNFKEpTVkFM
VUU2NCkKIAorbmFtZXNwYWNlIFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbCB7Citib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KKwogU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgpCiAg
ICAgOiBtX3RhYmxlKG1ha2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4oc19pbml0aWFs
U2l6ZSkpCiAgICAgLCBtX3NpemUoMSkKQEAgLTE2MSwxMSArMTY1LDE0IEBAIFN0cnVjdHVyZUlE
IFN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
dGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMgPSBlbmNvZGUoc3Ry
dWN0dXJlLCByZXN1bHQpOwogICAgIG1fc2l6ZSsrOwogICAgIEFTU0VSVCghaXNOdWtlZChyZXN1
bHQpKTsKKworICAgIGRhdGFMb2dMbklmKFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbDo6dmVyYm9z
ZSwgIkFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCByZXN1bHQsICIgZm9yIFN0cnVjdHVyZSAiLCBS
YXdQb2ludGVyKHN0cnVjdHVyZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgU3Ry
dWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmVJRCBzdHJ1Y3R1cmVJRCkKIHsKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1cmVJRFRhYmxlSW50
ZXJuYWw6OnZlcmJvc2UsICJEZWFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCBzdHJ1Y3R1cmVJRCk7
CiAgICAgQVNTRVJUKHN0cnVjdHVyZUlEICE9IHNfdW51c2VkSUQpOwogICAgIHVpbnQzMl90IHN0
cnVjdHVyZUluZGV4ID0gc3RydWN0dXJlSUQgPj4gc19udW1iZXJPZkVudHJvcHlCaXRzOwogICAg
IEFTU0VSVChzdHJ1Y3R1cmVJbmRleCAmJiBzdHJ1Y3R1cmVJbmRleCA8IHNfbWF4aW11bU51bWJl
ck9mU3RydWN0dXJlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOGNh
YTQ4YzFiZTMxMWI1ZDg3ZTg2MDM4YmEwZjQwNDE4Mzg4OGMyYS4uNzgzNmY3M2U5M2FmNDI0MjE3
NzI1NDY1YjdiMWMyZjdkYzIwZjJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIK
KyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkVy
cm9ySW5zdGFuY2UuaCIKQEAgLTg4LDYgKzg5LDcgQEAKICNpbmNsdWRlICJKU0NhbGxlZS5oIgog
I2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9u
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMTMz
LDcgKzEzNSw2IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBy
b2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgotI2luY2x1
ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAj
aW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50
LmgiCkBAIC0zNjUsNyArMzY2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCBjbGll
bnREYXRhKG51bGxwdHIpCiAgICAgLCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BD
YWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQotICAgICwgcHJvbWlzZVRpbWVyKFByb21p
c2VUaW1lcjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVk
V29ya1RpbWVyOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBl
ID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBB
dG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0
eUxpc3QobmV3IEFyZ0xpc3QpCkBAIC01NzUsNyArNTc2LDcgQEAgVk06On5WTSgpCiAgICAgYXV0
byBkZXN0cnVjdGlvbkxvY2tlciA9IGhvbGRMb2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQoKSk7
CiAgICAgCiAgICAgR2lnYWNhZ2U6OnJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmlt
aXRpdmVHaWdhY2FnZURpc2FibGVkQ2FsbGJhY2ssIHRoaXMpOwotICAgIHByb21pc2VUaW1lci0+
c3RvcFJ1bm5pbmdUYXNrcygpOworICAgIGRlZmVycmVkV29ya1RpbWVyLT5zdG9wUnVubmluZ1Rh
c2tzKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChXYXNtOjpXb3JrbGlzdCog
d29ya2xpc3QgPSBXYXNtOjpleGlzdGluZ1dvcmtsaXN0T3JOdWxsKCkpCiAgICAgICAgIHdvcmts
aXN0LT5zdG9wQWxsUGxhbnNGb3JDb250ZXh0KHdhc21Db250ZXh0KTsKQEAgLTE0ODcsNiArMTQ4
OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3Bh
Y2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUuZ2V0KCksCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNXaXRoU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVj
dFNwYWNlLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25I
ZWFwQ2VsbFR5cGUuZ2V0KCksIE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEw
YjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDYwZjU5NzI5ZmVjMmUwMmU2OTc2
YzMxZWQ1MWIxNDhhNWM2ZWFhMDUuLjM3YzBmZmM5NjQ3NzZlNDhiNjJmZjFhNjY2ZTBhODM2OWFi
ZWZjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTU5LDcgKzE1OSw3IEBA
IGNsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiBjbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbjsKLWNs
YXNzIFByb21pc2VUaW1lcjsKK2NsYXNzIERlZmVycmVkV29ya1RpbWVyOwogY2xhc3MgUmVnRXhw
OwogY2xhc3MgUmVnRXhwQ2FjaGU7CiBjbGFzcyBSZWdpc3RlcjsKQEAgLTU1MCw2ICs1NTAsNyBA
QCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtP
YmplY3RSZWZTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdl
YWtTZXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtN
YXBTcGFjZSkKQEAgLTcwOSw4ICs3MTAsOCBAQCBwdWJsaWM6CiAgICAgV2VhazxOYXRpdmVFeGVj
dXRhYmxlPiBtX3Nsb3dCb3VuZEV4ZWN1dGFibGU7CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxl
PiBtX3Nsb3dDYW5Db25zdHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CiAKLSAgICBSZWY8UHJvbWlzZVRp
bWVyPiBwcm9taXNlVGltZXI7Ci0gICAgCisgICAgUmVmPERlZmVycmVkV29ya1RpbWVyPiBkZWZl
cnJlZFdvcmtUaW1lcjsKKwogICAgIEpTQ2VsbCogY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFj
a09iamVjdDsKICAgICBjb25zdCBDbGFzc0luZm8qIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJh
Y2tPYmplY3RDbGFzc0luZm8geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKaW5kZXggNWRhNjk2ZDY5N2RkNDc1MDVkN2Rj
NTJiNjA2ZTMxNzc0YTRlMjY1ZC4uYWY0MmQ4ZDU3MDlmMjA2YTdhNzg3MDhmNjVkN2U1MGI1NThl
NjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1Rp
bWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGluZXMuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAj
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBzdGF0aWMgdm9p
ZCB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwog
ICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkp
OwogCi0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwg
V1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVu
ZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNt
OjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSks
IGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBn
bG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3Vs
dCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihw
cm9taXNlLCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCks
ICZ2bV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVs
ZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEpTVmFsdWUgbW9kdWxlID0gSlNX
ZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CkBAIC0yMTQsMTEgKzIx
NCwxMSBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlzZQogICAgIC8vIFRoZSBpbnN0YW5jZSBrZWVw
cyB0aGUgbW9kdWxlIGFsaXZlLgogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2Vs
bD4odm0sIGluc3RhbmNlKSk7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxs
Pih2bSwgaW1wb3J0T2JqZWN0KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJv
bWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5j
aWVzKSk7CiAgICAgLy8gTm90ZTogVGhpcyBjb21wbGV0aW9uIHRhc2sgbWF5IG9yIG1heSBub3Qg
Z2V0IGNhbGxlZCBpbW1lZGlhdGVseS4KICAgICBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVBc3lu
Yygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksIGNyZWF0ZVNoYXJlZFRh
c2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbnN0YW5jZSwgbW9k
dWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKFJlZjxX
YXNtOjpDb2RlQmxvY2s+JiYgcmVmQ29kZUJsb2NrKSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRy
PFdhc206OkNvZGVCbG9jaz4gY29kZUJsb2NrID0gV1RGTW92ZShyZWZDb2RlQmxvY2spOwotICAg
ICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2Us
IGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9k
ZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgeworICAg
ICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJv
bWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRp
b25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmds
b2JhbE9iamVjdCgpOwogICAgICAgICAgICAgcmVzb2x2ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9t
aXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGNvZGVCbG9jay5yZWxlYXNlTm9u
TnVsbCgpLCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlKTsKICAgICAgICAgfSk7CkBAIC0yMzMs
MTMgKzIzMywxMyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pcwogICAgIFZlY3RvcjxTdHJvbmc8
SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpT
Q2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25n
PEpTQ2VsbD4odm0sIG1vZHVsZUtleUNlbGwpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBl
bmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3Vy
Y2VCdWZmZXJGcm9tVmFsdWUodm0sIGdsb2JhbE9iamVjdCwgYnVmZmVyKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZSwgcHJvbWlzZSkp
OwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RG
TW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBl
PihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJl
c29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1
bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxs
LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNy
ZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGlt
ZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9k
dWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29s
dmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwg
V1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVs
ZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
IFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5h
cHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwogICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21p
c2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5j
aWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9t
aXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0
ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNr
PFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9i
YWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9t
aXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGlt
ZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAg
ICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpj
cmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1
bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0zMzksNyArMzM5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2Jh
bE9iamVjdCoKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAg
IGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwot
ICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1v
dmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdX
b3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgaWYgKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZykKICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3Ry
ZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBA
IC0zNzIsNyArMzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAg
ICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICAgICAgICAgICAgICBk
ZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBv
cnRPYmplY3QpKTsKLSAgICAgICAgICAgICAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQ
cm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgICAgICAgICAg
ICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RG
TW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xODQ4ODg+IGlmIHRoZXJlJ3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBj
b250YWlucyBhIE1lbW9yeSwgdGhlbiB3ZSBjYW4gY29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhl
IHJpZ2h0IG1lbW9yeSB0eXBlIChmYXN0IG9yIG5vdCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5
J3MgdHlwZS4KICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgaW1wb3J0T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAppbmRleCA0ODk0
OWJmNmVjMjgwZmVmMjczZjA0MDZlZDFjZDEwN2Q5YzU1Y2YyLi44MTdmNzk0NzA2ODM4ZTE4YTQy
MDU5OGIyZTcyODU1Y2EyNWU0ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCkBAIC0yOCw4ICsyOCw4IEBACiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCisjaW5j
bHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKLSNpbmNsdWRl
ICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJXYXNt
Q2FsbGVlLmgiCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgpAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBQbGFuOwogY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBz
dGF0aWMgSlNXZWJBc3NlbWJseUNvZGVCbG9jayogY3JlYXRlKFZNJiwgUmVmPFdhc206OkNvZGVC
bG9jaz4sIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayhWTSYsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYs
IGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJik7CiAgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBkMjhlNTA5ZGIwMWM3MDEwZGQ3N2UyZmViYzM1
Yzc5ODlhZGQ3YTMyLi4wMzllZjgyMzBhODZiNjEzNWNlZWJkZTQzYzNhMTM3MDVkY2Y5N2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CkBAIC0yMzQsNiArMjM0LDExIEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnByb21pc2VSZWpl
Y3Rpb25UcmFja2VyKEpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwKICAgICB9CiB9CiAK
K3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExv
b3AoSlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0
aW9uKQoreworICAgIHJlcG9ydEV4Y2VwdGlvbihqc0dsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsK
K30KKwogSlNET01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgY2xh
c3MgR2V0Q2FsbGVyR2xvYmFsT2JqZWN0RnVuY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBkMjk4NThjZmE0YjBiZTBkNjIxMzkw
YTgzZDc2ZDVhODUwYjlkMjgwLi43Mzg2N2Q2YWIyZTViNGRiYjcwYjcwYTlhMzYwOTQ4NDlmMGNl
ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5j
dGlvbnMmIGJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkludGVy
bmFsRnVuY3Rpb25zOyB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAogcHVibGlj
OgogICAgIH5KU0RPTUdsb2JhbE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggODgzMjEzZTkwNjFmMzhiOGJiNDMzNTc5YjI5
ODYwOTg3Nzg0ZTc4Mi4uYWNlYTc2NmFmMWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBA
IC00OCwxMCArNDgsMTAgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNXZWJBc3NlbWJseS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01pY3JvdGFz
ay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2Uu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNzgsNiArNzgsNyBAQCBjb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVz
LAogICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNr
ZXIsCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1
bHRMYW5ndWFnZSwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgJmNvbXBpbGVTdHJlYW1p
bmcsCkBAIC00NDMsOCArNDQ0LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJl
YW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkoKIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXIt
Pmhhc1BlbmRpbmdQcm9taXNlKHByb21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVy
LT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsK
KyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2Up
KTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRp
bmdXb3JrKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNw
b25zZSA9IEpTRmV0Y2hSZXNwb25zZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAg
IGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3Bv
bnNlLCBwcm9taXNlLCBbcHJvbWlzZV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CkBA
IC00NjEsOSArNDYyLDkgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFt
aW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1Bl
bmRpbmdQcm9taXNlKHByb21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKLSAgICBB
U1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9t
aXNlLCBpbXBvcnRlZE9iamVjdCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+
aGFzUGVuZGluZ1dvcmsocHJvbWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29y
ayhwcm9taXNlLCBpbXBvcnRlZE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25z
ZSA9IEpTRmV0Y2hSZXNwb25zZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhh
bmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNl
LCBwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0ZWRPYmplY3RdIChKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUp
IG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3Rl
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggNDlkZjQzOTA1N2RmNTlkMjk0ZDQ4NGE5NGYyOWI1MjQw
Zjg4NjE4MS4uZGNlNzM4MjBiYmJmZDliOTVjNTg3OWQxM2VmNjVlYWI5OGE5MDQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2Uu
Y3BwCkBAIC00Nyw2ICs0Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTUmVt
b3RlRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9CiAgICAgbnVsbHB0
ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRy
LCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rp
b25UcmFja2VyCisgICAgbnVsbHB0ciwgLy8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNv
bXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCmluZGV4IDUzNzZlODBkMDAwNTM3NzYyNTgyYWEyNWJlOTFkMTJhOGY1OTdlYzQuLmM0
NGYyZmIzYTBiMDVkYWFiMWE4YTllMmY4OWI1MmQ4NTFlYjQzNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAg
LTY1LDYgKzY1LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBt
b2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1v
ZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZy
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2Us
CiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3Rh
bnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCAwOTY1YTg2YzQxOGJlNjFlNjJlMWZm
ZGFjNmNmZThiYWY2YjRkNmVlLi5iMTRiODE1NDJkYjg4OWVjNmQyNTliYzViNzBlZjJhNTA5OWM5
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhv
ZFRhYmwKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVy
dGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VS
ZWplY3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29w
LAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWlu
ZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkz
MWNlZTc3NzliZjk2MTQzOGU4MjAxNTBjN2E3ZjhhYjQ2NzU1NDcuLjcxNmIxYTY5YjhlZWMxZGE2
NDcyMDFhNDMyNjkyYjMzODk3ZWI3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAK
ICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25I
ZWxwZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1l
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJO
CiAKICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsK
ICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAg
ICBwcm9jZXNzVGltZXIobV92bS0+cHJvbWlzZVRpbWVyLnB0cigpKTsKKyAgICBwcm9jZXNzVGlt
ZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OnJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGlt
ZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCkBAIC0yNjUsNyArMjY1LDcg
QEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlv
bihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW0KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFw
LmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVk
ZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGlt
ZXIucHRyKCkpOworICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIo
KSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlND
OjpEZWJ1Z2dlciogZGVidWdnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcAppbmRleCBlYzA3YWM0NjM1MGQyYTM0MjllYTA5ODc0ZTNmZGYyZGZkYTllNDUxLi42NmVj
ZDUzNmY4MTNkMDI5YzQ5N2YxYWVhN2YyMTllZGZjNzViMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJXb3Jr
ZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4K
IAogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPGdsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2YTg4Y2FhMTQ0
YWUyN2ZjN2MxZjJkNWYzM2JjZDEwOGNjMTIwYTllLi4yMGE2Zjg1NjE4NThhZGZiZTJlMmJjMThl
YmY3MTUwYjk3YWQxNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNywxMSArMzcsMTEgQEAKICNpbmNsdWRlICJX
b3JrbGV0Q29uc29sZUNsaWVudC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxl
dGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0
aXZpdHlDYWxsYmFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2
ZTdiYzE3YTM3MDE5ODM1MTY1OTRjNThmNDQ3YWZhOTQ5Y2UyYzYuLjkzMTBhZDM0MGViNDU0ZGM2
ZjgyZWJmZDRjNjkwNmZhZTM0Y2NjMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0x
NyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5h
bGl6YXRpb25yZWdpc3RyeS5qczogQWRkZWQuCisgICAgICAgIChtYWtlV2Vha1JlZik6CisgICAg
ICAgICh0dXJuRXZlbnRMb29wKToKKyAgICAgICAgKGFzeW5jIHRlc3QpOgorICAgICAgICAqIGpz
L3VudGl0bGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9u
cmVnaXN0cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy93ZWFrcmVmLWZpbmFs
aXphdGlvbnJlZ2lzdHJ5Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTA3LTE3ICBLZW5uZXRoIFJ1c3Nl
bGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJHTDJdIFJlYWRQaXhlbHMgdXBk
YXRlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmlu
YWxpemF0aW9ucmVnaXN0cnkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3Jl
Zi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDY2NTNiYTkwOWMxYjJkYzhk
YWUwMWQxMDJlYTQ5M2ViNjk4OWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMKQEAgLTAsMCArMSw0
OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPXRydWUiKQorCithc3luY1Rl
c3RTdGFydCgxKTsKK3ZhciBvYmplY3RzID0gW107Cit2YXIgd2Vha1JlZnMgPSBbXTsKK3ZhciBm
aW5hbGl6ZXJDYWxsZWQgPSBmYWxzZTsKK3ZhciBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiBmaW5hbGl6ZXJDYWxsZWQgPSB0cnVlKTsKK2Z1bmN0
aW9uIG1ha2VXZWFrUmVmKCkgeyByZXR1cm4gbmV3IFdlYWtSZWYoeyBmb286IDEgfSk7IH0KK25v
SW5saW5lKG1ha2VXZWFrUmVmKTsKKworbGV0IGxvb3BDb3VudCA9IDEwMDA7CitmdW5jdGlvbiB0
dXJuRXZlbnRMb29wKCkgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
KSB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZ2MoKTsKKyAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfSk7Cit9CisKK3ZhciBpOwor
YXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvb3BDb3Vu
dDsgaSsrKSB7CisgICAgICAgIGxldCB3ZWFrID0gbWFrZVdlYWtSZWYoKTsKKyAgICAgICAgd2Vh
a1JlZnMucHVzaCh3ZWFrKTsKKyAgICAgICAgb2JqZWN0cy5wdXNoKHdlYWsuZGVyZWYoKSk7Cisg
ICAgICAgIGZpbmFsaXphdGlvblJlZ2lzdHJ5LnJlZ2lzdGVyKHdlYWsuZGVyZWYoKSk7CisgICAg
fQorCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAgc2hvdWxkQmVGYWxzZShgZmlu
YWxpemVyQ2FsbGVkYCk7CisgICAgZm9yIChpID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKQorICAg
ICAgICBzaG91bGRCZShgd2Vha1JlZnNbaV0uZGVyZWYoKWAsIGBvYmplY3RzW2ldYCk7CisKKyAg
ICBvYmplY3RzLmxlbmd0aCA9IDA7CisgICAgb2JqZWN0cyA9IG51bGw7CisKKyAgICBhd2FpdCB0
dXJuRXZlbnRMb29wKCk7CisgICAgLy8gV2UgbmVlZCB0byB0dXJuIHRoZSBldmVudCBsb29wIGFn
YWluIHNpbmNlIEZSIG1heSBub3QgaGF2ZSBjYWxsZWQgdGhlIGNhbGxiYWNrIGluIHRoZSBsYXN0
IHR1cm4uCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAgc2hvdWxkQmVUcnVlKGBm
aW5hbGl6ZXJDYWxsZWRgKTsKKyAgICBzaG91bGRCZVRydWUoYHdlYWtSZWZzLnNvbWUoKHdlYWtS
ZWYpID0+IHdlYWtSZWYuZGVyZWYoKSA9PT0gbnVsbClgKTsKKworICAgIGFzeW5jVGVzdFBhc3Nl
ZCgpOworfQorCit0ZXN0KCkuY2F0Y2goZSA9PiBkZWJ1ZyhlKSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy91bnRpdGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYzBlMWNiNzA1YTlkNzc5MDgwNGM2OTg1MjdjODQzMjEzZDRhZDZmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dl
YWtyZWYtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3Ry
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNjYTY1YzM4ZDI0ODJlN2YyOWRhN2IxNWI2ZWFi
MjYzZjJhMTk0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmlu
YWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAwNyBAQAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGZpbmFsaXpl
ckNhbGxlZCBpcyBmYWxzZQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1MgZmluYWxpemVyQ2FsbGVkIGlzIHRydWUKK1BBU1Mgd2Vha1JlZnMuc29tZSgod2Vh
a1JlZikgPT4gd2Vha1JlZi5kZXJlZigpID09PSBudWxsKSBpcyB0cnVlCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbCBiL0xheW91
dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MWQ3Y2Y0N2Q0YTM0MTY5OGJkMGQ1NWVkNmE4ODkwYmZlNDEyNzQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVl
IF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDE5Yzg1YjYyY2JjMWMwMTYwY2M3OTcxZjcyMzc2YzM5NWM3NGY0ZDUuLjlkZWZhYzRm
Yzc2YjM0YWZhN2E0MzZiNDBjNTA0MWQzNWI2MWExZWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDIwLTA3
LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qczogQWRkZWQuCisgICAgICAgIChNanNVbml0QXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAo
TWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChjYXRj
aCk6CisgICAgICAgIChjbGFzc09mKToKKyAgICAgICAgKFZhbHVlT2YpOgorICAgICAgICAocHJl
dHR5UHJpbnRlZCk6CisgICAgICAgIChwcmV0dHlQcmludGVkQXJyYXlFbGVtZW50KToKKyAgICAg
ICAgKGZhaWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChmb3JtYXRGYWlsdXJlVGV4dCk6CisgICAg
ICAgIChmYWlsKToKKyAgICAgICAgKGRlZXBPYmplY3RFcXVhbHMpOgorICAgICAgICAoZGVlcEVx
dWFscyk6CisgICAgICAgIChhc3NlcnRTYW1lKToKKyAgICAgICAgKGFzc2VydE5vdFNhbWUpOgor
ICAgICAgICAoYXNzZXJ0RXF1YWxzKToKKyAgICAgICAgKGFzc2VydE5vdEVxdWFscyk6CisgICAg
ICAgIChhc3NlcnRFcXVhbHNEZWx0YSk6CisgICAgICAgIChhc3NlcnRBcnJheUVxdWFscyk6Cisg
ICAgICAgIChhc3NlcnRQcm9wZXJ0aWVzRXF1YWwpOgorICAgICAgICAoYXNzZXJ0VG9TdHJpbmdF
cXVhbHMpOgorICAgICAgICAoYXNzZXJ0VHJ1ZSk6CisgICAgICAgIChhc3NlcnRGYWxzZSk6Cisg
ICAgICAgIChhc3NlcnROdWxsKToKKyAgICAgICAgKGFzc2VydE5vdE51bGwpOgorICAgICAgICAo
ZXhlY3V0ZUNvZGUpOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAoYXNzZXJ0
VGhyb3dzKToKKyAgICAgICAgKGFzc2VydFRocm93c0VxdWFscyk6CisgICAgICAgIChhc3NlcnRU
aHJvd3NBc3luYyk6CisgICAgICAgIChhc3NlcnRJbnN0YW5jZW9mKToKKyAgICAgICAgKGFzc2Vy
dERvZXNOb3RUaHJvdyk6CisgICAgICAgIChhc3NlcnRVbnJlYWNoYWJsZSk6CisgICAgICAgIChh
c3NlcnRDb250YWlucyk6CisgICAgICAgIChhc3NlcnRNYXRjaGVzKToKKyAgICAgICAgKGNvbmNh
dGVuYXRlRXJyb3JzKToKKyAgICAgICAgKGFzc2VydFByb21pc2VSZXN1bHQpOgorICAgICAgICAo
T3B0aW1pemF0aW9uU3RhdHVzKToKKyAgICAgICAgKGFzc2VydFVub3B0aW1pemVkKToKKyAgICAg
ICAgKGFzc2VydE9wdGltaXplZCk6CisgICAgICAgIChpc05ldmVyT3B0aW1pemVMaXRlTW9kZSk6
CisgICAgICAgIChpc05ldmVyT3B0aW1pemUpOgorICAgICAgICAoaXNBbHdheXNPcHRpbWl6ZSk6
CisgICAgICAgIChpc0ludGVycHJldGVkKToKKyAgICAgICAgKGlzT3B0aW1pemVkKToKKyAgICAg
ICAgKGlzVHVyYm9GYW5uZWQpOgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBh
cmVTdGFja1RyYWNlKToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVu
dC1yZWFsbS5qczogQWRkZWQuCisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAg
KiBzdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczogQWRkZWQu
CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxp
emF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qczogQWRkZWQuCisgICAgICAgIChUZXN0Q29uc3RydWN0
RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAoVGVzdEZpbmFsaXphdGlvblJlZ2lzdHJ5
Q29uc3RydWN0b3JDYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChUZXN0Q29uc3RydWN0RmluYWxp
emF0aW9uUmVnaXN0cnlDbGVhbnVwTm90Q2FsbGFibGUpOgorICAgICAgICAoVGVzdENvbnN0cnVj
dEZpbmFsaXphdGlvblJlZ2lzdHJ5V2l0aE5vbkNhbGxhYmxlUHJveHlBc0NsZWFudXApOgorICAg
ICAgICAoVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUpOgorICAgICAgICAo
VGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RV
bnJlZ2lzdGVyV2l0aE5vbkV4aXN0ZW50S2V5KToKKyAgICAgICAgKFRlc3RVbnJlZ2lzdGVyV2l0
aE5vbkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RXZWFrUmVmQ29uc3RydWN0
b3JXaXRoTm9uT2JqZWN0KToKKyAgICAgICAgKFRlc3RXZWFrUmVmV2l0aFByb3h5KToKKyAgICAg
ICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanM6IEFkZGVk
LgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAg
ICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpz
OiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1
bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQt
Zm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFu
dXAwKToKKyAgICAgICAgKGxldC5jbGVhbnVwMSk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5j
KToKKyAgICAgICAgKiBzdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lz
dHJpZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRp
bWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFu
dXAuanM6IEFkZGVkLgorICAgICAgICAobGV0LnJlZW50cmFudF9nYyk6CisgICAgICAgIChzZXRU
aW1lb3V0KToKKyAgICAgICAgKiBzdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5
LWRpcnR5LWVucXVldWUuanM6IEFkZGVkLgorICAgICAgICAoaS5yZWdpc3RyaWVzLnB1c2gubmV3
LkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKHJlZ2lzdHJpZXMuZm9yRWFjaCk6Cisg
ICAgICAgICogc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qczogQWRkZWQuCisgICAgICAg
IChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBz
dHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxl
dC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVz
cy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5j
bGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92
OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51
cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5y
ZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXAp
OgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVn
aXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToK
KyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lz
dGVyLW1hbnkuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0
LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2Vu
LmpzOiBBZGRlZC4KKyAgICAgICAgKEZSLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAg
ICAgICh0cnlBZ2Fpbik6CisKIDIwMjAtMDctMTcgIFhhbiBMb3BleiAgPHhhbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIE1hdGgubWF4KCkgY2FuIHlpZWxkIHRoZSB3cm9uZyByZXN1bHQgZm9yIG1h
eCgwLCAtMCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA3NzQ2MWY3NGM5MDIyMzIxZmM2MGU2ODZmNzk1ZDUwZTM5Mjk4MTYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcwpAQCAtMCwwICsxLDgw
OSBAQAorLy8gQ29weXJpZ2h0IDIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8g
ICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAg
ICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBNanNVbml0QXNzZXJ0
aW9uRXJyb3IobWVzc2FnZSkgeworICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworICAvLyBUZW1w
b3JhcmlseSBpbnN0YWxsIGEgY3VzdG9tIHN0YWNrIHRyYWNlIGZvcm1hdHRlciBhbmQgcmVzdG9y
ZSB0aGUKKyAgLy8gcHJldmlvdXMgdmFsdWUuCisgIGxldCBwcmV2UHJlcGFyZVN0YWNrVHJhY2Ug
PSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsKKyAgdHJ5IHsKKyAgICBFcnJvci5wcmVwYXJlU3Rh
Y2tUcmFjZSA9IE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsKKyAgICAv
LyBUaGlzIGFsbG93cyBmZXRjaGluZyB0aGUgc3RhY2sgdHJhY2UgdXNpbmcgVHJ5Q2F0Y2g6OlN0
YWNrVHJhY2UuCisgICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcigiTWpzVW5pdEFzc2VydGlvbkVy
cm9yIikuc3RhY2s7CisgIH0gZmluYWxseSB7CisgICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2Ug
PSBwcmV2UHJlcGFyZVN0YWNrVHJhY2U7CisgIH0KK30KKworLyoKKyAqIFRoaXMgZmlsZSBpcyBp
bmNsdWRlZCBpbiBhbGwgbWluaSBqc3VuaXQgdGVzdCBjYXNlcy4gIFRoZSB0ZXN0CisgKiBmcmFt
ZXdvcmsgZXhwZWN0cyBsaW5lcyB0aGF0IHNpZ25hbCBmYWlsZWQgdGVzdHMgdG8gc3RhcnQgd2l0
aAorICogdGhlIGYtd29yZCBhbmQgaWdub3JlIGFsbCBvdGhlciBsaW5lcy4KKyAqLworCitNanNV
bml0QXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICBy
ZXR1cm4gdGhpcy5tZXNzYWdlICsgIlxuXG5TdGFjazogIiArIHRoaXMuc3RhY2s7Cit9OworCisK
Ky8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgdGhlIHNhbWUgb2JqZWN0cywgb3IgdGhlIHNh
bWUgcHJpbWl0aXZlCisvLyB2YWx1ZXMuCisvLyBGb3Iga25vd24gcHJpbWl0aXZlIHZhbHVlcywg
cGxlYXNlIHVzZSBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0U2FtZTsKKworLy8gSW52ZXJzZSBv
ZiBhc3NlcnRTYW1lLgordmFyIGFzc2VydE5vdFNhbWU7CisKKy8vIEV4cGVjdGVkIGFuZCBmb3Vu
ZCB2YWx1ZXMgYXJlIGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9yIGZ1bmN0aW9ucworLy8g
b3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcgaW50ZXJuYWwgcHJvcGVy
dGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3RzLCB0aGUgZWxlbWVudHMg
b2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFycmF5IG9iamVjdHMpLgor
dmFyIGFzc2VydEVxdWFsczsKKworLy8gRGVlcCBlcXVhbGl0eSBwcmVkaWNhdGUgdXNlZCBieSBh
c3NlcnRFcXVhbHMuCit2YXIgZGVlcEVxdWFsczsKKworLy8gRXhwZWN0ZWQgYW5kIGZvdW5kIHZh
bHVlcyBhcmUgbm90IGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9yIGZ1bmN0aW9ucworLy8g
b3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcgaW50ZXJuYWwgcHJvcGVy
dGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3RzLCB0aGUgZWxlbWVudHMg
b2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFycmF5IG9iamVjdHMpLgor
dmFyIGFzc2VydE5vdEVxdWFsczsKKworLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBleHBlY3Rl
ZCBhbmQgZm91bmQgdmFsdWUgaXMgd2l0aGluIGNlcnRhaW4gdG9sZXJhbmNlLgordmFyIGFzc2Vy
dEVxdWFsc0RlbHRhOworCisvLyBUaGUgZm91bmQgb2JqZWN0IGlzIGFuIEFycmF5IHdpdGggdGhl
IHNhbWUgbGVuZ3RoIGFuZCBlbGVtZW50cworLy8gYXMgdGhlIGV4cGVjdGVkIG9iamVjdC4gVGhl
IGV4cGVjdGVkIG9iamVjdCBkb2Vzbid0IG5lZWQgdG8gYmUgYW4gQXJyYXksCisvLyBhcyBsb25n
IGFzIGl0J3MgImFycmF5LWlzaCIuCit2YXIgYXNzZXJ0QXJyYXlFcXVhbHM7CisKKy8vIFRoZSBm
b3VuZCBvYmplY3QgbXVzdCBoYXZlIHRoZSBzYW1lIGVudW1lcmFibGUgcHJvcGVydGllcyBhcyB0
aGUKKy8vIGV4cGVjdGVkIG9iamVjdC4gVGhlIHR5cGUgb2Ygb2JqZWN0IGlzbid0IGNoZWNrZWQu
Cit2YXIgYXNzZXJ0UHJvcGVydGllc0VxdWFsOworCisvLyBBc3NlcnQgdGhhdCB0aGUgc3RyaW5n
IGNvbnZlcnNpb24gb2YgdGhlIGZvdW5kIHZhbHVlIGlzIGVxdWFsIHRvCisvLyB0aGUgZXhwZWN0
ZWQgc3RyaW5nLiBPbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBwbGVhc2UK
Ky8vIGNoZWNrIHRoZSByZWFsIHN0cnVjdHVyZSBvZiB0aGUgZm91bmQgdmFsdWUuCit2YXIgYXNz
ZXJ0VG9TdHJpbmdFcXVhbHM7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyB0
cnVlLiBVc2Ugd2l0aCBib29sZWFuIGV4cHJlc3Npb25zCisvLyBmb3IgdGVzdHMgdGhhdCBkb2Vz
bid0IGhhdmUgdGhlaXIgb3duIGFzc2VydFhYWCBmdW5jdGlvbi4KK3ZhciBhc3NlcnRUcnVlOwor
CisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgZmFsc2UuCit2YXIgYXNzZXJ0RmFs
c2U7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBudWxsLiBLZXB0IGZvciBo
aXN0b3JpY2FsIGNvbXBhdGliaWxpdHksCisvLyBwbGVhc2UganVzdCB1c2UgYXNzZXJ0RXF1YWxz
KG51bGwsIGV4cGVjdGVkKS4KK3ZhciBhc3NlcnROdWxsOworCisvLyBDaGVja3MgdGhhdCB0aGUg
Zm91bmQgdmFsdWUgaXMgKm5vdCogbnVsbC4KK3ZhciBhc3NlcnROb3ROdWxsOworCisvLyBBc3Nl
cnQgdGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9uIG9yIGV2YWwgY29kZSB0aHJvd3MgYW4gZXhjZXB0
aW9uLgorLy8gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBpcyBhbiBleGNlcHRpb24gY29u
c3RydWN0b3IgdGhhdCB0aGUKKy8vIHRocm93biBleGNlcHRpb24gaXMgY2hlY2tlZCBhZ2FpbnN0
IHdpdGggImluc3RhbmNlb2YiLgorLy8gVGhlIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlzIGEg
bWVzc2FnZSB0eXBlIHN0cmluZyBvciBSZWdFeHAgb2JqZWN0IHRoYXQgaXMKKy8vIGNvbXBhcmVk
IHRvIHRoZSBtZXNzYWdlIG9mIHRoZSB0aHJvd24gZXhjZXB0aW9uLgordmFyIGFzc2VydFRocm93
czsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0
aW9uLgorLy8gVGhlIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3QgdGhlIHNlY29uZCBhcmd1
bWVudCB1c2luZyBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0VGhyb3dzRXF1YWxzOworCisvLyBB
c3NlcnQgdGhhdCB0aGUgcGFzc2VkIHByb21pc2UgZG9lcyBub3QgcmVzb2x2ZSwgYnV0IGV2ZW50
dWFsbHkgdGhyb3dzIGFuCisvLyBleGNlcHRpb24uIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1l
bnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhjZXB0
aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRpb25h
bCB0aGlyZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9iamVj
dCB0aGF0IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4Y2Vw
dGlvbi4KK3ZhciBhc3NlcnRUaHJvd3NBc3luYzsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3Nl
ZCBmdW5jdGlvbiBvciBldmFsIGNvZGUgZG9lcyBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgordmFy
IGFzc2VydERvZXNOb3RUaHJvdzsKKworLy8gQXNzZXJ0cyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBp
cyBhbiBpbnN0YW5jZSBvZiB0aGUgY29uc3RydWN0b3IgcGFzc2VkCisvLyBhcyB0aGUgc2Vjb25k
IGFyZ3VtZW50LgordmFyIGFzc2VydEluc3RhbmNlb2Y7CisKKy8vIEFzc2VydCB0aGF0IHRoaXMg
Y29kZSBpcyBuZXZlciBleGVjdXRlZCAoaS5lLiwgYWx3YXlzIGZhaWxzIGlmIGV4ZWN1dGVkKS4K
K3ZhciBhc3NlcnRVbnJlYWNoYWJsZTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGZ1bmN0aW9uIGNv
ZGUgaXMgKG5vdCkgb3B0aW1pemVkLiAgSWYgIm5vIHN5bmMiIGlzIHBhc3NlZAorLy8gYXMgc2Vj
b25kIGFyZ3VtZW50LCB3ZSBkbyBub3Qgd2FpdCBmb3IgdGhlIGNvbmN1cnJlbnQgb3B0aW1pemF0
aW9uIHRocmVhZCB0bworLy8gZmluaXNoIHdoZW4gcG9sbGluZyBmb3Igb3B0aW1pemF0aW9uIHN0
YXR1cy4KKy8vIE9ubHkgd29ya3Mgd2l0aCAtLWFsbG93LW5hdGl2ZXMtc3ludGF4LgordmFyIGFz
c2VydE9wdGltaXplZDsKK3ZhciBhc3NlcnRVbm9wdGltaXplZDsKKworLy8gQXNzZXJ0IHRoYXQg
YSBzdHJpbmcgY29udGFpbnMgYW5vdGhlciBleHBlY3RlZCBzdWJzdHJpbmcuCit2YXIgYXNzZXJ0
Q29udGFpbnM7CisKKy8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIG1hdGNoZXMgYSBnaXZlbiByZWdl
eC4KK3ZhciBhc3NlcnRNYXRjaGVzOworCisvLyBBc3NlcnQgdGhhdCBhIHByb21pc2UgcmVzb2x2
ZXMgb3IgcmVqZWN0cy4KKy8vIFBhcmFtZXRlcnM6CisvLyB7cHJvbWlzZX0gLSB0aGUgcHJvbWlz
ZQorLy8ge3N1Y2Nlc3N9IC0gb3B0aW9uYWwgLSBhIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3
aXRoIHRoZSByZXN1bHQgb2YgdGhlCisvLyAgICAgICAgICAgICByZXNvbHZpbmcgcHJvbWlzZS4K
Ky8vICB7ZmFpbH0gLSAgIG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0
aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAgcmVqZWN0aW5nIHByb21pc2UuIElm
IHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGJ1dCBubyB7ZmFpbH0KKy8vICAgICAgICAgICAgIGNh
bGxiYWNrIGlzIHNldCwgdGhlIGVycm9yIGlzIHByb3BhZ2F0ZWQgb3V0IG9mIHRoZSBwcm9taXNl
CisvLyAgICAgICAgICAgICBjaGFpbi4KK3ZhciBhc3NlcnRQcm9taXNlUmVzdWx0OworCit2YXIg
cHJvbWlzZVRlc3RDaGFpbjsKK3ZhciBwcm9taXNlVGVzdENvdW50ID0gMDsKKworLy8gVGhlc2Ug
Yml0cyBtdXN0IGJlIGluIHN5bmMgd2l0aCBiaXRzIGRlZmluZWQgaW4gUnVudGltZV9HZXRPcHRp
bWl6YXRpb25TdGF0dXMKK3ZhciBWOE9wdGltaXphdGlvblN0YXR1cyA9IHsKKyAga0lzRnVuY3Rp
b246IDEgPDwgMCwKKyAga05ldmVyT3B0aW1pemU6IDEgPDwgMSwKKyAga0Fsd2F5c09wdGltaXpl
OiAxIDw8IDIsCisgIGtNYXliZURlb3B0ZWQ6IDEgPDwgMywKKyAga09wdGltaXplZDogMSA8PCA0
LAorICBrVHVyYm9GYW5uZWQ6IDEgPDwgNSwKKyAga0ludGVycHJldGVkOiAxIDw8IDYsCisgIGtN
YXJrZWRGb3JPcHRpbWl6YXRpb246IDEgPDwgNywKKyAga01hcmtlZEZvckNvbmN1cnJlbnRPcHRp
bWl6YXRpb246IDEgPDwgOCwKKyAga09wdGltaXppbmdDb25jdXJyZW50bHk6IDEgPDwgOSwKKyAg
a0lzRXhlY3V0aW5nOiAxIDw8IDEwLAorICBrVG9wbW9zdEZyYW1lSXNUdXJib0Zhbm5lZDogMSA8
PCAxMSwKKyAga0xpdGVNb2RlOiAxIDw8IDEyLAorICBrTWFya2VkRm9yRGVvcHRpbWl6YXRpb246
IDEgPDwgMTMsCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1saXRlLW1vZGUgaXMgb24gYW5k
IHdlIGNhbid0IGV2ZXIgdHVybiBvbiBvcHRpbWl6YXRpb24uCit2YXIgaXNOZXZlck9wdGltaXpl
TGl0ZU1vZGU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAtLW5vLW9wdCBtb2RlIGlzIG9uLgordmFy
IGlzTmV2ZXJPcHRpbWl6ZTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0tYWx3YXlzLW9wdCBtb2Rl
IGlzIG9uLgordmFyIGlzQWx3YXlzT3B0aW1pemU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBnaXZl
biBmdW5jdGlvbiBpbiBpbnRlcnByZXRlZC4KK3ZhciBpc0ludGVycHJldGVkOworCisvLyBSZXR1
cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMgb3B0aW1pemVkLgordmFyIGlzT3B0aW1pemVk
OworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMgY29tcGlsZWQgYnkgVHVy
Ym9GYW4uCit2YXIgaXNUdXJib0Zhbm5lZDsKKworLy8gTW9ua2V5LXBhdGNoYWJsZSBhbGwtcHVy
cG9zZSBmYWlsdXJlIGhhbmRsZXIuCit2YXIgZmFpbFdpdGhNZXNzYWdlOworCisvLyBSZXR1cm5z
IHRoZSBmb3JtYXR0ZWQgZmFpbHVyZSB0ZXh0LiAgVXNlZCBieSB0ZXN0LWFzeW5jLmpzLgordmFy
IGZvcm1hdEZhaWx1cmVUZXh0OworCisvLyBSZXR1cm5zIGEgcHJldHR5LXByaW50ZWQgc3RyaW5n
IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXNzZWQgdmFsdWUuCit2YXIgcHJldHR5UHJpbnRlZDsK
KworKGZ1bmN0aW9uICgpIHsgIC8vIFNjb3BlIGZvciB1dGlsaXR5IGZ1bmN0aW9ucy4KKworICB2
YXIgT2JqZWN0UHJvdG90eXBlVG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOwor
ICB2YXIgTnVtYmVyUHJvdG90eXBlVmFsdWVPZiA9IE51bWJlci5wcm90b3R5cGUudmFsdWVPZjsK
KyAgdmFyIEJvb2xlYW5Qcm90b3R5cGVWYWx1ZU9mID0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVP
ZjsKKyAgdmFyIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2YgPSBTdHJpbmcucHJvdG90eXBlLnZhbHVl
T2Y7CisgIHZhciBEYXRlUHJvdG90eXBlVmFsdWVPZiA9IERhdGUucHJvdG90eXBlLnZhbHVlT2Y7
CisgIHZhciBSZWdFeHBQcm90b3R5cGVUb1N0cmluZyA9IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJp
bmc7CisgIHZhciBBcnJheVByb3RvdHlwZUZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFj
aDsKKyAgdmFyIEFycmF5UHJvdG90eXBlSm9pbiA9IEFycmF5LnByb3RvdHlwZS5qb2luOworICB2
YXIgQXJyYXlQcm90b3R5cGVNYXAgPSBBcnJheS5wcm90b3R5cGUubWFwOworICB2YXIgQXJyYXlQ
cm90b3R5cGVQdXNoID0gQXJyYXkucHJvdG90eXBlLnB1c2g7CisKKyAgdmFyIEJpZ0ludFByb3Rv
dHlwZVZhbHVlT2Y7CisgIC8vIFRPRE8obmVpcyk6IFJlbW92ZSB0cnktY2F0Y2ggb25jZSBCaWdJ
bnRzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCisgIHRyeSB7CisgICAgQmlnSW50UHJvdG90eXBl
VmFsdWVPZiA9IEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZjsKKyAgfSBjYXRjaCAoZSkge30KKwor
ICBmdW5jdGlvbiBjbGFzc09mKG9iamVjdCkgeworICAgIC8vIEFyZ3VtZW50IG11c3Qgbm90IGJl
IG51bGwgb3IgdW5kZWZpbmVkLgorICAgIHZhciBzdHJpbmcgPSBPYmplY3RQcm90b3R5cGVUb1N0
cmluZy5jYWxsKG9iamVjdCk7CisgICAgLy8gU3RyaW5nIGhhcyBmb3JtYXQgW29iamVjdCA8Q2xh
c3NOYW1lPl0uCisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoOCwgc3RyaW5nLmxlbmd0aCAt
IDEpOworICB9CisKKworICBmdW5jdGlvbiBWYWx1ZU9mKHZhbHVlKSB7CisgICAgc3dpdGNoIChj
bGFzc09mKHZhbHVlKSkgeworICAgICAgY2FzZSAiTnVtYmVyIjoKKyAgICAgICAgcmV0dXJuIE51
bWJlclByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBjYXNlICJCaWdJbnQiOgor
ICAgICAgICByZXR1cm4gQmlnSW50UHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAg
IGNhc2UgIlN0cmluZyI6CisgICAgICAgIHJldHVybiBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mLmNh
bGwodmFsdWUpOworICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAgICAgIHJldHVybiBCb29sZWFu
UHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkRhdGUiOgorICAgICAg
ICByZXR1cm4gRGF0ZVByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICB9CisKKworICBwcmV0dHlQcmludGVk
ID0gZnVuY3Rpb24gcHJldHR5UHJpbnRlZCh2YWx1ZSkgeworICAgIHN3aXRjaCAodHlwZW9mIHZh
bHVlKSB7CisgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdp
ZnkodmFsdWUpOworICAgICAgY2FzZSAiYmlnaW50IjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2
YWx1ZSkgKyAibiI7CisgICAgICBjYXNlICJudW1iZXIiOgorICAgICAgICBpZiAodmFsdWUgPT09
IDAgJiYgKDEgLyB2YWx1ZSkgPCAwKSByZXR1cm4gIi0wIjsKKyAgICAgICAgLy8gRkFMTFRIUk9V
R0guCisgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAg
ICBjYXNlICJmdW5jdGlvbiI6CisgICAgICBjYXNlICJzeW1ib2wiOgorICAgICAgICByZXR1cm4g
U3RyaW5nKHZhbHVlKTsKKyAgICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgIGlmICh2YWx1ZSA9
PT0gbnVsbCkgcmV0dXJuICJudWxsIjsKKyAgICAgICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NP
Zih2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAob2JqZWN0Q2xhc3MpIHsKKyAgICAgICAgICBjYXNl
ICJOdW1iZXIiOgorICAgICAgICAgIGNhc2UgIkJpZ0ludCI6CisgICAgICAgICAgY2FzZSAiU3Ry
aW5nIjoKKyAgICAgICAgICBjYXNlICJCb29sZWFuIjoKKyAgICAgICAgICBjYXNlICJEYXRlIjoK
KyAgICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoIiArIHByZXR0eVByaW50ZWQoVmFs
dWVPZih2YWx1ZSkpICsgIikiOworICAgICAgICAgIGNhc2UgIlJlZ0V4cCI6CisgICAgICAgICAg
ICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbCh2YWx1ZSk7CisgICAgICAgICAg
Y2FzZSAiQXJyYXkiOgorICAgICAgICAgICAgdmFyIG1hcHBlZCA9IEFycmF5UHJvdG90eXBlTWFw
LmNhbGwoCisgICAgICAgICAgICAgICAgdmFsdWUsIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQp
OworICAgICAgICAgICAgdmFyIGpvaW5lZCA9IEFycmF5UHJvdG90eXBlSm9pbi5jYWxsKG1hcHBl
ZCwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiAiWyIgKyBqb2luZWQgKyAiXSI7CisgICAgICAg
ICAgY2FzZSAiVWludDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50OEFycmF5IjoKKyAgICAg
ICAgICBjYXNlICJJbnQxNkFycmF5IjoKKyAgICAgICAgICBjYXNlICJVaW50MTZBcnJheSI6Cisg
ICAgICAgICAgY2FzZSAiVWludDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkludDMyQXJyYXki
OgorICAgICAgICAgIGNhc2UgIkZsb2F0MzJBcnJheSI6CisgICAgICAgICAgY2FzZSAiRmxvYXQ2
NEFycmF5IjoKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVByb3RvdHlwZUpvaW4uY2Fs
bCh2YWx1ZSwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoWyIgKyBq
b2luZWQgKyAiXSkiOworICAgICAgICAgIGNhc2UgIk9iamVjdCI6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdENsYXNzICsg
IigiICsgU3RyaW5nKHZhbHVlKSArICIpIjsKKyAgICAgICAgfQorICAgICAgICAvLyBjbGFzc09m
KCkgcmV0dXJuZWQgIk9iamVjdCIuCisgICAgICAgIHZhciBuYW1lID0gdmFsdWUuY29uc3RydWN0
b3IubmFtZTsKKyAgICAgICAgaWYgKG5hbWUpIHJldHVybiBuYW1lICsgIigpIjsKKyAgICAgICAg
cmV0dXJuICJPYmplY3QoKSI7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gIi0tIHVu
a25vd24gdmFsdWUgLS0iOworICAgIH0KKyAgfQorCisKKyAgZnVuY3Rpb24gcHJldHR5UHJpbnRl
ZEFycmF5RWxlbWVudCh2YWx1ZSwgaW5kZXgsIGFycmF5KSB7CisgICAgaWYgKHZhbHVlID09PSB1
bmRlZmluZWQgJiYgIShpbmRleCBpbiBhcnJheSkpIHJldHVybiAiIjsKKyAgICByZXR1cm4gcHJl
dHR5UHJpbnRlZCh2YWx1ZSk7CisgIH0KKworCisgIGZhaWxXaXRoTWVzc2FnZSA9IGZ1bmN0aW9u
IGZhaWxXaXRoTWVzc2FnZShtZXNzYWdlKSB7CisgICAgdGhyb3cgbmV3IE1qc1VuaXRBc3NlcnRp
b25FcnJvcihtZXNzYWdlKTsKKyAgfQorCisgIGZvcm1hdEZhaWx1cmVUZXh0ID0gZnVuY3Rpb24o
ZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIgbWVzc2FnZSA9ICJGYWls
IiArICJ1cmUiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAgLy8gRml4IHRoaXMgd2hlbiB3
ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgorICAgICAgbWVzc2FnZSArPSAiICgiICsgbmFt
ZV9vcHQgKyAiKSI7CisgICAgfQorCisgICAgdmFyIGZvdW5kVGV4dCA9IHByZXR0eVByaW50ZWQo
Zm91bmQpOworICAgIGlmIChleHBlY3RlZFRleHQubGVuZ3RoIDw9IDQwICYmIGZvdW5kVGV4dC5s
ZW5ndGggPD0gNDApIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjogZXhwZWN0ZWQgPCIgKyBleHBlY3Rl
ZFRleHQgKyAiPiBmb3VuZCA8IiArIGZvdW5kVGV4dCArICI+IjsKKyAgICB9IGVsc2UgeworICAg
ICAgbWVzc2FnZSArPSAiOlxuZXhwZWN0ZWQ6XG4iICsgZXhwZWN0ZWRUZXh0ICsgIlxuZm91bmQ6
XG4iICsgZm91bmRUZXh0OworICAgIH0KKyAgICByZXR1cm4gbWVzc2FnZTsKKyAgfQorCisgIGZ1
bmN0aW9uIGZhaWwoZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICByZXR1cm4g
ZmFpbFdpdGhNZXNzYWdlKGZvcm1hdEZhaWx1cmVUZXh0KGV4cGVjdGVkVGV4dCwgZm91bmQsIG5h
bWVfb3B0KSk7CisgIH0KKworCisgIGZ1bmN0aW9uIGRlZXBPYmplY3RFcXVhbHMoYSwgYikgewor
ICAgIHZhciBhUHJvcHMgPSBPYmplY3Qua2V5cyhhKTsKKyAgICBhUHJvcHMuc29ydCgpOworICAg
IHZhciBiUHJvcHMgPSBPYmplY3Qua2V5cyhiKTsKKyAgICBiUHJvcHMuc29ydCgpOworICAgIGlm
ICghZGVlcEVxdWFscyhhUHJvcHMsIGJQcm9wcykpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhUHJvcHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
IGlmICghZGVlcEVxdWFscyhhW2FQcm9wc1tpXV0sIGJbYVByb3BzW2ldXSkpIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisK
KyAgZGVlcEVxdWFscyA9IGZ1bmN0aW9uIGRlZXBFcXVhbHMoYSwgYikgeworICAgIGlmIChhID09
PSBiKSB7CisgICAgICAvLyBDaGVjayBmb3IgLTAuCisgICAgICBpZiAoYSA9PT0gMCkgcmV0dXJu
ICgxIC8gYSkgPT09ICgxIC8gYik7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYg
KHR5cGVvZiBhICE9PSB0eXBlb2YgYikgcmV0dXJuIGZhbHNlOworICAgIGlmICh0eXBlb2YgYSA9
PT0gIm51bWJlciIpIHJldHVybiBpc05hTihhKSAmJiBpc05hTihiKTsKKyAgICBpZiAodHlwZW9m
IGEgIT09ICJvYmplY3QiICYmIHR5cGVvZiBhICE9PSAiZnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7
CisgICAgLy8gTmVpdGhlciBhIG5vciBiIGlzIHByaW1pdGl2ZS4KKyAgICB2YXIgb2JqZWN0Q2xh
c3MgPSBjbGFzc09mKGEpOworICAgIGlmIChvYmplY3RDbGFzcyAhPT0gY2xhc3NPZihiKSkgcmV0
dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIlJlZ0V4cCIpIHsKKyAgICAgIC8v
IEZvciBSZWdFeHAsIGp1c3QgY29tcGFyZSBwYXR0ZXJuIGFuZCBmbGFncyB1c2luZyBpdHMgdG9T
dHJpbmcuCisgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbChhKSA9PT0K
KyAgICAgICAgICAgICBSZWdFeHBQcm90b3R5cGVUb1N0cmluZy5jYWxsKGIpOworICAgIH0KKyAg
ICAvLyBGdW5jdGlvbnMgYXJlIG9ubHkgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMuCisgICAgaWYg
KG9iamVjdENsYXNzID09PSAiRnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKG9iamVj
dENsYXNzID09PSAiQXJyYXkiKSB7CisgICAgICB2YXIgZWxlbWVudENvdW50ID0gMDsKKyAgICAg
IGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgfQorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
IGlmICghZGVlcEVxdWFscyhhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIlN0cmluZyIg
fHwgb2JqZWN0Q2xhc3MgPT09ICJOdW1iZXIiIHx8CisgICAgICBvYmplY3RDbGFzcyA9PT0gIkJp
Z0ludCIgfHwgb2JqZWN0Q2xhc3MgPT09ICJCb29sZWFuIiB8fAorICAgICAgb2JqZWN0Q2xhc3Mg
PT09ICJEYXRlIikgeworICAgICAgaWYgKFZhbHVlT2YoYSkgIT09IFZhbHVlT2YoYikpIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGRlZXBPYmplY3RFcXVhbHMoYSwgYik7CisgIH0K
KworICBhc3NlcnRTYW1lID0gZnVuY3Rpb24gYXNzZXJ0U2FtZShleHBlY3RlZCwgZm91bmQsIG5h
bWVfb3B0KSB7CisgICAgaWYgKE9iamVjdC5pcyhleHBlY3RlZCwgZm91bmQpKSByZXR1cm47Cisg
ICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgfTsK
KworICBhc3NlcnROb3RTYW1lID0gZnVuY3Rpb24gYXNzZXJ0Tm90U2FtZShleHBlY3RlZCwgZm91
bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKCFPYmplY3QuaXMoZXhwZWN0ZWQsIGZvdW5kKSkgcmV0
dXJuOworICAgIGZhaWwoIm5vdCBzYW1lIGFzICIgKyBwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwg
Zm91bmQsIG5hbWVfb3B0KTsKKyAgfQorCisgIGFzc2VydEVxdWFscyA9IGZ1bmN0aW9uIGFzc2Vy
dEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKCFkZWVwRXF1YWxz
KGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCks
IGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisgIGFzc2VydE5vdEVxdWFscyA9IGZ1
bmN0aW9uIGFzc2VydE5vdEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAg
aWYgKGRlZXBFcXVhbHMoZm91bmQsIGV4cGVjdGVkKSkgeworICAgICAgZmFpbCgibm90IGVxdWFs
cyB0byAiICsgcHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgICAg
fQorICB9OworCisKKyAgYXNzZXJ0RXF1YWxzRGVsdGEgPQorICAgICAgZnVuY3Rpb24gYXNzZXJ0
RXF1YWxzRGVsdGEoZXhwZWN0ZWQsIGZvdW5kLCBkZWx0YSwgbmFtZV9vcHQpIHsKKyAgICBpZiAo
TWF0aC5hYnMoZXhwZWN0ZWQgLSBmb3VuZCkgPiBkZWx0YSkgeworICAgICAgZmFpbChwcmV0dHlQ
cmludGVkKGV4cGVjdGVkKSArICIgKy0gIiArIHByZXR0eVByaW50ZWQoZGVsdGEpLCBmb3VuZCwg
bmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEFycmF5RXF1YWxzID0gZnVuY3Rp
b24gYXNzZXJ0QXJyYXlFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIHZh
ciBzdGFydCA9ICIiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAgc3RhcnQgPSBuYW1lX29w
dCArICIgLSAiOworICAgIH0KKyAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQubGVuZ3RoLCBmb3Vu
ZC5sZW5ndGgsIHN0YXJ0ICsgImFycmF5IGxlbmd0aCIpOworICAgIGlmIChleHBlY3RlZC5sZW5n
dGggPT09IGZvdW5kLmxlbmd0aCkgeworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3Rl
ZC5sZW5ndGg7ICsraSkgeworICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRbaV0sIGZvdW5k
W2ldLAorICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKyAiYXJyYXkgZWxlbWVudCBhdCBpbmRl
eCAiICsgaSk7CisgICAgICB9CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0UHJvcGVydGllc0Vx
dWFsID0gZnVuY3Rpb24gYXNzZXJ0UHJvcGVydGllc0VxdWFsKGV4cGVjdGVkLCBmb3VuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWVfb3B0KSB7CisgICAgLy8gQ2hlY2sgcHJvcGVydGllcyBvbmx5LgorICAgIGlmICghZGVlcE9i
amVjdEVxdWFscyhleHBlY3RlZCwgZm91bmQpKSB7CisgICAgICBmYWlsKGV4cGVjdGVkLCBmb3Vu
ZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydFRvU3RyaW5nRXF1YWxzID0g
ZnVuY3Rpb24gYXNzZXJ0VG9TdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfb3B0KSB7
CisgICAgaWYgKGV4cGVjdGVkICE9PSBTdHJpbmcoZm91bmQpKSB7CisgICAgICBmYWlsKGV4cGVj
dGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydFRydWUgPSBm
dW5jdGlvbiBhc3NlcnRUcnVlKHZhbHVlLCBuYW1lX29wdCkgeworICAgIGFzc2VydEVxdWFscyh0
cnVlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0RmFsc2UgPSBmdW5jdGlv
biBhc3NlcnRGYWxzZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBhc3NlcnRFcXVhbHMoZmFsc2Us
IHZhbHVlLCBuYW1lX29wdCk7CisgIH07CisKKworICBhc3NlcnROdWxsID0gZnVuY3Rpb24gYXNz
ZXJ0TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgIT09IG51bGwpIHsKKyAg
ICAgIGZhaWwoIm51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFz
c2VydE5vdE51bGwgPSBmdW5jdGlvbiBhc3NlcnROb3ROdWxsKHZhbHVlLCBuYW1lX29wdCkgewor
ICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgeworICAgICAgZmFpbCgibm90IG51bGwiLCB2YWx1ZSwg
bmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBleGVjdXRlQ29kZShjb2RlKSB7
CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSAgcmV0dXJuIGNvZGUoKTsKKyAg
ICBpZiAodHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnKSByZXR1cm4gZXZhbChjb2RlKTsKKyAgICBm
YWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICdHaXZlbiBjb2RlIGlzIG5laXRoZXIgZnVuY3Rpb24g
bm9yIHN0cmluZywgYnV0ICcgKyAodHlwZW9mIGNvZGUpICsKKyAgICAgICAgJzogPCcgKyBwcmV0
dHlQcmludGVkKGNvZGUpICsgJz4nKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNoZWNrRXhjZXB0aW9u
KGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5l
ZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiB0eXBlX29wdCk7Cisg
ICAgICBhc3NlcnRJbnN0YW5jZW9mKGUsIHR5cGVfb3B0KTsKKyAgICB9CisgICAgLy8gaWdub3Jl
IGNhdXNlX29wdCBiZWNhdXNlIG91ciBlcnJvciBtZXNzYWdlcyBhcmUgbm90IHRoZSBzYW1lIGFz
IFY4J3MKKyAgICByZXR1cm47CisgICAgaWYgKFJlZ0V4cCAhPT0gdW5kZWZpbmVkICYmIGNhdXNl
X29wdCBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgYXNzZXJ0TWF0Y2hlcyhjYXVzZV9vcHQs
IGUubWVzc2FnZSwgJ0Vycm9yIG1lc3NhZ2UnKTsKKyAgICB9IGVsc2UgaWYgKGNhdXNlX29wdCAh
PT0gdW5kZWZpbmVkKSB7CisgICAgICBhc3NlcnRFcXVhbHMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2Us
ICdFcnJvciBtZXNzYWdlJyk7CisgICAgfQorICB9CisKKyAgYXNzZXJ0VGhyb3dzID0gZnVuY3Rp
b24gYXNzZXJ0VGhyb3dzKGNvZGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAoYXJn
dW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZmFp
bFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIHVua25vd24gdHlwZV9v
cHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlw
ZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisg
ICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5YmUgeW91IHdhbnQgYXNz
ZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIHRyeSB7CisgICAgICBleGVjdXRlQ29kZShj
b2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29w
dCwgY2F1c2Vfb3B0KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgbGV0IG1zZyA9ICdEaWQg
bm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYg
dHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9ICcsIGV4cGVjdGVkICcg
KyB0eXBlX29wdC5uYW1lOworICAgIGZhaWxXaXRoTWVzc2FnZShtc2cpOworICB9OworCisgIGFz
c2VydFRocm93c0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRocm93c0VxdWFscyhmdW4sIHZhbCkg
eworICAgIHRyeSB7CisgICAgICBmdW4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBhc3Nl
cnRTYW1lKHZhbCwgZSk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGZhaWxXaXRoTWVzc2Fn
ZSgnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24sIGV4cGVjdGVkICcgKyBwcmV0dHlQcmludGVkKHZh
bCkpOworICB9OworCisgIGFzc2VydFRocm93c0FzeW5jID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dz
QXN5bmMocHJvbWlzZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgeworICAgIGlmIChhcmd1bWVudHMu
bGVuZ3RoID4gMSAmJiB0eXBlX29wdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBmYWlsV2l0aE1l
c3NhZ2UoJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgdW5rbm93biB0eXBlX29wdCBnaXZl
bicpOworICAgIH0KKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdHlw
ZV9vcHQgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgKKyAgICAgICAg
ICAnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCBtYXliZSB5b3Ugd2FudCBhc3NlcnRUaHJv
d3NFcXVhbHMnKTsKKyAgICB9CisgICAgbGV0IG1zZyA9ICdQcm9taXNlIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uJzsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlX29wdC5u
YW1lICE9PSB1bmRlZmluZWQpCisgICAgICBtc2cgKz0gJywgZXhwZWN0ZWQgJyArIHR5cGVfb3B0
Lm5hbWU7CisgICAgcmV0dXJuIGFzc2VydFByb21pc2VSZXN1bHQoCisgICAgICAgIHByb21pc2Us
CisgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0byBn
ZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgIC8vIGNoYWluLgorICAgICAgICByZXMgPT4g
c2V0VGltZW91dChfID0+IGZhaWwoJzx0aHJvdz4nLCByZXMsIG1zZyksIDApLAorICAgICAgICBl
ID0+IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpKTsKKyAgfTsKKworICBh
c3NlcnRJbnN0YW5jZW9mID0gZnVuY3Rpb24gYXNzZXJ0SW5zdGFuY2VvZihvYmosIHR5cGUpIHsK
KyAgICBpZiAoIShvYmogaW5zdGFuY2VvZiB0eXBlKSkgeworICAgICAgdmFyIGFjdHVhbFR5cGVO
YW1lID0gbnVsbDsKKyAgICAgIHZhciBhY3R1YWxDb25zdHJ1Y3RvciA9IG9iaiAmJiBPYmplY3Qu
Z2V0UHJvdG90eXBlT2Yob2JqKS5jb25zdHJ1Y3RvcjsKKyAgICAgIGlmICh0eXBlb2YgYWN0dWFs
Q29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgYWN0dWFsVHlwZU5hbWUgPSBh
Y3R1YWxDb25zdHJ1Y3Rvci5uYW1lIHx8IFN0cmluZyhhY3R1YWxDb25zdHJ1Y3Rvcik7CisgICAg
ICB9CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ09iamVjdCA8JyArIHByZXR0
eVByaW50ZWQob2JqKSArICc+IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiA8JyArCisgICAgICAgICAg
KHR5cGUubmFtZSB8fCB0eXBlKSArICc+JyArCisgICAgICAgICAgKGFjdHVhbFR5cGVOYW1lID8g
JyBidXQgb2YgPCcgKyBhY3R1YWxUeXBlTmFtZSArICc+JyA6ICcnKSk7CisgICAgfQorICB9Owor
CisgIGFzc2VydERvZXNOb3RUaHJvdyA9IGZ1bmN0aW9uIGFzc2VydERvZXNOb3RUaHJvdyhjb2Rl
LCBuYW1lX29wdCkgeworICAgIHRyeSB7CisgICAgICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICBpZiAoZSBpbnN0YW5jZW9mIE1qc1VuaXRBc3NlcnRpb25FcnJv
cikgdGhyb3cgZTsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgidGhyZXcgYW4gZXhjZXB0aW9uOiAi
ICsgKGUubWVzc2FnZSB8fCBlKSk7CisgICAgfQorICB9OworCisgIGFzc2VydFVucmVhY2hhYmxl
ID0gZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUobmFtZV9vcHQpIHsKKyAgICAvLyBGaXggdGhp
cyB3aGVuIHdlIGRpdGNoIHRoZSBvbGQgdGVzdCBydW5uZXIuCisgICAgdmFyIG1lc3NhZ2UgPSAi
RmFpbCIgKyAidXJlOiB1bnJlYWNoYWJsZSI7CisgICAgaWYgKG5hbWVfb3B0KSB7CisgICAgICBt
ZXNzYWdlICs9ICIgLSAiICsgbmFtZV9vcHQ7CisgICAgfQorICAgIGZhaWxXaXRoTWVzc2FnZSht
ZXNzYWdlKTsKKyAgfTsKKworICBhc3NlcnRDb250YWlucyA9IGZ1bmN0aW9uKHN1YiwgdmFsdWUs
IG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVlID09IG51bGwgPyAoc3ViICE9IG51bGwpIDogdmFs
dWUuaW5kZXhPZihzdWIpID09IC0xKSB7CisgICAgICBmYWlsKCJjb250YWlucyAnIiArIFN0cmlu
ZyhzdWIpICsgIiciLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBhc3NlcnRN
YXRjaGVzID0gZnVuY3Rpb24ocmVnZXhwLCBzdHIsIG5hbWVfb3B0KSB7CisgICAgaWYgKCEocmVn
ZXhwIGluc3RhbmNlb2YgUmVnRXhwKSkgeworICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdl
eHApOworICAgIH0KKyAgICBpZiAoIXN0ci5tYXRjaChyZWdleHApKSB7CisgICAgICBmYWlsKCJz
aG91bGQgbWF0Y2ggJyIgKyByZWdleHAgKyAiJyIsIHN0ciwgbmFtZV9vcHQpOworICAgIH0KKyAg
fTsKKworICBmdW5jdGlvbiBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZXhjZXB0aW9uKSB7Cisg
ICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBkb2VzIG5vdCBjb250YWluIGEgc3RhY2sgdHJhY2UsIHdy
YXAgaXQgaW4gYSBuZXcgRXJyb3IuCisgICAgaWYgKCFleGNlcHRpb24uc3RhY2spIGV4Y2VwdGlv
biA9IG5ldyBFcnJvcihleGNlcHRpb24pOworCisgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBhbHJl
YWR5IHByb3ZpZGVzIGEgc3BlY2lhbCBzdGFjayB0cmFjZSwgd2UgZG8gbm90IG1vZGlmeQorICAg
IC8vIGl0LgorICAgIGlmICh0eXBlb2YgZXhjZXB0aW9uLnN0YWNrICE9PSAnc3RyaW5nJykgewor
ICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CisgICAgZXhjZXB0aW9uLnN0YWNrID0gc3Rh
Y2sgKyAnXG5cbicgKyBleGNlcHRpb24uc3RhY2s7CisgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAg
fQorCisgIGFzc2VydFByb21pc2VSZXN1bHQgPSBmdW5jdGlvbihwcm9taXNlLCBzdWNjZXNzLCBm
YWlsKSB7CisgICAgaWYgKHN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5j
dGlvbicsIHR5cGVvZiBzdWNjZXNzKTsKKyAgICBpZiAoZmFpbCAhPT0gdW5kZWZpbmVkKSBhc3Nl
cnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9mIGZhaWwpOworICAgIGFzc2VydEluc3RhbmNlb2Yo
cHJvbWlzZSwgUHJvbWlzZSk7CisgICAgY29uc3Qgc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNr
OworCisgICAgdmFyIHRlc3RfcHJvbWlzZSA9IHByb21pc2UudGhlbigKKyAgICAgICAgcmVzdWx0
ID0+IHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKC0tcHJvbWlzZVRlc3RDb3Vu
dCA9PSAwKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmIChzdWNjZXNz
ICE9PSB1bmRlZmluZWQpIHN1Y2Nlc3MocmVzdWx0KTsKKyAgICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0aGUgZXJyb3IgYWdhaW4g
dG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAgICAgLy8gY2hhaW4uCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KF8gPT4geworICAgICAgICAgICAgICB0aHJvdyBjb25jYXRlbmF0ZUVy
cm9ycyhzdGFjaywgZSk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlm
ICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICBpZiAoZmFpbCA9PT0gdW5kZWZpbmVkKSB0aHJvdyByZXN1bHQ7CisgICAgICAgICAg
ICBmYWlsKHJlc3VsdCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8g
VXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhl
IHByb21pc2UKKyAgICAgICAgICAgIC8vIGNoYWluLgorICAgICAgICAgICAgc2V0VGltZW91dChf
ID0+IHsKKyAgICAgICAgICAgICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOwor
ICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgIGlmICgh
cHJvbWlzZVRlc3RDaGFpbikgcHJvbWlzZVRlc3RDaGFpbiA9IFByb21pc2UucmVzb2x2ZSgpOwor
ICAgIC8vIHdhaXRVbnRpbERvbmUgaXMgaWRlbXBvdGVudC4KKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICArK3Byb21pc2VUZXN0Q291bnQ7CisgICAgcmV0dXJuIHByb21pc2VU
ZXN0Q2hhaW4udGhlbih0ZXN0X3Byb21pc2UpOworICB9OworCisgIHZhciBPcHRpbWl6YXRpb25T
dGF0dXNJbXBsID0gdW5kZWZpbmVkOworCisgIHZhciBPcHRpbWl6YXRpb25TdGF0dXMgPSBmdW5j
dGlvbihmdW4sIHN5bmNfb3B0KSB7CisgICAgaWYgKE9wdGltaXphdGlvblN0YXR1c0ltcGwgPT09
IHVuZGVmaW5lZCkgeworICAgICAgdHJ5IHsKKyAgICAgICAgT3B0aW1pemF0aW9uU3RhdHVzSW1w
bCA9IG5ldyBGdW5jdGlvbigKKyAgICAgICAgICAgICJmdW4iLCAic3luYyIsICJyZXR1cm4gJUdl
dE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmMpOyIpOworICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5hdGl2ZXMgc3ludGF4IG5vdCBhbGxvd2VkIik7Cisg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBPcHRpbWl6YXRpb25TdGF0dXNJbXBsKGZ1biwgc3lu
Y19vcHQpOworICB9CisKKyAgYXNzZXJ0VW5vcHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3NlcnRVbm9w
dGltaXplZCgKKyAgICAgIGZ1biwgc3luY19vcHQsIG5hbWVfb3B0LCBza2lwX2lmX21heWJlX2Rl
b3B0ZWQgPSB0cnVlKSB7CisgICAgaWYgKHN5bmNfb3B0ID09PSB1bmRlZmluZWQpIHN5bmNfb3B0
ID0gIiI7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5j
X29wdCk7CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0VW5vcHRpbWl6ZWQoKSBkbyBub3Qg
bWFrZSBzZW5zZSBpZiAtLWFsd2F5cy1vcHQKKyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQuIFN1
Y2ggdGVzdHMgbXVzdCBhZGQgLS1uby1hbHdheXMtb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisgICAg
YXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0
aW1pemUpICE9PSAwLAorICAgICAgICAgICAgICAgICJ0ZXN0IGRvZXMgbm90IG1ha2Ugc2Vuc2Ug
d2l0aCAtLWFsd2F5cy1vcHQiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRp
bWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLCBuYW1lX29wdCk7CisgICAgaWYgKHNr
aXBfaWZfbWF5YmVfZGVvcHRlZCAmJgorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0
aW9uU3RhdHVzLmtNYXliZURlb3B0ZWQpICE9PSAwKSB7CisgICAgICAvLyBXaGVuIC0tZGVvcHQt
ZXZlcnktbi10aW1lcyBmbGFnIGlzIHNwZWNpZmllZCBpdCdzIG5vIGxvbmdlciBndWFyYW50ZWVk
CisgICAgICAvLyB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgc3RpbGwgZGVvcHRpbWl6ZWQs
IHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8gdG8gc3RyZXNzIHRlc3QgdGhlIGRl
b3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnRGYWxzZSgob3B0X3N0
YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwLCBuYW1lX29wdCk7
CisgIH0KKworICBhc3NlcnRPcHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3NlcnRPcHRpbWl6ZWQoCisg
ICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29wdCwgc2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1
ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0gdW5kZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAg
IHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwgc3luY19vcHQpOworICAg
IC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5vdCBtYWtlIHNlbnNlIGZv
ciBMaXRlIG1vZGUgd2hlcmUKKyAgICAvLyBvcHRpbWl6YXRpb24gaXMgYWx3YXlzIGRpc2FibGVk
LCBleHBsaWNpdGx5IGV4aXQgdGhlIHRlc3Qgd2l0aCBhIHdhcm5pbmcuCisgICAgaWYgKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTGl0ZU1vZGUpIHsKKyAgICAgIHByaW50KCJX
YXJuaW5nOiBUZXN0IHVzZXMgYXNzZXJ0T3B0aW1pemVkIGluIExpdGUgbW9kZSwgc2tpcHBpbmcg
dGVzdC4iKTsKKyAgICAgIHRlc3RSdW5uZXIucXVpdCgwKTsKKyAgICB9CisgICAgLy8gVGVzdHMg
dGhhdCB1c2UgYXNzZXJ0T3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1uby1vcHQK
KyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVzdCBhZGQgLS1vcHQgdG8g
ZmxhZ3MgY29tbWVudC4KKyAgICBhc3NlcnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0
aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMCwKKyAgICAgICAgICAgICAgICAidGVzdCBk
b2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1uby1vcHQiKTsKKyAgICBhc3NlcnRUcnVlKAorICAg
ICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0g
MCwKKyAgICAgICAgJ3Nob3VsZCBiZSBhIGZ1bmN0aW9uOiAnICsgbmFtZV9vcHQpOworICAgIGlm
IChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGlt
aXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAgICAgLy8gV2hlbiAtLWRl
b3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBubyBsb25nZXIgZ3VhcmFu
dGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHN0aWxsIG9wdGltaXpl
ZCwgc28ga2VlcCBydW5uaW5nIHRoZSB0ZXN0CisgICAgICAvLyB0byBzdHJlc3MgdGVzdCB0aGUg
ZGVvcHRpbWl6ZXIuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydFRydWUoCisgICAg
ICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAs
CisgICAgICAgICdzaG91bGQgYmUgb3B0aW1pemVkOiAnICsgbmFtZV9vcHQpOworICB9CisKKyAg
aXNOZXZlck9wdGltaXplTGl0ZU1vZGUgPSBmdW5jdGlvbiBpc05ldmVyT3B0aW1pemVMaXRlTW9k
ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQs
ICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTGl0
ZU1vZGUpICE9PSAwOworICB9CisKKyAgaXNOZXZlck9wdGltaXplID0gZnVuY3Rpb24gaXNOZXZl
ck9wdGltaXplKCkgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVu
ZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3Rh
dHVzLmtOZXZlck9wdGltaXplKSAhPT0gMDsKKyAgfQorCisgIGlzQWx3YXlzT3B0aW1pemUgPSBm
dW5jdGlvbiBpc0Fsd2F5c09wdGltaXplKCkgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1p
emF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4
T3B0aW1pemF0aW9uU3RhdHVzLmtBbHdheXNPcHRpbWl6ZSkgIT09IDA7CisgIH0KKworICBpc0lu
dGVycHJldGVkID0gZnVuY3Rpb24gaXNJbnRlcnByZXRlZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0
YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAg
ICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhP
cHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgPT09IDAgJiYKKyAgICAgICAgICAgKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rSW50ZXJwcmV0ZWQpICE9PSAwOworICB9CisK
KyAgaXNPcHRpbWl6ZWQgPSBmdW5jdGlvbiBpc09wdGltaXplZChmdW4pIHsKKyAgICB2YXIgb3B0
X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChv
cHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAg
ICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYg
VjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDA7CisgIH0KKworICBpc1R1cmJv
RmFubmVkID0gZnVuY3Rpb24gaXNUdXJib0Zhbm5lZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0YXR1
cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3Rh
dHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAg
ICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRp
bWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAgJiYKKyAgICAgICAgICAgKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rVHVyYm9GYW5uZWQpICE9PSAwOworICB9CisKKyAg
Ly8gQ3VzdG9tIFY4LXNwZWNpZmljIHN0YWNrIHRyYWNlIGZvcm1hdHRlciB0aGF0IGlzIHRlbXBv
cmFyaWx5IGluc3RhbGxlZCBvbgorICAvLyB0aGUgRXJyb3Igb2JqZWN0LgorICBNanNVbml0QXNz
ZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbihlcnJvciwgc3RhY2spIHsK
KyAgICAvLyBUcmlnZ2VyIGRlZmF1bHQgZm9ybWF0dGluZyB3aXRoIHJlY3Vyc2lvbi4KKyAgICB0
cnkgeworICAgICAgLy8gRmlsdGVyLW91dCBhbGwgYnV0IHRoZSBmaXJzdCBtanN1bml0IGZyYW1l
LgorICAgICAgbGV0IGZpbHRlcmVkU3RhY2sgPSBbXTsKKyAgICAgIGxldCBpbk1qc3VuaXQgPSB0
cnVlOworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFjay5sZW5ndGg7IGkrKykgeworICAg
ICAgICBsZXQgZnJhbWUgPSBzdGFja1tpXTsKKyAgICAgICAgaWYgKGluTWpzdW5pdCkgeworICAg
ICAgICAgIGxldCBmaWxlID0gZnJhbWUuZ2V0RmlsZU5hbWUoKTsKKyAgICAgICAgICBpZiAoIWZp
bGUgfHwgIWZpbGUuZW5kc1dpdGgoIm1qc3VuaXQuanMiKSkgeworICAgICAgICAgICAgaW5NanN1
bml0ID0gZmFsc2U7CisgICAgICAgICAgICAvLyBQdXNoIHRoZSBsYXN0IG1qc3VuaXQgZnJhbWUs
IHR5cGljYWxseSBjb250YWluaW5nIHRoZSBhc3NlcnRpb24KKyAgICAgICAgICAgIC8vIGZ1bmN0
aW9uLgorICAgICAgICAgICAgaWYgKGkgPiAwKSBBcnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0
ZXJlZFN0YWNrLCBzdGFja1tpLTFdKTsKKyAgICAgICAgICAgIEFycmF5UHJvdG90eXBlUHVzaC5j
YWxsKGZpbHRlcmVkU3RhY2ssIHN0YWNrW2ldKTsKKyAgICAgICAgICB9CisgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlQcm90b3R5cGVQdXNoLmNhbGwoZmlsdGVy
ZWRTdGFjaywgZnJhbWUpOworICAgICAgfQorICAgICAgc3RhY2sgPSBmaWx0ZXJlZFN0YWNrOwor
CisgICAgICAvLyBJbmZlciBmdW5jdGlvbiBuYW1lcyBhbmQgY2FsY3VsYXRlIHttYXhfbmFtZV9s
ZW5ndGh9CisgICAgICBsZXQgbWF4X25hbWVfbGVuZ3RoID0gMDsKKyAgICAgIEFycmF5UHJvdG90
eXBlRm9yRWFjaC5jYWxsKHN0YWNrLCBlYWNoID0+IHsKKyAgICAgICAgbGV0IG5hbWUgPSBlYWNo
LmdldEZ1bmN0aW9uTmFtZSgpOworICAgICAgICBpZiAobmFtZSA9PSBudWxsKSBuYW1lID0gIiI7
CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSB7CisgICAgICAgICAgbmFtZSA9IG5hbWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoZWFjaC5pc0NvbnN0cnVjdG9yKCkpIHsKKyAgICAgICAgICBuYW1l
ID0gIm5ldyAiICsgbmFtZTsKKyAgICAgICAgfSBlbHNlIGlmIChlYWNoLmlzTmF0aXZlKCkpIHsK
KyAgICAgICAgICBuYW1lID0gIm5hdGl2ZSAiICsgbmFtZTsKKyAgICAgICAgfSBlbHNlIGlmICgh
ZWFjaC5pc1RvcGxldmVsKCkpIHsKKyAgICAgICAgICBuYW1lID0gZWFjaC5nZXRUeXBlTmFtZSgp
ICsgIi4iICsgbmFtZTsKKyAgICAgICAgfQorICAgICAgICBlYWNoLm5hbWUgPSBuYW1lOworICAg
ICAgICBtYXhfbmFtZV9sZW5ndGggPSBNYXRoLm1heChuYW1lLmxlbmd0aCwgbWF4X25hbWVfbGVu
Z3RoKQorICAgICAgfSk7CisKKyAgICAgIC8vIEZvcm1hdCBzdGFjayBmcmFtZXMuCisgICAgICBz
dGFjayA9IEFycmF5UHJvdG90eXBlTWFwLmNhbGwoc3RhY2ssIGVhY2ggPT4geworICAgICAgICBs
ZXQgZnJhbWUgPSAiICAgIGF0ICIgKyBlYWNoLm5hbWUucGFkRW5kKG1heF9uYW1lX2xlbmd0aCk7
CisgICAgICAgIGxldCBmaWxlTmFtZSA9IGVhY2guZ2V0RmlsZU5hbWUoKTsKKyAgICAgICAgaWYg
KGVhY2guaXNFdmFsKCkpIHJldHVybiBmcmFtZSArICIgIiArIGVhY2guZ2V0RXZhbE9yaWdpbigp
OworICAgICAgICBmcmFtZSArPSAiICIgKyAoZmlsZU5hbWUgPyBmaWxlTmFtZSA6ICIiKTsKKyAg
ICAgICAgbGV0IGxpbmU9IGVhY2guZ2V0TGluZU51bWJlcigpOworICAgICAgICBmcmFtZSArPSAi
ICIgKyAobGluZSA/IGxpbmUgOiAiIik7CisgICAgICAgIGxldCBjb2x1bW4gPSBlYWNoLmdldENv
bHVtbk51bWJlcigpOworICAgICAgICBmcmFtZSArPSAoY29sdW1uID8gIjoiICsgY29sdW1uIDog
IiIpOworICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICB9KTsKKyAgICAgIHJldHVybiAiIiAr
IGVycm9yLm1lc3NhZ2UgKyAiXG4iICsgQXJyYXlQcm90b3R5cGVKb2luLmNhbGwoc3RhY2ssICJc
biIpOworICAgIH0gY2F0Y2ggKGUpIHt9OworICAgIHJldHVybiBlcnJvci5zdGFjazsKKyAgfQor
fSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJl
bnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJl
YWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4NzUwMDE4NTc1OWM3MmU2YWNiMzJkYjI2NmM2NzVlYTM0NWU1
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZyb20tZGlm
ZmVyZW50LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5jcmVh
dGVSZWFsbSwgZXZhbDogKHIsIHMpID0+ICQuZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9OworCits
ZXQgciA9IFJlYWxtLmNyZWF0ZSgpOworCitsZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwgInZh
ciBzdG9yZWRfZ2xvYmFsOyBmdW5jdGlvbiBjbGVhbnVwKCkgeyBzdG9yZWRfZ2xvYmFsID0gZ2xv
YmFsVGhpczsgfSBjbGVhbnVwOyIpOworbGV0IHJlYWxtX2dsb2JhbF90aGlzID0gUmVhbG0uZXZh
bChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnko
Y2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIGEgcmVnaXN0ZXIgaXQgaW4gdGhl
IEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUg
YSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9u
KCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBv
YmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0KTsKKyAgICB9Cit9KSgpOwor
CitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVk
IGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgbGV0IHN0
b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFsOyIpOworICBhc3NlcnRO
b3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFzc2VydEVxdWFscyhzdG9y
ZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9m
dW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJv
bS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZy
b20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNGQwMjQ3ZTI3MTBkYTQ4NWM5MjU3
MmFiYTljMjc2Y2RlZjM1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTgg
dGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1v
bnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQo
Ii4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CitsZXQgUmVh
bG0gPSB7IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMpID0+ICQuZXZhbFNjcmlw
dC5jYWxsKHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgpOworCitsZXQgY2xlYW51
cCA9IFJlYWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBsZXQgY2xlYW51cCA9IG5ldyBQ
cm94eShmdW5jdGlvbigpIHsgc3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRoaXM7fSwge30pOyBjbGVh
bnVwIik7CitsZXQgcmVhbG1fZ2xvYmFsX3RoaXMgPSBSZWFsbS5ldmFsKHIsICJnbG9iYWxUaGlz
Iik7CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8g
Q3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lz
dHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQg
d2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAg
ICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiKTsKKyAgICB9Cit9KSgpOworCitnYygp
OworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkIGluIGl0
cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgbGV0IHN0b3JlZF9n
bG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFsOyIpOworICBhc3NlcnROb3RFcXVh
bHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFzc2VydEVxdWFscyhzdG9yZWRfZ2xv
YmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1i
YXNpY3MuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ1NjE2YTUwMjFhY2E3NTUxYzgxMTllYjYxZWZlOTQ3YjUxMmMzYzEK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0
cnktYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTUyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
V2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcworCitsb2FkKCIu
L3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCisoZnVuY3Rp
b24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBsZXQgZmcgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBhc3NlcnRFcXVhbHMoZmcudG9TdHJp
bmcoKSwgIltvYmplY3QgRmluYWxpemF0aW9uUmVnaXN0cnldIik7CisgIGFzc2VydE5vdFNhbWUo
ZmcuX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKKyAgYXNzZXJ0U2FtZShmZy5fX3Byb3Rv
X18uX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0
RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0aW9uKCkgeworICBsZXQg
Y2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRyeSB7CisgICAgbGV0IGYg
PSBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBt
ZXNzYWdlID0gZS5tZXNzYWdlOworICAgIGNhdWdodCA9IHRydWU7CisgIH0gZmluYWxseSB7Cisg
ICAgYXNzZXJ0VHJ1ZShjYXVnaHQpOworICB9Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdENvbnN0
cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxlKCkgeworICBsZXQgbWVz
c2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0IGJlIGNhbGxhYmxlIjsK
KyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KCk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBm
ZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgxKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsK
KyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KG51bGwpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RD
b25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhDYWxsYWJsZVByb3h5QXNDbGVhbnVwKCkg
eworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0gKCkgPT4ge307CisgIGxldCBwcm94
eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9u
UmVnaXN0cnkocHJveHkpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6
YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXNDbGVhbnVwKCkgeworICBsZXQgbWVz
c2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0IGJlIGNhbGxhYmxlIjsK
KyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBuZXcg
UHJveHkob2JqLCBoYW5kbGVyKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3
IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30p
KCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRoTm9uT2JqZWN0VGFyZ2V0KCkgeworICBs
ZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBsZXQgbWVzc2Fn
ZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXI6IHRhcmdldCBtdXN0
IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcigxLCAiaG9s
ZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJl
Z2lzdGVyKGZhbHNlLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0
VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKCJmb28iLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBt
ZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKFN5bWJvbCgpLCAiaG9s
ZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJl
Z2lzdGVyKG51bGwsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRU
aHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIodW5kZWZpbmVkLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRoUHJveHkoKSB7
CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3
IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3Ry
eSgoKSA9PiB7fSk7CisgIGZnLnJlZ2lzdGVyKHByb3h5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0UmVnaXN0ZXJUYXJnZXRBbmRIb2xkaW5nc1NhbWVWYWx1ZSgpIHsKKyAgbGV0IGZnID0gbmV3
IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IG9iaiA9IHthOiAxfTsKKyAg
Ly8gU2FtZVZhbHVlKHRhcmdldCwgaG9sZGluZ3MpIG5vdCBvaworICBhc3NlcnRUaHJvd3MoKCkg
PT4gZmcucmVnaXN0ZXIob2JqLCBvYmopLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAiRmlu
YWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyOiB0YXJnZXQgYW5kIGhvbGRpbmdz
IG11c3Qgbm90IGJlIHNhbWUiKTsKKyAgbGV0IGhvbGRpbmdzID0ge2E6IDF9OworICBmZy5yZWdp
c3RlcihvYmosIGhvbGRpbmdzKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRo
b3V0RmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5hbGl6
YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXIuY2FsbCh7fSwge30sICJob2xkaW5ncyIp
LCBUeXBlRXJyb3IpOworICAvLyBEb2VzIG5vdCB0aHJvdzoKKyAgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90
eXBlLnJlZ2lzdGVyLmNhbGwoZmcsIHt9LCAiaG9sZGluZ3MiKTsKK30pKCk7CisKKyhmdW5jdGlv
biBUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSgpIHsKKyAgbGV0IGZnID0gbmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lz
dGVyKHsiayI6ICJ3aGF0ZXZlciJ9KTsKKyAgYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7Cit9KSgpOwor
CisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRmluYWxpemF0aW9uUmVnaXN0cnkoKSB7
CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUudW5y
ZWdpc3Rlci5jYWxsKHt9LCB7fSksCisgICAgICAgICAgICAgICBUeXBlRXJyb3IpOworfSkoKTsK
KworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbk9iamVjdFVucmVnaXN0ZXJUb2tlbigp
IHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgYXNz
ZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoMSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKEJpZ0ludCgxKSksIFR5cGVFcnJvcik7CisgIGFzc2Vy
dFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKCdvbmUnKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0
VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoU3ltYm9sKCkpLCBUeXBlRXJyb3IpOworICBhc3Nl
cnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih0cnVlKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0
VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoZmFsc2UpLCBUeXBlRXJyb3IpOworICBhc3NlcnRU
aHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih1bmRlZmluZWQpLCBUeXBlRXJyb3IpOworICBhc3Nl
cnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihudWxsKSwgVHlwZUVycm9yKTsKK30pKCk7CisK
KyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yKCkgeworICBsZXQgd3IgPSBuZXcgV2Vh
a1JlZih7fSk7CisgIGFzc2VydEVxdWFscyh3ci50b1N0cmluZygpLCAiW29iamVjdCBXZWFrUmVm
XSIpOworICBhc3NlcnROb3RTYW1lKHdyLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7CisK
KyAgbGV0IGRlcmVmX2Rlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdyLl9f
cHJvdG9fXywgImRlcmVmIik7CisgIGFzc2VydEVxdWFscyh0cnVlLCBkZXJlZl9kZXNjLmNvbmZp
Z3VyYWJsZSk7CisgIGFzc2VydEVxdWFscyhmYWxzZSwgZGVyZWZfZGVzYy5lbnVtZXJhYmxlKTsK
KyAgYXNzZXJ0RXF1YWxzKCJmdW5jdGlvbiIsIHR5cGVvZiBkZXJlZl9kZXNjLnZhbHVlKTsKK30p
KCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCgpIHsK
KyAgbGV0IG1lc3NhZ2UgPSAiV2Vha1JlZjogdGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0IjsKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cisg
IGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigxKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsK
KyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKGZhbHNlKSwgVHlwZUVycm9yLCBtZXNz
YWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCJmb28iKSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKFN5bWJvbCgpKSwg
VHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKG51
bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtS
ZWYodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0V2Vha1JlZkNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24oKSB7CisgIGxldCBjYXVnaHQgPSBm
YWxzZTsKKyAgbGV0IG1lc3NhZ2UgPSAiIjsKKyAgdHJ5IHsKKyAgICBsZXQgZiA9IFdlYWtSZWYo
e30pOworICB9IGNhdGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVn
aHQgPSB0cnVlOworICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQor
fSkoKTsKKworKGZ1bmN0aW9uIFRlc3RXZWFrUmVmV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxl
ciA9IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhh
bmRsZXIpOworICBsZXQgd3IgPSBuZXcgV2Vha1JlZihwcm94eSk7Cit9KSgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1hbmQtd2Vha3JlZi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43OGRhOGEwYzlmZWZjOWQxZGUyNjk1YjIzZDUyMDE0MjhmYjI2YjIzCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5k
LXdlYWtyZWYuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdl
YWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2Mg
LS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5q
cyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbGVkID0gZmFsc2U7Cits
ZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGxldCBob2xkaW5nc19saXN0ID0g
W107CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGFzc2VydEVxdWFscygxLCBo
b2xkaW5nc19saXN0Lmxlbmd0aCk7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MiLCBob2xkaW5n
c19saXN0WzBdKTsKKyAgY2xlYW51cF9jYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQgd2Vha19yZWZzID0gW107CisoZnVu
Y3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAg
bGV0IG8gPSB7fTsKKyAgICAgICAgd2Vha19yZWZzLnB1c2gobmV3IFdlYWtSZWYobykpOworICAg
ICAgICBmZy5yZWdpc3RlcihvLCAiaG9sZGluZ3MiKTsKKyAgICB9Cit9KSgpOworCisvLyBTaW5j
ZSB0aGUgV2Vha1JlZiB3YXMgY3JlYXRlZCBkdXJpbmcgdGhpcyB0dXJuLCBpdCBpcyBub3QgY2xl
YXJlZCBieSBHQy4gVGhlCisvLyBwb2ludGVyIGluc2lkZSB0aGUgRmluYWxpemF0aW9uUmVnaXN0
cnkgaXMgbm90IGNsZWFyZWQgZWl0aGVyLCBzaW5jZSB0aGUgV2Vha1JlZgorLy8ga2VlcHMgdGhl
IHRhcmdldCBvYmplY3QgYWxpdmUuCitnYygpOworKGZ1bmN0aW9uKCkgeworICAgIHdlYWtfcmVm
cy5mb3JFYWNoKCh3ZWFrX3JlZikgPT4gYXNzZXJ0RXF1YWxzKCJvYmplY3QiLCB0eXBlb2Yod2Vh
a19yZWYuZGVyZWYoKSkpKTsKK30pKCk7CisKKy8vIFRyaWdnZXIgZ2MgaW4gbmV4dCB0YXNrCitz
ZXRUaW1lb3V0KCgpID0+IHsKKyAgICBnYygpOworCisgICAgLy8gQ2hlY2sgdGhhdCBjbGVhbnVw
IGNhbGxiYWNrIHdhcyBjYWxsZWQgaW4gYSBmb2xsb3cgdXAgdGFzaworICAgIHNldFRpbWVvdXQo
KCkgPT4geworICAgICAgICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVkKTsKKyAgICAgICAgYXNz
ZXJ0VHJ1ZSh3ZWFrX3JlZnMuc29tZSgod2Vha19yZWYpID0+IHdlYWtfcmVmLmRlcmVmKCkgPT09
IG51bGwpKTsKKyAgICB9LCAwKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
djgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MDJjNGJiOGVlODRlMDEwYjc0ZDZkZWIzNWEwY2ZhY2YxNmQ0OTNmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2Vl
cHMtaG9sZGluZ3MtYWxpdmUuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBh
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1l
eHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgt
bWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbGVkID0g
ZmFsc2U7CitsZXQgaG9sZGluZ3NfbGlzdCA9IFtdOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbiho
b2xkaW5ncykgeworICBhc3NlcnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7CisgIGhvbGRpbmdzX2xp
c3QucHVzaChob2xkaW5ncyk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IG8xID0ge307CitsZXQg
aG9sZGluZ3MgPSB7J2EnOiAndGhpcyBpcyB0aGUgaG9sZGluZ3Mgb2JqZWN0J307CisKKy8vIEln
bml0aW9uIGhvbGRzIHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVnaXN0ZXJz
LiBUaGVzZSB3aWxsIGJlCisvLyByZWxlYXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBleGl0cy4gU28g
b25seSBhY2Nlc3MgbyBpbnNpZGUgYSBmdW5jdGlvbiB0bworLy8gcHJldmVudCBhbnkgcmVmZXJl
bmNlcyB0byBvYmplY3RzIGluIHRlbXBvcmFyeSByZWdpc3RlcnMgd2hlbiBhIGdjIGlzCisvLyB0
cmlnZ2VyZWQuCisoKCkgPT4ge2ZnLnJlZ2lzdGVyKG8xLCBob2xkaW5ncyk7fSkoKQorCitnYygp
OworYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQpOworCisvLyBEcm9wIHRoZSBsYXN0IHJlZmVy
ZW5jZXMgdG8gbzEuCisoKCkgPT4ge28xID0gbnVsbDt9KSgpCisKKy8vIERyb3AgdGhlIGxhc3Qg
cmVmZXJlbmNlIHRvIHRoZSBob2xkaW5ncy4gVGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGtlZXBz
IGl0CisvLyBhbGl2ZSwgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYXMg
bm9ybWFsLgoraG9sZGluZ3MgPSBudWxsOworZ2MoKTsKK2Fzc2VydEZhbHNlKGNsZWFudXBfY2Fs
bGVkKTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRUcnVlKGNs
ZWFudXBfY2FsbGVkKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xpc3QubGVuZ3RoLCAxKTsK
KyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xpc3RbMF0uYSwgInRoaXMgaXMgdGhlIGhvbGRpbmdz
IG9iamVjdCIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNs
ZWFudXAtbXVsdGlwbGUtdGltZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25y
ZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2Q4Yzk2Mzk3NWQyZWNmYjg3NzY1OTJjZGI1NWZlODUzNzI3OWMyMwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LXNjaGVkdWxlZC1m
b3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5qcwpAQCAtMCwwICsxLDg1IEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworLy8gRmxhZ3M6IC0tbm8t
c3RyZXNzLWZsdXNoLWJ5dGVjb2RlCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMi
LCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwMF9jYWxsX2NvdW50ID0gMDsKK2xl
dCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMF8xX2hvbGRpbmdz
X2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAxX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAx
XzBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAxXzFfaG9sZGluZ3NfY291bnQgPSAw
OworCitsZXQgY2xlYW51cDAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3Nb
aG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0gIjAiKQorICAgICsrY2xlYW51cDBfMF9ob2xkaW5nc19j
b3VudDsKKyAgZWxzZQorICAgICsrY2xlYW51cDBfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVh
bnVwMF9jYWxsX2NvdW50OworfQorCitsZXQgY2xlYW51cDEgPSBmdW5jdGlvbihob2xkaW5ncykg
eworICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0gIjAiKQorICAgICsrY2xl
YW51cDFfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xlYW51cDFfMV9ob2xkaW5n
c19jb3VudDsKKyAgKytjbGVhbnVwMV9jYWxsX2NvdW50OworfQorCitsZXQgZmcwID0gbmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAwKTsKK2xldCBmZzEgPSBuZXcgRmluYWxpemF0aW9u
UmVnaXN0cnkoY2xlYW51cDEpOworCisvLyBSZWdpc3RlciAxIHdlYWsgcmVmZXJlbmNlIGZvciBl
YWNoIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGFuZCBraWxsIHRoZSBvYmplY3RzIHRoZXkgcG9pbnQg
dG8uCisoZnVuY3Rpb24oKSB7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgLy8gVGhlIG9iamVjdHMgbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2Ug
Y2FuIHJlbGlhYmx5IGtpbGwgdGhlbS4KKyAgICBsZXQgb2JqZWN0cyA9IFtdOworICAgIG9iamVj
dHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisKKyAgICBmZzAucmVnaXN0ZXIob2Jq
ZWN0c1swXSwgImhvbGRpbmdzMC0wIik7CisgICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNbMV0sICJo
b2xkaW5nczEtMCIpOworCisgICAgLy8gRHJvcCB0aGUgcmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0
cy4KKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisKKy8vIFdpbGwgc2NoZWR1bGUgYm90
aCBmZzAgYW5kIGZnMSBmb3IgY2xlYW51cC4KK2djKCk7CisKKy8vIEJlZm9yZSB0aGUgY2xlYW51
cCB0YXNrIGhhcyBhIGNoYW5jZSB0byBydW4sIGRvIHRoZSBzYW1lIHRoaW5nIGFnYWluLCBzbyBi
b3RoCisvLyBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIGFyZSAoYWdhaW4pIHNjaGVkdWxlZCBmb3Ig
Y2xlYW51cC4gVGhpcyBoYXMgdG8gYmUgYSBJSUZFIGZ1bmN0aW9uCisvLyAoc28gdGhhdCB3ZSBj
YW4gcmVsaWFibHkga2lsbCB0aGUgb2JqZWN0cykgc28gd2UgY2Fubm90IHVzZSB0aGUgc2FtZSBm
dW5jdGlvbgorLy8gYXMgYmVmb3JlLgorKGZ1bmN0aW9uKCkgeworICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7ICsraSkgeworICAgIGxldCBvYmplY3RzID0gW107CisgICAgb2JqZWN0c1swXSA9
IHt9OworICAgIG9iamVjdHNbMV0gPSB7fTsKKyAgICBmZzAucmVnaXN0ZXIob2JqZWN0c1swXSwg
ImhvbGRpbmdzMC0xIik7CisgICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNbMV0sICJob2xkaW5nczEt
MSIpOworICAgIG9iamVjdHMgPSBbXTsKKyAgfQorfSkoKTsKKworZ2MoKTsKKworbGV0IHRpbWVv
dXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDBfY2Fs
bF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50
KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwXzFfaG9sZGluZ3NfY291bnQpOworICBh
c3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfY2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFs
cygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNs
ZWFudXAxXzBfaG9sZGluZ3NfY291bnQpOworfQorCisvLyBHaXZlIHRoZSBjbGVhbnVwIHRhc2sg
YSBjaGFuY2UgdG8gcnVuLgorc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJp
ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1maW5hbGl6YXRpb24tcmVn
aXN0cmllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTA3M2EwMzFkYjA2Y2NkMzAyNmQ4ZjI0ZjEyN2ZhZGRi
ODk4YWM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGly
dHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFr
LXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBf
Y2FsbF9jb3VudDEgPSAwOworbGV0IGNsZWFudXBfY2FsbF9jb3VudDIgPSAwOworbGV0IGNsZWFu
dXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdz
MSIpCisgICAgICAgICsrY2xlYW51cF9jYWxsX2NvdW50MTsKKyAgICBlbHNlIGlmIChob2xkaW5n
cyA9PT0gImhvbGRpbmdzMiIpCisgICAgICAgICsrY2xlYW51cF9jYWxsX2NvdW50MjsKKyAgICBl
bHNlCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCitsZXQgZmcxID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGZnMiA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRlIHR3byBvYmplY3RzIGFuZCByZWdpc3RlciB0aGVt
IGluIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZSBvYmplY3RzIG5lZWQKKy8vIHRvIGJlIGlu
c2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVu
Y3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAg
bGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcxLnJlZ2lzdGVyKG9iamVjdDEsICJob2xkaW5n
czEiKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZzIucmVnaXN0ZXIo
b2JqZWN0MiwgImhvbGRpbmdzMiIpOworICAgIH0KKyAgICAvLyBvYmplY3QxIGFuZCBvYmplY3Qy
IGdvIG91dCBvZiBzY29wZS4KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0
eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAs
IGNsZWFudXBfY2FsbF9jb3VudDEpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3Vu
dDIpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgor
bGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydE5vdEVxdWFscygwLCBj
bGVhbnVwX2NhbGxfY291bnQxKTsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxs
X2NvdW50Mik7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFudXAuanMgYi9KU1Rlc3Rz
L3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhOTdk
YWE0ZDFkMjY1MjQ4MjIwMmQxMWI1YjJjYmM0NWNiMjcyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEs
MjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJp
Z2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdz
OiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CisKK2xldCBjYWxsZWQgPSBmYWxzZTsKK2xldCByZWVudHJhbnRfZ2MgPSBmdW5jdGlvbihob2xk
aW5ncykgeworICAgIGdjKCk7CisgICAgY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3
IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHJlZW50cmFudF9nYyk7CisKKyhmdW5jdGlvbigpIHsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIGZnLnJlZ2lzdGVyKHt9LCA0
Mik7Cit9KSgpOworCitnYygpOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGFzc2Vy
dFRydWUoY2FsbGVkKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvdjgtc3Ry
ZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMgYi9KU1Rlc3RzL3N0cmVz
cy92OC1zdHJlc3MtZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHktZW5xdWV1ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTI0ZTJjZDNlYzc2ZDVjODk1MWNkMmZhMGE1MWE4NWZkMDgwOTgxCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRp
cnR5LWVucXVldWUuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAyMCB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0tc3RyZXNzLWNvbXBhY3Rpb24gLS1leHBvc2Ut
Z2MKKworLy8gVGVzdCB0aGF0IHRoZSBkaXJ0eSBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIHRoYXQg
YXJlIGVucXVldWVkIGR1cmluZyBHQyBoYXZlCisvLyB0aGVpciBzbG90cyBjb3JyZWN0bHkgcmVj
b3JkZWQgYnkgdGhlIEdDLgorCisvLyAxKSBDcmVhdGUgbWFueSBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5IG9iamVjdHMgc28gdGhhdCB0aGV5IHNwYW4gc2V2ZXJhbCBwYWdlcworLy8gKHBhZ2Ugc2l6
ZSBpcyAyNTZrYikuCitsZXQgcmVnaXN0cmllcyA9IFtdOworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDI0ICogODsgaSsrKSB7CisgIHJlZ2lzdHJpZXMucHVzaChuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoKCkgPT4ge30pKTsKK30KKworLy8gMikgRm9yY2UgdHdvIEdDcyB0byBlbnN1cmUgdGhhdCBK
U0ZpbmFsaXphdG9uUmVnaXN0cnkgb2JqZWN0cyBhcmUgdGVudXJlZC4KK2djKCk7CitnYygpOwor
CisvLyAzKSBJbiBhIGZ1bmN0aW9uOiBjcmVhdGUgYSBkdW1teSB0YXJnZXQgYW5kIHJlZ2lzdGVy
IGl0IGluIGFsbAorLy8gSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVjdHMuCisoZnVuY3Rpb24o
KSB7CisgIGxldCBnYXJiYWdlID0ge307CisgIHJlZ2lzdHJpZXMuZm9yRWFjaCgoZnIpID0+IHsK
KyAgICBmci5yZWdpc3RlcihnYXJiYWdlLCA0Mik7CisgIH0pOworICBnYXJiYWdlID0gbnVsbDsK
K30pKCk7CisKKy8vIDQpIE91dHNpZGUgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoZSB0YXJnZXQgaXMg
dW5yZWFjaGFibGU6IGZvcmNlIEdDIHRvIGNvbGxlY3QKKy8vIHRoZSBvYmplY3QuCitnYygpOwor
CisvLyA1KSBGb3JjZSBhbm90aGVyIEdDIHRvIHRlc3QgdGhhdCB0aGUgc2xvdCB3YXMgY29ycmVj
dGx5IHVwZGF0ZWQuCitnYygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZp
bmVkLWhvbGRpbmdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIyYzYwY2ZkYTc3ZjBhZmNhMWI1Y2I5ZmRkYWZlYWMwZDkwNzUwYmIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanMK
QEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQor
CisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVu
dGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIg
cmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9
IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCB1bmRlZmlu
ZWQpOworICAgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lz
dGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0byBi
ZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0h
CisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgewor
ICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCk7Cisg
ICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3Qg
YW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2Fs
bF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxs
ZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0Tm90RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51
cC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDcyYjBmOGIzYmI4ZWJhNjkwYTE2MGQxNjM4ZDM5ZTQzZjQ3MmQxCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpz
CkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikK
KworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1l
bnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVy
IHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzIiwgaG9sZGlu
Z3MpOworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXph
dGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXki
fTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRp
b25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBz
byB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307
CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwga2V5KTsKKyAgICB9Cit9
KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgc2No
ZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50
KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xl
dCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKKyAgICBsZXQgb2xkX2NsZWFudXBfY2FsbF9jb3VudCA9IGNsZWFu
dXBfY2FsbF9jb3VudDsKKworICAgIC8vIFVucmVnaXN0ZXIgYW4gYWxyZWFkeSBjbGVhbmVkLXVw
IHdlYWsgcmVmZXJlbmNlLgorICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOwor
ICAgIC8vIFNpbmNlIHdlIG1heSBub3QgY29sbGVjdCBldmVyeXRoaW5nIHdlIGRvbid0IGtub3cg
d2hhdCBzdWNjZXNzIHdpbGwgYmUgdW5saWtlIHY4LgorICAgIC8vIGFzc2VydEZhbHNlKHN1Y2Nl
c3MpOworCisgICAgLy8gQXNzZXJ0IHRoYXQgaXQgZGlkbid0IGRvIGFueXRoaW5nLgorICAgIHNl
dFRpbWVvdXQoKCkgPT4geyBhc3NlcnRFcXVhbHMob2xkX2NsZWFudXBfY2FsbF9jb3VudCwgY2xl
YW51cF9jYWxsX2NvdW50KTsgfSwgMCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFu
dXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjZDFlM2VjNmEzYWViZmM3ODc2YzdkZGFmN2Q3ZGI4YzE1M2ZlYWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVw
LmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0x
IikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNy
ZW1lbnRhbC1tYXJraW5nIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3Vy
Y2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2Nh
bGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICArK2Ns
ZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0
ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4g
VGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNh
biByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9
OworICBmZy5yZWdpc3RlcihvYmplY3QsICJteSBob2xkaW5ncyIsIGtleSk7CisKKyAgLy8gQ2xl
YXIgdGhlIFdlYWtDZWxsIGJlZm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNlIHRvIGRpc2NvdmVyIGl0
LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNj
ZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlz
IEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMo
MCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVu
Y3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5jZSB3ZSBjYWxsZWQgdW5yZWdpc3Rlci4KK2xldCB0
aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2Fs
bF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhlZmU4MjRi
NmM3NGEwNThjYjFkMWViMzg3MWVjZTViYWY4YmE3MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCkBAIC0wLDAgKzEsNDYgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIw
MTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhh
cm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xv
YWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xl
dCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5n
cykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXph
dGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXki
fTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRp
b25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBz
byB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgbGV0
IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIsIGtleSk7CisK
KyAgLy8gVW5yZWdpc3RlciBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0
aGUgb2JqZWN0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0
VHJ1ZShzdWNjZXNzKTsKKworICAvLyBDYWxsIHVucmVnaXN0ZXIgYWdhaW4gKGp1c3QgdG8gYXNz
ZXJ0IHdlIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkpLgorICBzdWNjZXNzID0gZmcudW5yZWdpc3Rl
cihrZXkpOworICBhc3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBvdXQg
b2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9i
amVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8g
QXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5jZSB0
aGUgd2VhayByZWZlcmVuY2UKKy8vIHdhcyB1bnJlZ2lzdGVyZWQuCitsZXQgdGltZW91dF9mdW5j
ID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOwor
fQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4
LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMjEyMjg2NjNhZDJj
ZWQ1OTY5NWE1M2M1YjNiMGU1ZjdjYjAwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpAQCAtMCwwICsxLDQ5IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4
IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJt
b255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2Fk
KCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQg
Y2FsbGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIC8v
IFNlZSB3aGljaCB0YXJnZXQgd2UncmUgY2xlYW5pbmcgdXAgYW5kIHVucmVnaXN0ZXIgdGhlIG90
aGVyIG9uZS4KKyAgaWYgKGhvbGRpbmdzID09IDEpIHsKKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVu
cmVnaXN0ZXIoa2V5Mik7CisgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzIHx8IGNhbGxlZCk7CisgIH0g
ZWxzZSB7CisgICAgYXNzZXJ0U2FtZShob2xkaW5ncywgMik7CisgICAgbGV0IHN1Y2Nlc3MgPSBm
Zy51bnJlZ2lzdGVyKGtleTEpOworICAgIGFzc2VydFRydWUoc3VjY2VzcyB8fCBjYWxsZWQpOwor
ICB9CisgIGNhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShjbGVhbnVwKTsKK2xldCBrZXkxID0geyJrIjogImZpcnN0IGtleSJ9OworbGV0IGtleTIg
PSB7ImsiOiAic2Vjb25kIGtleSJ9OworLy8gQ3JlYXRlIHR3byBvYmplY3RzIGFuZCByZWdpc3Rl
ciB0aGVtIGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdHMKKy8vIG5lZWQg
dG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0h
CisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgewor
ICAgICAgICBsZXQgb2JqZWN0MSA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxLCAx
LCBrZXkxKTsKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIo
b2JqZWN0MiwgMiwga2V5Mik7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xh
aW0gdGFyZ2V0IG9iamVjdHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RmFs
c2UoY2FsbGVkKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNh
bGxlZCBhbmQgY2xlYW5lZCB1cCBvbmUgaG9sZGluZ3MgKGJ1dCBub3QgdGhlIG90aGVyIG9uZSku
CitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0VHJ1ZShjYWxsZWQp
OworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZmFhN2I2ZTNj
NDNiZjJiMTI4NjZmMjQwY2M2ZWFjMTg3ZDIxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpAQCAtMCwwICsxLDUxIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAy
MDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1o
YXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCits
b2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCits
ZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50ID0g
MDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxzKGhv
bGRpbmdzLCAiaG9sZGluZ3MiKTsKKworICAvLyBUaGVyZSdzIG1vcmVzIG9iamVjdCB3aXRoIHRo
ZSBzYW1lIGtleSB0aGF0IHdlIGhhdmVuJ3QKKyAgLy8gY2xlYW5lZCB1cCB5ZXQgc28gd2Ugc2hv
dWxkIGJlIGFibGUgdG8gdW5yZWdpc3RlciB0aGUKKyAgLy8gY2FsbGJhY2sgZm9yIHRoYXQgb25l
LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKworICBhc3NlcnRUcnVlKHN1
Y2Nlc3MpOworCisgICsrY2xlYW51cF9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwX2NhbGxf
Y291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsK
Ky8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25S
ZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0
aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCitsZXQga2V5ID0geyJrIjogInRoaXMgaXMg
dGhlIGtleSJ9OworCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBsZXQgb2JqZWN0MiA9
IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIsIGtleSk7CisgICAg
ICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5ncyIsIGtleSk7CisgICAgfQorfSkoKTsK
KworLy8gVGhpcyBHQyB3aWxsIGRpc2NvdmVyIGRpcnR5IFdlYWtDZWxscyBhbmQgc2NoZWR1bGUg
Y2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKwor
Ly8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1l
b3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxzKDEsIGNsZWFudXBfY2FsbF9j
b3VudCk7CisgIGFzc2VydEVxdWFscygxLCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50KTsKK30KKwor
c2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
djgtdW5yZWdpc3Rlci1tYW55LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE4MzM5OWU2NWYwZDI3NDI2MDhiMTM4NDZkNWE1ZDkxN2FiMzdlZGUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanMK
QEAgLTAsMCArMSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQor
CisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVu
dGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIg
cmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cF9o
b2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7Cisg
IGFzc2VydEVxdWFscygiaG9sZGluZ3MyIiwgaG9sZGluZ3MpOworICArK2NsZWFudXBfaG9sZGlu
Z3NfY291bnQ7CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsiayI6ICJrZXkxIn07Cits
ZXQga2V5MiA9IHsiayI6ICJrZXkyIn07CisvLyBDcmVhdGUgdGhyZWUgb2JqZWN0cyBhbmQgcmVn
aXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3RzCisvLyBu
ZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0
aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kp
IHsKKyAgICAgICAgbGV0IG9iamVjdDFhID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVj
dDFhLCAiaG9sZGluZ3MxYSIsIGtleTEpOworCisgICAgICAgIGxldCBvYmplY3QxYiA9IHt9Owor
ICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxYiwgImhvbGRpbmdzMWIiLCBrZXkxKTsKKworICAg
ICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9s
ZGluZ3MyIiwga2V5Mik7CisKKyAgICAgICAgLy8gVW5yZWdpc3RlciBiZWZvcmUgdGhlIEdDIGhh
cyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0cy4KKyAgICAgICAgbGV0IHN1Y2Nlc3Mg
PSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgICAgICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworICAg
IH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0cy4K
K2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25seSBmb3IgdGhlIHJl
ZmVyZW5jZSB3aGljaAorLy8gd2FzIG5vdCB1bnJlZ2lzdGVyZWQuCitsZXQgdGltZW91dF9mdW5j
ID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQp
OworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9ob2xkaW5nc19jb3VudCk7Cit9CisKK3Nl
dFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4
LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgtd2Vhay11bnJlZ2lz
dGVydG9rZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZTgwMGFhMmFjZTA5ZjZmMjk1MmU0ZTk3Y2I1Njk4
MWVhMmUzZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdp
c3RlcnRva2VuLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VX
ZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzLXdpdGgtY2xlYW51
cC1zb21lIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK3ZhciBGUiA9IG5l
dyBGaW5hbGl6YXRpb25SZWdpc3RyeSAoZnVuY3Rpb24gKGhvbGRpbmdzKSB7IGdsb2JhbFRoaXMu
RlJSYW4gPSB0cnVlOyB9KTsKK3sKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkg
eworICAgICAgICBsZXQgb2JqID0ge307CisgICAgICAgIC8vIG9iaiBpcyBpdHMgb3duIHVucmVn
aXN0ZXIgdG9rZW4gYW5kIGJlY29tZXMgdW5yZWFjaGFibGUgYWZ0ZXIgdGhpcworICAgICAgICAv
LyBibG9jay4gSWYgdGhlIHVucmVnaXN0ZXIgdG9rZW4gaXMgaGVsZCBzdHJvbmdseSB0aGlzIHRl
c3Qgd2lsbCBub3QKKyAgICAgICAgLy8gdGVybWluYXRlLgorICAgICAgICBGUi5yZWdpc3Rlcihv
YmosIDQyLCBvYmopOworICAgIH0KK30KKworbGV0IHRyeUFnYWluQ291bnQgPSAxMDsKK2Z1bmN0
aW9uIHRyeUFnYWluKCkgeworICAgIGdjKCk7CisgICAgaWYgKGdsb2JhbFRoaXMuRlJSYW4pCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIS0tdHJ5QWdhaW5Db3VudCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCk7CisgICAgc2V0VGltZW91dCh0cnlBZ2FpbiwgMCk7Cit9Cit0cnlBZ2Fpbigp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404615</attachid>
            <date>2020-07-17 16:00:49 -0700</date>
            <delta_ts>2020-07-17 17:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717160048.patch</filename>
            <type>text/plain</type>
            <size>231290</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGJhMmZhZGUwNDJkODZmOWVkYzExNTZkMGQ4NjQyY2JmYzUwZTk3Li42ZTA1Njg2MjEyNjU4YmY4
NDNjY2JkNDJmYjg1NzI2YTEzNjMxYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pT
QVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKGZ1bmN0aW9u
RmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeURlYWRDb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAg
ICAgKHJ1bkpTQyk6CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwLgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdv
cmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtU
aW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxv
b3ApOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmspOgorICAgICAg
ICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmspOgor
ICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmspOgorICAg
ICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAg
ICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmguCisgICAgICAgICogcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAg
KiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAg
ICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChKU0M6
OnByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlm
aWVyKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cCk6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmxpdmVDb3VudCk6CisgICAgICAg
IChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudCk6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RhY2tPdmVyZmxvd0ZyYW1l
Q2FsbGVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwU2V0V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRBZGRXYXRjaHBvaW50U2V0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlKb2luV2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
QmFzZT46OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpT
UHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6
aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAg
ICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjAtMDctMTcgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBDbGVhbiB1
cCByZXNvbHZlTG9jYWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDgwZWM5MWVjNmRjZWQxZWRjZTY4NGU4YzVk
ZTZiMTY0ZGYyM2YyNS4uNDNlOTMxYWY4MDI4MTU4YTgyYzRjNjZkY2Q4MDYwNjk5NTgzODY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6
YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZWZhY3RvciB0aGluZ3MgZm9yIGNoYW5naW5nIFByb21pc2VEZWZlcnJlZFRpbWVy
IHRvIERlZmVycmVkV29ya1RpbWVyLgorCisgICAgICAgIEFsc28sIGFkZCBnbG9iYWxPYmplY3Qg
aG9vayBmb3IgcmVwb3J0aW5nIHVuY2F1Z2h0IGV4Y2VwdGlvbnMgZnJvbSBKU0MncworICAgICAg
ICBydW5sb29wIGNhbGxiYWNrcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjppbnN0YW50aWF0ZVN0cmVhbWlu
Zyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjphZGRUaW1lclNldE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNl
dE5vdGlmaWNhdGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAg
ICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisKIDIwMjAtMDct
MTcgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYkdM
Ml0gUmVhZFBpeGVscyB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QuY3BwCmluZGV4IGQ3NWM1OGQ0OTlhYzQ3MjU2ZWM4ZGU3ZGExMjYwMWQz
YzYwYTYzMzguLjRhYjU0N2U5ZGUwZGY4ZWE0NzE0NWYyYWZkNTlmZjU2NTNjYjM4ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCkBAIC00
NCw2ICs0NCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xvYmFsT2Jq
ZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxwdHIsIC8vIG1vZHVs
ZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgor
ICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51bGxwdHIsIC8v
IGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBu
dWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZDYxYWFjN2U0NWM1MzcyMDVhOGFjYTdl
MDhlZmQ2OTRjYmVkYzQyMy4uZDdkNGQ4OThmZDQyZjBmMjU0YTc0OTBiYTkzMmU2OGRiNTg1OWY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVj
dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1t
CkBAIC02NCw2ICs2NCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2Fk
ZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcywgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMKICAgICBtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVy
RXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgorICAgIHJl
cG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVs
dExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIs
IC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggMzZhMDgzMGZhNTFlOWIyMjlhNGVmMzE4YTkwYzllNzUyMmMwYWJlNy4uMzY3NjU5Mzc0
ZWIyZDNjYjMxNDY0YTVhOTE0ZWVlOThhMmFjOTljNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtODMwLDYgKzgzMCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9EYXRhVmlldy5oCiAgICAgcnVudGltZS9E
YXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAorICAgIHJ1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuaAogICAgIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmgKICAgICBydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJl
Y3RBcmd1bWVudHNPZmZzZXQuaApAQCAtOTY4LDcgKzk2OSw2IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9QYXJzZUludC5oCiAgICAg
cnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCi0g
ICAgcnVudGltZS9Qcm9taXNlVGltZXIuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgKICAgICBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKICAgICBydW50aW1lL1Byb3Bl
cnR5TmFtZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjZDc0YzI1MjJlYTJi
ZTlkMTI2Yzg4ZmRiMjA5ODM3ZDlhNTJiNWYuLmEyNmE5OTc1MjUyZDA2NTQ2NmJmYTYxYTViNWMy
ZWYzMGYyNGY2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzEsMTYgKzkz
MSwxOSBAQAogCQk1MzBGREU3NTIxRkFCMDA2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBGREU3MzIxRkFB
RkM2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gKi87IH07CiAJCTUzMTFCRDRCMUVBNTgxRTUw
MDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmgg
Ki87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAw
QUY3QTBCIC8qIFdhc21QbGFuLmggKi87IH07Ci0JCTUzMTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAv
KiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi87
IH07Ci0JCTUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgw
RjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsK
KyAgICAgICAgICAgICAgICA1MzE4MDQ1QzIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTgw
NDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oICovOyB9OworICAgICAgICAg
ICAgICAgIDUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBl
LmggKi87IH07CisgICAgICAgICAgICAgICAgNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwICovOyB9OwogCQk1MzMzQkJEQzIxMTBGN0Q5MDA3NjE4RUMgLyogREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAq
LzsgfTsKIAkJNTMzM0JCREQyMTEwRjdFMTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBG
NEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovOyB9OwotCQk1
MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5
NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAgNTMz
OEUyQTcyMzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RTJBNjIzOTZF
RkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MzM4RUJBMzIzQUIwNEI4MDAz
ODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAvKiBGVExT
ZWxlY3RQcmVkaWN0YWJpbGl0eS5oICovOyB9OwotCQk1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcg
LyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJENzk3MDA0
RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUy
IC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNTMzRDA3NDcy
MkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZF
MiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi87IH07CisgICAgICAgICAgICAgICAgNTM0
MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CiAJCTUzNDYzODcxMUU3
MENGM0QwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVu
TG9vcFRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzQxRTcwRERFQzAw
RjEyQUMxIC8qIFByb21pc2VUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2
QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisgICAgICAgICAgICAgICAgNTM0NjM4NzUxRTcw
RERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVm
ZXJyZWRXb3JrVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5
cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTUzNDkwMjg1MUM3Mjc2QjcwMDEy
QkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlD
VGVzdC5jcHAgKi87IH07CiAJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuaCAqLzsgfTsKIAkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNEUw
MzREMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggKi87IH07CkBAIC0zNTk3LDYgKzM2
MDAsNyBAQAogCQk1MkVFRDc5MzI0OTJCODY4MDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25BbGxvd2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTJGNkMzNUIxRTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNkMzNUMxRTcxRUIw
ODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHBhdGggPSBq
cy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDAxRkEzRTMxQzAwMjZBNTQ1IC8qIFNvdXJj
ZXNDb2NvYS50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlc0NvY29hLnR4dDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDExRkEzRTMxRDAwMjZBNTQ1IC8qIFNv
dXJjZXMudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNvdXJjZXMudHh0OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjZBRDFGQTNFNzc3MDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTE0NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVk
U291cmNlMTQ0LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlm
aWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE0NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwpAQCAtMzYyMiwxNyArMzYyNiwyMiBAQAogCQk1MzE4MDQ1QjIyRUFBQzRC
MDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNFeHRyYWN0VmFs
dWUuaDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzMTgwNDVEMjJFQUFGMEYwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0V4dHJhY3RW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMUQ0RTE5MUY1OUNERDIw
MEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBw
YXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRUU3QkMyMkRFNkVDNjAwMzBEQTgxIC8qIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTMyNjMxQjMyMTg3NzdBNTAwN0I4MTkxIC8qIEphdmFTY3JpcHRDb3JlLm1vZHVsZW1hcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9ICJzb3VyY2Vjb2RlLm1vZHVsZS1tYXAiOyBwYXRoID0gSmF2YVNjcmlwdENvcmUu
bW9kdWxlbWFwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RTJBNjIzOTZFRkVD
MDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVj
dFByZWRpY3RhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNl
bGVjdFByZWRpY3RhYmlsaXR5Lmg7IHBhdGggPSBmdGwvRlRMU2VsZWN0UHJlZGljdGFiaWxpdHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBB
IC8qIFdhc21PcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9wcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIg
LyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzM0QwNzQ1MjJDMkQ4N0YwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzNEMDc0NjIyQzJEOUQx
MDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFG
QzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3Bw
OyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9v
cFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDYzODcyMUU3MEQwMTUwMEYxMkFD
MSAvKiBKU1J1bkxvb3BUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1J1bkxvb3BUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUz
NDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvbWlzZVRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvbWlzZVRpbWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlw
ZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NDFF
NzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVycmVkV29ya1RpbWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAgICAgICAgICAgICAgICA1MzQ4NkJC
NjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5
Q1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJh
eUNUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRB
cnJheUNUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVkQXJyYXlD
VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzEzNCw2ICs3MTQzLDggQEAKIAkJCQkxNEExNTYzMDEwOTY2MzY1
MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCAqLywKIAkJCQlCQ0QyMDM0NzBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkNEMjAzNDgwRTE3MTM1RTAw
MkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKKwkJCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJB
QzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovLAorCQkJCTUzNDYzODc0MUU3MERERUMwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovLAogCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFF
Rjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywKIAkJCQk3MzRCNjU1NDIzRjRB
MzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8sCiAJCQkJMEZFMDUwMEYxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8sCkBAIC03MTg0LDExICs3MTk1
LDE3IEBACiAJCQkJMTQ3MzQxRTkxREMyQ0YyNTAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmNw
cCAqLywKIAkJCQkxNDczNDFDQjFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCAq
LywKIAkJCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVz
LmggKi8sCi0JCQkJQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFn
ZW50LmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDRkFEMzMyMzcy
REFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKIAkJCQlDRUNGQUQz
MjIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRTIw
QkQwNDIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCAqLywK
IAkJCQlDRTIwQkQwMzIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNl
LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ1MjJDMkQ4N0Yw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1
MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
ci5oICovLAorCQkJCTUzMUVFN0JDMjJERTZFQzYwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZS5jcHAgKi8sCisJCQkJNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggKi8sCiAJCQkJQTdBOEFGMjkxN0FEQjVGMzAw
NUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3QThBRjI5MTdBREI1RjMwMDVBQjE3
NCAvKiBGbG9hdDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyog
RmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oICovLApAQCAtNzM0NSw3ICs3MzYyLDEzIEBACiAJCQkJMEY3REYxMzkx
RTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcCAq
LywKIAkJCQkwRjdERjEzQTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlBN0I0QUNBRTE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBv
cnRNYWNyb3MuaCAqLywKLQkJCQkwRjJCNjZDMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMy
QXJyYXkuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMwMDc0MEMyMkRE
NkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwICovLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NjIyQzJEOUQxMDA0RDJGRTIgLyogSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmNwcCAqLywKKwkJCQk3OTg5
Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmNwcCAqLywKKwkJCQk3OTg5Mzc3
NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmggKi8sCisJCQkJNzk4OTM3NzcxRENB
QjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwRjJCNjZDMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCAq
LywKIAkJCQkwRjJCNjZDMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCAqLywK
IAkJCQlGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCiAJCQkJ
RjY5MkE4NUYwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uaCAqLywKQEAgLTc1NDQsOSAr
NzU2Nyw3IEBACiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
Ki8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNw
cCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
aCAqLywKLQkJCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmNwcCAq
LywKLQkJCQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi8sCi0J
CQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4
NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3
QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3
MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk4NjE1OEFCMjE1NUM4QjNG
MDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCkBAIC05Mjg2LDYgKzkzMDcsNyBAQAogCQkJ
CTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1NCAvKiBEZWZlckdDLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkM3MTJERjE3Q0Q4NzdDMDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJy
ZWRTb3VyY2VEdW1wLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJB
QzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLApAQCAtOTUyNiw5ICs5NTQ4LDExIEBACiAJCQkJMEYw
QjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyNjdDRjgyMjQ5MzE2QjEwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0VDRkFEMzcy
MzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5
IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTIwQkQwNTIz
N0QzRTIzMDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDQyMkMyRDc5
NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3Ry
eVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJz
LmggaW4gSGVhZGVycyAqLywKQEAgLTk4NTcsNyArOTg4MSw4IEBACiAJCQkJRkUzODRFRTYxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0
MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFD
QUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NzIyQzJEOUQyMDA0
RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zs
b2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3
NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTEw
MTQ3LDggKzEwMTcyLDcgQEAKIAkJCQlEQzYwNUI2MDFDRTI2RUE3MDA1OTM3MTggLyogUHJvZmls
ZXJVSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTEwMURDQTkyOTQwMDE0RjlGRSAvKiBQ
cm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFENDFEQzAyRTZEMDBB
QTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUzNDYzODc1
MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBG
RDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGRDNFNDBFMUI2MThCNjYwMEM4
MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGQjYxMDAx
MDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1l
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEz
NGE2NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li4yYTI4N2E3ZmRkYjA4MDRmM2I2MDEy
MGRjYTBiZTc1Yjc1NWU3OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03ODYs
NiArNzg2LDggQEAgcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAKIHJ1bnRpbWUvRXhlY3V0YWJs
ZUJhc2UuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50LmNwcAogcnVudGltZS9GaWxl
QmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCitydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuY3BwCitydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAog
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwCkBAIC04NTAsNiArODUy
LDcgQEAgcnVudGltZS9KU0RhdGFWaWV3LmNwcAogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAogcnVudGltZS9KU0RhdGVNYXRoLmNwcAogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5jcHAKK3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCiBydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC05MzIsNyArOTM1LDcgQEAgcnVudGltZS9PcGVyYXRp
b25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0
aW5nRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAotcnVudGlt
ZS9Qcm9taXNlVGltZXIuY3BwCitydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAogcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKIHJ1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXgg
MTg0YmI5NDQ0MWQzZmE0MzM0MmFmYmY5NjY1Y2MxYmU3MzllZTAxMy4uZDgxYWRlZmY1Zjg0MjZh
ODUzMjQyYzRlN2ExN2I1N2E2NTIxYzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKKyNp
bmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFj
aGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFr
T2JqZWN0UmVmLmgiCkBAIC02MTEsNiArNjEyLDggQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCp2bSgpLm1fd2Vha09iamVjdFJlZlNwYWNlKTsK
ICAgICBpZiAodm0oKS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkKICAgICAgICAgZmluYWxpemVNYXJr
ZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0oKS5tX2Vycm9ySW5z
dGFuY2VTcGFjZSk7CisgICAgaWYgKHZtKCkubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQor
ICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0
aW9uUmVnaXN0cnk+KCp2bSgpLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CiAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKHZtKCkubV93ZWJBc3NlbWJseUNvZGVCbG9ja1Nw
YWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyZTBkMGEzMGRmNWY2NTMwOGU3YTlmY2ViOTY0
MzRhMjk3ZjE4MzE5Li5jOWJlZWQ5ZmE4MjM0ZjFhMTA2MjFmMzEzNjIwYmJjYWY1NjI5ZGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbXBpbGVy
VGltaW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29uZmln
RmlsZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVs
cGVycy5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC01Niw3ICs1OCw2
IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJv
ci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJQcm9taXNlVGlt
ZXIuaCIKICNpbmNsdWRlICJSZWxlYXNlSGVhcEFjY2Vzc1Njb3BlLmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpAQCAtMTU1LDYgKzE1
Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSB7CiAKKyNkZWZpbmUgRVhJ
VF9FWENFUFRJT04gMworCiBOT19SRVRVUk5fV0lUSF9WQUxVRSBzdGF0aWMgdm9pZCBqc2NFeGl0
KGludCBzdGF0dXMpCiB7CiAgICAgd2FpdEZvckFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5KCk7CkBA
IC0xODgsNyArMTkxLDcgQEAgY2xhc3MgV29ya2VyczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmLCBib29sIGlzV29ya2VyLCBjb25zdCBG
dW5jJik7Ci1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBib29sIGlz
TGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlLCBDb21tYW5kTGluZSYsIGJvb2wm
IHN1Y2Nlc3MpOworc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiwgYm9v
bCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSwgY29uc3QgQ29tbWFuZExp
bmUmLCBib29sJiBzdWNjZXNzKTsKIAogY2xhc3MgTWVzc2FnZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxNZXNzYWdlPiB7CiBwdWJsaWM6CkBAIC0zMDIsNyArMzA1LDEwIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbE1hc3F1ZXJhZGVyKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9y
QWxsVmFyaWFibGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMy
Qml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKQEAgLTUzOCw4ICs1NDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJkdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMiLCBmdW5jdGlvbkR1bXBUeXBl
c0ZvckFsbFZhcmlhYmxlcyAsIDApOwogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHJhaW5N
aWNyb3Rhc2tzIiwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MsIDApOwotICAgICAgICBhZGRGdW5j
dGlvbih2bSwgInJlbGVhc2VXZWFrUmVmcyIsIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzLCAwKTsK
KyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRUaW1lb3V0IiwgZnVuY3Rpb25TZXRUaW1lb3V0
LCAyKTsKIAorICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlbGVhc2VXZWFrUmVmcyIsIGZ1bmN0
aW9uUmVsZWFzZVdlYWtSZWZzLCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJmaW5hbGl6
YXRpb25SZWdpc3RyeUxpdmVDb3VudCIsIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZl
Q291bnQsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50IiwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudCwgMCk7Cisg
ICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImdldFJhbmRvbVNlZWQiLCBmdW5jdGlv
bkdldFJhbmRvbVNlZWQsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFJhbmRvbVNl
ZWQiLCBmdW5jdGlvblNldFJhbmRvbVNlZWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImlzUm9wZSIsIGZ1bmN0aW9uSXNSb3BlLCAxKTsKQEAgLTYzOCw2ICs2NDgsOCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBJZGVudGlmaWVyIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0
YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3Qq
LCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRp
YyBKU09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNW
YWx1ZSk7CisKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRM
b29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7CiB9OwogU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCk7CiAKQEAgLTY2
MCw2ICs2NzIsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6
OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUlt
cG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3Vh
Z2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5z
dGFudGluYXRlU3RyZWFtaW5nCkBAIC0yMTg3LDYgKzIyMDAsMjkgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VGltZW91dChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgLy8gRklYTUU6IFRoaXMgbWVhbnMgd2UgY2FuJ3QgcGFzcyBhbnkg
aW50ZXJuYWwgZnVuY3Rpb24gYnV0IEkgZG9uJ3QgdGhpbmsgdGhhdCdzIGNvbW1vbiBmb3IgdGVz
dGluZy4KKyAgICBhdXRvIGNhbGxiYWNrID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVu
dCBpcyBub3QgYSBKUyBmdW5jdGlvbiJfcyk7CisKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbG9v
ayBhdCB0aGUgdGltZW91dCBwYXJhbWV0ZXIgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgc2NoZWR1
bGUgd29yayBsYXRlciBBUEkuCisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdX
b3JrKHZtLCBjYWxsYmFjaywgeyB9KTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1
bGVXb3JrU29vbihjYWxsYmFjaywgW2NhbGxiYWNrXSB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOworICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGpzVW5kZWZpbmVkKCks
IGFyZ3MsICJZb3Ugc2hvdWxkbid0IHNlZSB0aGlzLi4uIik7CisgICAgICAgIHZtLmRlZmVycmVk
V29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayhjYWxsYmFjayk7CisgICAgfSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTIxOTQsNiArMjIzMCwzMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0g
anNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBp
cyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5saXZlQ291bnQobG9j
a2VyKSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIWZpbmFsaXph
dGlvblJlZ2lzdHJ5KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnki
X3MpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmaW5hbGl6YXRpb25SZWdpc3RyeS0+
Y2VsbExvY2soKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmaW5hbGl6
YXRpb25SZWdpc3RyeS0+ZGVhZENvdW50KGxvY2tlcikpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTI2MTcsMTAgKzI2NzksMTAgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgICAgLy8gV2UgY2FuJ3QgdXNlIGRl
c3RydWN0b3JzIGluIHRoZSBmb2xsb3dpbmcgY29kZSBiZWNhdXNlIGl0IHVzZXMgV2luZG93cwog
ICAgIC8vIFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsaW5nCi0gICAgaW50IHJlcyA9IDA7Cisg
ICAgaW50IHJlcyA9IEVYSVRfU1VDQ0VTUzsKICAgICBUUlkKICAgICAgICAgcmVzID0ganNjbWFp
bihhcmdjLCBhcmd2KTsKLSAgICBFWENFUFQocmVzID0gMykKKyAgICBFWENFUFQocmVzID0gRVhJ
VF9FWENFUFRJT04pCiAgICAgZmluYWxpemVTdGF0c0F0RW5kT2ZUZXN0aW5nKCk7CiAgICAgaWYg
KGdldGVudigiSlNfU0hFTExfV0FJVF9GT1JfSU5QVVRfVE9fRVhJVCIpKSB7CiAgICAgICAgIFdU
Rjo6ZmFzdERpc2FibGVTY2F2ZW5nZXIoKTsKQEAgLTI2OTEsNyArMjc1Myw3IEBAIHN0YXRpYyB2
b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXhj
ZXB0aW9uKQogI3VuZGVmIENIRUNLX0VYQ0VQVElPTgogfQogCi1zdGF0aWMgYm9vbCBjaGVja1Vu
Y2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgZXhjZXB0aW9uLCBDb21tYW5kTGluZSYgb3B0aW9ucykKK3N0YXRpYyBib29sIGNoZWNrVW5j
YXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBleGNlcHRpb24sIGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zKQogewogICAgIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRFeGNlcHRpb25OYW1lID0gb3B0aW9ucy5tX3VuY2F1Z2h0RXhjZXB0aW9u
TmFtZTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkBAIC0yNzIz
LDcgKzI3ODUsNyBAQCBzdGF0aWMgYm9vbCBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwg
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIENv
bW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQorc3RhdGljIHZvaWQgY2hlY2tFeGNl
cHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBo
YXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBi
b29sJiBzdWNjZXNzKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAt
Mjc0Miw2ICsyODA0LDE1IEBAIHN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzCiAgICAgICAgIHN1Y2Nl
c3MgPSBzdWNjZXNzICYmIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24odm0sIGdsb2JhbE9iamVjdCwg
KGhhc0V4Y2VwdGlvbikgPyB2YWx1ZSA6IEpTVmFsdWUoKSwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQg
R2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGF1dG8q
IGdsb2JhbCA9IGpzQ2FzdDxHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpOworICAgIGR1bXBF
eGNlcHRpb24oZ2xvYmFsLCBleGNlcHRpb24tPnZhbHVlKCkpOworICAgIGJvb2wgaGlkZU5vUmV0
dXJuID0gdHJ1ZTsKKyAgICBpZiAoaGlkZU5vUmV0dXJuKQorICAgICAgICBqc2NFeGl0KEVYSVRf
RVhDRVBUSU9OKTsKK30KKwogc3RhdGljIHZvaWQgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQogewog
ICAgIFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzID0gb3B0aW9ucy5tX3NjcmlwdHM7CkBAIC0zMTc2
LDcgKzMyNDcsNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29s
IGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBmdW5jKHZtLCBnbG9iYWxPYmpl
Y3QsIHN1Y2Nlc3MpOwogICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICB9Ci0gICAg
dm0ucHJvbWlzZVRpbWVyLT5ydW5SdW5Mb29wKCk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXIt
PnJ1blJ1bkxvb3AoKTsKICAgICB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwog
ICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
Y3BwCmluZGV4IGQzYWQyMWU1YmM5N2VhOTQ1MGM2Y2UwYjZmN2UwYzYyNTE3YzkxOTkuLmVjZDA3
M2NkM2RmMjBlNWE5Y2ZjNmQyM2U2NWRlNGFlMDA0M2U3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gQXJy
YXlJdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiQXJyYXkgSXRlcmF0b3IiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5SXRlcmF0
b3JQcm90b3R5cGUpIH07Citjb25zdCBDbGFzc0luZm8gQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6
c19pbmZvID0geyAiQXJyYXkgSXRlcmF0b3IgUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUl0ZXJhdG9yUHJvdG90eXBl
KSB9OwogCiB2b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2OGVmZWRhMTRkNDYx
MDUyNjA3NWFmZGViYWM5YWRiYTI1MjY2YmEuLjcwMWQ2NzQ3YmRiYWRkYzg4MmUwZmZjNDE0YzFh
NTcwODFmOTA1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtNTcsNiArNTcsNyBAQAogICAgIG1hY3JvKFN0cmluZykgXAog
ICAgIG1hY3JvKFN5bWJvbCkgXAogICAgIG1hY3JvKFdlYWtSZWYpIFwKKyAgICBtYWNybyhGaW5h
bGl6YXRpb25SZWdpc3RyeSkgXAogICAgIG1hY3JvKF9fZGVmaW5lR2V0dGVyX18pIFwKICAgICBt
YWNybyhfX2RlZmluZVNldHRlcl9fKSBcCiAgICAgbWFjcm8oX19sb29rdXBHZXR0ZXJfXykgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGlt
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU5M2QzMTY0ZTA4OWQxNjNlMzI2MzMwZTgxMThkODJjMDdiZmQ4YzkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJl
ZFdvcmtUaW1lci5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJEZWZlcnJlZFdvcmtUaW1lci5oIgorCisjaW5jbHVkZSAiSlNQcm9taXNlLmgiCisjaW5jbHVk
ZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBEZWZlcnJlZFdvcmtUaW1lcklu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKworRGVmZXJy
ZWRXb3JrVGltZXI6OkRlZmVycmVkV29ya1RpbWVyKFZNJiB2bSkKKyAgICA6IEJhc2Uodm0pCit7
Cit9CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRvV29yayhWTSYgdm0pCit7CisgICAgQVNT
RVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIG1fdGFza0xvY2su
bG9jaygpOworICAgIGNhbmNlbFRpbWVyKCk7CisgICAgaWYgKCFtX3J1blRhc2tzKSB7CisgICAg
ICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3
aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VGaXJzdCgpOworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtU
aW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbjogIiwgUmF3UG9pbnRlcih0aWNr
ZXQpKTsKKworICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHBy
b21pc2VzLgorICAgICAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpKSB7
CisgICAgICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBydW4gbm93IHRvIHNjaGVkdWxlIHdvcmsu
CisgICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKKyAgICAgICAgICAg
IG1fdGFza0xvY2sudW5sb2NrKCk7IAorCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFy
dCBvZiBhIHJ1bmxvb3AgdHVybiwgd2UgY2FuIHJlbGVhc2UgYW55IHdlYWtyZWZzIGhlcmUuCisg
ICAgICAgICAgICB2bS5maW5hbGl6ZVN5bmNocm9ub3VzSlNFeGVjdXRpb24oKTsKKworICAgICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgICAgICAgICAg
dGFzaygpOworICAgICAgICAgICAgaWYgKEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gc2NvcGUuZXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0aWNrZXQt
Pmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKGdsb2JhbE9iamVjdCwgZXhjZXB0
aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7
CisgICAgICAgICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7CisKKyAg
ICAgICAgICAgIG1fdGFza0xvY2subG9jaygpOworICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5u
aW5nVGFzayA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fcGVuZGluZ1Rp
Y2tldHMuaXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0Zpbmlz
aCkKKyAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKKworICAgIG1fdGFza0xvY2su
dW5sb2NrKCk7Cit9CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxvb3AoKQorewor
ICAgIEFTU0VSVCghbV9hcGlMb2NrLT52bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9j
aygpKTsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgp
LT5ydW5Mb29wKCkpOworICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0Zpbmlz
aCA9IHRydWU7CisgICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuc2l6ZSgpKQorICAgICAgICBSdW5M
b29wOjpydW4oKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmso
Vk0mIHZtLCBUaWNrZXQgdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5j
aWVzKQoreworICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQor
ICAgICAgICBBU1NFUlQoZGVwZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tldCk7CisKKyAgICBh
dXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuYWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxK
U0NlbGw+PigpKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgZGF0YUxv
Z0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVu
ZGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIHRpY2tldCkpOworICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gV1RGTW92ZShkZXBlbmRlbmNpZXMpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRp
bmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMp
OworICAgIH0KK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmsoVGlj
a2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKCkpOworICAgIHJldHVybiBtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRp
Y2tldCk7Cit9CisKK2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRp
bmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSkKK3sKKyAgICBBU1NFUlQo
dGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VS
VChtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpOworCisgICAgYXV0byByZXN1bHQg
PSBtX3BlbmRpbmdUaWNrZXRzLmdldCh0aWNrZXQpOworICAgIHJldHVybiByZXN1bHQuY29udGFp
bnMoZGVwZW5kZW5jeSk7Cit9CisKK2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRp
bmdXb3JrKFRpY2tldCB0aWNrZXQpCit7CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Rp
Y2tldHMucmVtb3ZlKHRpY2tldCk7CisKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBkYXRhTG9n
TG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQ2FuY2VsaW5nIHRpY2tl
dDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Zv
aWQgRGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxlV29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFz
ayYmIHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgbV90
YXNrcy5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHRpY2tldCwgV1RGTW92ZSh0YXNrKSkpOworICAg
IGlmICghaXNTY2hlZHVsZWQoKSAmJiAhbV9jdXJyZW50bHlSdW5uaW5nVGFzaykKKyAgICAgICAg
c2V0VGltZVVudGlsRmlyZSgwX3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmY2Y2YzljYjMzNDYyYzEyZGEyNjUwMDdlZjFjZDk1NmYyYTkxOGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5o
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCisjaW5j
bHVkZSAiU3Ryb25nLmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlOworY2xhc3MgVk07CitjbGFz
cyBKU0NlbGw7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlZmVycmVkV29ya1RpbWVyIGZp
bmFsIDogcHVibGljIEpTUnVuTG9vcFRpbWVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNSdW5Mb29wVGltZXI7CisKKyAgICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOworCisgICAgdXNp
bmcgVGlja2V0ID0gSlNPYmplY3QqOworICAgIHZvaWQgYWRkUGVuZGluZ1dvcmsoVk0mLCBUaWNr
ZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOworICAgIGJvb2wgaGFz
UGVuZGluZ1dvcmsoVGlja2V0KTsKKyAgICBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3Jr
KFRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKKyAgICBib29sIGNhbmNlbFBlbmRpbmdXb3Jr
KFRpY2tldCk7CisKKyAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB2b2lk
IHNjaGVkdWxlV29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworCisgICAgdm9pZCBzdG9wUnVubmlu
Z1Rhc2tzKCkgeyBtX3J1blRhc2tzID0gZmFsc2U7IH0KKworICAgIHZvaWQgcnVuUnVuTG9vcCgp
OworCisgICAgc3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIERlZmVycmVkV29ya1RpbWVyKFZNJik7CisKKyAgICBM
b2NrIG1fdGFza0xvY2s7CisgICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OworICAgIGJvb2wg
bV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OworICAgIERlcXVlPHN0ZDo6dHVw
bGU8VGlja2V0LCBUYXNrPj4gbV90YXNrczsKKyAgICBIYXNoTWFwPFRpY2tldCwgVmVjdG9yPFN0
cm9uZzxKU0NlbGw+Pj4gbV9wZW5kaW5nVGlja2V0czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmM5NmViODRj
MDM0NGU0NzlkMDQxYWU2NmI0OTM5NjI5Njk4ZDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5j
cHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9u
cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dElubGluZXMuaCIKKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yKSB9OworCit2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJh
bnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
RmluYWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlLCBjYWxsRmluYWxpemF0aW9uUmVnaXN0cnksIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lz
dHJ5KQoreworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmlu
YWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNDYWxsYWJs
ZSh2bSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJGaXJzdCBhcmd1bWVudCB0byBGaW5hbGl6YXRpb25SZWdpc3RyeSBzaG91bGQgYmUgYSBm
dW5jdGlvbiJfcyk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBmaW5hbGl6YXRpb25SZWdpc3RyeVN0
cnVjdHVyZSA9IGNhbGxGcmFtZS0+anNDYWxsZWUoKSA9PSBuZXdUYXJnZXQKKyAgICAgICAgPyBn
bG9iYWxPYmplY3QtPmZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkKKyAgICAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG5l
d1RhcmdldCwgZ2V0RnVuY3Rpb25SZWFsbSh2bSwgbmV3VGFyZ2V0KS0+ZmluYWxpemF0aW9uUmVn
aXN0cnlTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKHZtLCBmaW5hbGl6YXRpb25SZWdpc3Ry
eVN0cnVjdHVyZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKSkp
KTsKK30KKworfQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
Y2U0YzU2M2Y4MmNjZTg0ZTdhOWYxOGY2YzVmMzMwMGFlNDI0ODZiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rp
b24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlOworCitjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yIGZpbmFsIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRl
cm5hbEZ1bmN0aW9uOworCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAg
RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yPih2bS5oZWFw
KSkgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRl
cm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKik7Cit9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yKSA9PSBzaXplb2YoSW50ZXJuYWxGdW5jdGlvbikpOworCisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTNmMjAzZjczZmE5N2EwMDZmYTQ1
YzZjNGJhYzNjYTg2NzQ1MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
MTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJG
aW5hbGl6YXRpb25SZWdpc3RyeSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUpIH07CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5y
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit2b2lkIEZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICAvLyBXZSBjYW4ndCBtYWtlIHRoaXMg
YSBwcm9wZXJ0eSBuYW1lIGJlY2F1c2UgaXQncyBhIHJlc2V2ZXJlZCB3b3JkIGluIEMrKy4uLgor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJyZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVJl
Z2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVnaXN0ZXIiKSwgcHJvdG9GdW5jRmluYWxpemF0aW9u
UmVnaXN0cnlVbnJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiRmluYWxp
emF0aW9uUmVnaXN0cnkiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6
YXRpb25SZWdpc3RyeSogZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmpl
Y3QoKSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bGxlZCBGaW5hbGl6YXRpb25SZWdpc3RyeSBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byogZ3JvdXAgPSBqc0R5bmFt
aWNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih2bSwgYXNPYmplY3QodmFsdWUpKTsKKyAg
ICBpZiAoTElLRUxZKGdyb3VwKSkKKyAgICAgICAgcmV0dXJuIGdyb3VwOworCisgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdpc3Ry
eSBmdW5jdGlvbiBvbiBhIG5vbi1GaW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3QiX3MpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIGdyb3VwID0gZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAg
ICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRo
ZSB0YXJnZXQiX3MpOworCisgICAgSlNWYWx1ZSBob2xkaW5ncyA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CisgICAgaWYgKHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIHRhcmdldCwgaG9sZGluZ3Mp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cmVnaXN0ZXIgZXhwZWN0cyB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgdGhlIGhvbGRpbmdzIHBhcmFt
ZXRlciBhcmUgbm90IHRoZSBzYW1lLiBPdGhlcndpc2UsIHRoZSB0YXJnZXQgY2FuIG5ldmVyIGJl
IGNvbGxlY3RlZCJfcyk7CisKKyAgICBKU1ZhbHVlIHVucmVnaXN0ZXJUb2tlbiA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMik7CisgICAgaWYgKCF1bnJlZ2lzdGVyVG9rZW4uaXNVbmRlZmluZWQoKSAm
JiAhdW5yZWdpc3RlclRva2VuLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3Qg
YXMgdGhlIHVucmVnaXN0cmF0aW9uIHRva2VuIl9zKTsKKworICAgIGdyb3VwLT5yZWdpc3RlclRh
cmdldCh2bSwgdGFyZ2V0LmdldE9iamVjdCgpLCBob2xkaW5ncywgdW5yZWdpc3RlclRva2VuKTsK
KyAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5
KHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoYXV0byogdG9rZW4gPSBqc0R5bmFt
aWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSB7CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gZ3JvdXAtPnVucmVnaXN0ZXIodm0sIHRva2VuKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgfQorCisgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVx
dWlyZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7Cit9CisKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0ZGY4ZGQyOGIzOGIzOGQ3
MDcxYzI2MjcwMmYyZjQ4MWM5ZjhhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgIH0KKworICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGU+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeyB9CisK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVz
LmgKaW5kZXggMThlODhkN2MwY2U0ZWUyMTI5YTM3ZDgyMDI2OGFjZjYzNjBmNTJhZS4uMWM1ZmRm
NTBiZDA1ODliNzZjYWRhNDhmN2ZmNTkwM2Q3MTI1ODkzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC00OSw3ICs0OSw3IEBA
IGlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgQXRvbVN0cmluZyYg
c3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFibGUo
dm0pOwogICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+aXNTeW1ib2woKSB8fCBBdG9t
U3RyaW5nSW1wbDo6aXNJbkF0b21TdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwgIlRoZSBhdG9t
aWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+aXNTeW1ib2wo
KSB8fCBBdG9tU3RyaW5nSW1wbDo6aXNJbkF0b21TdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwg
IlRoZSBhdCZvbWljIHN0cmluZyBjb21lcyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMzI3YWNlZTljOTI3
MGU0OTI1YWJkNjY2M2ZjYTVmNDUyYWM2OWIwOC4uMTBjNmZmZDRkNmM3ZTIzN2MxNzFkZmQzYTQ3
YmFhYWZiYWNmNTM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAKLSNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0Jv
dW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAppbmRleCAxNTEwYTRmYWI1ODk1ODAxZGM4N2ZhNjcz
NjY0NzhmMjhjYmE2OWM5Li5lOGY0OGMzZWMwZDM4NTQ5MmJhMzVlMGVlZjE0ZjI4MTY2OTA0ZTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSA8dW5p
Y29kZS91cmVsZGF0ZWZtdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2M5ZTEyMGJkODA3YTU1OWM1MjA2ODhkODJjOTQwMDRjZmY0MzZjYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9u
UmVnaXN0cnkuY3BwCkBAIC0wLDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5KSB9OworCitTdHJ1Y3R1cmUqIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBj
YWxsYmFjaykKK3sKKyAgICBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KHZtLmhlYXApKSBK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBzdHJ1Y3R1cmUpOworICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbih2bSwgY2FsbGJhY2spOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KKwordm9p
ZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTT2JqZWN0
KiBjYWxsYmFjaykKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGNhbGxiYWNrLT5pc0NhbGxhYmxlKHZtKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFs
dWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0V2l0aG91
dFdyaXRlQmFycmllcih2YWx1ZXNbaW5kZXhdKTsKKyAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpD
YWxsYmFjaykuc2V0V2l0aG91dFdyaXRlQmFycmllcihjYWxsYmFjayk7Cit9CisKK3ZvaWQgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7
CisKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkq
PihjZWxsKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExv
Y2soKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyIDogdGhpc09iamVjdC0+bV9saXZlUmVn
aXN0cmF0aW9ucykgeworICAgICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IGl0ZXIudmFs
dWUpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChyZWdpc3RyYXRpb24uaG9sZGluZ3MpOwor
ICAgIH0KKyAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IHRoaXNPYmplY3QtPm1fbm9VbnJl
Z2lzdHJhdGlvbkxpdmUpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlvbi5ob2xk
aW5ncyk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyIDogdGhpc09iamVjdC0+bV9kZWFkUmVn
aXN0cmF0aW9ucykgeworICAgICAgICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogaXRlci52YWx1ZSkK
KyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGhvbGRpbmdzKTsKKyAgICB9CisgICAgZm9yIChh
dXRvJiBob2xkaW5ncyA6IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQpCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKGhvbGRpbmdzKTsKKworICAgIHNpemVfdCB0b3RhbEJ1ZmZlclNp
emVzSW5CeXRlcyA9IHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMuY2FwYWNpdHkoKSAq
IHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKTo6S2V5VmFs
dWVQYWlyVHlwZSk7CisgICAgdG90YWxCdWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09iamVjdC0+
bV9saXZlUmVnaXN0cmF0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmpl
Y3QtPm1fZGVhZFJlZ2lzdHJhdGlvbnMpOjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1
ZmZlclNpemVzSW5CeXRlcyArPSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLmNh
cGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9u
TGl2ZS50YWtlTGFzdCgpKSk7CisgICAgdG90YWxCdWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09i
amVjdC0+bV9ub1VucmVnaXN0cmF0aW9uRGVhZC5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBl
KHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUudGFrZUxhc3QoKSkpOworICAgIHZp
c2l0b3Iudm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0b3RhbEJ1ZmZlclNpemVz
SW5CeXRlcyk7Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveShKU0Nl
bGwqIHRhYmxlKQoreworICAgIHN0YXRpY19jYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih0
YWJsZSktPn5KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KCk7Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQoreworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisKKyAgICBhdXRvIHJlbW92ZUZyb21WZWN0
b3IgPSBbXSAoYXV0byYgdmVjdG9yLCBzaXplX3QgcG9zaXRpb24pIHsKKyAgICAgICAgc3RkOjpz
d2FwKHZlY3Rvcltwb3NpdGlvbl0sIHZlY3Rvci5sYXN0KCkpOworICAgICAgICByZXR1cm4gdmVj
dG9yLnRha2VMYXN0KCk7CisgICAgfTsKKworICAgIGJvb2wgcmVhZGllZENlbGwgPSBmYWxzZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXpl
KCk7ICsraSkgeworICAgICAgICBBU1NFUlQoIW1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0uaG9s
ZGluZ3MuZ2V0KCkuaXNDZWxsKCkgfHwgdm0uaGVhcC5pc01hcmtlZChtX25vVW5yZWdpc3RyYXRp
b25MaXZlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgIGlmICghdm0uaGVh
cC5pc01hcmtlZChtX25vVW5yZWdpc3RyYXRpb25MaXZlW2ldLnRhcmdldCkpIHsKKyAgICAgICAg
ICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuYXBwZW5kKHJlbW92ZUZyb21WZWN0b3IobV9ub1Vu
cmVnaXN0cmF0aW9uTGl2ZSwgaSkuaG9sZGluZ3MpOworICAgICAgICAgICAgcmVhZGllZENlbGwg
PSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgbV9saXZlUmVnaXN0cmF0aW9ucy5yZW1v
dmVJZihbJl0gKGF1dG8mIGJ1Y2tldCkgLT4gYm9vbCB7CisgICAgICAgIEFTU0VSVChidWNrZXQu
dmFsdWUuc2l6ZSgpKTsKKworICAgICAgICBib29sIGtleUlzRGVhZCA9ICF2bS5oZWFwLmlzTWFy
a2VkKGJ1Y2tldC5rZXkpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYnVja2V0
LnZhbHVlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBBU1NFUlQoIWJ1Y2tldC52YWx1ZVtp
XS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKGJ1Y2tldC52YWx1
ZVtpXS5ob2xkaW5ncy5nZXQoKS5hc0NlbGwoKSkpOworICAgICAgICAgICAgaWYgKCF2bS5oZWFw
LmlzTWFya2VkKGJ1Y2tldC52YWx1ZVtpXS50YXJnZXQpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGtleUlzRGVhZCkKKyAgICAgICAgICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5h
cHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBkZWFkTGlzdCA9IG1f
ZGVhZFJlZ2lzdHJhdGlvbnMuYWRkKGJ1Y2tldC5rZXksIERlYWRSZWdpc3RyYXRpb25zKCkpOwor
ICAgICAgICAgICAgICAgICAgICBkZWFkTGlzdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHJlbW92
ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJlYWRpZWRDZWxsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUu
YXBwZW5kKHJlbW92ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gIWJ1Y2tldC52YWx1ZS5zaXplKCk7CisgICAgfSk7CisKKyAgICBpZiAo
IXZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29yayh0aGlzKSAmJiAocmVhZGllZENl
bGwgfHwgZGVhZENvdW50KE5vTG9ja2luZ05lY2Vzc2FyeSkpKSB7CisgICAgICAgIHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgdGhpcywgeyB9KTsKKyAgICAgICAgQVNT
RVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29yayh0aGlzKSk7CisgICAgICAg
IHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHRoaXMsIFt0aGlzXSB7Cisg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAg
ICAgICB0aGlzLT5ydW5GaW5hbGl6YXRpb25DbGVhbnVwKGdsb2JhbE9iamVjdCk7CisgICAgICAg
ICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+Y2FuY2VsUGVuZGluZ1dvcmsodGhpcyk7CisgICAg
ICAgIH0pOworICAgIH0KK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpydW5GaW5h
bGl6YXRpb25DbGVhbnVwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIHdoaWxlIChKU1ZhbHVlIHZhbHVlID0gdGFrZURlYWRIb2xkaW5n
c1ZhbHVlKCkpIHsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAg
YXJncy5hcHBlbmQodmFsdWUpOworICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgY2FsbGJhY2so
KSwgYXJncywgIlRoaXMgc2hvdWxkIG5vdCBiZSB2aXNpYmxlOiBwbGVhc2UgcmVwb3J0IGEgYnVn
IHRvIGJ1Z3Mud2Via2l0Lm9yZyIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIH0KK30KKworSlNWYWx1ZSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp0
YWtlRGVhZEhvbGRpbmdzVmFsdWUoKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Vs
bExvY2soKSk7CisgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgaWYgKG1fbm9VbnJlZ2lzdHJhdGlv
bkRlYWQuc2l6ZSgpKQorICAgICAgICByZXN1bHQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnRh
a2VMYXN0KCkuZ2V0KCk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fZGVhZFJl
Z2lzdHJhdGlvbnMuYmVnaW4oKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9kZWFkUmVnaXN0cmF0
aW9ucy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIEFTU0VS
VChpdGVyLT52YWx1ZS5zaXplKCkpOworICAgICAgICByZXN1bHQgPSBpdGVyLT52YWx1ZS50YWtl
TGFzdCgpLmdldCgpOworICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLnNpemUoKSkKKyAgICAgICAg
ICAgIG1fZGVhZFJlZ2lzdHJhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0KKworICAgIGlmIGNv
bnN0ZXhwciAoQVNTRVJUX0VOQUJMRUQpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVy
IDogbV9kZWFkUmVnaXN0cmF0aW9ucykKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIu
dmFsdWUuc2l6ZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0KFZNJiB2bSwgSlNPYmplY3QqIHRh
cmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbikKK3sKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIFJlZ2lzdHJhdGlvbiByZWdpc3RyYXRpb247
CisgICAgcmVnaXN0cmF0aW9uLnRhcmdldCA9IHRhcmdldDsKKyAgICByZWdpc3RyYXRpb24uaG9s
ZGluZ3Muc2V0V2l0aG91dFdyaXRlQmFycmllcihob2xkaW5ncyk7CisgICAgaWYgKHRva2VuLmlz
VW5kZWZpbmVkKCkpCisgICAgICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuYXBwZW5kKFdURk1v
dmUocmVnaXN0cmF0aW9uKSk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9s
aXZlUmVnaXN0cmF0aW9ucy5hZGQoanNTZWN1cmVDYXN0PEpTT2JqZWN0Kj4odm0sIHRva2VuKSwg
TGl2ZVJlZ2lzdHJhdGlvbnMoKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBw
ZW5kKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgfQorICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKHRoaXMpOworfQorCitib29sIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnVucmVnaXN0ZXIo
Vk0mLCBKU09iamVjdCogdG9rZW4pCit7CisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3cml0ZSBi
YXJyaWVyIG91cnNlbHZlcyBoZXJlIGJlY2F1c2Ugd2Ugd2lsbCBvbmx5IHBvaW50IHRvIGxlc3Mg
dGhpbmdzIGFmdGVyIHRoaXMgZmluaXNoZXMuCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhj
ZWxsTG9jaygpKTsKKyAgICBib29sIHJlc3VsdCA9IG1fbGl2ZVJlZ2lzdHJhdGlvbnMucmVtb3Zl
KHRva2VuKTsKKyAgICByZXN1bHQgfD0gbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUodG9rZW4p
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc2l6ZV90IEpTRmluYWxpemF0aW9uUmVnaXN0
cnk6OmxpdmVDb3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKQoreworICAgIHNpemVfdCBj
b3VudCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuc2l6ZSgpOworICAgIGZvciAoY29uc3QgYXV0
byYgaXRlciA6IG1fbGl2ZVJlZ2lzdHJhdGlvbnMpCisgICAgICAgIGNvdW50ICs9IGl0ZXIudmFs
dWUuc2l6ZSgpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitzaXplX3QgSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6ZGVhZENvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7CisgICAg
c2l6ZV90IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5zaXplKCk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBpdGVyIDogbV9kZWFkUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291bnQgKz0g
aXRlci52YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK1N0cmluZyBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNDOjpKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KikKK3sKKyAgICByZXR1cm4gIk9iamVjdCJfczsKK30KKworfQorCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVn
aXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVn
aXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zOTA1MWJmYTBhOGM2NzYzOGYwMzExNzRjNDNiMDY1YjQxMjZh
MjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZUludGVy
bmFsRmllbGRPYmplY3RJbXBsPDE+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNEZXN0
cnVjdGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwxPjsKKworICAgIGVudW0gY2xhc3MgRmll
bGQgOiB1aW50OF90IHsgCisgICAgICAgIENhbGxiYWNrLAorICAgIH07CisKKyAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksIGlubGluZUNhcGFjaXR5
ID09IDBVKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3Mg
bW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7
CisgICAgICAgIHJldHVybiB2bS5maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlPG1vZGU+KCk7Cisg
ICAgfQorCisgICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNWYWx1ZSwgbnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkcz4gaW5pdGlhbFZhbHVlcygpCisgICAgeworICAgICAgICByZXR1cm4geyB7CisgICAgICAg
ICAgICBqc051bGwoKSwKKyAgICAgICAgfSB9OworICAgIH0KKworICAgIGNvbnN0IFdyaXRlQmFy
cmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1cm4g
QmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1
cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQor
CisgICAgSlNPYmplY3QqIGNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0
Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6Q2FsbGJhY2spLmdldCgpKTsgfQorCisgICAgc3RhdGlj
IEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0
KiBjYWxsYmFjayk7CisgICAgc3RhdGljIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGNyZWF0ZVdp
dGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7
CisKKyAgICB2b2lkIHJ1bkZpbmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqKTsKKwor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBKU1ZhbHVl
IHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpOworCisgICAgYm9vbCB1bnJlZ2lzdGVyKFZNJiwgSlNP
YmplY3QqIHRva2VuKTsKKyAgICAvLyB0b2tlbiBzaG91bGQgYmUgYSBKU09iamVjdCBvciB1bmRl
ZmluZWQuCisgICAgdm9pZCByZWdpc3RlclRhcmdldChWTSYsIEpTT2JqZWN0KiB0YXJnZXQsIEpT
VmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9rZW4pOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGxpdmVDb3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3QgZGVhZENvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOwor
Citwcml2YXRlOgorICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVj
dCogY2FsbGJhY2spOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopOworCisgICAgc3RydWN0IFJlZ2lzdHJhdGlvbiB7Cisg
ICAgICAgIEpTT2JqZWN0KiB0YXJnZXQ7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBo
b2xkaW5nczsKKyAgICB9OworCisgICAgdXNpbmcgTGl2ZVJlZ2lzdHJhdGlvbnMgPSBWZWN0b3I8
UmVnaXN0cmF0aW9uPjsKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRoZSB0YXJnZXQgYW55bW9yZSBz
aW5jZSB3ZSBrbm93IGl0J3MgZGVhZC4KKyAgICB1c2luZyBEZWFkUmVnaXN0cmF0aW9ucyA9IFZl
Y3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+OworCisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0
IGJvdGhlciBwdXR0aW5nIGEgd3JpdGUgYmFycmllciBvbiB0aGUga2V5IG9yIHRhcmdldCBiZWNh
dXNlIHRoZXkgYXJlIHdlYWtseSByZWZlcmVuY2VkLgorICAgIEhhc2hNYXA8SlNPYmplY3QqLCBM
aXZlUmVnaXN0cmF0aW9ucz4gbV9saXZlUmVnaXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPEpTT2Jq
ZWN0KiwgRGVhZFJlZ2lzdHJhdGlvbnM+IG1fZGVhZFJlZ2lzdHJhdGlvbnM7CisgICAgTGl2ZVJl
Z2lzdHJhdGlvbnMgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZTsKKyAgICBEZWFkUmVnaXN0cmF0aW9u
cyBtX25vVW5yZWdpc3RyYXRpb25EZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDNlYTMwZGI5ZTJlNGQ1MzhkYThmMjMyY2Y4OWI5ZTRjOTgyMzcwMDYuLmFmNjY4M2U1Y2Ux
MzNkZWYwYTcwNGQ5NmFkN2M4ZDA3Nzg4NTRlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTYxLDYgKzYxLDggQEAKICNpbmNs
dWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Q
cm90b3R5cGUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCkBA
IC05OSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIKICNpbmNsdWRlICJKU0Rh
dGFWaWV3UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0z
ODcsNiArMzkwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmpl
Y3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVM
b2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisg
ICAgbnVsbHB0ciwgLy8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAogICAgIG51
bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1p
bmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpAQCAtMjE5OSw2ICsyMjAz
LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKFJlZjxNaWNyb3Rhc2s+
JiYgdGFzaykKICAgICB2bSgpLnF1ZXVlTWljcm90YXNrKCp0aGlzLCBXVEZNb3ZlKHRhc2spKTsK
IH0KIAordm9pZCBKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGRhdGFM
b2dMbigiVW5jYXVnaHQgRXhjZXB0aW9uIGF0IHJ1biBsb29wOiAiLCBleGNlcHRpb24tPnZhbHVl
KCkpOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXREZWJ1Z2dlcihEZWJ1Z2dlciogZGVi
dWdnZXIpCiB7CiAgICAgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZGRjMzBiODJlNTU4Mzg3YjA3
N2U2ZDljYmQxN2UzNmFiMjAzMTRjMS4uNDc0ZmRlNjRmZjZjYWUyODNlOTllNDZlZWM4MDUwODFi
YzBmOWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0xMzgsNiArMTM4LDggQEAgY29uc3RleHByIGJvb2wgdHlwZUV4cG9zZWRCeURl
ZmF1bHQgPSB0cnVlOwogICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlzZSwgcHJvbWlzZSwgSlNQ
cm9taXNlLCBQcm9taXNlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFj
cm8oQmlnSW50LCBiaWdJbnQsIGJpZ0ludE9iamVjdCwgQmlnSW50T2JqZWN0LCBCaWdJbnQsIG9i
amVjdCwgT3B0aW9uczo6dXNlQmlnSW50KCkpIFwKICAgICBtYWNybyhXZWFrT2JqZWN0UmVmLCB3
ZWFrT2JqZWN0UmVmLCB3ZWFrT2JqZWN0UmVmLCBKU1dlYWtPYmplY3RSZWYsIFdlYWtSZWYsIG9i
amVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXAorICAgIG1hY3JvKEZpbmFsaXphdGlvblJl
Z2lzdHJ5LCBmaW5hbGl6YXRpb25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnksIEZpbmFsaXphdGlvblJlZ2lzdHJ5LCBvYmplY3QsIE9wdGlvbnM6
OnVzZVdlYWtSZWZzKCkpIFwKKwogCiAjZGVmaW5lIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9J
VEVSQVRPUl9UWVBFKG1hY3JvKSBcCiAgICAgbWFjcm8oU3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0
ZXJhdG9yLCBzdHJpbmdJdGVyYXRvciwgSlNTdHJpbmdJdGVyYXRvciwgU3RyaW5nSXRlcmF0b3Is
IGl0ZXJhdG9yLCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCkgXApAQCAtMjI3LDYgKzIyOSw5IEBAIHN0
cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiB2b2lkICgqUHJvbWlz
ZVJlamVjdGlvblRyYWNrZXJQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNQcm9taXNlKiwgSlNQcm9t
aXNlUmVqZWN0aW9uT3BlcmF0aW9uKTsKICAgICBQcm9taXNlUmVqZWN0aW9uVHJhY2tlclB0ciBw
cm9taXNlUmVqZWN0aW9uVHJhY2tlcjsKIAorICAgIHR5cGVkZWYgdm9pZCAoKlJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7
CisgICAgUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0ciByZXBvcnRVbmNhdWdo
dEV4Y2VwdGlvbkF0RXZlbnRMb29wOworCiAgICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZhdWx0TGFu
Z3VhZ2VGdW5jdGlvblB0cikoKTsKICAgICBEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0ciBkZWZh
dWx0TGFuZ3VhZ2U7CiAKQEAgLTQ1MywyMSArNDU4LDYgQEAgcHVibGljOgogICAgIFdlYWtSYW5k
b20gbV93ZWFrUmFuZG9tOwogICAgIFJlZ0V4cEdsb2JhbERhdGEgbV9yZWdFeHBHbG9iYWxEYXRh
OwogCi0gICAgSlNDYWxsZWUqIHN0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlLmdldCgpOyB9Ci0KLSAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hw
b2ludFNldCYgbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21h
cEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNl
dCYgc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFw
U2V0V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwU2V0V2F0Y2hwb2ludFNldDsgfQotICAg
IElubGluZVdhdGNocG9pbnRTZXQmIHNldEFkZFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3Nl
dEFkZFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheVNwZWNp
ZXNXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0OyB9
Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlKb2luV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQm
IG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCgpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVChPcHRpb25zOjp1c2VKSVQoKSk7Ci0gICAgICAgIHJldHVybiBtX251bWJlclRvU3RyaW5n
V2F0Y2hwb2ludFNldDsKLSAgICB9CiAgICAgLy8gSWYgdGhpcyBoYXNuJ3QgYmVlbiBpbnZhbGlk
YXRlZCwgaXQgbWVhbnMgdGhlIGFycmF5IGl0ZXJhdG9yIHByb3RvY29sCiAgICAgLy8gaXMgbm90
IG9ic2VydmFibGUgdG8gdXNlciBjb2RlIHlldC4KICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1f
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsKQEAgLTQ5NCw2ICs0ODQsMjMgQEAg
cHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBv
aW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQ7CiAKK3B1YmxpYzoKKyAgICBKU0NhbGxlZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2Fs
bGVlKCkgY29uc3QgeyByZXR1cm4gbV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0K
KworICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0K
KyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0JiBzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsg
cmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBtYXBTZXRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRj
aHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9p
bnRTZXQmIGFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5U3BlY2ll
c1dhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUpvaW5XYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OyB9CisgICAgSW5s
aW5lV2F0Y2hwb2ludFNldCYgbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0KCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKKyAgICAgICAgcmV0dXJu
IG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0OworICAgIH0KKwogICAgIGJvb2wgaXNBcnJh
eVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAgIGJv
b2wgaXNNYXBQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsK
ICAgICBib29sIGlzU2V0UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZh
YmxlKCk7CkBAIC04MjQsNiArODMxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VW5oYW5kbGVk
UmVqZWN0aW9uQ2FsbGJhY2soVk0mIHZtLCBKU09iamVjdCogZnVuY3Rpb24pIHsgbV91bmhhbmRs
ZWRSZWplY3Rpb25DYWxsYmFjay5zZXQodm0sIGZ1bmN0aW9uKTsgfQogICAgIEpTT2JqZWN0KiB1
bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5oYW5kbGVkUmVq
ZWN0aW9uQ2FsbGJhY2suZ2V0KCk7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0
RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKwogICAg
IEpTT2JqZWN0KiBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hcnJh
eUJ1ZmZlclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQogCiAgICAgSlNPYmplY3QqIGFy
cmF5QnVmZmVyUHJvdG90eXBlKEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFs
RmllbGRPYmplY3RJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsLmgKaW5kZXggZTI1N2ExZGY2MDBiMmE4ZWQ0NzViN2U4OTM2ZTg0
Y2E0ODViMjViMS4uNmFiYjZlNjI1OTA0ODFkNDlkZjI5MGI4YjRhZDcwMDY4YzgxZWM2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwuaApAQCAtMzAsMTIgKzMwLDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Ly8gVGhpcyBpcyB1c2VkIGZvciBzaGFyaW5nIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24u
IEl0IHNob3VsZCBub3QgaGF2ZSBpdHMgb3duIGNsYXNzSW5mby4KLXRlbXBsYXRlPHVuc2lnbmVk
IHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAxPgotY2xhc3MgSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3RlbXBsYXRlPHVuc2lnbmVk
IHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAxLCB0eXBlbmFtZSBCYXNlQ2xhc3MgPSBK
U05vbkZpbmFsT2JqZWN0PgorY2xhc3MgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA6IHB1Ymxp
YyBCYXNlQ2xhc3MgewogcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBCYXNlQ2xhc3M7CiAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHVzaW5nIEJhc2UgPSBK
U05vbkZpbmFsT2JqZWN0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkcyA9IHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CkBAIC03Niw0ICs3Niw3IEBA
IHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9pbnRlcm5hbEZpZWxkc1tu
dW1iZXJPZkludGVybmFsRmllbGRzXSB7IH07CiB9OwogCit0ZW1wbGF0ZTx1bnNpZ25lZCBwYXNz
ZWROdW1iZXJPZkludGVybmFsRmllbGRzID0gMT4KK3VzaW5nIEpTRGVzdHJ1Y3RpYmxlSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPHBhc3NlZE51bWJl
ck9mSW50ZXJuYWxGaWVsZHMsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0PjsKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaAppbmRleCA4ZjAzYzhhNmRiMWJk
NTc1MGU2ODU5OGUyMWM5YWUxYjMxM2M4NWUxLi5lNmE2MWUxZDliZDQxYjM5YmJhNjA5MzdmZTg1
ZGE5YjE4NGZkOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgKQEAgLTI5LDEx
ICsyOSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dW5zaWduZWQgcGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz4KLXZvaWQgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxw
YXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzPjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQordGVtcGxhdGU8dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkcywgdHlwZW5hbWUgQmFzZT4KK3ZvaWQgSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDxwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzLCBCYXNlPjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCo+KGNlbGwpOwotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIEJhc2U6OmluZm8oKSk7CiAgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
cyh0aGlzT2JqZWN0LT5tX2ludGVybmFsRmllbGRzLCBudW1iZXJPZkludGVybmFsRmllbGRzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCmluZGV4IDg4
MzA4M2VjYjc2N2QwODgzZjlhNDkyMWYzOTlmNTkwODgxM2NmZGYuLjRmMzRiNmI0OWNhODllNjY4
Y2I5YTI2NzEwMzIzY2FlMTc4NjRiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiSlNQcm9taXNl
LmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtU
aW1lci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKU1Byb21pc2U6OnJlc29s
dmUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAg
ICAgICAgIGNhbGxGdW5jdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJl
c29sdmVQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNh
bmNlbFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5j
ZWxQZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnJlamVjdChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE4Myw3ICsx
ODMsNyBAQCB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBjYWxsRnVuY3Rpb24obGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5yZWplY3RQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywg
dmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAg
IH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNhbmNlbFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAg
IHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9p
ZCBKU1Byb21pc2U6OnJlamVjdEFzSGFuZGxlZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9taXNlVGltZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWZkMmIw
MDg0MzAyNjI2MTg1OTgxOTU4OWY3ODRjYmJkMzYzZDA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b21pc2VUaW1lci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgotCi0jaW5jbHVkZSAiSlNQcm9taXNlLmgi
Ci0jaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLW5hbWVzcGFjZSBQcm9taXNlVGlt
ZXJJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotfQot
Ci1Qcm9taXNlVGltZXI6OlByb21pc2VUaW1lcihWTSYgdm0pCi0gICAgOiBCYXNlKHZtKQotewot
fQotCi12b2lkIFByb21pc2VUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkKLXsKLSAgICBBU1NFUlQodm0u
Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgbV90YXNrTG9jay5sb2NrKCk7
Ci0gICAgY2FuY2VsVGltZXIoKTsKLSAgICBpZiAoIW1fcnVuVGFza3MpIHsKLSAgICAgICAgbV90
YXNrTG9jay51bmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHdoaWxlICgh
bV90YXNrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFz
a3MudGFrZUxhc3QoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6
OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7
Ci0KLSAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNl
cy4KLSAgICAgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpIHsKLSAg
ICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KLSAg
ICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgbV90
YXNrTG9jay51bmxvY2soKTsgCi0KLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgICAgIHZt
LmRyYWluTWljcm90YXNrcygpOwotCi0gICAgICAgICAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAg
ICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSBmYWxzZTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9w
UnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkKLSAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgp
LnN0b3AoKTsKLQotICAgIG1fdGFza0xvY2sudW5sb2NrKCk7Ci19Ci0KLXZvaWQgUHJvbWlzZVRp
bWVyOjpydW5SdW5Mb29wKCkKLXsKLSAgICBBU1NFUlQoIW1fYXBpTG9jay0+dm0oKS0+Y3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50
KCkgPT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKLSAgICBtX3Nob3VsZFN0b3BSdW5M
b29wV2hlbkFsbFByb21pc2VzRmluaXNoID0gdHJ1ZTsKLSAgICBpZiAobV9wZW5kaW5nUHJvbWlz
ZXMuc2l6ZSgpKQotICAgICAgICBSdW5Mb29wOjpydW4oKTsKLX0KLQotdm9pZCBQcm9taXNlVGlt
ZXI6OmFkZFBlbmRpbmdQcm9taXNlKFZNJiB2bSwgSlNQcm9taXNlKiB0aWNrZXQsIFZlY3RvcjxT
dHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCi17Ci0gICAgQVNTRVJUKHZtLmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBk
ZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0u
Z2V0KCkgIT0gdGlja2V0KTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMu
YWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PigpKTsKLSAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6OnZl
cmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQp
KTsKLSAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0
KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2ll
cyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVySW50ZXJu
YWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgcHJvbWlzZTogIiwgUmF3
UG9pbnRlcih0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRW
ZWN0b3IoZGVwZW5kZW5jaWVzKTsKLSAgICB9Ci19Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpoYXNQ
ZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52
bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIHJldHVybiBtX3BlbmRp
bmdQcm9taXNlcy5jb250YWlucyh0aWNrZXQpOwotfQotCi1ib29sIFByb21pc2VUaW1lcjo6aGFz
RGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQsIEpTQ2VsbCogZGVw
ZW5kZW5jeSkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdBUElMb2NrKCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0aWNr
ZXQpKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMuZ2V0KHRpY2tldCk7
Ci0gICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKLX0KLQotYm9vbCBQcm9t
aXNlVGltZXI6OmNhbmNlbFBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0KQotewotICAg
IEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0g
ICAgYm9vbCByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5yZW1vdmUodGlja2V0KTsKLQotICAg
IGlmIChyZXN1bHQpCi0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1lckludGVybmFsOjp2
ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6c2NoZWR1bGVXb3JrU29v
bihKU1Byb21pc2UqIHRpY2tldCwgVGFzayYmIHRhc2spCi17Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV90YXNrTG9jayk7Ci0gICAgbV90YXNrcy5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHRpY2tl
dCwgV1RGTW92ZSh0YXNrKSkpOwotICAgIGlmICghaXNTY2hlZHVsZWQoKSAmJiAhbV9jdXJyZW50
bHlSdW5uaW5nVGFzaykKLSAgICAgICAgc2V0VGltZVVudGlsRmlyZSgwX3MpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRp
bWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNGQwZjI5YWUyZDI4Y2YzZTQw
NGJlZmI1NDZmNTNjZDBiYmFlOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU1J1bkxvb3BU
aW1lci5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWNsYXNzIEpTUHJvbWlzZTsKLWNsYXNzIFZNOwotY2xhc3MgSlNDZWxsOwot
Ci1jbGFzcyBQcm9taXNlVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGltZXIgewotcHVi
bGljOgotICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKLQotICAgIHZvaWQgZG9Xb3Jr
KFZNJikgZmluYWw7Ci0KLSAgICB2b2lkIGFkZFBlbmRpbmdQcm9taXNlKFZNJiwgSlNQcm9taXNl
KiwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcyk7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBoYXNQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCk7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShKU1By
b21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKLSAgICAvLyBKU1Byb21pc2Ugc2hv
dWxkIGhhbmRsZSBjYW5jZWxpbmcgd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBvciByZWpl
Y3RlZC4KLSAgICBib29sIGNhbmNlbFBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSopOwotCi0gICAg
dXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdm9pZCBzY2hlZHVsZVdvcmtTb29u
KEpTUHJvbWlzZSosIFRhc2smJik7Ci0KLSAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1f
cnVuVGFza3MgPSBmYWxzZTsgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW5SdW5M
b29wKCk7Ci0KLSAgICBzdGF0aWMgUmVmPFByb21pc2VUaW1lcj4gY3JlYXRlKFZNJiB2bSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb21pc2VUaW1lcih2bSkpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBQcm9taXNlVGltZXIoVk0mKTsKLQotICAgIEhhc2hNYXA8SlNQ
cm9taXNlKiwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+Pj4gbV9wZW5kaW5nUHJvbWlzZXM7Ci0gICAg
TG9jayBtX3Rhc2tMb2NrOwotICAgIGJvb2wgbV9ydW5UYXNrcyB7IHRydWUgfTsKLSAgICBib29s
IG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggeyBmYWxzZSB9OwotICAg
IGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHN0ZDo6
dHVwbGU8SlNQcm9taXNlKiwgVGFzaz4+IG1fdGFza3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHAKaW5kZXggYWNiMzRjOWQzZGIyNmU1OGE2MWZmZGIzMTcxN2E1MWU2ODMxZmM1ZC4uMzg1
N2I3NTBlMjJiZjc5MjZkMGVjZjNkNDc5NjIwOTg1NDVkN2QzZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKQEAgLTMyLDYgKzMy
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAorbmFtZXNwYWNl
IFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbCB7Citib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKwog
U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgpCiAgICAgOiBtX3RhYmxlKG1ha2VV
bmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4oc19pbml0aWFsU2l6ZSkpCiAgICAgLCBtX3Np
emUoMSkKQEAgLTE2MSwxMSArMTY1LDE0IEBAIFN0cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFibGU6
OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgdGFibGUoKVtzdHJ1Y3R1cmVJ
bmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMgPSBlbmNvZGUoc3RydWN0dXJlLCByZXN1bHQpOwog
ICAgIG1fc2l6ZSsrOwogICAgIEFTU0VSVCghaXNOdWtlZChyZXN1bHQpKTsKKworICAgIGRhdGFM
b2dMbklmKFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbDo6dmVyYm9zZSwgIkFsbG9jYXRlZCBTdHJ1
Y3R1cmVJRCAiLCByZXN1bHQsICIgZm9yIFN0cnVjdHVyZSAiLCBSYXdQb2ludGVyKHN0cnVjdHVy
ZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgU3RydWN0dXJlSURUYWJsZTo6ZGVh
bGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkK
IHsKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2UsICJE
ZWFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCBzdHJ1Y3R1cmVJRCk7CiAgICAgQVNTRVJUKHN0cnVj
dHVyZUlEICE9IHNfdW51c2VkSUQpOwogICAgIHVpbnQzMl90IHN0cnVjdHVyZUluZGV4ID0gc3Ry
dWN0dXJlSUQgPj4gc19udW1iZXJPZkVudHJvcHlCaXRzOwogICAgIEFTU0VSVChzdHJ1Y3R1cmVJ
bmRleCAmJiBzdHJ1Y3R1cmVJbmRleCA8IHNfbWF4aW11bU51bWJlck9mU3RydWN0dXJlcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOGNhYTQ4YzFiZTMxMWI1ZDg3ZTg2
MDM4YmEwZjQwNDE4Mzg4OGMyYS4uNzgzNmY3M2U5M2FmNDI0MjE3NzI1NDY1YjdiMWMyZjdkYzIw
ZjJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRhdGVJ
bnN0YW5jZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZlcnJl
ZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkRvdWJs
ZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKQEAg
LTg4LDYgKzg5LDcgQEAKICNpbmNsdWRlICJKU0NhbGxlZS5oIgogI2luY2x1ZGUgIkpTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMTMzLDcgKzEzNSw2IEBACiAjaW5j
bHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIK
ICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJveHlSZXZv
a2UuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50LmgiCkBAIC0zNjUsNyArMzY2
LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxv
b3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAg
ICAgLCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1l
Ojpub0NhbGxlcigpKQotICAgICwgcHJvbWlzZVRpbWVyKFByb21pc2VUaW1lcjo6Y3JlYXRlKCp0
aGlzKSkKKyAgICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVhdGUo
KnRoaXMpKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJl
YWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAg
ICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3Qp
CkBAIC01NzUsNyArNTc2LDcgQEAgVk06On5WTSgpCiAgICAgYXV0byBkZXN0cnVjdGlvbkxvY2tl
ciA9IGhvbGRMb2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQoKSk7CiAgICAgCiAgICAgR2lnYWNh
Z2U6OnJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2FnZURpc2Fi
bGVkQ2FsbGJhY2ssIHRoaXMpOwotICAgIHByb21pc2VUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygp
OworICAgIGRlZmVycmVkV29ya1RpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIGlmIChXYXNtOjpXb3JrbGlzdCogd29ya2xpc3QgPSBXYXNtOjpl
eGlzdGluZ1dvcmtsaXN0T3JOdWxsKCkpCiAgICAgICAgIHdvcmtsaXN0LT5zdG9wQWxsUGxhbnNG
b3JDb250ZXh0KHdhc21Db250ZXh0KTsKQEAgLTE0ODcsNiArMTQ4OCw3IEBAIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2Vs
bFR5cGUuZ2V0KCksCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vh
a1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6
MHg0Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtP
YmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAv
LyBIYXNoOjB4OGVjNjhmMWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh3aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXaXRoU2NvcGUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0
cnlTcGFjZSwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5KQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCBhcGlXcmFwcGVy
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9i
amVjdD4pCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2JqQ0NhbGxi
YWNrRnVuY3Rpb25TcGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCks
IE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IDYwZjU5NzI5ZmVjMmUwMmU2OTc2YzMxZWQ1MWIxNDhhNWM2ZWFh
MDUuLjM3YzBmZmM5NjQ3NzZlNDhiNjJmZjFhNjY2ZTBhODM2OWFiZWZjMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIEpTV2ViQXNzZW1i
bHlUYWJsZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUV4ZWN1
dGFibGU7CiBjbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbjsKLWNsYXNzIFByb21pc2VUaW1lcjsK
K2NsYXNzIERlZmVycmVkV29ya1RpbWVyOwogY2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhwQ2Fj
aGU7CiBjbGFzcyBSZWdpc3RlcjsKQEAgLTU1MCw2ICs1NTAsNyBAQCBwdWJsaWM6CiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKQEAgLTcwOSw4
ICs3MTAsOCBAQCBwdWJsaWM6CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dCb3Vu
ZEV4ZWN1dGFibGU7CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dDYW5Db25zdHJ1
Y3RCb3VuZEV4ZWN1dGFibGU7CiAKLSAgICBSZWY8UHJvbWlzZVRpbWVyPiBwcm9taXNlVGltZXI7
Ci0gICAgCisgICAgUmVmPERlZmVycmVkV29ya1RpbWVyPiBkZWZlcnJlZFdvcmtUaW1lcjsKKwog
ICAgIEpTQ2VsbCogY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdDsKICAgICBjb25z
dCBDbGFzc0luZm8qIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8g
eyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseS5jcHAKaW5kZXggNWRhNjk2ZDY5N2RkNDc1MDVkN2RjNTJiNjA2ZTMxNzc0YTRlMjY1
ZC4uYWY0MmQ4ZDU3MDlmMjA2YTdhNzg3MDhmNjVkN2U1MGI1NThlNjM2MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Q2F0Y2hTY29wZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdElubGluZXMuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5TW9kdWxlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUaHJvd1Nj
b3BlLmgiCkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVs
ZVZhbGlkYXRlQXN5bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5h
cHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogCi0gICAgdm0ucHJvbWlz
ZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNp
ZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21p
c2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRl
QXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8
V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBnbG9iYWxPYmplY3QsICZ2bV0g
KFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
Z2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7
CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2Us
IFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKICAgICAgICAgICAgIEpTVmFsdWUgbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6
Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9k
dWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBzdGF0aWMgdm9p
ZCBpbnN0YW50aWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJv
bWlzZSogcHJvbWlzZQogICAgIC8vIFRoZSBpbnN0YW5jZSBrZWVwcyB0aGUgbW9kdWxlIGFsaXZl
LgogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGluc3RhbmNlKSk7
CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0
KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwg
V1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVu
ZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAgICAgLy8gTm90
ZTogVGhpcyBjb21wbGV0aW9uIHRhc2sgbWF5IG9yIG1heSBub3QgZ2V0IGNhbGxlZCBpbW1lZGlh
dGVseS4KICAgICBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQs
IGluc3RhbmNlLT5tZW1vcnlNb2RlKCksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2Nr
OjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3Qs
IHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYg
cmVmQ29kZUJsb2NrKSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPFdhc206OkNvZGVCbG9jaz4g
Y29kZUJsb2NrID0gV1RGTW92ZShyZWZDb2RlQmxvY2spOwotICAgICAgICB2bS5wcm9taXNlVGlt
ZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUs
IGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxvY2sg
PSBXVEZNb3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdv
cmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1v
ZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNvZGVC
bG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwogICAg
ICAgICAgICAgcmVzb2x2ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBpbnN0YW5jZSwgbW9k
dWxlLCBpbXBvcnRPYmplY3QsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNvbHZlS2lu
ZCwgY3JlYXRpb25Nb2RlKTsKICAgICAgICAgfSk7CkBAIC0yMzMsMTMgKzIzMywxMyBAQCBzdGF0
aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Byb21pcwogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5j
aWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9i
amVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIG1vZHVs
ZUtleUNlbGwpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBw
cm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVy
LT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUo
dm0sIGdsb2JhbE9iamVjdCwgYnVmZmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCByZWplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgV2FzbTo6TW9k
dWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVh
dGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0
T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlv
bk1vZGUsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0
YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNl
LCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nv
b24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFs
T2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1v
ZGUsICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUg
PSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsK
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0yNjgsMTAg
KzI2OCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5j
SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFZlY3RvcjxTdHJvbmc8SlND
ZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2Vs
bD4odm0sIGltcG9ydE9iamVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpT
Q2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGlu
Z1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVu
ZGVuY2llcykpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29u
dGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2Fs
bGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0gKFdh
c206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAg
IHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1w
b3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nv
b24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQg
PSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RG
TW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpCkBAIC0zMzksNyArMzM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCoKIAogICAgIFZl
Y3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBl
bmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1l
ci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7
CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBX
VEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZykKICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVj
dCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBAIC0zNzIsNyArMzcyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFt
aW5nSW50ZXJuYWwoSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICBWZWN0b3I8U3Ryb25nPEpT
Q2VsbD4+IGRlcGVuZGVuY2llczsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5k
KFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICBkZXBl
bmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICAg
ICAgICAgICAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNl
LCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgICAgICAgICAgICAgIHZtLmRlZmVycmVkV29y
a1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMp
KTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xODQ4
ODg+IGlmIHRoZXJlJ3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBjb250YWlucyBhIE1lbW9yeSwg
dGhlbiB3ZSBjYW4gY29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhlIHJpZ2h0IG1lbW9yeSB0eXBl
IChmYXN0IG9yIG5vdCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5J3MgdHlwZS4KICAgICAgICAg
ICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRp
YXRlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSwgaW1wb3J0T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAppbmRleCA0ODk0OWJmNmVjMjgwZmVmMjczZjA0
MDZlZDFjZDEwN2Q5YzU1Y2YyLi44MTdmNzk0NzA2ODM4ZTE4YTQyMDU5OGIyZTcyODU1Y2EyNWU0
ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUNvZGVCbG9jay5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3Jr
VGltZXIuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCiAjaW5jbHVk
ZSAiV2FzbUZvcm1hdC5oIgpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQbGFuOwogY2xhc3MgSlNX
ZWJBc3NlbWJseUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJs
eUNvZGVCbG9jayogY3JlYXRlKFZNJiwgUmVmPFdhc206OkNvZGVCbG9jaz4sIGNvbnN0IFdhc206
Ok1vZHVsZUluZm9ybWF0aW9uJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSlNXZWJBc3NlbWJs
eUNvZGVCbG9jayhWTSYsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYsIGNvbnN0IFdhc206Ok1vZHVs
ZUluZm9ybWF0aW9uJik7CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBkMjhlNTA5ZGIwMWM3MDEwZGQ3N2UyZmViYzM1Yzc5ODlhZGQ3YTMyLi4wMzll
ZjgyMzBhODZiNjEzNWNlZWJkZTQzYzNhMTM3MDVkY2Y5N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yMzQsNiArMjM0LDEx
IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnByb21pc2VSZWplY3Rpb25UcmFja2VyKEpTR2xv
YmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwKICAgICB9CiB9CiAKK3ZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3Qq
IGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHJlcG9y
dEV4Y2VwdGlvbihqc0dsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKK30KKwogSlNET01HbG9iYWxP
YmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgY2xhc3MgR2V0Q2FsbGVyR2xvYmFs
T2JqZWN0RnVuY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAppbmRleCBkMjk4NThjZmE0YjBiZTBkNjIxMzkwYTgzZDc2ZDVhODUwYjlkMjgw
Li43Mzg2N2Q2YWIyZTViNGRiYjcwYjcwYTlhMzYwOTQ4NDlmMGNlZTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTc5LDYgKzc5LDcg
QEAgcHVibGljOgogCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMmIGJ1aWx0aW5JbnRl
cm5hbEZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zOyB9CiAK
KyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAogcHVibGljOgogICAgIH5KU0RPTUdsb2Jh
bE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKaW5kZXggODgzMjEzZTkwNjFmMzhiOGJiNDMzNTc5YjI5ODYwOTg3Nzg0ZTc4Mi4uYWNl
YTc2NmFmMWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
SW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3NlbWJs
eS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01pY3JvdGFzay5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgpAQCAtNzgsNiArNzgsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
Jm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgICZtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZSwKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVu
Y2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgJmNvbXBpbGVTdHJlYW1pbmcsCkBAIC00NDMsOCArNDQ0
LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkoKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNl
KHByb21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5Q
ZW5kaW5nUHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVm
ZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0u
ZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGds
b2JhbE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNw
b25zZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25T
dHJlYW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJv
bWlzZV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CkBAIC00NjEsOSArNDYyLDkgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFtaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNlKHByb21p
c2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5n
UHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRp
bWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBpbXBvcnRlZE9iamVj
dCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsocHJv
bWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUlu
UGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBpbXBvcnRl
ZE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNwb25z
ZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25TdHJl
YW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJvbWlz
ZSwgaW1wb3J0ZWRPYmplY3RdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11dGFibGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAK
aW5kZXggNDlkZjQzOTA1N2RmNTlkMjk0ZDQ4NGE5NGYyOWI1MjQwZjg4NjE4MS4uZGNlNzM4MjBi
YmJmZDliOTVjNTg3OWQxM2VmNjVlYWI5OGE5MDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCkBAIC00Nyw2ICs0Nyw3
IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTUmVtb3RlRE9NV2luZG93QmFzZTo6
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
Q3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJF
dmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgbnVs
bHB0ciwgLy8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAogICAgIG51bGxwdHIs
IC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAg
ICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDUzNzZl
ODBkMDAwNTM3NzYyNTgyYWEyNWJlOTFkMTJhOGY1OTdlYzQuLmM0NGYyZmIzYTBiMDVkYWFiMWE4
YTllMmY4OWI1MmQ4NTFlYjQzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAgY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8g
Y29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAppbmRleCAwOTY1YTg2YzQxOGJlNjFlNjJlMWZmZGFjNmNmZThiYWY2YjRkNmVl
Li5iMTRiODE1NDJkYjg4OWVjNmQyNTliYzViNzBlZjJhNTA5OWM5NmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAKQEAgLTU3LDYgKzU3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmwKICAgICBudWxscHRy
LCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIs
IC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAor
ICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFu
Z3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8v
IGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkzMWNlZTc3NzliZjk2MTQzOGU4
MjAxNTBjN2E3ZjhhYjQ2NzU1NDcuLjcxNmIxYTY5YjhlZWMxZGE2NDcyMDFhNDMyNjkyYjMzODk3
ZWI3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKICNpbmNsdWRlICJXb3JrZXJD
b25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24u
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXRO
b3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOCiAKICAgICBwcm9jZXNzVGlt
ZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIo
bV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92
bS0+cHJvbWlzZVRpbWVyLnB0cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRX
b3JrVGltZXIucHRyKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJlbW92
ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0
aW9uQ2FsbGJhY2sgY2FsbGJhY2spCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRp
bWVyOjpUaW0KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxi
YWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNr
KCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIucHRyKCkpOworICAgIHBy
b2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7CiB9CiAKIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdn
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlYzA3YWM0
NjM1MGQyYTM0MjllYTA5ODc0ZTNmZGYyZGZkYTllNDUxLi42NmVjZDUzNmY4MTNkMDI5YzQ5N2Yx
YWVhN2YyMTllZGZjNzViMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KIAogI2lmIFVTRShHTElCKQog
I2luY2x1ZGUgPGdsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2YTg4Y2FhMTQ0YWUyN2ZjN2MxZjJkNWYzM2Jj
ZDEwOGNjMTIwYTllLi4yMGE2Zjg1NjE4NThhZGZiZTJlMmJjMThlYmY3MTUwYjk3YWQxNGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0zNywxMSArMzcsMTEgQEAKICNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVu
dC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVs
cGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2ZTdiYzE3YTM3MDE5ODM1MTY1
OTRjNThmNDQ3YWZhOTQ5Y2UyYzYuLjkzMTBhZDM0MGViNDU0ZGM2ZjgyZWJmZDRjNjkwNmZhZTM0
Y2NjMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxp
emF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5q
czogQWRkZWQuCisgICAgICAgIChtYWtlV2Vha1JlZik6CisgICAgICAgICh0dXJuRXZlbnRMb29w
KToKKyAgICAgICAgKGFzeW5jIHRlc3QpOgorICAgICAgICAqIGpzL3VudGl0bGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0
bWw6IEFkZGVkLgorCiAyMDIwLTA3LTE3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtXZWJHTDJdIFJlYWRQaXhlbHMgdXBkYXRlcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnku
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdp
c3RyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZDY2NTNiYTkwOWMxYjJkYzhkYWUwMWQxMDJlYTQ5M2ViNjk4
OWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWty
ZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMKQEAgLTAsMCArMSw0OSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVdlYWtSZWZzPXRydWUiKQorCithc3luY1Rlc3RTdGFydCgxKTsKK3ZhciBv
YmplY3RzID0gW107Cit2YXIgd2Vha1JlZnMgPSBbXTsKK3ZhciBmaW5hbGl6ZXJDYWxsZWQgPSBm
YWxzZTsKK3ZhciBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3Ry
eSgoKSA9PiBmaW5hbGl6ZXJDYWxsZWQgPSB0cnVlKTsKK2Z1bmN0aW9uIG1ha2VXZWFrUmVmKCkg
eyByZXR1cm4gbmV3IFdlYWtSZWYoeyBmb286IDEgfSk7IH0KK25vSW5saW5lKG1ha2VXZWFrUmVm
KTsKKworbGV0IGxvb3BDb3VudCA9IDEwMDA7CitmdW5jdGlvbiB0dXJuRXZlbnRMb29wKCkgewor
ICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4geworICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgfSwgMCk7CisgICAgfSk7Cit9CisKK3ZhciBpOworYXN5bmMgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKSB7CisgICAgICAg
IGxldCB3ZWFrID0gbWFrZVdlYWtSZWYoKTsKKyAgICAgICAgd2Vha1JlZnMucHVzaCh3ZWFrKTsK
KyAgICAgICAgb2JqZWN0cy5wdXNoKHdlYWsuZGVyZWYoKSk7CisgICAgICAgIGZpbmFsaXphdGlv
blJlZ2lzdHJ5LnJlZ2lzdGVyKHdlYWsuZGVyZWYoKSk7CisgICAgfQorCisgICAgYXdhaXQgdHVy
bkV2ZW50TG9vcCgpOworCisgICAgc2hvdWxkQmVGYWxzZShgZmluYWxpemVyQ2FsbGVkYCk7Cisg
ICAgZm9yIChpID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKQorICAgICAgICBzaG91bGRCZShgd2Vh
a1JlZnNbaV0uZGVyZWYoKWAsIGBvYmplY3RzW2ldYCk7CisKKyAgICBvYmplY3RzLmxlbmd0aCA9
IDA7CisgICAgb2JqZWN0cyA9IG51bGw7CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7Cisg
ICAgLy8gV2UgbmVlZCB0byB0dXJuIHRoZSBldmVudCBsb29wIGFnYWluIHNpbmNlIEZSIG1heSBu
b3QgaGF2ZSBjYWxsZWQgdGhlIGNhbGxiYWNrIGluIHRoZSBsYXN0IHR1cm4uCisgICAgYXdhaXQg
dHVybkV2ZW50TG9vcCgpOworCisgICAgc2hvdWxkQmVUcnVlKGBmaW5hbGl6ZXJDYWxsZWRgKTsK
KyAgICBzaG91bGRCZVRydWUoYHdlYWtSZWZzLnNvbWUoKHdlYWtSZWYpID0+IHdlYWtSZWYuZGVy
ZWYoKSA9PT0gbnVsbClgKTsKKworICAgIGFzeW5jVGVzdFBhc3NlZCgpOworfQorCit0ZXN0KCku
Y2F0Y2goZSA9PiBkZWJ1ZyhlKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy91bnRpdGxl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzBlMWNi
NzA1YTlkNzc5MDgwNGM2OTg1MjdjODQzMjEzZDRhZDZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9u
LXJlZ2lzdHJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTNjYTY1YzM4ZDI0ODJlN2YyOWRhN2IxNWI2ZWFiMjYzZjJhMTk0YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAwNyBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGZpbmFsaXplckNhbGxlZCBpcyBmYWxzZQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1MgZmluYWxpemVy
Q2FsbGVkIGlzIHRydWUKK1BBU1Mgd2Vha1JlZnMuc29tZSgod2Vha1JlZikgPT4gd2Vha1JlZi5k
ZXJlZigpID09PSBudWxsKSBpcyB0cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3dl
YWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYt
ZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWQ3Y2Y0N2Q0YTM0MTY5OGJk
MGQ1NWVkNmE4ODkwYmZlNDEyNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
d2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj48IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5h
bGl6YXRpb25yZWdpc3RyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE5Yzg1YjYyY2Jj
MWMwMTYwY2M3OTcxZjcyMzc2YzM5NWM3NGY0ZDUuLjlkZWZhYzRmYzc2YjM0YWZhN2E0MzZiNDBj
NTA0MWQzNWI2MWExZWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5h
bGl6YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qczogQWRkZWQuCisgICAg
ICAgIChNanNVbml0QXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVy
cm9yLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgIChjbGFz
c09mKToKKyAgICAgICAgKFZhbHVlT2YpOgorICAgICAgICAocHJldHR5UHJpbnRlZCk6CisgICAg
ICAgIChwcmV0dHlQcmludGVkQXJyYXlFbGVtZW50KToKKyAgICAgICAgKGZhaWxXaXRoTWVzc2Fn
ZSk6CisgICAgICAgIChmb3JtYXRGYWlsdXJlVGV4dCk6CisgICAgICAgIChmYWlsKToKKyAgICAg
ICAgKGRlZXBPYmplY3RFcXVhbHMpOgorICAgICAgICAoZGVlcEVxdWFscyk6CisgICAgICAgIChh
c3NlcnRTYW1lKToKKyAgICAgICAgKGFzc2VydE5vdFNhbWUpOgorICAgICAgICAoYXNzZXJ0RXF1
YWxzKToKKyAgICAgICAgKGFzc2VydE5vdEVxdWFscyk6CisgICAgICAgIChhc3NlcnRFcXVhbHNE
ZWx0YSk6CisgICAgICAgIChhc3NlcnRBcnJheUVxdWFscyk6CisgICAgICAgIChhc3NlcnRQcm9w
ZXJ0aWVzRXF1YWwpOgorICAgICAgICAoYXNzZXJ0VG9TdHJpbmdFcXVhbHMpOgorICAgICAgICAo
YXNzZXJ0VHJ1ZSk6CisgICAgICAgIChhc3NlcnRGYWxzZSk6CisgICAgICAgIChhc3NlcnROdWxs
KToKKyAgICAgICAgKGFzc2VydE5vdE51bGwpOgorICAgICAgICAoZXhlY3V0ZUNvZGUpOgorICAg
ICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAoYXNzZXJ0VGhyb3dzKToKKyAgICAgICAg
KGFzc2VydFRocm93c0VxdWFscyk6CisgICAgICAgIChhc3NlcnRUaHJvd3NBc3luYyk6CisgICAg
ICAgIChhc3NlcnRJbnN0YW5jZW9mKToKKyAgICAgICAgKGFzc2VydERvZXNOb3RUaHJvdyk6Cisg
ICAgICAgIChhc3NlcnRVbnJlYWNoYWJsZSk6CisgICAgICAgIChhc3NlcnRDb250YWlucyk6Cisg
ICAgICAgIChhc3NlcnRNYXRjaGVzKToKKyAgICAgICAgKGNvbmNhdGVuYXRlRXJyb3JzKToKKyAg
ICAgICAgKGFzc2VydFByb21pc2VSZXN1bHQpOgorICAgICAgICAoT3B0aW1pemF0aW9uU3RhdHVz
KToKKyAgICAgICAgKGFzc2VydFVub3B0aW1pemVkKToKKyAgICAgICAgKGFzc2VydE9wdGltaXpl
ZCk6CisgICAgICAgIChpc05ldmVyT3B0aW1pemVMaXRlTW9kZSk6CisgICAgICAgIChpc05ldmVy
T3B0aW1pemUpOgorICAgICAgICAoaXNBbHdheXNPcHRpbWl6ZSk6CisgICAgICAgIChpc0ludGVy
cHJldGVkKToKKyAgICAgICAgKGlzT3B0aW1pemVkKToKKyAgICAgICAgKGlzVHVyYm9GYW5uZWQp
OgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlKToKKyAg
ICAgICAgKiBzdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczogQWRkZWQu
CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51
cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczogQWRkZWQuCisgICAgICAgIChsZXQudGlt
ZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJh
c2ljcy5qczogQWRkZWQuCisgICAgICAgIChUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0
cnkpOgorICAgICAgICAoVGVzdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JDYWxsQXNG
dW5jdGlvbik6CisgICAgICAgIChUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlDbGVh
bnVwTm90Q2FsbGFibGUpOgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lz
dHJ5V2l0aE5vbkNhbGxhYmxlUHJveHlBc0NsZWFudXApOgorICAgICAgICAoVGVzdFJlZ2lzdGVy
VGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUpOgorICAgICAgICAoVGVzdFJlZ2lzdGVyV2l0aG91
dEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkV4
aXN0ZW50S2V5KToKKyAgICAgICAgKFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXphdGlvblJl
Z2lzdHJ5KToKKyAgICAgICAgKFRlc3RXZWFrUmVmQ29uc3RydWN0b3JXaXRoTm9uT2JqZWN0KToK
KyAgICAgICAgKFRlc3RXZWFrUmVmV2l0aFByb3h5KToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmlu
YWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNs
ZWFudXApOgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzOiBBZGRlZC4KKyAgICAgICAg
KGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0
cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlw
bGUtdGltZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXAwKToKKyAgICAgICAgKGxl
dC5jbGVhbnVwMSk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJl
c3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanM6IEFkZGVkLgor
ICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAg
ICAgICogc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFudXAuanM6IEFkZGVkLgorICAg
ICAgICAobGV0LnJlZW50cmFudF9nYyk6CisgICAgICAgIChzZXRUaW1lb3V0KToKKyAgICAgICAg
KiBzdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanM6
IEFkZGVkLgorICAgICAgICAoaS5yZWdpc3RyaWVzLnB1c2gubmV3LkZpbmFsaXphdGlvblJlZ2lz
dHJ5KToKKyAgICAgICAgKHJlZ2lzdHJpZXMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL3Y4
LXVuZGVmaW5lZC1ob2xkaW5ncy5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6Cisg
ICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rl
ci1hZnRlci1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAg
ICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWJl
Zm9yZS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAg
KGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxl
ZC10d2ljZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQu
dGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xl
YW51cDIuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRp
bWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFu
dXAzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1l
b3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanM6IEFkZGVk
LgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6Cisg
ICAgICAgICogc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzOiBBZGRlZC4KKyAgICAg
ICAgKEZSLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgICh0cnlBZ2Fpbik6CisK
IDIwMjAtMDctMTcgIFhhbiBMb3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1hdGgu
bWF4KCkgY2FuIHlpZWxkIHRoZSB3cm9uZyByZXN1bHQgZm9yIG1heCgwLCAtMCkuCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Jlc291cmNlcy92OC1tanN1bml0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NzQ2MWY3NGM5MDIyMzIx
ZmM2MGU2ODZmNzk1ZDUwZTM5Mjk4MTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcwpAQCAtMCwwICsxLDgwOSBAQAorLy8gQ29weXJpZ2h0
IDIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAg
ICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAg
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkg
eworICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworICAvLyBUZW1wb3JhcmlseSBpbnN0YWxsIGEg
Y3VzdG9tIHN0YWNrIHRyYWNlIGZvcm1hdHRlciBhbmQgcmVzdG9yZSB0aGUKKyAgLy8gcHJldmlv
dXMgdmFsdWUuCisgIGxldCBwcmV2UHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3Rh
Y2tUcmFjZTsKKyAgdHJ5IHsKKyAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IE1qc1VuaXRB
c3NlcnRpb25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsKKyAgICAvLyBUaGlzIGFsbG93cyBmZXRj
aGluZyB0aGUgc3RhY2sgdHJhY2UgdXNpbmcgVHJ5Q2F0Y2g6OlN0YWNrVHJhY2UuCisgICAgdGhp
cy5zdGFjayA9IG5ldyBFcnJvcigiTWpzVW5pdEFzc2VydGlvbkVycm9yIikuc3RhY2s7CisgIH0g
ZmluYWxseSB7CisgICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2UHJlcGFyZVN0YWNr
VHJhY2U7CisgIH0KK30KKworLyoKKyAqIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbiBhbGwgbWlu
aSBqc3VuaXQgdGVzdCBjYXNlcy4gIFRoZSB0ZXN0CisgKiBmcmFtZXdvcmsgZXhwZWN0cyBsaW5l
cyB0aGF0IHNpZ25hbCBmYWlsZWQgdGVzdHMgdG8gc3RhcnQgd2l0aAorICogdGhlIGYtd29yZCBh
bmQgaWdub3JlIGFsbCBvdGhlciBsaW5lcy4KKyAqLworCitNanNVbml0QXNzZXJ0aW9uRXJyb3Iu
cHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5tZXNzYWdl
ICsgIlxuXG5TdGFjazogIiArIHRoaXMuc3RhY2s7Cit9OworCisKKy8vIEV4cGVjdGVkIGFuZCBm
b3VuZCB2YWx1ZXMgdGhlIHNhbWUgb2JqZWN0cywgb3IgdGhlIHNhbWUgcHJpbWl0aXZlCisvLyB2
YWx1ZXMuCisvLyBGb3Iga25vd24gcHJpbWl0aXZlIHZhbHVlcywgcGxlYXNlIHVzZSBhc3NlcnRF
cXVhbHMuCit2YXIgYXNzZXJ0U2FtZTsKKworLy8gSW52ZXJzZSBvZiBhc3NlcnRTYW1lLgordmFy
IGFzc2VydE5vdFNhbWU7CisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIGlkZW50
aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9yIGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVj
dHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcgaW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4s
IE51bWJlciBhbmQgRGF0ZSBvYmplY3RzLCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQg
dGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFycmF5IG9iamVjdHMpLgordmFyIGFzc2VydEVxdWFsczsK
KworLy8gRGVlcCBlcXVhbGl0eSBwcmVkaWNhdGUgdXNlZCBieSBhc3NlcnRFcXVhbHMuCit2YXIg
ZGVlcEVxdWFsczsKKworLy8gRXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlcyBhcmUgbm90IGlkZW50
aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9yIGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVj
dHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcgaW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4s
IE51bWJlciBhbmQgRGF0ZSBvYmplY3RzLCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQg
dGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFycmF5IG9iamVjdHMpLgordmFyIGFzc2VydE5vdEVxdWFs
czsKKworLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBleHBlY3RlZCBhbmQgZm91bmQgdmFsdWUg
aXMgd2l0aGluIGNlcnRhaW4gdG9sZXJhbmNlLgordmFyIGFzc2VydEVxdWFsc0RlbHRhOworCisv
LyBUaGUgZm91bmQgb2JqZWN0IGlzIGFuIEFycmF5IHdpdGggdGhlIHNhbWUgbGVuZ3RoIGFuZCBl
bGVtZW50cworLy8gYXMgdGhlIGV4cGVjdGVkIG9iamVjdC4gVGhlIGV4cGVjdGVkIG9iamVjdCBk
b2Vzbid0IG5lZWQgdG8gYmUgYW4gQXJyYXksCisvLyBhcyBsb25nIGFzIGl0J3MgImFycmF5LWlz
aCIuCit2YXIgYXNzZXJ0QXJyYXlFcXVhbHM7CisKKy8vIFRoZSBmb3VuZCBvYmplY3QgbXVzdCBo
YXZlIHRoZSBzYW1lIGVudW1lcmFibGUgcHJvcGVydGllcyBhcyB0aGUKKy8vIGV4cGVjdGVkIG9i
amVjdC4gVGhlIHR5cGUgb2Ygb2JqZWN0IGlzbid0IGNoZWNrZWQuCit2YXIgYXNzZXJ0UHJvcGVy
dGllc0VxdWFsOworCisvLyBBc3NlcnQgdGhhdCB0aGUgc3RyaW5nIGNvbnZlcnNpb24gb2YgdGhl
IGZvdW5kIHZhbHVlIGlzIGVxdWFsIHRvCisvLyB0aGUgZXhwZWN0ZWQgc3RyaW5nLiBPbmx5IGtl
cHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBwbGVhc2UKKy8vIGNoZWNrIHRoZSByZWFs
IHN0cnVjdHVyZSBvZiB0aGUgZm91bmQgdmFsdWUuCit2YXIgYXNzZXJ0VG9TdHJpbmdFcXVhbHM7
CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyB0cnVlLiBVc2Ugd2l0aCBib29s
ZWFuIGV4cHJlc3Npb25zCisvLyBmb3IgdGVzdHMgdGhhdCBkb2Vzbid0IGhhdmUgdGhlaXIgb3du
IGFzc2VydFhYWCBmdW5jdGlvbi4KK3ZhciBhc3NlcnRUcnVlOworCisvLyBDaGVja3MgdGhhdCB0
aGUgZm91bmQgdmFsdWUgaXMgZmFsc2UuCit2YXIgYXNzZXJ0RmFsc2U7CisKKy8vIENoZWNrcyB0
aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBudWxsLiBLZXB0IGZvciBoaXN0b3JpY2FsIGNvbXBhdGli
aWxpdHksCisvLyBwbGVhc2UganVzdCB1c2UgYXNzZXJ0RXF1YWxzKG51bGwsIGV4cGVjdGVkKS4K
K3ZhciBhc3NlcnROdWxsOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgKm5v
dCogbnVsbC4KK3ZhciBhc3NlcnROb3ROdWxsOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2Vk
IGZ1bmN0aW9uIG9yIGV2YWwgY29kZSB0aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIG9wdGlv
bmFsIHNlY29uZCBhcmd1bWVudCBpcyBhbiBleGNlcHRpb24gY29uc3RydWN0b3IgdGhhdCB0aGUK
Ky8vIHRocm93biBleGNlcHRpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IHdpdGggImluc3RhbmNlb2Yi
LgorLy8gVGhlIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlzIGEgbWVzc2FnZSB0eXBlIHN0cmlu
ZyBvciBSZWdFeHAgb2JqZWN0IHRoYXQgaXMKKy8vIGNvbXBhcmVkIHRvIHRoZSBtZXNzYWdlIG9m
IHRoZSB0aHJvd24gZXhjZXB0aW9uLgordmFyIGFzc2VydFRocm93czsKKworLy8gQXNzZXJ0IHRo
YXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIGV4Y2Vw
dGlvbiBpcyBjaGVja2VkIGFnYWluc3QgdGhlIHNlY29uZCBhcmd1bWVudCB1c2luZyBhc3NlcnRF
cXVhbHMuCit2YXIgYXNzZXJ0VGhyb3dzRXF1YWxzOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFz
c2VkIHByb21pc2UgZG9lcyBub3QgcmVzb2x2ZSwgYnV0IGV2ZW50dWFsbHkgdGhyb3dzIGFuCisv
LyBleGNlcHRpb24uIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9u
IGNvbnN0cnVjdG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdh
aW5zdCB3aXRoICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBp
cyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9iamVjdCB0aGF0IGlzCisvLyBjb21w
YXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnRU
aHJvd3NBc3luYzsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFs
IGNvZGUgZG9lcyBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgordmFyIGFzc2VydERvZXNOb3RUaHJv
dzsKKworLy8gQXNzZXJ0cyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0
aGUgY29uc3RydWN0b3IgcGFzc2VkCisvLyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LgordmFyIGFz
c2VydEluc3RhbmNlb2Y7CisKKy8vIEFzc2VydCB0aGF0IHRoaXMgY29kZSBpcyBuZXZlciBleGVj
dXRlZCAoaS5lLiwgYWx3YXlzIGZhaWxzIGlmIGV4ZWN1dGVkKS4KK3ZhciBhc3NlcnRVbnJlYWNo
YWJsZTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGZ1bmN0aW9uIGNvZGUgaXMgKG5vdCkgb3B0aW1p
emVkLiAgSWYgIm5vIHN5bmMiIGlzIHBhc3NlZAorLy8gYXMgc2Vjb25kIGFyZ3VtZW50LCB3ZSBk
byBub3Qgd2FpdCBmb3IgdGhlIGNvbmN1cnJlbnQgb3B0aW1pemF0aW9uIHRocmVhZCB0bworLy8g
ZmluaXNoIHdoZW4gcG9sbGluZyBmb3Igb3B0aW1pemF0aW9uIHN0YXR1cy4KKy8vIE9ubHkgd29y
a3Mgd2l0aCAtLWFsbG93LW5hdGl2ZXMtc3ludGF4LgordmFyIGFzc2VydE9wdGltaXplZDsKK3Zh
ciBhc3NlcnRVbm9wdGltaXplZDsKKworLy8gQXNzZXJ0IHRoYXQgYSBzdHJpbmcgY29udGFpbnMg
YW5vdGhlciBleHBlY3RlZCBzdWJzdHJpbmcuCit2YXIgYXNzZXJ0Q29udGFpbnM7CisKKy8vIEFz
c2VydCB0aGF0IGEgc3RyaW5nIG1hdGNoZXMgYSBnaXZlbiByZWdleC4KK3ZhciBhc3NlcnRNYXRj
aGVzOworCisvLyBBc3NlcnQgdGhhdCBhIHByb21pc2UgcmVzb2x2ZXMgb3IgcmVqZWN0cy4KKy8v
IFBhcmFtZXRlcnM6CisvLyB7cHJvbWlzZX0gLSB0aGUgcHJvbWlzZQorLy8ge3N1Y2Nlc3N9IC0g
b3B0aW9uYWwgLSBhIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQgb2Yg
dGhlCisvLyAgICAgICAgICAgICByZXNvbHZpbmcgcHJvbWlzZS4KKy8vICB7ZmFpbH0gLSAgIG9w
dGlvbmFsIC0gYSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRo
ZQorLy8gICAgICAgICAgICAgcmVqZWN0aW5nIHByb21pc2UuIElmIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkIGJ1dCBubyB7ZmFpbH0KKy8vICAgICAgICAgICAgIGNhbGxiYWNrIGlzIHNldCwgdGhl
IGVycm9yIGlzIHByb3BhZ2F0ZWQgb3V0IG9mIHRoZSBwcm9taXNlCisvLyAgICAgICAgICAgICBj
aGFpbi4KK3ZhciBhc3NlcnRQcm9taXNlUmVzdWx0OworCit2YXIgcHJvbWlzZVRlc3RDaGFpbjsK
K3ZhciBwcm9taXNlVGVzdENvdW50ID0gMDsKKworLy8gVGhlc2UgYml0cyBtdXN0IGJlIGluIHN5
bmMgd2l0aCBiaXRzIGRlZmluZWQgaW4gUnVudGltZV9HZXRPcHRpbWl6YXRpb25TdGF0dXMKK3Zh
ciBWOE9wdGltaXphdGlvblN0YXR1cyA9IHsKKyAga0lzRnVuY3Rpb246IDEgPDwgMCwKKyAga05l
dmVyT3B0aW1pemU6IDEgPDwgMSwKKyAga0Fsd2F5c09wdGltaXplOiAxIDw8IDIsCisgIGtNYXli
ZURlb3B0ZWQ6IDEgPDwgMywKKyAga09wdGltaXplZDogMSA8PCA0LAorICBrVHVyYm9GYW5uZWQ6
IDEgPDwgNSwKKyAga0ludGVycHJldGVkOiAxIDw8IDYsCisgIGtNYXJrZWRGb3JPcHRpbWl6YXRp
b246IDEgPDwgNywKKyAga01hcmtlZEZvckNvbmN1cnJlbnRPcHRpbWl6YXRpb246IDEgPDwgOCwK
KyAga09wdGltaXppbmdDb25jdXJyZW50bHk6IDEgPDwgOSwKKyAga0lzRXhlY3V0aW5nOiAxIDw8
IDEwLAorICBrVG9wbW9zdEZyYW1lSXNUdXJib0Zhbm5lZDogMSA8PCAxMSwKKyAga0xpdGVNb2Rl
OiAxIDw8IDEyLAorICBrTWFya2VkRm9yRGVvcHRpbWl6YXRpb246IDEgPDwgMTMsCit9OworCisv
LyBSZXR1cm5zIHRydWUgaWYgLS1saXRlLW1vZGUgaXMgb24gYW5kIHdlIGNhbid0IGV2ZXIgdHVy
biBvbiBvcHRpbWl6YXRpb24uCit2YXIgaXNOZXZlck9wdGltaXplTGl0ZU1vZGU7CisKKy8vIFJl
dHVybnMgdHJ1ZSBpZiAtLW5vLW9wdCBtb2RlIGlzIG9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZTsK
KworLy8gUmV0dXJucyB0cnVlIGlmIC0tYWx3YXlzLW9wdCBtb2RlIGlzIG9uLgordmFyIGlzQWx3
YXlzT3B0aW1pemU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpbiBpbnRl
cnByZXRlZC4KK3ZhciBpc0ludGVycHJldGVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4g
ZnVuY3Rpb24gaXMgb3B0aW1pemVkLgordmFyIGlzT3B0aW1pemVkOworCisvLyBSZXR1cm5zIHRy
dWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMgY29tcGlsZWQgYnkgVHVyYm9GYW4uCit2YXIgaXNUdXJi
b0Zhbm5lZDsKKworLy8gTW9ua2V5LXBhdGNoYWJsZSBhbGwtcHVycG9zZSBmYWlsdXJlIGhhbmRs
ZXIuCit2YXIgZmFpbFdpdGhNZXNzYWdlOworCisvLyBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgZmFp
bHVyZSB0ZXh0LiAgVXNlZCBieSB0ZXN0LWFzeW5jLmpzLgordmFyIGZvcm1hdEZhaWx1cmVUZXh0
OworCisvLyBSZXR1cm5zIGEgcHJldHR5LXByaW50ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSBwYXNzZWQgdmFsdWUuCit2YXIgcHJldHR5UHJpbnRlZDsKKworKGZ1bmN0aW9uICgpIHsg
IC8vIFNjb3BlIGZvciB1dGlsaXR5IGZ1bmN0aW9ucy4KKworICB2YXIgT2JqZWN0UHJvdG90eXBl
VG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgTnVtYmVyUHJvdG90
eXBlVmFsdWVPZiA9IE51bWJlci5wcm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIEJvb2xlYW5Qcm90
b3R5cGVWYWx1ZU9mID0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIFN0cmluZ1By
b3RvdHlwZVZhbHVlT2YgPSBTdHJpbmcucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBEYXRlUHJv
dG90eXBlVmFsdWVPZiA9IERhdGUucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBSZWdFeHBQcm90
b3R5cGVUb1N0cmluZyA9IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmc7CisgIHZhciBBcnJheVBy
b3RvdHlwZUZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKKyAgdmFyIEFycmF5UHJv
dG90eXBlSm9pbiA9IEFycmF5LnByb3RvdHlwZS5qb2luOworICB2YXIgQXJyYXlQcm90b3R5cGVN
YXAgPSBBcnJheS5wcm90b3R5cGUubWFwOworICB2YXIgQXJyYXlQcm90b3R5cGVQdXNoID0gQXJy
YXkucHJvdG90eXBlLnB1c2g7CisKKyAgdmFyIEJpZ0ludFByb3RvdHlwZVZhbHVlT2Y7CisgIC8v
IFRPRE8obmVpcyk6IFJlbW92ZSB0cnktY2F0Y2ggb25jZSBCaWdJbnRzIGFyZSBlbmFibGVkIGJ5
IGRlZmF1bHQuCisgIHRyeSB7CisgICAgQmlnSW50UHJvdG90eXBlVmFsdWVPZiA9IEJpZ0ludC5w
cm90b3R5cGUudmFsdWVPZjsKKyAgfSBjYXRjaCAoZSkge30KKworICBmdW5jdGlvbiBjbGFzc09m
KG9iamVjdCkgeworICAgIC8vIEFyZ3VtZW50IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
LgorICAgIHZhciBzdHJpbmcgPSBPYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iamVjdCk7
CisgICAgLy8gU3RyaW5nIGhhcyBmb3JtYXQgW29iamVjdCA8Q2xhc3NOYW1lPl0uCisgICAgcmV0
dXJuIHN0cmluZy5zdWJzdHJpbmcoOCwgc3RyaW5nLmxlbmd0aCAtIDEpOworICB9CisKKworICBm
dW5jdGlvbiBWYWx1ZU9mKHZhbHVlKSB7CisgICAgc3dpdGNoIChjbGFzc09mKHZhbHVlKSkgewor
ICAgICAgY2FzZSAiTnVtYmVyIjoKKyAgICAgICAgcmV0dXJuIE51bWJlclByb3RvdHlwZVZhbHVl
T2YuY2FsbCh2YWx1ZSk7CisgICAgICBjYXNlICJCaWdJbnQiOgorICAgICAgICByZXR1cm4gQmln
SW50UHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIlN0cmluZyI6Cisg
ICAgICAgIHJldHVybiBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAg
Y2FzZSAiQm9vbGVhbiI6CisgICAgICAgIHJldHVybiBCb29sZWFuUHJvdG90eXBlVmFsdWVPZi5j
YWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkRhdGUiOgorICAgICAgICByZXR1cm4gRGF0ZVByb3Rv
dHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgfQorICB9CisKKworICBwcmV0dHlQcmludGVkID0gZnVuY3Rpb24gcHJldHR5
UHJpbnRlZCh2YWx1ZSkgeworICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgICBjYXNl
ICJzdHJpbmciOgorICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpOworICAgICAg
Y2FzZSAiYmlnaW50IjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSkgKyAibiI7CisgICAg
ICBjYXNlICJudW1iZXIiOgorICAgICAgICBpZiAodmFsdWUgPT09IDAgJiYgKDEgLyB2YWx1ZSkg
PCAwKSByZXR1cm4gIi0wIjsKKyAgICAgICAgLy8gRkFMTFRIUk9VR0guCisgICAgICBjYXNlICJi
b29sZWFuIjoKKyAgICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICBjYXNlICJmdW5jdGlvbiI6
CisgICAgICBjYXNlICJzeW1ib2wiOgorICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKKyAg
ICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICJu
dWxsIjsKKyAgICAgICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NPZih2YWx1ZSk7CisgICAgICAg
IHN3aXRjaCAob2JqZWN0Q2xhc3MpIHsKKyAgICAgICAgICBjYXNlICJOdW1iZXIiOgorICAgICAg
ICAgIGNhc2UgIkJpZ0ludCI6CisgICAgICAgICAgY2FzZSAiU3RyaW5nIjoKKyAgICAgICAgICBj
YXNlICJCb29sZWFuIjoKKyAgICAgICAgICBjYXNlICJEYXRlIjoKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3RDbGFzcyArICIoIiArIHByZXR0eVByaW50ZWQoVmFsdWVPZih2YWx1ZSkpICsgIiki
OworICAgICAgICAgIGNhc2UgIlJlZ0V4cCI6CisgICAgICAgICAgICByZXR1cm4gUmVnRXhwUHJv
dG90eXBlVG9TdHJpbmcuY2FsbCh2YWx1ZSk7CisgICAgICAgICAgY2FzZSAiQXJyYXkiOgorICAg
ICAgICAgICAgdmFyIG1hcHBlZCA9IEFycmF5UHJvdG90eXBlTWFwLmNhbGwoCisgICAgICAgICAg
ICAgICAgdmFsdWUsIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQpOworICAgICAgICAgICAgdmFy
IGpvaW5lZCA9IEFycmF5UHJvdG90eXBlSm9pbi5jYWxsKG1hcHBlZCwgIiwiKTsKKyAgICAgICAg
ICAgIHJldHVybiAiWyIgKyBqb2luZWQgKyAiXSI7CisgICAgICAgICAgY2FzZSAiVWludDhBcnJh
eSI6CisgICAgICAgICAgY2FzZSAiSW50OEFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQxNkFy
cmF5IjoKKyAgICAgICAgICBjYXNlICJVaW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAiVWlu
dDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkludDMyQXJyYXkiOgorICAgICAgICAgIGNhc2Ug
IkZsb2F0MzJBcnJheSI6CisgICAgICAgICAgY2FzZSAiRmxvYXQ2NEFycmF5IjoKKyAgICAgICAg
ICAgIHZhciBqb2luZWQgPSBBcnJheVByb3RvdHlwZUpvaW4uY2FsbCh2YWx1ZSwgIiwiKTsKKyAg
ICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoWyIgKyBqb2luZWQgKyAiXSkiOworICAg
ICAgICAgIGNhc2UgIk9iamVjdCI6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdENsYXNzICsgIigiICsgU3RyaW5nKHZhbHVl
KSArICIpIjsKKyAgICAgICAgfQorICAgICAgICAvLyBjbGFzc09mKCkgcmV0dXJuZWQgIk9iamVj
dCIuCisgICAgICAgIHZhciBuYW1lID0gdmFsdWUuY29uc3RydWN0b3IubmFtZTsKKyAgICAgICAg
aWYgKG5hbWUpIHJldHVybiBuYW1lICsgIigpIjsKKyAgICAgICAgcmV0dXJuICJPYmplY3QoKSI7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gIi0tIHVua25vd24gdmFsdWUgLS0iOwor
ICAgIH0KKyAgfQorCisKKyAgZnVuY3Rpb24gcHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCh2YWx1
ZSwgaW5kZXgsIGFycmF5KSB7CisgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShpbmRl
eCBpbiBhcnJheSkpIHJldHVybiAiIjsKKyAgICByZXR1cm4gcHJldHR5UHJpbnRlZCh2YWx1ZSk7
CisgIH0KKworCisgIGZhaWxXaXRoTWVzc2FnZSA9IGZ1bmN0aW9uIGZhaWxXaXRoTWVzc2FnZSht
ZXNzYWdlKSB7CisgICAgdGhyb3cgbmV3IE1qc1VuaXRBc3NlcnRpb25FcnJvcihtZXNzYWdlKTsK
KyAgfQorCisgIGZvcm1hdEZhaWx1cmVUZXh0ID0gZnVuY3Rpb24oZXhwZWN0ZWRUZXh0LCBmb3Vu
ZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIgbWVzc2FnZSA9ICJGYWlsIiArICJ1cmUiOworICAgIGlm
IChuYW1lX29wdCkgeworICAgICAgLy8gRml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRl
c3QgcnVubmVyLgorICAgICAgbWVzc2FnZSArPSAiICgiICsgbmFtZV9vcHQgKyAiKSI7CisgICAg
fQorCisgICAgdmFyIGZvdW5kVGV4dCA9IHByZXR0eVByaW50ZWQoZm91bmQpOworICAgIGlmIChl
eHBlY3RlZFRleHQubGVuZ3RoIDw9IDQwICYmIGZvdW5kVGV4dC5sZW5ndGggPD0gNDApIHsKKyAg
ICAgIG1lc3NhZ2UgKz0gIjogZXhwZWN0ZWQgPCIgKyBleHBlY3RlZFRleHQgKyAiPiBmb3VuZCA8
IiArIGZvdW5kVGV4dCArICI+IjsKKyAgICB9IGVsc2UgeworICAgICAgbWVzc2FnZSArPSAiOlxu
ZXhwZWN0ZWQ6XG4iICsgZXhwZWN0ZWRUZXh0ICsgIlxuZm91bmQ6XG4iICsgZm91bmRUZXh0Owor
ICAgIH0KKyAgICByZXR1cm4gbWVzc2FnZTsKKyAgfQorCisgIGZ1bmN0aW9uIGZhaWwoZXhwZWN0
ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICByZXR1cm4gZmFpbFdpdGhNZXNzYWdlKGZv
cm1hdEZhaWx1cmVUZXh0KGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSk7CisgIH0KKwor
CisgIGZ1bmN0aW9uIGRlZXBPYmplY3RFcXVhbHMoYSwgYikgeworICAgIHZhciBhUHJvcHMgPSBP
YmplY3Qua2V5cyhhKTsKKyAgICBhUHJvcHMuc29ydCgpOworICAgIHZhciBiUHJvcHMgPSBPYmpl
Y3Qua2V5cyhiKTsKKyAgICBiUHJvcHMuc29ydCgpOworICAgIGlmICghZGVlcEVxdWFscyhhUHJv
cHMsIGJQcm9wcykpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhUHJvcHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmICghZGVlcEVxdWFscyhh
W2FQcm9wc1tpXV0sIGJbYVByb3BzW2ldXSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisKKyAgZGVlcEVxdWFscyA9IGZ1
bmN0aW9uIGRlZXBFcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiKSB7CisgICAgICAvLyBD
aGVjayBmb3IgLTAuCisgICAgICBpZiAoYSA9PT0gMCkgcmV0dXJuICgxIC8gYSkgPT09ICgxIC8g
Yik7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHR5cGVvZiBhICE9PSB0eXBl
b2YgYikgcmV0dXJuIGZhbHNlOworICAgIGlmICh0eXBlb2YgYSA9PT0gIm51bWJlciIpIHJldHVy
biBpc05hTihhKSAmJiBpc05hTihiKTsKKyAgICBpZiAodHlwZW9mIGEgIT09ICJvYmplY3QiICYm
IHR5cGVvZiBhICE9PSAiZnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7CisgICAgLy8gTmVpdGhlciBh
IG5vciBiIGlzIHByaW1pdGl2ZS4KKyAgICB2YXIgb2JqZWN0Q2xhc3MgPSBjbGFzc09mKGEpOwor
ICAgIGlmIChvYmplY3RDbGFzcyAhPT0gY2xhc3NPZihiKSkgcmV0dXJuIGZhbHNlOworICAgIGlm
IChvYmplY3RDbGFzcyA9PT0gIlJlZ0V4cCIpIHsKKyAgICAgIC8vIEZvciBSZWdFeHAsIGp1c3Qg
Y29tcGFyZSBwYXR0ZXJuIGFuZCBmbGFncyB1c2luZyBpdHMgdG9TdHJpbmcuCisgICAgICByZXR1
cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbChhKSA9PT0KKyAgICAgICAgICAgICBSZWdF
eHBQcm90b3R5cGVUb1N0cmluZy5jYWxsKGIpOworICAgIH0KKyAgICAvLyBGdW5jdGlvbnMgYXJl
IG9ubHkgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMuCisgICAgaWYgKG9iamVjdENsYXNzID09PSAi
RnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiQXJyYXki
KSB7CisgICAgICB2YXIgZWxlbWVudENvdW50ID0gMDsKKyAgICAgIGlmIChhLmxlbmd0aCAhPT0g
Yi5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghZGVlcEVxdWFscyhh
W2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIlN0cmluZyIgfHwgb2JqZWN0Q2xhc3MgPT09
ICJOdW1iZXIiIHx8CisgICAgICBvYmplY3RDbGFzcyA9PT0gIkJpZ0ludCIgfHwgb2JqZWN0Q2xh
c3MgPT09ICJCb29sZWFuIiB8fAorICAgICAgb2JqZWN0Q2xhc3MgPT09ICJEYXRlIikgeworICAg
ICAgaWYgKFZhbHVlT2YoYSkgIT09IFZhbHVlT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGRlZXBPYmplY3RFcXVhbHMoYSwgYik7CisgIH0KKworICBhc3NlcnRTYW1lID0g
ZnVuY3Rpb24gYXNzZXJ0U2FtZShleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYg
KE9iamVjdC5pcyhleHBlY3RlZCwgZm91bmQpKSByZXR1cm47CisgICAgZmFpbChwcmV0dHlQcmlu
dGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgfTsKKworICBhc3NlcnROb3RTYW1l
ID0gZnVuY3Rpb24gYXNzZXJ0Tm90U2FtZShleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7Cisg
ICAgaWYgKCFPYmplY3QuaXMoZXhwZWN0ZWQsIGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwoIm5v
dCBzYW1lIGFzICIgKyBwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsK
KyAgfQorCisgIGFzc2VydEVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydEVxdWFscyhleHBlY3RlZCwg
Zm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKCFkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkp
IHsKKyAgICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7
CisgICAgfQorICB9OworCisgIGFzc2VydE5vdEVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydE5vdEVx
dWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKGRlZXBFcXVhbHMoZm91
bmQsIGV4cGVjdGVkKSkgeworICAgICAgZmFpbCgibm90IGVxdWFscyB0byAiICsgcHJldHR5UHJp
bnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNz
ZXJ0RXF1YWxzRGVsdGEgPQorICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzRGVsdGEoZXhwZWN0
ZWQsIGZvdW5kLCBkZWx0YSwgbmFtZV9vcHQpIHsKKyAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWQg
LSBmb3VuZCkgPiBkZWx0YSkgeworICAgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSAr
ICIgKy0gIiArIHByZXR0eVByaW50ZWQoZGVsdGEpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0K
KyAgfTsKKworCisgIGFzc2VydEFycmF5RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0QXJyYXlFcXVh
bHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIHZhciBzdGFydCA9ICIiOworICAg
IGlmIChuYW1lX29wdCkgeworICAgICAgc3RhcnQgPSBuYW1lX29wdCArICIgLSAiOworICAgIH0K
KyAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQubGVuZ3RoLCBmb3VuZC5sZW5ndGgsIHN0YXJ0ICsg
ImFycmF5IGxlbmd0aCIpOworICAgIGlmIChleHBlY3RlZC5sZW5ndGggPT09IGZvdW5kLmxlbmd0
aCkgeworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgewor
ICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWRbaV0sIGZvdW5kW2ldLAorICAgICAgICAgICAg
ICAgICAgICAgc3RhcnQgKyAiYXJyYXkgZWxlbWVudCBhdCBpbmRleCAiICsgaSk7CisgICAgICB9
CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0UHJvcGVydGllc0VxdWFsID0gZnVuY3Rpb24gYXNz
ZXJ0UHJvcGVydGllc0VxdWFsKGV4cGVjdGVkLCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfb3B0KSB7CisgICAgLy8g
Q2hlY2sgcHJvcGVydGllcyBvbmx5LgorICAgIGlmICghZGVlcE9iamVjdEVxdWFscyhleHBlY3Rl
ZCwgZm91bmQpKSB7CisgICAgICBmYWlsKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAg
IH0KKyAgfTsKKworCisgIGFzc2VydFRvU3RyaW5nRXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0VG9T
dHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfb3B0KSB7CisgICAgaWYgKGV4cGVjdGVk
ICE9PSBTdHJpbmcoZm91bmQpKSB7CisgICAgICBmYWlsKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9v
cHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydFRydWUgPSBmdW5jdGlvbiBhc3NlcnRUcnVl
KHZhbHVlLCBuYW1lX29wdCkgeworICAgIGFzc2VydEVxdWFscyh0cnVlLCB2YWx1ZSwgbmFtZV9v
cHQpOworICB9OworCisKKyAgYXNzZXJ0RmFsc2UgPSBmdW5jdGlvbiBhc3NlcnRGYWxzZSh2YWx1
ZSwgbmFtZV9vcHQpIHsKKyAgICBhc3NlcnRFcXVhbHMoZmFsc2UsIHZhbHVlLCBuYW1lX29wdCk7
CisgIH07CisKKworICBhc3NlcnROdWxsID0gZnVuY3Rpb24gYXNzZXJ0TnVsbCh2YWx1ZSwgbmFt
ZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgIT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm51bGwiLCB2
YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydE5vdE51bGwgPSBmdW5j
dGlvbiBhc3NlcnROb3ROdWxsKHZhbHVlLCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PT0g
bnVsbCkgeworICAgICAgZmFpbCgibm90IG51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0K
KyAgfTsKKworICBmdW5jdGlvbiBleGVjdXRlQ29kZShjb2RlKSB7CisgICAgaWYgKHR5cGVvZiBj
b2RlID09PSAnZnVuY3Rpb24nKSAgcmV0dXJuIGNvZGUoKTsKKyAgICBpZiAodHlwZW9mIGNvZGUg
PT09ICdzdHJpbmcnKSByZXR1cm4gZXZhbChjb2RlKTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UoCisg
ICAgICAgICdHaXZlbiBjb2RlIGlzIG5laXRoZXIgZnVuY3Rpb24gbm9yIHN0cmluZywgYnV0ICcg
KyAodHlwZW9mIGNvZGUpICsKKyAgICAgICAgJzogPCcgKyBwcmV0dHlQcmludGVkKGNvZGUpICsg
Jz4nKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVz
ZV9vcHQpIHsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0
RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiB0eXBlX29wdCk7CisgICAgICBhc3NlcnRJbnN0YW5j
ZW9mKGUsIHR5cGVfb3B0KTsKKyAgICB9CisgICAgLy8gaWdub3JlIGNhdXNlX29wdCBiZWNhdXNl
IG91ciBlcnJvciBtZXNzYWdlcyBhcmUgbm90IHRoZSBzYW1lIGFzIFY4J3MKKyAgICByZXR1cm47
CisgICAgaWYgKFJlZ0V4cCAhPT0gdW5kZWZpbmVkICYmIGNhdXNlX29wdCBpbnN0YW5jZW9mIFJl
Z0V4cCkgeworICAgICAgYXNzZXJ0TWF0Y2hlcyhjYXVzZV9vcHQsIGUubWVzc2FnZSwgJ0Vycm9y
IG1lc3NhZ2UnKTsKKyAgICB9IGVsc2UgaWYgKGNhdXNlX29wdCAhPT0gdW5kZWZpbmVkKSB7Cisg
ICAgICBhc3NlcnRFcXVhbHMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7
CisgICAgfQorICB9CisKKyAgYXNzZXJ0VGhyb3dzID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGNv
ZGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEg
JiYgdHlwZV9vcHQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZh
bGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIHVua25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9
CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAn
ZnVuY3Rpb24nKSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQg
dXNlIG9mIGFzc2VydFRocm93cywgbWF5YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7
CisgICAgfQorICAgIHRyeSB7CisgICAgICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KTsKKyAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbGV0IG1zZyA9ICdEaWQgbm90IHRocm93IGV4Y2VwdGlv
bic7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0g
dW5kZWZpbmVkKQorICAgICAgbXNnICs9ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOwor
ICAgIGZhaWxXaXRoTWVzc2FnZShtc2cpOworICB9OworCisgIGFzc2VydFRocm93c0VxdWFscyA9
IGZ1bmN0aW9uIGFzc2VydFRocm93c0VxdWFscyhmdW4sIHZhbCkgeworICAgIHRyeSB7CisgICAg
ICBmdW4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBhc3NlcnRTYW1lKHZhbCwgZSk7Cisg
ICAgICByZXR1cm47CisgICAgfQorICAgIGZhaWxXaXRoTWVzc2FnZSgnRGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24sIGV4cGVjdGVkICcgKyBwcmV0dHlQcmludGVkKHZhbCkpOworICB9OworCisgIGFz
c2VydFRocm93c0FzeW5jID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzQXN5bmMocHJvbWlzZSwgdHlw
ZV9vcHQsIGNhdXNlX29wdCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBl
X29wdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoJ2ludmFsaWQgdXNl
IG9mIGFzc2VydFRocm93cywgdW5rbm93biB0eXBlX29wdCBnaXZlbicpOworICAgIH0KKyAgICBp
ZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdHlwZV9vcHQgIT09ICdmdW5jdGlv
bicpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgKKyAgICAgICAgICAnaW52YWxpZCB1c2Ugb2Yg
YXNzZXJ0VGhyb3dzLCBtYXliZSB5b3Ugd2FudCBhc3NlcnRUaHJvd3NFcXVhbHMnKTsKKyAgICB9
CisgICAgbGV0IG1zZyA9ICdQcm9taXNlIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uJzsKKyAgICBp
ZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlX29wdC5uYW1lICE9PSB1bmRlZmluZWQp
CisgICAgICBtc2cgKz0gJywgZXhwZWN0ZWQgJyArIHR5cGVfb3B0Lm5hbWU7CisgICAgcmV0dXJu
IGFzc2VydFByb21pc2VSZXN1bHQoCisgICAgICAgIHByb21pc2UsCisgICAgICAgIC8vIFVzZSBz
ZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBwcm9t
aXNlCisgICAgICAgIC8vIGNoYWluLgorICAgICAgICByZXMgPT4gc2V0VGltZW91dChfID0+IGZh
aWwoJzx0aHJvdz4nLCByZXMsIG1zZyksIDApLAorICAgICAgICBlID0+IGNoZWNrRXhjZXB0aW9u
KGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpKTsKKyAgfTsKKworICBhc3NlcnRJbnN0YW5jZW9mID0g
ZnVuY3Rpb24gYXNzZXJ0SW5zdGFuY2VvZihvYmosIHR5cGUpIHsKKyAgICBpZiAoIShvYmogaW5z
dGFuY2VvZiB0eXBlKSkgeworICAgICAgdmFyIGFjdHVhbFR5cGVOYW1lID0gbnVsbDsKKyAgICAg
IHZhciBhY3R1YWxDb25zdHJ1Y3RvciA9IG9iaiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2Jq
KS5jb25zdHJ1Y3RvcjsKKyAgICAgIGlmICh0eXBlb2YgYWN0dWFsQ29uc3RydWN0b3IgPT09ICdm
dW5jdGlvbicpIHsKKyAgICAgICAgYWN0dWFsVHlwZU5hbWUgPSBhY3R1YWxDb25zdHJ1Y3Rvci5u
YW1lIHx8IFN0cmluZyhhY3R1YWxDb25zdHJ1Y3Rvcik7CisgICAgICB9CisgICAgICBmYWlsV2l0
aE1lc3NhZ2UoCisgICAgICAgICAgJ09iamVjdCA8JyArIHByZXR0eVByaW50ZWQob2JqKSArICc+
IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiA8JyArCisgICAgICAgICAgKHR5cGUubmFtZSB8fCB0eXBl
KSArICc+JyArCisgICAgICAgICAgKGFjdHVhbFR5cGVOYW1lID8gJyBidXQgb2YgPCcgKyBhY3R1
YWxUeXBlTmFtZSArICc+JyA6ICcnKSk7CisgICAgfQorICB9OworCisgIGFzc2VydERvZXNOb3RU
aHJvdyA9IGZ1bmN0aW9uIGFzc2VydERvZXNOb3RUaHJvdyhjb2RlLCBuYW1lX29wdCkgeworICAg
IHRyeSB7CisgICAgICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICBpZiAoZSBpbnN0YW5jZW9mIE1qc1VuaXRBc3NlcnRpb25FcnJvcikgdGhyb3cgZTsKKyAgICAg
IGZhaWxXaXRoTWVzc2FnZSgidGhyZXcgYW4gZXhjZXB0aW9uOiAiICsgKGUubWVzc2FnZSB8fCBl
KSk7CisgICAgfQorICB9OworCisgIGFzc2VydFVucmVhY2hhYmxlID0gZnVuY3Rpb24gYXNzZXJ0
VW5yZWFjaGFibGUobmFtZV9vcHQpIHsKKyAgICAvLyBGaXggdGhpcyB3aGVuIHdlIGRpdGNoIHRo
ZSBvbGQgdGVzdCBydW5uZXIuCisgICAgdmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlOiB1bnJl
YWNoYWJsZSI7CisgICAgaWYgKG5hbWVfb3B0KSB7CisgICAgICBtZXNzYWdlICs9ICIgLSAiICsg
bmFtZV9vcHQ7CisgICAgfQorICAgIGZhaWxXaXRoTWVzc2FnZShtZXNzYWdlKTsKKyAgfTsKKwor
ICBhc3NlcnRDb250YWlucyA9IGZ1bmN0aW9uKHN1YiwgdmFsdWUsIG5hbWVfb3B0KSB7CisgICAg
aWYgKHZhbHVlID09IG51bGwgPyAoc3ViICE9IG51bGwpIDogdmFsdWUuaW5kZXhPZihzdWIpID09
IC0xKSB7CisgICAgICBmYWlsKCJjb250YWlucyAnIiArIFN0cmluZyhzdWIpICsgIiciLCB2YWx1
ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBhc3NlcnRNYXRjaGVzID0gZnVuY3Rpb24o
cmVnZXhwLCBzdHIsIG5hbWVfb3B0KSB7CisgICAgaWYgKCEocmVnZXhwIGluc3RhbmNlb2YgUmVn
RXhwKSkgeworICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdleHApOworICAgIH0KKyAgICBp
ZiAoIXN0ci5tYXRjaChyZWdleHApKSB7CisgICAgICBmYWlsKCJzaG91bGQgbWF0Y2ggJyIgKyBy
ZWdleHAgKyAiJyIsIHN0ciwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBj
b25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZXhjZXB0aW9uKSB7CisgICAgLy8gSWYgdGhlIGV4Y2Vw
dGlvbiBkb2VzIG5vdCBjb250YWluIGEgc3RhY2sgdHJhY2UsIHdyYXAgaXQgaW4gYSBuZXcgRXJy
b3IuCisgICAgaWYgKCFleGNlcHRpb24uc3RhY2spIGV4Y2VwdGlvbiA9IG5ldyBFcnJvcihleGNl
cHRpb24pOworCisgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBhbHJlYWR5IHByb3ZpZGVzIGEgc3Bl
Y2lhbCBzdGFjayB0cmFjZSwgd2UgZG8gbm90IG1vZGlmeQorICAgIC8vIGl0LgorICAgIGlmICh0
eXBlb2YgZXhjZXB0aW9uLnN0YWNrICE9PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbjsKKyAgICB9CisgICAgZXhjZXB0aW9uLnN0YWNrID0gc3RhY2sgKyAnXG5cbicgKyBleGNl
cHRpb24uc3RhY2s7CisgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgfQorCisgIGFzc2VydFByb21p
c2VSZXN1bHQgPSBmdW5jdGlvbihwcm9taXNlLCBzdWNjZXNzLCBmYWlsKSB7CisgICAgaWYgKHN1
Y2Nlc3MgIT09IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBzdWNj
ZXNzKTsKKyAgICBpZiAoZmFpbCAhPT0gdW5kZWZpbmVkKSBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9u
JywgdHlwZW9mIGZhaWwpOworICAgIGFzc2VydEluc3RhbmNlb2YocHJvbWlzZSwgUHJvbWlzZSk7
CisgICAgY29uc3Qgc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrOworCisgICAgdmFyIHRlc3Rf
cHJvbWlzZSA9IHByb21pc2UudGhlbigKKyAgICAgICAgcmVzdWx0ID0+IHsKKyAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgaWYgKC0tcHJvbWlzZVRlc3RDb3VudCA9PSAwKSB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIHN1
Y2Nlc3MocmVzdWx0KTsKKyAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBV
c2Ugc2V0VGltZW91dCB0byB0aHJvdyB0aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUg
cHJvbWlzZQorICAgICAgICAgICAgLy8gY2hhaW4uCisgICAgICAgICAgICBzZXRUaW1lb3V0KF8g
PT4geworICAgICAgICAgICAgICB0aHJvdyBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZSk7Cisg
ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHJlc3Vs
dCA9PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICgtLXByb21pc2VUZXN0Q291
bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAoZmFpbCA9
PT0gdW5kZWZpbmVkKSB0aHJvdyByZXN1bHQ7CisgICAgICAgICAgICBmYWlsKHJlc3VsdCk7Cisg
ICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8g
dGhyb3cgdGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAg
ICAgIC8vIGNoYWluLgorICAgICAgICAgICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAg
ICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7
CisgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgIGlmICghcHJvbWlzZVRlc3RDaGFpbikg
cHJvbWlzZVRlc3RDaGFpbiA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIC8vIHdhaXRVbnRpbERv
bmUgaXMgaWRlbXBvdGVudC4KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAr
K3Byb21pc2VUZXN0Q291bnQ7CisgICAgcmV0dXJuIHByb21pc2VUZXN0Q2hhaW4udGhlbih0ZXN0
X3Byb21pc2UpOworICB9OworCisgIHZhciBPcHRpbWl6YXRpb25TdGF0dXNJbXBsID0gdW5kZWZp
bmVkOworCisgIHZhciBPcHRpbWl6YXRpb25TdGF0dXMgPSBmdW5jdGlvbihmdW4sIHN5bmNfb3B0
KSB7CisgICAgaWYgKE9wdGltaXphdGlvblN0YXR1c0ltcGwgPT09IHVuZGVmaW5lZCkgeworICAg
ICAgdHJ5IHsKKyAgICAgICAgT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9IG5ldyBGdW5jdGlvbigK
KyAgICAgICAgICAgICJmdW4iLCAic3luYyIsICJyZXR1cm4gJUdldE9wdGltaXphdGlvblN0YXR1
cyhmdW4sIHN5bmMpOyIpOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIm5hdGl2ZXMgc3ludGF4IG5vdCBhbGxvd2VkIik7CisgICAgICB9CisgICAgfQorICAg
IHJldHVybiBPcHRpbWl6YXRpb25TdGF0dXNJbXBsKGZ1biwgc3luY19vcHQpOworICB9CisKKyAg
YXNzZXJ0VW5vcHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3NlcnRVbm9wdGltaXplZCgKKyAgICAgIGZ1
biwgc3luY19vcHQsIG5hbWVfb3B0LCBza2lwX2lmX21heWJlX2Rlb3B0ZWQgPSB0cnVlKSB7Cisg
ICAgaWYgKHN5bmNfb3B0ID09PSB1bmRlZmluZWQpIHN5bmNfb3B0ID0gIiI7CisgICAgdmFyIG9w
dF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jX29wdCk7CisgICAgLy8gVGVz
dHMgdGhhdCB1c2UgYXNzZXJ0VW5vcHRpbWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBpZiAtLWFs
d2F5cy1vcHQKKyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVzdCBhZGQg
LS1uby1hbHdheXMtb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAwLAorICAg
ICAgICAgICAgICAgICJ0ZXN0IGRvZXMgbm90IG1ha2Ugc2Vuc2Ugd2l0aCAtLWFsd2F5cy1vcHQi
KTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lz
RnVuY3Rpb24pICE9PSAwLCBuYW1lX29wdCk7CisgICAgaWYgKHNraXBfaWZfbWF5YmVfZGVvcHRl
ZCAmJgorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtNYXliZURl
b3B0ZWQpICE9PSAwKSB7CisgICAgICAvLyBXaGVuIC0tZGVvcHQtZXZlcnktbi10aW1lcyBmbGFn
IGlzIHNwZWNpZmllZCBpdCdzIG5vIGxvbmdlciBndWFyYW50ZWVkCisgICAgICAvLyB0aGF0IHBh
cnRpY3VsYXIgZnVuY3Rpb24gaXMgc3RpbGwgZGVvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0
aGUgdGVzdAorICAgICAgLy8gdG8gc3RyZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBhc3NlcnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0
aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRP
cHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3NlcnRPcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0
LCBuYW1lX29wdCwgc2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5j
X29wdCA9PT0gdW5kZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0g
T3B0aW1pemF0aW9uU3RhdHVzKGZ1biwgc3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNl
IGFzc2VydE9wdGltaXplZCgpIGRvIG5vdCBtYWtlIHNlbnNlIGZvciBMaXRlIG1vZGUgd2hlcmUK
KyAgICAvLyBvcHRpbWl6YXRpb24gaXMgYWx3YXlzIGRpc2FibGVkLCBleHBsaWNpdGx5IGV4aXQg
dGhlIHRlc3Qgd2l0aCBhIHdhcm5pbmcuCisgICAgaWYgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rTGl0ZU1vZGUpIHsKKyAgICAgIHByaW50KCJXYXJuaW5nOiBUZXN0IHVzZXMg
YXNzZXJ0T3B0aW1pemVkIGluIExpdGUgbW9kZSwgc2tpcHBpbmcgdGVzdC4iKTsKKyAgICAgIHRl
c3RSdW5uZXIucXVpdCgwKTsKKyAgICB9CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0T3B0
aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1uby1vcHQKKyAgICAvLyBvcHRpb24gaXMg
cHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVzdCBhZGQgLS1vcHQgdG8gZmxhZ3MgY29tbWVudC4KKyAg
ICBhc3NlcnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9w
dGltaXplKSAhPT0gMCwKKyAgICAgICAgICAgICAgICAidGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNl
IHdpdGggLS1uby1vcHQiKTsKKyAgICBhc3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAm
IFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgJ3Nob3Vs
ZCBiZSBhIGZ1bmN0aW9uOiAnICsgbmFtZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rl
b3B0ZWQgJiYKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5
YmVEZW9wdGVkKSAhPT0gMCkgeworICAgICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMg
ZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBubyBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhh
dCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHN0aWxsIG9wdGltaXplZCwgc28ga2VlcCBydW5uaW5n
IHRoZSB0ZXN0CisgICAgICAvLyB0byBzdHJlc3MgdGVzdCB0aGUgZGVvcHRpbWl6ZXIuCisgICAg
ICByZXR1cm47CisgICAgfQorICAgIGFzc2VydFRydWUoCisgICAgICAgIChvcHRfc3RhdHVzICYg
VjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAsCisgICAgICAgICdzaG91bGQg
YmUgb3B0aW1pemVkOiAnICsgbmFtZV9vcHQpOworICB9CisKKyAgaXNOZXZlck9wdGltaXplTGl0
ZU1vZGUgPSBmdW5jdGlvbiBpc05ldmVyT3B0aW1pemVMaXRlTW9kZSgpIHsKKyAgICB2YXIgb3B0
X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4g
KG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTGl0ZU1vZGUpICE9PSAwOworICB9
CisKKyAgaXNOZXZlck9wdGltaXplID0gZnVuY3Rpb24gaXNOZXZlck9wdGltaXplKCkgeworICAg
IHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAg
IHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXpl
KSAhPT0gMDsKKyAgfQorCisgIGlzQWx3YXlzT3B0aW1pemUgPSBmdW5jdGlvbiBpc0Fsd2F5c09w
dGltaXplKCkgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVm
aW5lZCwgIiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVz
LmtBbHdheXNPcHRpbWl6ZSkgIT09IDA7CisgIH0KKworICBpc0ludGVycHJldGVkID0gZnVuY3Rp
b24gaXNJbnRlcnByZXRlZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlv
blN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1
bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMu
a09wdGltaXplZCkgPT09IDAgJiYKKyAgICAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rSW50ZXJwcmV0ZWQpICE9PSAwOworICB9CisKKyAgaXNPcHRpbWl6ZWQgPSBm
dW5jdGlvbiBpc09wdGltaXplZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXph
dGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRp
bWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBh
IGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0
dXMua09wdGltaXplZCkgIT09IDA7CisgIH0KKworICBpc1R1cmJvRmFubmVkID0gZnVuY3Rpb24g
aXNUdXJib0Zhbm5lZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0
YXR1cyhmdW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRp
b25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0
aW9uIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09w
dGltaXplZCkgIT09IDAgJiYKKyAgICAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlv
blN0YXR1cy5rVHVyYm9GYW5uZWQpICE9PSAwOworICB9CisKKyAgLy8gQ3VzdG9tIFY4LXNwZWNp
ZmljIHN0YWNrIHRyYWNlIGZvcm1hdHRlciB0aGF0IGlzIHRlbXBvcmFyaWx5IGluc3RhbGxlZCBv
bgorICAvLyB0aGUgRXJyb3Igb2JqZWN0LgorICBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFy
ZVN0YWNrVHJhY2UgPSBmdW5jdGlvbihlcnJvciwgc3RhY2spIHsKKyAgICAvLyBUcmlnZ2VyIGRl
ZmF1bHQgZm9ybWF0dGluZyB3aXRoIHJlY3Vyc2lvbi4KKyAgICB0cnkgeworICAgICAgLy8gRmls
dGVyLW91dCBhbGwgYnV0IHRoZSBmaXJzdCBtanN1bml0IGZyYW1lLgorICAgICAgbGV0IGZpbHRl
cmVkU3RhY2sgPSBbXTsKKyAgICAgIGxldCBpbk1qc3VuaXQgPSB0cnVlOworICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBzdGFjay5sZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgZnJhbWUgPSBz
dGFja1tpXTsKKyAgICAgICAgaWYgKGluTWpzdW5pdCkgeworICAgICAgICAgIGxldCBmaWxlID0g
ZnJhbWUuZ2V0RmlsZU5hbWUoKTsKKyAgICAgICAgICBpZiAoIWZpbGUgfHwgIWZpbGUuZW5kc1dp
dGgoIm1qc3VuaXQuanMiKSkgeworICAgICAgICAgICAgaW5NanN1bml0ID0gZmFsc2U7CisgICAg
ICAgICAgICAvLyBQdXNoIHRoZSBsYXN0IG1qc3VuaXQgZnJhbWUsIHR5cGljYWxseSBjb250YWlu
aW5nIHRoZSBhc3NlcnRpb24KKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uLgorICAgICAgICAgICAg
aWYgKGkgPiAwKSBBcnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tp
LTFdKTsKKyAgICAgICAgICAgIEFycmF5UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ss
IHN0YWNrW2ldKTsKKyAgICAgICAgICB9CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgQXJyYXlQcm90b3R5cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgZnJhbWUpOwor
ICAgICAgfQorICAgICAgc3RhY2sgPSBmaWx0ZXJlZFN0YWNrOworCisgICAgICAvLyBJbmZlciBm
dW5jdGlvbiBuYW1lcyBhbmQgY2FsY3VsYXRlIHttYXhfbmFtZV9sZW5ndGh9CisgICAgICBsZXQg
bWF4X25hbWVfbGVuZ3RoID0gMDsKKyAgICAgIEFycmF5UHJvdG90eXBlRm9yRWFjaC5jYWxsKHN0
YWNrLCBlYWNoID0+IHsKKyAgICAgICAgbGV0IG5hbWUgPSBlYWNoLmdldEZ1bmN0aW9uTmFtZSgp
OworICAgICAgICBpZiAobmFtZSA9PSBudWxsKSBuYW1lID0gIiI7CisgICAgICAgIGlmIChlYWNo
LmlzRXZhbCgpKSB7CisgICAgICAgICAgbmFtZSA9IG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAo
ZWFjaC5pc0NvbnN0cnVjdG9yKCkpIHsKKyAgICAgICAgICBuYW1lID0gIm5ldyAiICsgbmFtZTsK
KyAgICAgICAgfSBlbHNlIGlmIChlYWNoLmlzTmF0aXZlKCkpIHsKKyAgICAgICAgICBuYW1lID0g
Im5hdGl2ZSAiICsgbmFtZTsKKyAgICAgICAgfSBlbHNlIGlmICghZWFjaC5pc1RvcGxldmVsKCkp
IHsKKyAgICAgICAgICBuYW1lID0gZWFjaC5nZXRUeXBlTmFtZSgpICsgIi4iICsgbmFtZTsKKyAg
ICAgICAgfQorICAgICAgICBlYWNoLm5hbWUgPSBuYW1lOworICAgICAgICBtYXhfbmFtZV9sZW5n
dGggPSBNYXRoLm1heChuYW1lLmxlbmd0aCwgbWF4X25hbWVfbGVuZ3RoKQorICAgICAgfSk7CisK
KyAgICAgIC8vIEZvcm1hdCBzdGFjayBmcmFtZXMuCisgICAgICBzdGFjayA9IEFycmF5UHJvdG90
eXBlTWFwLmNhbGwoc3RhY2ssIGVhY2ggPT4geworICAgICAgICBsZXQgZnJhbWUgPSAiICAgIGF0
ICIgKyBlYWNoLm5hbWUucGFkRW5kKG1heF9uYW1lX2xlbmd0aCk7CisgICAgICAgIGxldCBmaWxl
TmFtZSA9IGVhY2guZ2V0RmlsZU5hbWUoKTsKKyAgICAgICAgaWYgKGVhY2guaXNFdmFsKCkpIHJl
dHVybiBmcmFtZSArICIgIiArIGVhY2guZ2V0RXZhbE9yaWdpbigpOworICAgICAgICBmcmFtZSAr
PSAiICIgKyAoZmlsZU5hbWUgPyBmaWxlTmFtZSA6ICIiKTsKKyAgICAgICAgbGV0IGxpbmU9IGVh
Y2guZ2V0TGluZU51bWJlcigpOworICAgICAgICBmcmFtZSArPSAiICIgKyAobGluZSA/IGxpbmUg
OiAiIik7CisgICAgICAgIGxldCBjb2x1bW4gPSBlYWNoLmdldENvbHVtbk51bWJlcigpOworICAg
ICAgICBmcmFtZSArPSAoY29sdW1uID8gIjoiICsgY29sdW1uIDogIiIpOworICAgICAgICByZXR1
cm4gZnJhbWU7CisgICAgICB9KTsKKyAgICAgIHJldHVybiAiIiArIGVycm9yLm1lc3NhZ2UgKyAi
XG4iICsgQXJyYXlQcm90b3R5cGVKb2luLmNhbGwoc3RhY2ssICJcbiIpOworICAgIH0gY2F0Y2gg
KGUpIHt9OworICAgIHJldHVybiBlcnJvci5zdGFjazsKKyAgfQorfSkoKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rl
c3RzL3N0cmVzcy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4NzUwMDE4NTc1OWM3MmU2YWNiMzJkYjI2NmM2NzVlYTM0NWU1NDEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBA
IC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRh
bC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJl
bGF0aXZlIik7CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIs
IHMpID0+ICQuZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0
ZSgpOworCitsZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBm
dW5jdGlvbiBjbGVhbnVwKCkgeyBzdG9yZWRfZ2xvYmFsID0gZ2xvYmFsVGhpczsgfSBjbGVhbnVw
OyIpOworbGV0IHJlYWxtX2dsb2JhbF90aGlzID0gUmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIp
OworCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENy
ZWF0ZSBhbiBvYmplY3QgYW5kIGEgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lz
dHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQg
d2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAg
ICAgZmcucmVnaXN0ZXIob2JqZWN0KTsKKyAgICB9Cit9KSgpOworCitnYygpOworCisvLyBBc3Nl
cnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xl
dCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFs
bS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFsOyIpOworICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2ds
b2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFzc2VydEVxdWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9n
bG9iYWxfdGhpcyk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0u
anMgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxt
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJkNGQwMjQ3ZTI3MTBkYTQ4NWM5MjU3MmFiYTljMjc2Y2RlZjM1YWQK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20t
ZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1q
c3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5j
cmVhdGVSZWFsbSwgZXZhbDogKHIsIHMpID0+ICQuZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9Owor
CitsZXQgciA9IFJlYWxtLmNyZWF0ZSgpOworCitsZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwg
InZhciBzdG9yZWRfZ2xvYmFsOyBsZXQgY2xlYW51cCA9IG5ldyBQcm94eShmdW5jdGlvbigpIHsg
c3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRoaXM7fSwge30pOyBjbGVhbnVwIik7CitsZXQgcmVhbG1f
Z2xvYmFsX3RoaXMgPSBSZWFsbS5ldmFsKHIsICJnbG9iYWxUaGlzIik7CisKK2xldCBmZyA9IG5l
dyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBh
bmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5l
ZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtp
bGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2Jq
ZWN0LCAiaG9sZGluZ3MiKTsKKyAgICB9Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhh
dCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1l
b3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFs
KHIsICJzdG9yZWRfZ2xvYmFsOyIpOworICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwg
Z2xvYmFsVGhpcyk7CisgIGFzc2VydEVxdWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxf
dGhpcyk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1
NjE2YTUwMjFhY2E3NTUxYzgxMTllYjYxZWZlOTQ3YjUxMmMzYzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzCkBAIC0w
LDAgKzEsMTUyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1
bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZp
bmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoKCkgPT4ge30pOworICBhc3NlcnRFcXVhbHMoZmcudG9TdHJpbmcoKSwgIltvYmplY3QgRmlu
YWxpemF0aW9uUmVnaXN0cnldIik7CisgIGFzc2VydE5vdFNhbWUoZmcuX19wcm90b19fLCBPYmpl
Y3QucHJvdG90eXBlKTsKKyAgYXNzZXJ0U2FtZShmZy5fX3Byb3RvX18uX19wcm90b19fLCBPYmpl
Y3QucHJvdG90eXBlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0RmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFsc2U7Cisg
IGxldCBtZXNzYWdlID0gIiI7CisgIHRyeSB7CisgICAgbGV0IGYgPSBGaW5hbGl6YXRpb25SZWdp
c3RyeSgoKSA9PiB7fSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBtZXNzYWdlID0gZS5tZXNzYWdl
OworICAgIGNhdWdodCA9IHRydWU7CisgIH0gZmluYWxseSB7CisgICAgYXNzZXJ0VHJ1ZShjYXVn
aHQpOworICB9Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxlKCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRp
b25SZWdpc3RyeTogY2xlYW51cCBtdXN0IGJlIGNhbGxhYmxlIjsKKyAgYXNzZXJ0VGhyb3dzKCgp
ID0+IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCk7IH0sIFR5cGVFcnJvciwg
bWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRp
b25SZWdpc3RyeSgxKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgp
ID0+IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KG51bGwpOyB9LCBUeXBlRXJy
b3IsIG1lc3NhZ2UpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRp
b25SZWdpc3RyeVdpdGhDYWxsYWJsZVByb3h5QXNDbGVhbnVwKCkgeworICBsZXQgaGFuZGxlciA9
IHt9OworICBsZXQgb2JqID0gKCkgPT4ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmos
IGhhbmRsZXIpOworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkocHJveHkpOwor
fSkoKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhO
b25DYWxsYWJsZVByb3h5QXNDbGVhbnVwKCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRp
b25SZWdpc3RyeTogY2xlYW51cCBtdXN0IGJlIGNhbGxhYmxlIjsKKyAgbGV0IGhhbmRsZXIgPSB7
fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVy
KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lz
dHJ5KHByb3h5KTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0UmVnaXN0ZXJXaXRoTm9uT2JqZWN0VGFyZ2V0KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25S
ZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXI6IHRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCI7Cisg
IGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcigxLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKGZhbHNlLCAiaG9s
ZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJl
Z2lzdGVyKCJmb28iLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0
VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKFN5bWJvbCgpLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKG51bGwsICJob2xk
aW5ncyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVn
aXN0ZXIodW5kZWZpbmVkLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRoUHJveHkoKSB7CisgIGxldCBoYW5kbGVyID0g
e307CisgIGxldCBvYmogPSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxl
cik7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGZn
LnJlZ2lzdGVyKHByb3h5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJUYXJnZXRB
bmRIb2xkaW5nc1NhbWVWYWx1ZSgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lz
dHJ5KCgpID0+IHt9KTsKKyAgbGV0IG9iaiA9IHthOiAxfTsKKyAgLy8gU2FtZVZhbHVlKHRhcmdl
dCwgaG9sZGluZ3MpIG5vdCBvaworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIob2Jq
LCBvYmopLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAiRmluYWxpemF0aW9uUmVnaXN0cnku
cHJvdG90eXBlLnJlZ2lzdGVyOiB0YXJnZXQgYW5kIGhvbGRpbmdzIG11c3Qgbm90IGJlIHNhbWUi
KTsKKyAgbGV0IGhvbGRpbmdzID0ge2E6IDF9OworICBmZy5yZWdpc3RlcihvYmosIGhvbGRpbmdz
KTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRob3V0RmluYWxpemF0aW9uUmVn
aXN0cnkoKSB7CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90
b3R5cGUucmVnaXN0ZXIuY2FsbCh7fSwge30sICJob2xkaW5ncyIpLCBUeXBlRXJyb3IpOworICAv
LyBEb2VzIG5vdCB0aHJvdzoKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgp
ID0+IHt9KTsKKyAgRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwo
ZmcsIHt9LCAiaG9sZGluZ3MiKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3Rlcldp
dGhOb25FeGlzdGVudEtleSgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KCgpID0+IHt9KTsKKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKHsiayI6ICJ3aGF0ZXZl
ciJ9KTsKKyAgYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVu
cmVnaXN0ZXJXaXRoTm9uRmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93cygo
KSA9PiBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUudW5yZWdpc3Rlci5jYWxsKHt9LCB7
fSksCisgICAgICAgICAgICAgICBUeXBlRXJyb3IpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RV
bnJlZ2lzdGVyV2l0aE5vbk9iamVjdFVucmVnaXN0ZXJUb2tlbigpIHsKKyAgbGV0IGZnID0gbmV3
IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZn
LnVucmVnaXN0ZXIoMSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJl
Z2lzdGVyKEJpZ0ludCgxKSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51
bnJlZ2lzdGVyKCdvbmUnKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVu
cmVnaXN0ZXIoU3ltYm9sKCkpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
dW5yZWdpc3Rlcih0cnVlKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVu
cmVnaXN0ZXIoZmFsc2UpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5y
ZWdpc3Rlcih1bmRlZmluZWQpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
dW5yZWdpc3RlcihudWxsKSwgVHlwZUVycm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vh
a1JlZkNvbnN0cnVjdG9yKCkgeworICBsZXQgd3IgPSBuZXcgV2Vha1JlZih7fSk7CisgIGFzc2Vy
dEVxdWFscyh3ci50b1N0cmluZygpLCAiW29iamVjdCBXZWFrUmVmXSIpOworICBhc3NlcnROb3RT
YW1lKHdyLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7CisKKyAgbGV0IGRlcmVmX2Rlc2Mg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdyLl9fcHJvdG9fXywgImRlcmVmIik7
CisgIGFzc2VydEVxdWFscyh0cnVlLCBkZXJlZl9kZXNjLmNvbmZpZ3VyYWJsZSk7CisgIGFzc2Vy
dEVxdWFscyhmYWxzZSwgZGVyZWZfZGVzYy5lbnVtZXJhYmxlKTsKKyAgYXNzZXJ0RXF1YWxzKCJm
dW5jdGlvbiIsIHR5cGVvZiBkZXJlZl9kZXNjLnZhbHVlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAi
V2Vha1JlZjogdGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0IjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IG5ldyBXZWFrUmVmKCksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9
PiBuZXcgV2Vha1JlZigxKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgp
ID0+IG5ldyBXZWFrUmVmKGZhbHNlKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IG5ldyBXZWFrUmVmKCJmb28iKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNz
ZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKFN5bWJvbCgpKSwgVHlwZUVycm9yLCBtZXNzYWdl
KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKG51bGwpLCBUeXBlRXJyb3IsIG1l
c3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYodW5kZWZpbmVkKSwgVHlw
ZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVj
dG9yQ2FsbEFzRnVuY3Rpb24oKSB7CisgIGxldCBjYXVnaHQgPSBmYWxzZTsKKyAgbGV0IG1lc3Nh
Z2UgPSAiIjsKKyAgdHJ5IHsKKyAgICBsZXQgZiA9IFdlYWtSZWYoe30pOworICB9IGNhdGNoIChl
KSB7CisgICAgbWVzc2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOworICB9IGZp
bmFsbHkgeworICAgIGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1bmN0aW9u
IFRlc3RXZWFrUmVmV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2Jq
ID0ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgd3Ig
PSBuZXcgV2Vha1JlZihwcm94eSk7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
djgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMgYi9KU1Rlc3RzL3N0cmVzcy92
OC1maW5hbGl6YXRpb25yZWdpc3RyeS1hbmQtd2Vha3JlZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGRhOGEw
YzlmZWZjOWQxZGUyNjk1YjIzZDUyMDE0MjhmYjI2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMKQEAgLTAs
MCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBD
b3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8g
RmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1h
cmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRp
dmUiKTsKKworbGV0IGNsZWFudXBfY2FsbGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0
aW9uKGhvbGRpbmdzKSB7CisgIGxldCBob2xkaW5nc19saXN0ID0gW107CisgIGhvbGRpbmdzX2xp
c3QucHVzaChob2xkaW5ncyk7CisgIGFzc2VydEVxdWFscygxLCBob2xkaW5nc19saXN0Lmxlbmd0
aCk7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MiLCBob2xkaW5nc19saXN0WzBdKTsKKyAgY2xl
YW51cF9jYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoY2xlYW51cCk7CitsZXQgd2Vha19yZWZzID0gW107CisoZnVuY3Rpb24oKSB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG8gPSB7fTsKKyAgICAg
ICAgd2Vha19yZWZzLnB1c2gobmV3IFdlYWtSZWYobykpOworICAgICAgICBmZy5yZWdpc3Rlcihv
LCAiaG9sZGluZ3MiKTsKKyAgICB9Cit9KSgpOworCisvLyBTaW5jZSB0aGUgV2Vha1JlZiB3YXMg
Y3JlYXRlZCBkdXJpbmcgdGhpcyB0dXJuLCBpdCBpcyBub3QgY2xlYXJlZCBieSBHQy4gVGhlCisv
LyBwb2ludGVyIGluc2lkZSB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkgaXMgbm90IGNsZWFyZWQg
ZWl0aGVyLCBzaW5jZSB0aGUgV2Vha1JlZgorLy8ga2VlcHMgdGhlIHRhcmdldCBvYmplY3QgYWxp
dmUuCitnYygpOworKGZ1bmN0aW9uKCkgeworICAgIHdlYWtfcmVmcy5mb3JFYWNoKCh3ZWFrX3Jl
ZikgPT4gYXNzZXJ0RXF1YWxzKCJvYmplY3QiLCB0eXBlb2Yod2Vha19yZWYuZGVyZWYoKSkpKTsK
K30pKCk7CisKKy8vIFRyaWdnZXIgZ2MgaW4gbmV4dCB0YXNrCitzZXRUaW1lb3V0KCgpID0+IHsK
KyAgICBnYygpOworCisgICAgLy8gQ2hlY2sgdGhhdCBjbGVhbnVwIGNhbGxiYWNrIHdhcyBjYWxs
ZWQgaW4gYSBmb2xsb3cgdXAgdGFzaworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBh
c3NlcnRUcnVlKGNsZWFudXBfY2FsbGVkKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh3ZWFrX3JlZnMu
c29tZSgod2Vha19yZWYpID0+IHdlYWtfcmVmLmRlcmVmKCkgPT09IG51bGwpKTsKKyAgICB9LCAw
KTsKK30sIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVn
aXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6
YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDJjNGJi
OGVlODRlMDEwYjc0ZDZkZWIzNWEwY2ZhY2YxNmQ0OTNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUu
anMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEi
KQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3Jl
bWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxs
ZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbGVkID0gZmFsc2U7CitsZXQgaG9sZGlu
Z3NfbGlzdCA9IFtdOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3Nl
cnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7
CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlv
blJlZ2lzdHJ5KGNsZWFudXApOworbGV0IG8xID0ge307CitsZXQgaG9sZGluZ3MgPSB7J2EnOiAn
dGhpcyBpcyB0aGUgaG9sZGluZ3Mgb2JqZWN0J307CisKKy8vIElnbml0aW9uIGhvbGRzIHJlZmVy
ZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGVzZSB3aWxsIGJlCisv
LyByZWxlYXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBleGl0cy4gU28gb25seSBhY2Nlc3MgbyBpbnNp
ZGUgYSBmdW5jdGlvbiB0bworLy8gcHJldmVudCBhbnkgcmVmZXJlbmNlcyB0byBvYmplY3RzIGlu
IHRlbXBvcmFyeSByZWdpc3RlcnMgd2hlbiBhIGdjIGlzCisvLyB0cmlnZ2VyZWQuCisoKCkgPT4g
e2ZnLnJlZ2lzdGVyKG8xLCBob2xkaW5ncyk7fSkoKQorCitnYygpOworYXNzZXJ0RmFsc2UoY2xl
YW51cF9jYWxsZWQpOworCisvLyBEcm9wIHRoZSBsYXN0IHJlZmVyZW5jZXMgdG8gbzEuCisoKCkg
PT4ge28xID0gbnVsbDt9KSgpCisKKy8vIERyb3AgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBo
b2xkaW5ncy4gVGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGtlZXBzIGl0CisvLyBhbGl2ZSwgc28g
dGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYXMgbm9ybWFsLgoraG9sZGluZ3Mg
PSBudWxsOworZ2MoKTsKK2Fzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKworbGV0IHRpbWVv
dXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVkKTsKKyAg
YXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xpc3QubGVuZ3RoLCAxKTsKKyAgYXNzZXJ0RXF1YWxzKGhv
bGRpbmdzX2xpc3RbMF0uYSwgInRoaXMgaXMgdGhlIGhvbGRpbmdzIG9iamVjdCIpOworfQorCitz
ZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92
OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGlt
ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQt
Zm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q4Yzk2Mzk3NWQyZWNm
Yjg3NzY1OTJjZGI1NWZlODUzNzI3OWMyMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBs
ZS10aW1lcy5qcwpAQCAtMCwwICsxLDg1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vh
a1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAt
LW5vaW5jcmVtZW50YWwtbWFya2luZworLy8gRmxhZ3M6IC0tbm8tc3RyZXNzLWZsdXNoLWJ5dGVj
b2RlCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZl
Iik7CisKK2xldCBjbGVhbnVwMF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMF8wX2hvbGRp
bmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMF8xX2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0
IGNsZWFudXAxX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQg
PSAwOworbGV0IGNsZWFudXAxXzFfaG9sZGluZ3NfY291bnQgPSAwOworCitsZXQgY2xlYW51cDAg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0g
MV0gPT0gIjAiKQorICAgICsrY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAg
ICsrY2xlYW51cDBfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwMF9jYWxsX2NvdW50Owor
fQorCitsZXQgY2xlYW51cDEgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3Nb
aG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0gIjAiKQorICAgICsrY2xlYW51cDFfMF9ob2xkaW5nc19j
b3VudDsKKyAgZWxzZQorICAgICsrY2xlYW51cDFfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVh
bnVwMV9jYWxsX2NvdW50OworfQorCitsZXQgZmcwID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KGNsZWFudXAwKTsKK2xldCBmZzEgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cDEp
OworCisvLyBSZWdpc3RlciAxIHdlYWsgcmVmZXJlbmNlIGZvciBlYWNoIEZpbmFsaXphdGlvblJl
Z2lzdHJ5IGFuZCBraWxsIHRoZSBvYmplY3RzIHRoZXkgcG9pbnQgdG8uCisoZnVuY3Rpb24oKSB7
CisgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgLy8gVGhlIG9iamVjdHMg
bmVlZCB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwg
dGhlbS4KKyAgICBsZXQgb2JqZWN0cyA9IFtdOworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBv
YmplY3RzWzFdID0ge307CisKKyAgICBmZzAucmVnaXN0ZXIob2JqZWN0c1swXSwgImhvbGRpbmdz
MC0wIik7CisgICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNbMV0sICJob2xkaW5nczEtMCIpOworCisg
ICAgLy8gRHJvcCB0aGUgcmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0cy4KKyAgICBvYmplY3RzID0g
W107CisgIH0KK30pKCk7CisKKy8vIFdpbGwgc2NoZWR1bGUgYm90aCBmZzAgYW5kIGZnMSBmb3Ig
Y2xlYW51cC4KK2djKCk7CisKKy8vIEJlZm9yZSB0aGUgY2xlYW51cCB0YXNrIGhhcyBhIGNoYW5j
ZSB0byBydW4sIGRvIHRoZSBzYW1lIHRoaW5nIGFnYWluLCBzbyBib3RoCisvLyBGaW5hbGl6YXRp
b25SZWdpc3RyaWVzIGFyZSAoYWdhaW4pIHNjaGVkdWxlZCBmb3IgY2xlYW51cC4gVGhpcyBoYXMg
dG8gYmUgYSBJSUZFIGZ1bmN0aW9uCisvLyAoc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0
aGUgb2JqZWN0cykgc28gd2UgY2Fubm90IHVzZSB0aGUgc2FtZSBmdW5jdGlvbgorLy8gYXMgYmVm
b3JlLgorKGZ1bmN0aW9uKCkgeworICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgewor
ICAgIGxldCBvYmplY3RzID0gW107CisgICAgb2JqZWN0c1swXSA9IHt9OworICAgIG9iamVjdHNb
MV0gPSB7fTsKKyAgICBmZzAucmVnaXN0ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0xIik7Cisg
ICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNbMV0sICJob2xkaW5nczEtMSIpOworICAgIG9iamVjdHMg
PSBbXTsKKyAgfQorfSkoKTsKKworZ2MoKTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9u
KCkgeworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDBfY2FsbF9jb3VudCk7CisgIGFzc2Vy
dE5vdEVxdWFscygwLCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1
YWxzKDAsIGNsZWFudXAwXzFfaG9sZGluZ3NfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwg
Y2xlYW51cDFfY2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hv
bGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxXzBfaG9sZGluZ3Nf
Y291bnQpOworfQorCisvLyBHaXZlIHRoZSBjbGVhbnVwIHRhc2sgYSBjaGFuY2UgdG8gcnVuLgor
c2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
djgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMgYi9KU1Rlc3RzL3N0
cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1maW5hbGl6YXRpb24tcmVnaXN0cmllcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMTA3M2EwMzFkYjA2Y2NkMzAyNmQ4ZjI0ZjEyN2ZhZGRiODk4YWM0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJl
Z2lzdHJpZXMuanMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdl
YWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2Mg
LS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5q
cyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudDEgPSAwOwor
bGV0IGNsZWFudXBfY2FsbF9jb3VudDIgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xk
aW5ncykgeworICAgIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdzMSIpCisgICAgICAgICsrY2xl
YW51cF9jYWxsX2NvdW50MTsKKyAgICBlbHNlIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdzMiIp
CisgICAgICAgICsrY2xlYW51cF9jYWxsX2NvdW50MjsKKyAgICBlbHNlCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigpOworfQorCitsZXQgZmcxID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNs
ZWFudXApOworbGV0IGZnMiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKwor
Ly8gQ3JlYXRlIHR3byBvYmplY3RzIGFuZCByZWdpc3RlciB0aGVtIGluIEZpbmFsaXphdGlvblJl
Z2lzdHJpZXMuIFRoZSBvYmplY3RzIG5lZWQKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28g
dGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsK
KyAgICAgICAgZmcxLnJlZ2lzdGVyKG9iamVjdDEsICJob2xkaW5nczEiKTsKKworICAgICAgICBs
ZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZzIucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdz
MiIpOworICAgIH0KKyAgICAvLyBvYmplY3QxIGFuZCBvYmplY3QyIGdvIG91dCBvZiBzY29wZS4K
K30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2VsbHMgYW5kIHNj
aGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3Vu
dDEpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDIpOworCisvLyBBc3NlcnQg
dGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9
IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQx
KTsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50Mik7Cit9CisKK3Nl
dFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4
LXJlZW50cmFudC1nYy1mcm9tLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJh
bnQtZ2MtZnJvbS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhOTdkYWE0ZDFkMjY1MjQ4MjIwMmQx
MWI1YjJjYmM0NWNiMjcyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1y
ZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1y
ZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3Vy
Y2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjYWxsZWQgPSBm
YWxzZTsKK2xldCByZWVudHJhbnRfZ2MgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGdjKCk7
CisgICAgY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lz
dHJ5KHJlZW50cmFudF9nYyk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwOyArK2kpCisgICAgICAgIGZnLnJlZ2lzdGVyKHt9LCA0Mik7Cit9KSgpOworCitnYygp
OworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydFRydWUoY2FsbGVkKTsKK30s
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJl
Z2lzdHJ5LWRpcnR5LWVucXVldWUuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3MtZmluYWxp
emF0aW9ucmVnaXN0cnktZGlydHktZW5xdWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTI0ZTJjZDNlYzc2
ZDVjODk1MWNkMmZhMGE1MWE4NWZkMDgwOTgxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMKQEAg
LTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisv
LyBDb3B5cmlnaHQgMjAyMCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
Ly8gRmxhZ3M6IC0tc3RyZXNzLWNvbXBhY3Rpb24gLS1leHBvc2UtZ2MKKworLy8gVGVzdCB0aGF0
IHRoZSBkaXJ0eSBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIHRoYXQgYXJlIGVucXVldWVkIGR1cmlu
ZyBHQyBoYXZlCisvLyB0aGVpciBzbG90cyBjb3JyZWN0bHkgcmVjb3JkZWQgYnkgdGhlIEdDLgor
CisvLyAxKSBDcmVhdGUgbWFueSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IG9iamVjdHMgc28gdGhh
dCB0aGV5IHNwYW4gc2V2ZXJhbCBwYWdlcworLy8gKHBhZ2Ugc2l6ZSBpcyAyNTZrYikuCitsZXQg
cmVnaXN0cmllcyA9IFtdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDI0ICogODsgaSsrKSB7Cisg
IHJlZ2lzdHJpZXMucHVzaChuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pKTsKK30K
KworLy8gMikgRm9yY2UgdHdvIEdDcyB0byBlbnN1cmUgdGhhdCBKU0ZpbmFsaXphdG9uUmVnaXN0
cnkgb2JqZWN0cyBhcmUgdGVudXJlZC4KK2djKCk7CitnYygpOworCisvLyAzKSBJbiBhIGZ1bmN0
aW9uOiBjcmVhdGUgYSBkdW1teSB0YXJnZXQgYW5kIHJlZ2lzdGVyIGl0IGluIGFsbAorLy8gSlNG
aW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVjdHMuCisoZnVuY3Rpb24oKSB7CisgIGxldCBnYXJiYWdl
ID0ge307CisgIHJlZ2lzdHJpZXMuZm9yRWFjaCgoZnIpID0+IHsKKyAgICBmci5yZWdpc3Rlcihn
YXJiYWdlLCA0Mik7CisgIH0pOworICBnYXJiYWdlID0gbnVsbDsKK30pKCk7CisKKy8vIDQpIE91
dHNpZGUgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoZSB0YXJnZXQgaXMgdW5yZWFjaGFibGU6IGZvcmNl
IEdDIHRvIGNvbGxlY3QKKy8vIHRoZSBvYmplY3QuCitnYygpOworCisvLyA1KSBGb3JjZSBhbm90
aGVyIEdDIHRvIHRlc3QgdGhhdCB0aGUgc2xvdCB3YXMgY29ycmVjdGx5IHVwZGF0ZWQuCitnYygp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzYw
Y2ZkYTc3ZjBhZmNhMWI1Y2I5ZmRkYWZlYWMwZDkwNzUwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanMKQEAgLTAsMCArMSwzOCBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAx
OSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFy
bW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9h
ZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0
IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdz
KSB7CisgICAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCB1bmRlZmluZWQpOworICAgICsrY2xlYW51
cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xl
YW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5h
bGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8vIGEgY2xv
c3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0
ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCk7CisgICAgfQorfSkoKTsKKworLy8g
VGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFu
dXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFz
c2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9m
dW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9j
b3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDcyYjBmOGIz
YmI4ZWJhNjkwYTE2MGQxNjM4ZDM5ZTQzZjQ3MmQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDcgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIw
MTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhh
cm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xv
YWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xl
dCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5n
cykgeworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzIiwgaG9sZGluZ3MpOworICArK2NsZWFudXBf
Y2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFu
dXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBv
YmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lz
dGVyKG9iamVjdCwgImhvbGRpbmdzIiwga2V5KTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdD
IHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2dj
KCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRo
YXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBm
dW5jdGlvbigpIHsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsK
KyAgICBsZXQgb2xkX2NsZWFudXBfY2FsbF9jb3VudCA9IGNsZWFudXBfY2FsbF9jb3VudDsKKwor
ICAgIC8vIFVucmVnaXN0ZXIgYW4gYWxyZWFkeSBjbGVhbmVkLXVwIHdlYWsgcmVmZXJlbmNlLgor
ICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworICAgIC8vIFNpbmNlIHdlIG1h
eSBub3QgY29sbGVjdCBldmVyeXRoaW5nIHdlIGRvbid0IGtub3cgd2hhdCBzdWNjZXNzIHdpbGwg
YmUgdW5saWtlIHY4LgorICAgIC8vIGFzc2VydEZhbHNlKHN1Y2Nlc3MpOworCisgICAgLy8gQXNz
ZXJ0IHRoYXQgaXQgZGlkbid0IGRvIGFueXRoaW5nLgorICAgIHNldFRpbWVvdXQoKCkgPT4geyBh
c3NlcnRFcXVhbHMob2xkX2NsZWFudXBfY2FsbF9jb3VudCwgY2xlYW51cF9jYWxsX2NvdW50KTsg
fSwgMCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0
cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDFlM2Vj
NmEzYWViZmM3ODc2YzdkZGFmN2Q3ZGI4YzE1M2ZlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDEg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0
IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAt
LWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nIC0t
bm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMi
LCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0
IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsK
K30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtl
eSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJl
Z2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcwor
Ly8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRo
ZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3Rlcihv
YmplY3QsICJteSBob2xkaW5ncyIsIGtleSk7CisKKyAgLy8gQ2xlYXIgdGhlIFdlYWtDZWxsIGJl
Zm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNlIHRvIGRpc2NvdmVyIGl0LgorICBsZXQgc3VjY2VzcyA9
IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBvYmpl
Y3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0
aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2Nv
dW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUgY2Fs
bGVkLCBzaW5jZSB3ZSBjYWxsZWQgdW5yZWdpc3Rlci4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5j
dGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3Nl
dFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4
LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rl
ci1jYWxsZWQtdHdpY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhlZmU4MjRiNmM3NGEwNThjYjFkMWViMzg3
MWVjZTViYWY4YmE3MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVn
aXN0ZXItY2FsbGVkLXR3aWNlLmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3Qg
YXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0t
ZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4
LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291
bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICArK2NsZWFudXBf
Y2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFu
dXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBv
YmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9OworICBm
Zy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIsIGtleSk7CisKKyAgLy8gVW5yZWdpc3RlciBi
ZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0LgorICBsZXQg
c3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKwor
ICAvLyBDYWxsIHVucmVnaXN0ZXIgYWdhaW4gKGp1c3QgdG8gYXNzZXJ0IHdlIGhhbmRsZSB0aGlz
IGdyYWNlZnVsbHkpLgorICBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRG
YWxzZShzdWNjZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9KSgpOwor
CisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7Cithc3Nl
cnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNs
ZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5jZSB0aGUgd2VhayByZWZlcmVuY2UK
Ky8vIHdhcyB1bnJlZ2lzdGVyZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7Cisg
IGFzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRp
bWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVy
LWluc2lkZS1jbGVhbnVwMi5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRl
LWNsZWFudXAyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMjEyMjg2NjNhZDJjZWQ1OTY5NWE1M2M1YjNiMGU1
ZjdjYjAwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVy
LWluc2lkZS1jbGVhbnVwMi5qcwpAQCAtMCwwICsxLDQ5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4
cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1t
anN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7Cits
ZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIC8vIFNlZSB3aGljaCB0YXJnZXQg
d2UncmUgY2xlYW5pbmcgdXAgYW5kIHVucmVnaXN0ZXIgdGhlIG90aGVyIG9uZS4KKyAgaWYgKGhv
bGRpbmdzID09IDEpIHsKKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5Mik7Cisg
ICAgYXNzZXJ0VHJ1ZShzdWNjZXNzIHx8IGNhbGxlZCk7CisgIH0gZWxzZSB7CisgICAgYXNzZXJ0
U2FtZShob2xkaW5ncywgMik7CisgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEp
OworICAgIGFzc2VydFRydWUoc3VjY2VzcyB8fCBjYWxsZWQpOworICB9CisgIGNhbGxlZCA9IHRy
dWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xl
dCBrZXkxID0geyJrIjogImZpcnN0IGtleSJ9OworbGV0IGtleTIgPSB7ImsiOiAic2Vjb25kIGtl
eSJ9OworLy8gQ3JlYXRlIHR3byBvYmplY3RzIGFuZCByZWdpc3RlciB0aGVtIGluIHRoZSBGaW5h
bGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdHMKKy8vIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xv
c3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0
MSA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxLCAxLCBrZXkxKTsKKyAgICAgICAg
bGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MiwgMiwga2V5Mik7
CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGFyZ2V0IG9iamVjdHMg
YW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RmFsc2UoY2FsbGVkKTsKKworLy8g
QXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZCBhbmQgY2xlYW5lZCB1
cCBvbmUgaG9sZGluZ3MgKGJ1dCBub3QgdGhlIG90aGVyIG9uZSkuCitsZXQgdGltZW91dF9mdW5j
ID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0VHJ1ZShjYWxsZWQpOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWluc2lkZS1jbGVhbnVwMy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5z
aWRlLWNsZWFudXAzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZmFhN2I2ZTNjNDNiZjJiMTI4NjZmMjQwY2M2
ZWFjMTg3ZDIxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWluc2lkZS1jbGVhbnVwMy5qcwpAQCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0
IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAt
LWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92
OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2Nv
dW50ID0gMDsKK2xldCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0g
ZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCAiaG9sZGluZ3Mi
KTsKKworICAvLyBUaGVyZSdzIG1vcmVzIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleSB0aGF0IHdl
IGhhdmVuJ3QKKyAgLy8gY2xlYW5lZCB1cCB5ZXQgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gdW5y
ZWdpc3RlciB0aGUKKyAgLy8gY2FsbGJhY2sgZm9yIHRoYXQgb25lLgorICBsZXQgc3VjY2VzcyA9
IGZnLnVucmVnaXN0ZXIoa2V5KTsKKworICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworCisgICsrY2xl
YW51cF9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBm
ZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKy8vIENyZWF0ZSBhbiBvYmpl
Y3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVj
dCBuZWVkcyB0byBiZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJs
eSBraWxsIHRoZW0hCitsZXQga2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworCisoZnVu
Y3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAg
bGV0IG9iamVjdCA9IHt9OworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5y
ZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIsIGtleSk7CisgICAgICAgIGZnLnJlZ2lzdGVyKG9i
amVjdDIsICJob2xkaW5ncyIsIGtleSk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxs
IGRpc2NvdmVyIGRpcnR5IFdlYWtDZWxscyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cith
c3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhl
IGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlv
bigpIHsKKyAgYXNzZXJ0RXF1YWxzKDEsIGNsZWFudXBfY2FsbF9jb3VudCk7CisgIGFzc2VydEVx
dWFscygxLCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0
X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55
LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4
MzM5OWU2NWYwZDI3NDI2MDhiMTM4NDZkNWE1ZDkxN2FiMzdlZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanMKQEAgLTAsMCArMSw1MyBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAx
OSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFy
bW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9h
ZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0
IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7
CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscygiaG9s
ZGluZ3MyIiwgaG9sZGluZ3MpOworICArK2NsZWFudXBfaG9sZGluZ3NfY291bnQ7CisgICsrY2xl
YW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnko
Y2xlYW51cCk7CitsZXQga2V5MSA9IHsiayI6ICJrZXkxIn07CitsZXQga2V5MiA9IHsiayI6ICJr
ZXkyIn07CisvLyBDcmVhdGUgdGhyZWUgb2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUg
RmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBh
IGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24o
KSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9i
amVjdDFhID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDFhLCAiaG9sZGluZ3MxYSIs
IGtleTEpOworCisgICAgICAgIGxldCBvYmplY3QxYiA9IHt9OworICAgICAgICBmZy5yZWdpc3Rl
cihvYmplY3QxYiwgImhvbGRpbmdzMWIiLCBrZXkxKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9
IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGluZ3MyIiwga2V5Mik7CisK
KyAgICAgICAgLy8gVW5yZWdpc3RlciBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNj
b3ZlciB0aGUgb2JqZWN0cy4KKyAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtl
eTEpOworICAgICAgICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworICAgIH0KK30pKCk7CisKKy8vIFRo
aXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0cy4KK2djKCk7Cithc3NlcnRFcXVh
bHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAg
ZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25seSBmb3IgdGhlIHJlZmVyZW5jZSB3aGljaAorLy8g
d2FzIG5vdCB1bnJlZ2lzdGVyZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7Cisg
IGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVh
bHMoMCwgY2xlYW51cF9ob2xkaW5nc19jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9m
dW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRv
a2VuLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgtd2Vhay11bnJlZ2lzdGVydG9rZW4uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzQxZTgwMGFhMmFjZTA5ZjZmMjk1MmU0ZTk3Y2I1Njk4MWVhMmUzZQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCkBAIC0w
LDAgKzEsMzEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8g
Q29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8v
IEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzLXdpdGgtY2xlYW51cC1zb21lIC0tZXhwb3NlLWdj
IC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQu
anMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK3ZhciBGUiA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeSAoZnVuY3Rpb24gKGhvbGRpbmdzKSB7IGdsb2JhbFRoaXMuRlJSYW4gPSB0cnVlOyB9KTsK
K3sKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2Jq
ID0ge307CisgICAgICAgIC8vIG9iaiBpcyBpdHMgb3duIHVucmVnaXN0ZXIgdG9rZW4gYW5kIGJl
Y29tZXMgdW5yZWFjaGFibGUgYWZ0ZXIgdGhpcworICAgICAgICAvLyBibG9jay4gSWYgdGhlIHVu
cmVnaXN0ZXIgdG9rZW4gaXMgaGVsZCBzdHJvbmdseSB0aGlzIHRlc3Qgd2lsbCBub3QKKyAgICAg
ICAgLy8gdGVybWluYXRlLgorICAgICAgICBGUi5yZWdpc3RlcihvYmosIDQyLCBvYmopOworICAg
IH0KK30KKworbGV0IHRyeUFnYWluQ291bnQgPSAxMDsKK2Z1bmN0aW9uIHRyeUFnYWluKCkgewor
ICAgIGdjKCk7CisgICAgaWYgKGdsb2JhbFRoaXMuRlJSYW4pCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIS0tdHJ5QWdhaW5Db3VudCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAg
c2V0VGltZW91dCh0cnlBZ2FpbiwgMCk7Cit9Cit0cnlBZ2FpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404620</attachid>
            <date>2020-07-17 17:05:44 -0700</date>
            <delta_ts>2020-07-20 11:46:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199888-20200717170543.patch</filename>
            <type>text/plain</type>
            <size>235085</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGJhMmZhZGUwNDJkODZmOWVkYzExNTZkMGQ4NjQyY2JmYzUwZTk3Li43Mzk5NzUyYjBiMzIxNjZi
YzhhNmFiNDdlMTE0ZDc4ZTI0MGI1NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25SZWdpc3RyaWVzLiBUaGVyZSBhcmUgdHdv
CisgICAgICAgIG1haW4gcGFydHMgdG8gdGhpcyBwYXRjaCwgdGhlIGZpcnN0IGlzIHJlZmFjdG9y
aW5nIFByb21pc2VUaW1lciBhCisgICAgICAgIG1vcmUgZ2VuZXJhbCBpbnRvIERlZmVycmVkV29y
a1RpbWVyLiBUaGlzIGFsbG93cyB1cyB0byBmaW5hbGx5CisgICAgICAgIGhhdmUgYSAicmVhbCIg
c2V0VGltZW91dCBvbiB0aGUganNjIGNvbW1hbmQgbGluZS4gVGhlIHNlY29uZCBwYXJ0CisgICAg
ICAgIGlzIGFkZGluZyBhbGwgdGhlIG5ldyBjbGFzc2VzIG5lZWRlZCBmb3IgRmluYWxpemF0aW9u
UmVnaXN0cmllcy4KKworICAgICAgICBUaGUgcmVmYWN0b3JpbmcgaXMgbW9zdGx5IGEgcmVuYW1l
IGJ1dCBkb2VzIHR3byBtYWluIG5ldworICAgICAgICB0aGluZ3MuIFRoZSBmaXJzdCBpcyB0aGF0
IGl0IG5vdyBub3RpZmllcyB0aGUgVk0gd2UgaGF2ZSBmaW5pc2hlZAorICAgICAgICBhIHN5bmNo
cm9udW91cyBKUyBleGVjdXRpb24sIHNvIHRoYXQgV2Vha1JlZnMgY2FuIGJlCisgICAgICAgIGNv
bGxlY3RlZC4gVGhlIHNlY29uZCBpcyB0aGF0IGl0IG5vdyBjYXRjaGVzIGFueSBleGNlcHRpb25z
IGFuZAorICAgICAgICBmb3J3YXJkcyB0aGUgdG8gYSBuZXcgbWV0aG9kIG9uIHRoZSBnbG9iYWwg
b2JqZWN0IG1ldGhvZAorICAgICAgICB0YWJsZS4gRm9yIFdlYkNvcmUsIHRoaXMgcmVwb3J0cyB0
aGUgZXhjZXB0aW9uIHRvIHRoZSBjb25zb2xlLiBGb3IKKyAgICAgICAgQVBJIHVzZXJzLCB0aGlz
IGNhbGxzIHRoZWlyIGV4Y2VwdGlvbkhhbmRsZXIgYmxvY2suIEZvciB0aGUgQ0xJLAorICAgICAg
ICBpdCBleGl0cyB3aXRoIGV4aXQgc3RhdHVzIDMgKG91ciBnZW5lcmFsIGV4Y2VwdGlvbiBleGl0
CisgICAgICAgIHN0YXR1cykuIFVuZm9ydHVuYXRlbHksIHRoZXJlJ3Mgbm90IGN1cnJlbnRseSBh
biBlcmdvbm9taWMgd2F5IHRvCisgICAgICAgIHBhc3MgdGhlIGV4cGVjdGVkIGV4Y2VwdGlvbiBm
cm9tIHRoZSBDTEkgYXJndW1lbnRzIHRvIHRoaXMgaGFuZGxlcgorICAgICAgICBzbyB0aGF0J3Mg
bm90IHN1cHBvcnRlZCBoZXJlLgorCisgICAgICAgIEluIG9yZGVyIHRvIHN1cHBvcnQgRmluYWxp
emF0aW9uUmVnaXN0cnkgdGhpcyBwYXRjaCBhZGRzIGEgIm5ldyIKKyAgICAgICAgY2xhc3MgSlNE
ZXN0cnVjdGlibGVJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCwgd2hpY2ggYWxsb3dzIHVzIHRvCisg
ICAgICAgIGhhdmUgYSBkZXN0cnVjdGlibGUgb2JqZWN0IHdpdGggaW50ZXJuYWwgZmllbGRzLiBT
aW5jZSB0aGUgb3JkZXIKKyAgICAgICAgb2YgY29sbGVjdGlvbiBkb2Vzbid0IG1hdHRlciB3ZSBj
dXJyZW50bHkgdXNlIEMrKyBIYXNoVGFibGVzIG9uCisgICAgICAgIHRoZSBGaW5hbGl6YXRpb25S
ZWdpc3RyeS4gU2luY2UgdXNlcnMgY2FuIHVucmVnaXN0ZXIgb2JqZWN0cyB3aGlsZQorICAgICAg
ICB0aGUgY2FsbGJhY2sgaXMgcGVuZGluZyB3ZSBoYXZlIGEgaGFzaCB0YWJsZSBmb3IgdGhlIGxp
dmUgZW50cmllcworICAgICAgICBhbmQgYSBzZWNvbmQgaGFzaCB0YWJsZSBmb3IgdGhlIGRlYWQg
b25lcy4gTGFzdGx5LCBiZWNhdXNlIHVzZXJzCisgICAgICAgIGFyZSBub3QgcmVxdXJlZCB0byBw
cm92aWRlIGEgdG9rZW4gZm9yIHVucmVnaXN0cmF0aW9uIHdlIGhhdmUgdHdvCisgICAgICAgIGV4
dHJhIFZlY3RvcnMgY29udGFpbmluZyB0aGUgbGl2ZS9kZWFkIG9iamVjdHMgdGhhdCBhcmUgbm90
CisgICAgICAgIHVucmVnaXN0ZXJpYmxlLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAg
ICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKGZ1bmN0aW9uRmluYWxpemF0aW9u
UmVnaXN0cnlMaXZlQ291bnQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3Ry
eURlYWRDb3VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGNoZWNrVW5jYXVnaHRFeGNl
cHRpb24pOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAoR2xvYmFsT2JqZWN0
OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKToKKyAgICAgICAgKHJ1bkpTQyk6
CisgICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9EZWZlcnJl
ZFdvcmtUaW1lci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9taXNlVGltZXIuY3BwLgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6RGVm
ZXJyZWRXb3JrVGltZXIpOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3Jr
KToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxvb3ApOgorICAgICAg
ICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVuZGluZ1dvcmspOgorICAgICAgICAoSlND
OjpEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmspOgorICAgICAgICAoSlNDOjpEZWZl
cnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmspOgorICAgICAgICAoSlND
OjpEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmspOgorICAgICAgICAoSlNDOjpE
ZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAgICogcnVudGltZS9E
ZWZlcnJlZFdvcmtUaW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvbWlzZVRpbWVyLmguCisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6RmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OmNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKiBydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGltZS9G
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNGaW5h
bGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAuCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9u
UmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cCk6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSk6CisgICAgICAg
IChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyVGFyZ2V0KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmxpdmVDb3VudCk6CisgICAgICAgIChKU0M6OkpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OmRlYWRDb3VudCk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0
aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRp
b25BdEV2ZW50TG9vcCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5SXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwSXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2V0
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6c3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6bWFwU2V0V2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpzZXRBZGRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6YXJyYXlKb2luV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QmFzZT46OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPHBhc3Nl
ZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVz
b2x2ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxl
OjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0
ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToK
KyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseS5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5
TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6aW5zdGFudGlhdGUp
OgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlND
Ojp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCk6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjAtMDctMTcgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBDbGVhbiB1cCByZXNvbHZlTG9j
YWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMDgwZWM5MWVjNmRjZWQxZWRjZTY4NGU4YzVkZTZiMTY0ZGYyM2Yy
NS4uNDNlOTMxYWY4MDI4MTU4YTgyYzRjNjZkY2Q4MDYwNjk5NTgzODY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBGaW5hbGl6YXRpb25SZWdpc3Ry
aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4
ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZh
Y3RvciB0aGluZ3MgZm9yIGNoYW5naW5nIFByb21pc2VEZWZlcnJlZFRpbWVyIHRvIERlZmVycmVk
V29ya1RpbWVyLgorCisgICAgICAgIEFsc28sIGFkZCBnbG9iYWxPYmplY3QgaG9vayBmb3IgcmVw
b3J0aW5nIHVuY2F1Z2h0IGV4Y2VwdGlvbnMgZnJvbSBKU0MncworICAgICAgICBydW5sb29wIGNh
bGxiYWNrcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjppbnN0YW50aWF0ZVN0cmVhbWluZyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjphZGRUaW1lclNldE5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlv
bik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKiB3b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisKIDIwMjAtMDctMTcgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYkdMMl0gUmVhZFBpeGVs
cyB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IGQ3NWM1OGQ0OTlhYzQ3MjU2ZWM4ZGU3ZGExMjYwMWQzYzYwYTYzMzguLjRh
YjU0N2U5ZGUwZGY4ZWE0NzE0NWYyYWZkNTlmZjU2NTNjYjM4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCkBAIC00NCw2ICs0NCw3IEBA
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xvYmFsT2JqZWN0OjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0
ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVh
dGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5n
dWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBp
bnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSUdsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5oCmluZGV4IDczOTdjNmI0YTYwYzYyYzM4ZjQwYzY4MTA3NjFjODVjOGZjM2Nj
NzQuLjgxNjdjNWNjMGJjNGFmZDk3Yzk4NTY0OTUzZGRlZDQzMGM3MzNlNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKQEAgLTU5LDYgKzU5LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyB2
b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBF
eGNlcHRpb24qKTsKKwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVy
SW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyog
bW9kdWxlTmFtZVZhbHVlLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZU9yaWdpbiYp
OwogICAgIHN0YXRpYyBJZGVudGlmaWVyIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUga2V5VmFsdWUsIEpTVmFsdWUgcmVmZXJyZXJW
YWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2Fk
ZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1
ZSwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJ
R2xvYmFsT2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9i
amVjdC5tbQppbmRleCBkNjFhYWM3ZTQ1YzUzNzIwNWE4YWNhN2UwOGVmZDY5NGNiZWRjNDIzLi5k
ZGUyYmQzMjNiYzdiNjViNGYwOTAyM2I4N2FlYTI3YjA0MjM2MzllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KQEAgLTYyLDEzICs2MiwyMCBA
QCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyUmVzb2x2ZSwgLy8gbW9k
dWxlTG9hZGVyUmVzb2x2ZQogICAgICZtb2R1bGVMb2FkZXJGZXRjaCwgLy8gbW9kdWxlTG9hZGVy
RmV0Y2gKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMsIC8vIG1v
ZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCi0gICAgbW9kdWxlTG9hZGVyRXZh
bHVhdGUsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCisgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRl
LCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rp
b25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAg
bnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVh
bWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCiB9OwogCit2b2lkIEpT
QVBJR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRS
ZWY6dG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0KV07CisgICAgW2NvbnRleHQgbm90aWZ5RXhjZXB0
aW9uOnRvUmVmKGdsb2JhbE9iamVjdC0+dm0oKSwgZXhjZXB0aW9uLT52YWx1ZSgpKV07Cit9CisK
IHN0YXRpYyBFeHBlY3RlZDxVUkwsIFN0cmluZz4gY29tcHV0ZVZhbGlkSW1wb3J0U3BlY2lmaWVy
KGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBzcGVjaWZpZXIpCiB7CiAgICAgVVJMIGFi
c29sdXRlVVJMKFVSTCgpLCBzcGVjaWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDM2YTA4MzBmYTUxZTliMjI5YTRlZjMxOGE5MGM5ZTc1MjJjMGFiZTcuLjM2NzY1
OTM3NGViMmQzY2IzMTQ2NGE1YTkxNGVlZTk4YTJhYzk5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTgzMCw2ICs4MzAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvRGF0YVZpZXcuaAogICAgIHJ1bnRp
bWUvRGF0ZUluc3RhbmNlLmgKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKKyAgICBy
dW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKICAgICBydW50aW1lL0RlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oCiAgICAgcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaAogICAgIHJ1bnRpbWUv
RGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKQEAgLTk2OCw3ICs5NjksNiBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaAog
ICAgIHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaAogICAgIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
aAotICAgIHJ1bnRpbWUvUHJvbWlzZVRpbWVyLmgKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCiAgICAgcnVudGltZS9Q
cm9wZXJ0eU5hbWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2Q3NGMyNTIy
ZWEyYmU5ZDEyNmM4OGZkYjIwOTgzN2Q5YTUyYjVmLi5hMjZhOTk3NTI1MmQwNjU0NjZiZmE2MWE1
YjVjMmVmMzBmMjRmNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTMxLDE2
ICs5MzEsMTkgQEAKIAkJNTMwRkRFNzUyMUZBQjAwNjAwMDU5RDY1IC8qIHRlc3RJbmNsdWRlcy5t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwRkRFNzMy
MUZBQUZDNjAwMDU5RDY1IC8qIHRlc3RJbmNsdWRlcy5tICovOyB9OwogCQk1MzExQkQ0QjFFQTU4
MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDQ5MUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxh
bi5oICovOyB9OwogCQk1MzEzNzRCRDFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJDMUQ1Q0U2
NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oICovOyB9OwotCQk1MzE4MDQ1QzIyRUFBQzRCMDA0QTcz
NDIgLyogQjNFeHRyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5o
ICovOyB9OwotCQk1MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi87
IH07CisgICAgICAgICAgICAgICAgNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFj
dFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLzsgfTsKKyAgICAg
ICAgICAgICAgICA1MzFFRTdCQTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAv
KiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsKIAkJNTMzM0JCREMyMTEwRjdEOTAwNzYxOEVDIC8qIERG
R1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RUM5REMyMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgKi87IH07CiAJCTUzMzNCQkREMjExMEY3RTEwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLzsgfTsK
LQkJNTMzOEUyQTcyMzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RTJB
NjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworICAgICAgICAgICAgICAg
IDUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYy
Mzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTMzOEVCQTMyM0FCMDRC
ODAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RUJBMjIzQUIwNEEzMDAzODI2NjIgLyog
RlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCAqLzsgfTsKLQkJNTM0MUZDNzIxREFDMzQzQzAwRTdF
NEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmggKi87IH07CisgICAgICAgICAgICAgICAgNTMzRDA3NDQyMkMyRDc5
NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0QwNzQzMjJDMkQ3OTcwMDRE
MkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi87IH07CisJCTUzM0Qw
NzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0NjIyQzJEOUQxMDA0
RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oICovOyB9OworICAgICAgICAgICAgICAg
IDUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMz
NDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OwogCQk1MzQ2Mzg3
MTFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODcwMUU3MENGM0QwMEYxMkFDMSAvKiBK
U1J1bkxvb3BUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODc0MUU3MERE
RUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1MzQ4NkJCNzFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBl
ZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworICAgICAgICAgICAgICAgIDUzNDYzODc1
MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8q
IERlZmVycmVkV29ya1RpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzQ4NkJCNzFDMTc5NUMzMDBGNkYzQUYgLyog
SlNUeXBlZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MzQ5MDI4NTFDNzI3NkI3
MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFy
cmF5Q1Rlc3QuY3BwICovOyB9OwogCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmggKi87IH07CiAJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nl
c3NDYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzRFMDM0RDFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5oICovOyB9OwpAQCAtMzU5Nyw2
ICszNjAwLDcgQEAKIAkJNTJFRUQ3OTMyNDkyQjg2ODAwOEY0QzkzIC8qIEZ1bmN0aW9uQWxsb3ds
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uQWxsb3dsaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyRjZDMzVCMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRjZDMzVDMUU3
MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBwYXRo
ID0ganMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2MzQwMUZBM0UzMUMwMDI2QTU0NSAvKiBT
b3VyY2VzQ29jb2EudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNvdXJjZXNDb2NvYS50eHQ7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2MzQxMUZBM0UzMUQwMDI2QTU0NSAv
KiBTb3VyY2VzLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VzLnR4dDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTY2QUQxRkEzRTc3NzAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5p
ZmllZFNvdXJjZTE0NC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNDQuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKQEAgLTM2MjIsMTcgKzM2MjYsMjIgQEAKIAkJNTMxODA0NUIyMkVB
QUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzRXh0cmFj
dFZhbHVlLmg7IHBhdGggPSBiMy9CM0V4dHJhY3RWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzE4MDQ1RDIyRUFBRjBGMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQjNFeHRyYWN0VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNFeHRy
YWN0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzFENEUxOTFGNTlD
REQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0YXBpLmNw
cDsgcGF0aCA9IEFQSS90ZXN0cy90ZXN0YXBpLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUVFN0JDMjJERTZFQzYwMDMwREE4MSAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzMjYzMUIzMjE4Nzc3QTUwMDdCODE5MSAvKiBKYXZhU2NyaXB0Q29yZS5tb2R1bGVt
YXAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSAic291cmNlY29kZS5tb2R1bGUtbWFwIjsgcGF0aCA9IEphdmFTY3JpcHRD
b3JlLm1vZHVsZW1hcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzOEUyQTYyMzk2
RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAvKiBGVExT
ZWxlY3RQcmVkaWN0YWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBG
VExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oOyBwYXRoID0gZnRsL0ZUTFNlbGVjdFByZWRpY3RhYmls
aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzM0IxNURFMURDN0Y0NjMwMDRE
NTAwQSAvKiBXYXNtT3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21P
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDMyMkMyRDc5NzAwNEQy
RkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MzNEMDc0NTIyQzJEODdGMDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDYyMkMy
RDlEMTAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmNwcDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDYzODcwMUU3MENGM0QwMEYxMkFDMSAvKiBKU1J1
bkxvb3BUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1J1bkxvb3BU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3MjFFNzBEMDE1MDBG
MTJBQzEgLyogSlNSdW5Mb29wVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNSdW5Mb29wVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb21pc2VUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb21pc2VUaW1lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBK
U1R5cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisgICAgICAgICAgICAgICAgNTM0NjM4
NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVycmVkV29ya1RpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1l
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFdvcmtU
aW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisgICAgICAgICAgICAgICAgNTM0
ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTM0ODZCQkExQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJyYXkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRB
cnJheUNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFR5cGVk
QXJyYXlDVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJheUNUZXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODMxQzcyNDJDODAwMTJCQ0I4IC8qIFR5
cGVkQXJyYXlDVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUeXBlZEFy
cmF5Q1Rlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMzQsNiArNzE0Myw4IEBACiAJCQkJMTRBMTU2MzAxMDk2
NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggKi8sCiAJCQkJQkNEMjAzNDcwRTE3
MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAogCQkJCUJDRDIwMzQ4MEUxNzEz
NUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCisJCQkJNTM0NjM4NzYxRTcxRTA2RTAw
RjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmNwcCAqLywKKwkJCQk1MzQ2Mzg3NDFFNzBEREVD
MDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLywKIAkJCQkxNjk5NDhFREU2OEQ0MDU0
QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCiAJCQkJNzM0QjY1NTQy
M0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovLAogCQkJCTBGRTA1MDBG
MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwICovLApAQCAtNzE4NCwxMSAr
NzE5NSwxNyBAQAogCQkJCTE0NzM0MUU5MURDMkNGMjUwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFz
ZS5jcHAgKi8sCiAJCQkJMTQ3MzQxQ0IxREMwMkQ3MjAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNl
LmggKi8sCiAJCQkJRTM1QTBCOUMyMjBBRDg3QTAwQUM0NDc0IC8qIEV4ZWN1dGFibGVCYXNlSW5s
aW5lcy5oICovLAotCQkJCUNFQ0ZBRDMzMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6
ZXJBZ2VudC5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ0ZBRDMz
MjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8sCiAJCQkJQ0VD
RkFEMzIyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggKi8sCiAJCQkJ
Q0UyMEJEMDQyMzdEM0FENDAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAg
Ki8sCiAJCQkJQ0UyMEJEMDMyMzdEM0FENDAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50
QmFzZS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NTIyQzJE
ODdGMDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IuaCAqLywKKwkJCQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUuY3BwICovLAorCQkJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oICovLAogCQkJCUE3QThBRjI5MTdBREI1
RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyOTE3QURCNUYzMDA1
QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0
IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAvKiBG
bG9hdDY0QXJyYXkuaCAqLywKIAkJCQlCQzI2ODBDMDBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1
bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKQEAgLTczNDUsNyArNzM2MiwxMyBAQAogCQkJCTBGN0RG
MTM5MUUyOTcxMEUwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5j
cHAgKi8sCiAJCQkJMEY3REYxM0ExRTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmggKi8sCiAJCQkJQTdCNEFDQUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpT
RXhwb3J0TWFjcm9zLmggKi8sCi0JCQkJMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxv
YXQzMkFycmF5LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzMDA3NDBD
MjJERDZGNjYwMEI5QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgKi8sCisJCQkJ
Nzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgKi8sCisJCQkJNzk4
OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovLAorCQkJCTc5ODkzNzc3
MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuaCAqLywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5
LmggKi8sCiAJCQkJMEYyQjY2QzIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5Lmgg
Ki8sCiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovLAog
CQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCkBAIC03NTQ0
LDkgKzc1NjcsNyBAQAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFt
ZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRh
YmxlLmggKi8sCi0JCQkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5j
cHAgKi8sCi0JCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oICov
LAotCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3Bw
ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBN0ZCNjBBMzEwM0Y3REMyMDAx
N0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLywKIAkJCQlBN0ZCNjA0QjEwM0Y1RUFC
MDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggKi8sCiAJCQkJQkM5NTQzN0MwRUJBNzBG
RDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmggKi8sCiAJCQkJODYxNThBQjIxNTVD
OEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oICovLApAQCAtOTI4Niw2ICs5MzA3LDcgQEAK
IAkJCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDNzEyREYxN0NEODc3QzAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERl
ZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM0NjM4NzUxRTcwRERFQzAw
RjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRB
NDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkJCNzNCQjFERUY4NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0
ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKQEAgLTk1MjYsOSArOTU0OCwxMSBAQAogCQkJ
CTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MjY3Q0Y4MjI0OTMxNkIxMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Np
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1NzFGMzNBNDUzMDBGNTlCNkMgLyogRmFz
dE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUNFQ0ZB
RDM3MjM3MkRBRDQwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ0ZBRDM3MjM3MkRBRDQwMDI5
MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UyMEJE
MDUyMzdEM0UyMzAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ0MjJD
MkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MzFFRTdCQTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVn
aXN0cnlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJh
Y2Vycy5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODU3LDcgKzk4ODEsOCBAQAogCQkJCUZFMzg0RUU2
MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUz
QzYxNDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDcyMkMyRDlE
MjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUYwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEJB
MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDE0Nyw4ICsxMDE3Miw3IEBACiAJCQkJREM2MDVCNjAxQ0UyNkVBNzAwNTkzNzE4IC8qIFBy
b2ZpbGVyVUlELmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTExMDFEQ0E5Mjk0MDAxNEY5RkUg
LyogUHJvZ3JhbUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQxRDQxREMwMkU2
RDAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MzQ2
Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRkQzRTQwRTFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uaCBpbiBIZWFk
ZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRkQzRTQwRTFCNjE4QjY2
MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkI2
MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlDIC8qIFByb3BlcnR5
TmFtZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzA1
MDJhMzRhNjY1YTg1MGNhZDZhZmY5Y2FmNWM0YzhkNzRjMjcwNS4uMmEyODdhN2ZkZGIwODA0ZjNi
NjAxMjBkY2EwYmU3NWI3NTVlNzkyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAt
Nzg2LDYgKzc4Niw4IEBAIHJ1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCiBydW50aW1lL0V4ZWN1
dGFibGVCYXNlLmNwcAogcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUv
RmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcAorcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5j
cHAKIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcApAQCAtODUwLDYg
Kzg1Miw3IEBAIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHAKIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAKIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuY3BwCitydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3Bw
CiBydW50aW1lL0pTRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcAogcnVudGlt
ZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcApAQCAtOTMyLDcgKzkzNSw3IEBAIHJ1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAKIHJ1bnRpbWUvT3B0aW9ucy5jcHAKIHJ1bnRpbWUvUHJlZGljdGlvbkZpbGVD
cmVhdGluZ0Z1enplckFnZW50LmNwcAogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKLXJ1
bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAorcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKIHJ1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcAogcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCiBy
dW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmlu
ZGV4IDE4NGJiOTQ0NDFkM2ZhNDMzNDJhZmJmOTY2NWNjMWJlNzM5ZWUwMTMuLmQ4MWFkZWZmNWY4
NDI2YTg1MzI0MmM0ZTdhMTdiNTdhNjUyMWM2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIK
ICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0Lmgi
CisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTVmlydHVh
bE1hY2hpbmVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIkpTV2Vha01hcC5oIgogI2luY2x1ZGUgIkpT
V2Vha09iamVjdFJlZi5oIgpAQCAtNjExLDYgKzYxMiw4IEBAIHZvaWQgSGVhcDo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsRmluYWxpemVycygpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqdm0oKS5tX3dlYWtPYmplY3RSZWZTcGFj
ZSk7CiAgICAgaWYgKHZtKCkubV9lcnJvckluc3RhbmNlU3BhY2UpCiAgICAgICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKnZtKCkubV9lcnJv
ckluc3RhbmNlU3BhY2UpOworICAgIGlmICh2bSgpLm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFj
ZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5Pigqdm0oKS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpOwogCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmICh2bSgpLm1fd2ViQXNzZW1ibHlDb2RlQmxv
Y2tTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMmUwZDBhMzBkZjVmNjUzMDhlN2E5ZmNl
Yjk2NDM0YTI5N2YxODMxOS4uYzliZWVkOWZhODIzNGYxYTEwNjIxZjMxMzYyMGJiY2FmNTYyOWRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb21w
aWxlclRpbWluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkNv
bmZpZ0ZpbGUuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRp
c2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAi
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgpAQCAtNTYsNyAr
NTgsNiBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
RXJyb3IuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiUHJvbWlz
ZVRpbWVyLmgiCiAjaW5jbHVkZSAiUmVsZWFzZUhlYXBBY2Nlc3NTY29wZS5oIgogI2luY2x1ZGUg
IlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKQEAgLTE1NSw2
ICsxNTYsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgewogCisjZGVmaW5l
IEVYSVRfRVhDRVBUSU9OIDMKKwogTk9fUkVUVVJOX1dJVEhfVkFMVUUgc3RhdGljIHZvaWQganNj
RXhpdChpbnQgc3RhdHVzKQogewogICAgIHdhaXRGb3JBc3luY2hyb25vdXNEaXNhc3NlbWJseSgp
OwpAQCAtMTg4LDcgKzE5MSw3IEBAIGNsYXNzIFdvcmtlcnM7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+CiBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiwgYm9vbCBpc1dvcmtlciwgY29u
c3QgRnVuYyYpOwotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiwgYm9v
bCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSwgQ29tbWFuZExpbmUmLCBi
b29sJiBzdWNjZXNzKTsKK3N0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCos
IGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUsIGNvbnN0IENvbW1h
bmRMaW5lJiwgYm9vbCYgc3VjY2Vzcyk7CiAKIGNsYXNzIE1lc3NhZ2UgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8TWVzc2FnZT4gewogcHVibGljOgpAQCAtMzAyLDcgKzMwNSwxMCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxNYXNxdWVyYWRl
cihKU0dsb2JhbE9iamVjdCosIENhbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25IYXNDdXN0b21Qcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBUeXBl
c0ZvckFsbFZhcmlhYmxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2V0VGltZW91dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SXMzMkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CkBAIC01MzgsOCArNTQ0LDEyIEBAIHByaXZhdGU6CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiZHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzIiwgZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMgLCAwKTsKIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImRy
YWluTWljcm90YXNrcyIsIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzLCAwKTsKLSAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJyZWxlYXNlV2Vha1JlZnMiLCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcywg
MCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0VGltZW91dCIsIGZ1bmN0aW9uU2V0VGlt
ZW91dCwgMik7CiAKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWxlYXNlV2Vha1JlZnMiLCBm
dW5jdGlvblJlbGVhc2VXZWFrUmVmcywgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZmlu
YWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQiLCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
TGl2ZUNvdW50LCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJmaW5hbGl6YXRpb25SZWdp
c3RyeURlYWRDb3VudCIsIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQsIDAp
OworICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRSYW5kb21TZWVkIiwgZnVu
Y3Rpb25HZXRSYW5kb21TZWVkLCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRSYW5k
b21TZWVkIiwgZnVuY3Rpb25TZXRSYW5kb21TZWVkLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJpc1JvcGUiLCBmdW5jdGlvbklzUm9wZSwgMSk7CkBAIC02MzgsNiArNjQ4LDggQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFs
T2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBz
dGF0aWMgSlNPYmplY3QqIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpT
R2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU01vZHVsZVJlY29yZCos
IEpTVmFsdWUpOworCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2
ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOwogfTsKIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QpOwogCkBA
IC02NjAsNiArNjcyLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2Jq
ZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2FkZXJDcmVh
dGVJbXBvcnRNZXRhUHJvcGVydGllcywKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFs
dWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExh
bmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8v
IGluc3RhbnRpbmF0ZVN0cmVhbWluZwpAQCAtMjE4Nyw2ICsyMjAwLDI5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFRpbWVvdXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIG1lYW5zIHdlIGNhbid0IHBhc3Mg
YW55IGludGVybmFsIGZ1bmN0aW9uIGJ1dCBJIGRvbid0IHRoaW5rIHRoYXQncyBjb21tb24gZm9y
IHRlc3RpbmcuCisgICAgYXV0byBjYWxsYmFjayA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJn
dW1lbnQgaXMgbm90IGEgSlMgZnVuY3Rpb24iX3MpOworCisgICAgLy8gRklYTUU6IFdlIGRvbid0
IGxvb2sgYXQgdGhlIHRpbWVvdXQgcGFyYW1ldGVyIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIHNj
aGVkdWxlIHdvcmsgbGF0ZXIgQVBJLgorICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5k
aW5nV29yayh2bSwgY2FsbGJhY2ssIHsgfSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNj
aGVkdWxlV29ya1Nvb24oY2FsbGJhY2ssIFtjYWxsYmFja10geworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGJhY2stPmdsb2JhbE9iamVjdCgpOworICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBqc1VuZGVmaW5l
ZCgpLCBhcmdzLCAiWW91IHNob3VsZG4ndCBzZWUgdGhpcy4uLiIpOworICAgICAgICB2bS5kZWZl
cnJlZFdvcmtUaW1lci0+Y2FuY2VsUGVuZGluZ1dvcmsoY2FsbGJhY2spOworICAgIH0pOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CkBAIC0yMTk0LDYgKzIyMzAsMzIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2
ZUNvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBmaW5hbGl6YXRpb25SZWdpc3Ry
eSA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHZtLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIWZpbmFsaXphdGlvblJlZ2lzdHJ5KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmlyc3QgYXJndW1l
bnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3MpOworCisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhmaW5hbGl6YXRpb25SZWdpc3RyeS0+Y2VsbExvY2soKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmaW5hbGl6YXRpb25SZWdpc3RyeS0+bGl2ZUNvdW50
KGxvY2tlcikpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0
aW9uUmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5h
bGl6YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lz
dHJ5Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0
cnktPmNlbGxMb2NrKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmlu
YWxpemF0aW9uUmVnaXN0cnktPmRlYWRDb3VudChsb2NrZXIpKSk7Cit9CisKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0yNjE3LDEwICsyNjc5LDEw
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAogICAgIC8vIFdlIGNhbid0IHVz
ZSBkZXN0cnVjdG9ycyBpbiB0aGUgZm9sbG93aW5nIGNvZGUgYmVjYXVzZSBpdCB1c2VzIFdpbmRv
d3MKICAgICAvLyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbiBIYW5kbGluZwotICAgIGludCByZXMgPSAw
OworICAgIGludCByZXMgPSBFWElUX1NVQ0NFU1M7CiAgICAgVFJZCiAgICAgICAgIHJlcyA9IGpz
Y21haW4oYXJnYywgYXJndik7Ci0gICAgRVhDRVBUKHJlcyA9IDMpCisgICAgRVhDRVBUKHJlcyA9
IEVYSVRfRVhDRVBUSU9OKQogICAgIGZpbmFsaXplU3RhdHNBdEVuZE9mVGVzdGluZygpOwogICAg
IGlmIChnZXRlbnYoIkpTX1NIRUxMX1dBSVRfRk9SX0lOUFVUX1RPX0VYSVQiKSkgewogICAgICAg
ICBXVEY6OmZhc3REaXNhYmxlU2NhdmVuZ2VyKCk7CkBAIC0yNjkxLDcgKzI3NTMsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGV4Y2VwdGlvbikKICN1bmRlZiBDSEVDS19FWENFUFRJT04KIH0KIAotc3RhdGljIGJvb2wgY2hl
Y2tVbmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGV4Y2VwdGlvbiwgQ29tbWFuZExpbmUmIG9wdGlvbnMpCitzdGF0aWMgYm9vbCBjaGVj
a1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgZXhjZXB0aW9uLCBjb25zdCBDb21tYW5kTGluZSYgb3B0aW9ucykKIHsKICAgICBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkRXhjZXB0aW9uTmFtZSA9IG9wdGlvbnMubV91bmNhdWdodEV4Y2Vw
dGlvbk5hbWU7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwpAQCAt
MjcyMyw3ICsyNzg1LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbihWTSYg
dm0sIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGUKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlIHZhbHVl
LCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCYgc3VjY2VzcykKK3N0YXRpYyB2b2lkIGNoZWNr
RXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJv
b2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBDb21tYW5kTGluZSYgb3B0aW9u
cywgYm9vbCYgc3VjY2VzcykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAK
QEAgLTI3NDIsNiArMjgwNCwxNSBAQCBzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhcwogICAgICAgICBz
dWNjZXNzID0gc3VjY2VzcyAmJiBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIChoYXNFeGNlcHRpb24pID8gdmFsdWUgOiBKU1ZhbHVlKCksIG9wdGlvbnMpOwogfQogCit2
b2lkIEdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBh
dXRvKiBnbG9iYWwgPSBqc0Nhc3Q8R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICBk
dW1wRXhjZXB0aW9uKGdsb2JhbCwgZXhjZXB0aW9uLT52YWx1ZSgpKTsKKyAgICBib29sIGhpZGVO
b1JldHVybiA9IHRydWU7CisgICAgaWYgKGhpZGVOb1JldHVybikKKyAgICAgICAganNjRXhpdChF
WElUX0VYQ0VQVElPTik7Cit9CisKIHN0YXRpYyB2b2lkIHJ1bldpdGhPcHRpb25zKEdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCYgc3VjY2VzcykK
IHsKICAgICBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cyA9IG9wdGlvbnMubV9zY3JpcHRzOwpAQCAt
MzE3Niw3ICszMjQ3LDcgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYgb3B0aW9ucywg
Ym9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAgZnVuYyh2bSwgZ2xvYmFs
T2JqZWN0LCBzdWNjZXNzKTsKICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAgfQot
ICAgIHZtLnByb21pc2VUaW1lci0+cnVuUnVuTG9vcCgpOworICAgIHZtLmRlZmVycmVkV29ya1Rp
bWVyLT5ydW5SdW5Mb29wKCk7CiAgICAgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKICAgICAgICAgaWYgKG9wdGlvbnMubV9pbnRlcmFjdGl2ZSAmJiBzdWNjZXNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXgg
MTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZiYS4uNzAxZDY3NDdiZGJhZGRj
ODgyZTBmZmM0MTRjMWE1NzA4MWY5MDUzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgbWFj
cm8oU3RyaW5nKSBcCiAgICAgbWFjcm8oU3ltYm9sKSBcCiAgICAgbWFjcm8oV2Vha1JlZikgXAor
ICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oX19kZWZpbmVHZXR0
ZXJfXykgXAogICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18pIFwKICAgICBtYWNybyhfX2xvb2t1
cEdldHRlcl9fKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZl
cnJlZFdvcmtUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkzZDMxNjRlMDg5ZDE2M2UzMjYzMzBlODEx
OGQ4MmMwN2JmZDhjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisKKyNpbmNsdWRlICJKU1Byb21p
c2UuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIERlZmVy
cmVkV29ya1RpbWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworfQorCitEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIoVk0mIHZtKQorICAg
IDogQmFzZSh2bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3JrKFZNJiB2
bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Cisg
ICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIoKTsKKyAgICBpZiAoIW1fcnVu
VGFza3MpIHsKKyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBb
dGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGRhdGFMb2dMbklm
KERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uOiAiLCBS
YXdQb2ludGVyKHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2Fu
Y2VsZWQgdGhlc2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmNvbnRh
aW5zKHRpY2tldCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8g
c2NoZWR1bGUgd29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVl
OworICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisKKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBjYW4gcmVsZWFzZSBhbnkgd2Vh
a3JlZnMgaGVyZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3luY2hyb25vdXNKU0V4ZWN1dGlv
bigpOworCisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9i
amVjdCA9IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgc2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoZ2xvYmFs
T2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2bS5kcmFp
bk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uRm9ySW5zcGVj
dGlvbigpKTsKKworICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgICAgICAgICBt
X2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5B
bGxUaWNrZXRzRmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworCisg
ICAgbV90YXNrTG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cnVu
UnVuTG9vcCgpCit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJ
c0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZt
X2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5B
bGxUaWNrZXRzRmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5zaXplKCkp
CisgICAgICAgIFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERlZmVycmVkV29ya1RpbWVyOjph
ZGRQZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxs
Pj4mJiBkZXBlbmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdBUElMb2NrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkgIT0gdGlj
a2V0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5hZGQodGlja2V0LCBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewor
ICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAi
QWRkaW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAg
ICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6
dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJhd1BvaW50
ZXIodGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9y
KGRlcGVuZGVuY2llcyk7CisgICAgfQorfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNQ
ZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3Vy
cmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0dXJuIG1fcGVuZGluZ1RpY2tl
dHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVw
ZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQor
eworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2so
KSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSk7CisKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRpY2tldCk7CisgICAgcmV0dXJu
IHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1l
cjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQodGlja2V0
LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0
ID0gbV9wZW5kaW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKworICAgIGlmIChyZXN1bHQpCisg
ICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJD
YW5jZWxpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbihUaWNr
ZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tM
b2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3Zl
KHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdU
YXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRX
b3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1Rp
bWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWZjZjZjOWNiMzM0NjJjMTJkYTI2NTAwN2VmMWNkOTU2ZjJhOTE4
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVy
cmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNSdW5Mb29w
VGltZXIuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1Byb21pc2U7Citj
bGFzcyBWTTsKK2NsYXNzIEpTQ2VsbDsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVmZXJy
ZWRXb3JrVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGltZXIgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKKworICAgIHZvaWQgZG9Xb3JrKFZNJikgZmlu
YWw7CisKKyAgICB1c2luZyBUaWNrZXQgPSBKU09iamVjdCo7CisgICAgdm9pZCBhZGRQZW5kaW5n
V29yayhWTSYsIFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcyk7
CisgICAgYm9vbCBoYXNQZW5kaW5nV29yayhUaWNrZXQpOworICAgIGJvb2wgaGFzRGVwZW5kYW5j
eUluUGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpOworICAgIGJvb2wgY2Fu
Y2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKKworICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2b2lk
KCk+OworICAgIHZvaWQgc2NoZWR1bGVXb3JrU29vbihUaWNrZXQsIFRhc2smJik7CisKKyAgICB2
b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBmYWxzZTsgfQorCisgICAgdm9p
ZCBydW5SdW5Mb29wKCk7CisKKyAgICBzdGF0aWMgUmVmPERlZmVycmVkV29ya1RpbWVyPiBjcmVh
dGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJyZWRX
b3JrVGltZXIodm0pKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGVmZXJyZWRXb3JrVGltZXIo
Vk0mKTsKKworICAgIExvY2sgbV90YXNrTG9jazsKKyAgICBib29sIG1fcnVuVGFza3MgeyB0cnVl
IH07CisgICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2ggeyBm
YWxzZSB9OworICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07CisgICAg
RGVxdWU8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tzOworICAgIEhhc2hNYXA8VGlj
a2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdUaWNrZXRzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2Yzk2ZWI4NGMwMzQ0ZTQ3OWQwNDFhZTY2YjQ5Mzk2Mjk2OThkN2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJG
aW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSXRl
cmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpIH07CisKK3ZvaWQgRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBGaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhv
dXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworCitGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeSwgY29uc3RydWN0Rmlu
YWxpemF0aW9uUmVnaXN0cnkpCit7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpKTsKK30KKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RmluYWxpemF0aW9u
UmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZpbmFsaXphdGlvblJlZ2lzdHJ5
IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBh
c09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIGZpbmFsaXph
dGlvblJlZ2lzdHJ5U3RydWN0dXJlID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpID09IG5ld1Rhcmdl
dAorICAgICAgICA/IGdsb2JhbE9iamVjdC0+ZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1cmUo
KQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGds
b2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxtKHZtLCBuZXdUYXJnZXQpLT5m
aW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUodm0sIGZpbmFs
aXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmdldE9iamVjdCgpKSkpOworfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjZTRjNTYzZjgyY2NlODRlN2E5ZjE4ZjZjNWYzMzAwYWU0MjQ4NmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGU7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisKKyAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUsIEdldHRlclNldHRlciopCisg
ICAgeworICAgICAgICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3RvdHlw
ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Io
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUqKTsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSk7
CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2YyMDNm
NzNmYTk3YTAwNmZhNDVjNmM0YmFjM2NhODY3NDUxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5j
cHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSkgfTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
RmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0
aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3Zv
aWQgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIC8vIFdlIGNh
bid0IG1ha2UgdGhpcyBhIHByb3BlcnR5IG5hbWUgYmVjYXVzZSBpdCdzIGEgcmVzZXZlcmVkIHdv
cmQgaW4gQysrLi4uCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFsaXph
dGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5yZWdpc3RlciIpLCBwcm90b0Z1
bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVucmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJp
bmcodm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCitBTFdBWVNfSU5MSU5FIHN0
YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKFVOTElLRUxZ
KCF2YWx1ZS5pc09iamVjdCgpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIG5vbi1v
YmplY3QiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvKiBn
cm91cCA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHZtLCBhc09iamVj
dCh2YWx1ZSkpOworICAgIGlmIChMSUtFTFkoZ3JvdXApKQorICAgICAgICByZXR1cm4gZ3JvdXA7
CisKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIEZpbmFs
aXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFsaXphdGlvblJlZ2lzdHJ5IG9i
amVjdCJfcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSh2bSwg
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOworICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciByZXF1aXJlcyBh
biBvYmplY3QgYXMgdGhlIHRhcmdldCJfcyk7CisKKyAgICBKU1ZhbHVlIGhvbGRpbmdzID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoc2FtZVZhbHVlKGdsb2JhbE9iamVjdCwgdGFy
Z2V0LCBob2xkaW5ncykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJyZWdpc3RlciBleHBlY3RzIHRoZSB0YXJnZXQgb2JqZWN0IGFuZCB0aGUg
aG9sZGluZ3MgcGFyYW1ldGVyIGFyZSBub3QgdGhlIHNhbWUuIE90aGVyd2lzZSwgdGhlIHRhcmdl
dCBjYW4gbmV2ZXIgYmUgY29sbGVjdGVkIl9zKTsKKworICAgIEpTVmFsdWUgdW5yZWdpc3RlclRv
a2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAgICBpZiAoIXVucmVnaXN0ZXJUb2tlbi5p
c1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJlcXVp
cmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworCisgICAgZ3Jv
dXAtPnJlZ2lzdGVyVGFyZ2V0KHZtLCB0YXJnZXQuZ2V0T2JqZWN0KCksIGhvbGRpbmdzLCB1bnJl
Z2lzdGVyVG9rZW4pOworICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVVu
cmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGdyb3VwID0gZ2V0RmluYWxp
emF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChhdXRvKiB0
b2tlbiA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBncm91cC0+dW5yZWdpc3Rlcih2bSwgdG9rZW4p
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
dW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVucmVnaXN0cmF0aW9uIHRva2Vu
Il9zKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDRk
ZjhkZDI4YjM4YjM4ZDcwNzFjMjYyNzAyZjJmNDgxYzlmOGFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZT4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKKyAgICB7IH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVj
dCopOworfTsKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllcklubGluZXMuaAppbmRleCAxOGU4OGQ3YzBjZTRlZTIxMjlhMzdkODIwMjY4YWNmNjM2
MGY1MmFlLi4xYzVmZGY1MGJkMDU4OWI3NmNhZGE0OGY3ZmY1OTAzZDcxMjU4OTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoVk0mIHZtLCBjb25z
dCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0
b21TdHJpbmdUYWJsZSh2bSk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5pc1N5
bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmluZ1RhYmxlKHN0cmluZy5pbXBs
KCkpLCAiVGhlIGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcuaW1w
bCgpLT5pc1N5bWJvbCgpIHx8IEF0b21TdHJpbmdJbXBsOjppc0luQXRvbVN0cmluZ1RhYmxlKHN0
cmluZy5pbXBsKCkpLCAiVGhlIGF0Jm9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhy
ZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRl
eCAzMjdhY2VlOWM5MjcwZTQ5MjVhYmQ2NjYzZmNhNWY0NTJhYzY5YjA4Li4xMGM2ZmZkNGQ2Yzdl
MjM3YzE3MWRmZDNhNDdiYWFhZmJhY2Y1MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTI3LDcgKzI3LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKIAot
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDE1MTBhNGZhYjU4
OTU4MDFkYzg3ZmE2NzM2NjQ3OGYyOGNiYTY5YzkuLmU4ZjQ4YzNlYzBkMzg1NDkyYmEzNWUwZWVm
MTRmMjgxNjY5MDRlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIK
ICNpbmNsdWRlIDx1bmljb2RlL3VyZWxkYXRlZm10Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzllMTIwYmQ4MDdhNTU5YzUyMDY4OGQ4MmM5NDAwNGNm
ZjQzNmNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkRlZmVycmVk
V29ya1RpbWVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6c19pbmZvID0geyAiRmluYWxpemF0aW9u
UmVnaXN0cnkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpIH07CisKK1N0cnVjdHVyZSogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eT4odm0uaGVhcCkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGluc3Rh
bmNlOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoY2FsbGJhY2stPmlzQ2FsbGFibGUodm0pKTsKKyAgICBhdXRvIHZhbHVl
cyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGlu
ZGV4KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlc1tpbmRleF0pOworICAgIGludGVybmFs
RmllbGQoRmllbGQ6OkNhbGxiYWNrKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsK
K30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeSo+KGNlbGwpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlz
T2JqZWN0LT5jZWxsTG9jaygpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2Jq
ZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0
aW9uIDogaXRlci52YWx1ZSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlv
bi5ob2xkaW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogdGhpc09i
amVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQocmVn
aXN0cmF0aW9uLmhvbGRpbmdzKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2Jq
ZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9sZGluZ3Mg
OiBpdGVyLnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworICAg
IH0KKyAgICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0
aW9uRGVhZCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworCisgICAgc2l6ZV90
IHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzID0gdGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9u
cy5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJh
dGlvbnMpOjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyAr
PSB0aGlzT2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVj
bHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFpclR5cGUp
OworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lz
dHJhdGlvbkxpdmUuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25v
VW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5C
eXRlcyArPSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkLmNhcGFjaXR5KCkgKiBz
aXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS50YWtlTGFz
dCgpKSk7CisgICAgdmlzaXRvci52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRv
dGFsQnVmZmVyU2l6ZXNJbkJ5dGVzKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpkZXN0cm95KEpTQ2VsbCogdGFibGUpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNGaW5hbGl6YXRp
b25SZWdpc3RyeSo+KHRhYmxlKS0+fkpTRmluYWxpemF0aW9uUmVnaXN0cnkoKTsKK30KKwordm9p
ZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0p
Cit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKworICAgIGF1dG8g
cmVtb3ZlRnJvbVZlY3RvciA9IFtdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBwb3NpdGlvbikgewor
ICAgICAgICBzdGQ6OnN3YXAodmVjdG9yW3Bvc2l0aW9uXSwgdmVjdG9yLmxhc3QoKSk7CisgICAg
ICAgIHJldHVybiB2ZWN0b3IudGFrZUxhc3QoKTsKKyAgICB9OworCisgICAgYm9vbCByZWFkaWVk
Q2VsbCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vVW5yZWdpc3Ry
YXRpb25MaXZlLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCghbV9ub1VucmVnaXN0cmF0
aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKG1f
bm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAg
ICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0udGFyZ2V0
KSkgeworICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5hcHBlbmQocmVtb3ZlRnJv
bVZlY3RvcihtX25vVW5yZWdpc3RyYXRpb25MaXZlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAg
ICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xpdmVSZWdp
c3RyYXRpb25zLnJlbW92ZUlmKFsmXSAoYXV0byYgYnVja2V0KSAtPiBib29sIHsKKyAgICAgICAg
QVNTRVJUKGJ1Y2tldC52YWx1ZS5zaXplKCkpOworCisgICAgICAgIGJvb2wga2V5SXNEZWFkID0g
IXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LmtleSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBidWNrZXQudmFsdWUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
YnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJr
ZWQoYnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAg
ICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLnRhcmdldCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAgICAgICBtX25vVW5yZWdp
c3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9s
ZGluZ3MpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGRlYWRMaXN0ID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5hZGQoYnVja2V0LmtleSwgRGVhZFJlZ2lz
dHJhdGlvbnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlYWRMaXN0Lml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVhZGllZENlbGwgPSB0cnVlOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgbV9ub1VucmVn
aXN0cmF0aW9uTGl2ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAhYnVja2V0LnZhbHVlLnNpemUoKTsKKyAgICB9
KTsKKworICAgIGlmICghdm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMp
ICYmIChyZWFkaWVkQ2VsbCB8fCBkZWFkQ291bnQoTm9Mb2NraW5nTmVjZXNzYXJ5KSkpIHsKKyAg
ICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCB0aGlzLCB7IH0p
OworICAgICAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRo
aXMpKTsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24odGhp
cywgW3RoaXNdIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0
aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICAgICAgICAgIHRoaXMtPnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29y
ayh0aGlzKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVn
aXN0cnk6OnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgd2hpbGUgKEpTVmFsdWUgdmFsdWUgPSB0
YWtlRGVhZEhvbGRpbmdzVmFsdWUoKSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOworICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsYmFjaygpLCBhcmdzLCAiVGhpcyBzaG91bGQgbm90IGJlIHZpc2libGU6IHBsZWFz
ZSByZXBvcnQgYSBidWcgdG8gYnVncy53ZWJraXQub3JnIik7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTRmluYWxpemF0
aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpCit7CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAobV9u
b1VucmVnaXN0cmF0aW9uRGVhZC5zaXplKCkpCisgICAgICAgIHJlc3VsdCA9IG1fbm9VbnJlZ2lz
dHJhdGlvbkRlYWQudGFrZUxhc3QoKS5nZXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5iZWdpbigpOworICAgICAgICBpZiAoaXRlciA9PSBt
X2RlYWRSZWdpc3RyYXRpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KyAgICAgICAgQVNTRVJUKGl0ZXItPnZhbHVlLnNpemUoKSk7CisgICAgICAgIHJlc3VsdCA9IGl0
ZXItPnZhbHVlLnRha2VMYXN0KCkuZ2V0KCk7CisgICAgICAgIGlmICghaXRlci0+dmFsdWUuc2l6
ZSgpKQorICAgICAgICAgICAgbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcik7CisgICAg
fQorCisgICAgaWYgY29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXRlci52YWx1ZS5zaXplKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQoVk0mIHZt
LCBKU09iamVjdCogdGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKQorewor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgUmVnaXN0cmF0aW9u
IHJlZ2lzdHJhdGlvbjsKKyAgICByZWdpc3RyYXRpb24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHJl
Z2lzdHJhdGlvbi5ob2xkaW5ncy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGhvbGRpbmdzKTsKKyAg
ICBpZiAodG9rZW4uaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2
ZS5hcHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtX2xpdmVSZWdpc3RyYXRpb25zLmFkZChqc1NlY3VyZUNhc3Q8SlNPYmplY3Qq
Pih2bSwgdG9rZW4pLCBMaXZlUmVnaXN0cmF0aW9ucygpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICB9CisgICAgdm0u
aGVhcC53cml0ZUJhcnJpZXIodGhpcyk7Cit9CisKK2Jvb2wgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eTo6dW5yZWdpc3RlcihWTSYsIEpTT2JqZWN0KiB0b2tlbikKK3sKKyAgICAvLyBXZSBkb24ndCBu
ZWVkIHRvIHdyaXRlIGJhcnJpZXIgb3Vyc2VsdmVzIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIG9ubHkg
cG9pbnQgdG8gbGVzcyB0aGluZ3MgYWZ0ZXIgdGhpcyBmaW5pc2hlcy4KKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9saXZlUmVnaXN0
cmF0aW9ucy5yZW1vdmUodG9rZW4pOworICAgIHJlc3VsdCB8PSBtX2RlYWRSZWdpc3RyYXRpb25z
LnJlbW92ZSh0b2tlbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7
CisgICAgc2l6ZV90IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXplKCk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBpdGVyIDogbV9saXZlUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291
bnQgKz0gaXRlci52YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3NpemVf
dCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExv
Y2s+JikKK3sKKyAgICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUo
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAg
ICAgICBjb3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsKK30K
KworU3RyaW5nIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6
OkpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9zOwor
fQorCit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MDUxYmZhMGE4YzY3NjM4ZjAzMTE3
NGM0M2IwNjViNDEyNmEyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEpTRGVz
dHJ1Y3RpYmxlSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0Rlc3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsPDE+OworCisgICAg
ZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQ4X3QgeyAKKyAgICAgICAgQ2FsbGJhY2ssCisgICAgfTsK
KworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGlu
ZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwg
aW5saW5lQ2FwYWNpdHkgPT0gMFUpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTRmluYWxpemF0
aW9uUmVnaXN0cnkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmZpbmFsaXphdGlvblJlZ2lzdHJ5U3Bh
Y2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1i
ZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB7IHsKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICB9IH07CisgICAgfQorCisgICAg
Y29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBj
b25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
aWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxk
IGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90
PihmaWVsZCkpOyB9CisKKyAgICBKU09iamVjdCogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBq
c0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpDYWxsYmFjaykuZ2V0KCkpOyB9
CisKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKiwgSlNPYmplY3QqIGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdp
c3RyeSogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgcnVuRmluYWxpemF0aW9uQ2xlYW51cChKU0dsb2Jh
bE9iamVjdCopOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KworICAgIEpTVmFsdWUgdGFrZURlYWRIb2xkaW5nc1ZhbHVlKCk7CisKKyAgICBib29sIHVucmVn
aXN0ZXIoVk0mLCBKU09iamVjdCogdG9rZW4pOworICAgIC8vIHRva2VuIHNob3VsZCBiZSBhIEpT
T2JqZWN0IG9yIHVuZGVmaW5lZC4KKyAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0KFZNJiwgSlNPYmpl
Y3QqIHRhcmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbik7CisKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzaXplX3QgbGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpT
Q2VsbExvY2s+Jik7CisKK3ByaXZhdGU6CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
KyAgICB7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTT2JqZWN0KiBjYWxsYmFjayk7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
TmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdHJ1Y3QgUmVn
aXN0cmF0aW9uIHsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldDsKKyAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+IGhvbGRpbmdzOworICAgIH07CisKKyAgICB1c2luZyBMaXZlUmVnaXN0cmF0
aW9ucyA9IFZlY3RvcjxSZWdpc3RyYXRpb24+OworICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIHRh
cmdldCBhbnltb3JlIHNpbmNlIHdlIGtub3cgaXQncyBkZWFkLgorICAgIHVzaW5nIERlYWRSZWdp
c3RyYXRpb25zID0gVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj47CisKKyAgICAvLyBOb3Rl
IHRoYXQgd2UgZG9uJ3QgYm90aGVyIHB1dHRpbmcgYSB3cml0ZSBiYXJyaWVyIG9uIHRoZSBrZXkg
b3IgdGFyZ2V0IGJlY2F1c2UgdGhleSBhcmUgd2Vha2x5IHJlZmVyZW5jZWQuCisgICAgSGFzaE1h
cDxKU09iamVjdCosIExpdmVSZWdpc3RyYXRpb25zPiBtX2xpdmVSZWdpc3RyYXRpb25zOworICAg
IEhhc2hNYXA8SlNPYmplY3QqLCBEZWFkUmVnaXN0cmF0aW9ucz4gbV9kZWFkUmVnaXN0cmF0aW9u
czsKKyAgICBMaXZlUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25MaXZlOworICAgIERl
YWRSZWdpc3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIzNzAw
Ni4uNmQ3MGVmY2U1NjJlMTZjZWVkZjk5MThjZWY5MjIxNDQzNWZmMWM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjEsNiAr
NjEsOCBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9yQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuaCIKQEAgLTk5LDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgog
I2luY2x1ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0RvbGxhclZNLmgi
CisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKQEAgLTM4Nyw2ICszOTAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxs
cHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxw
dHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVj
dGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAg
ICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3Ry
ZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAgLTIxOTksNiAr
MjIwMywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhSZWY8TWljcm90
YXNrPiYmIHRhc2spCiAgICAgdm0oKS5xdWV1ZU1pY3JvdGFzaygqdGhpcywgV1RGTW92ZSh0YXNr
KSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBk
YXRhTG9nTG4oIlVuY2F1Z2h0IEV4Y2VwdGlvbiBhdCBydW4gbG9vcDogIiwgZXhjZXB0aW9uLT52
YWx1ZSgpKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0RGVidWdnZXIoRGVidWdnZXIq
IGRlYnVnZ2VyKQogewogICAgIG1fZGVidWdnZXIgPSBkZWJ1Z2dlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRkYzMwYjgyZTU1ODM4
N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjQ3NGZkZTY0ZmY2Y2FlMjgzZTk5ZTQ2ZWVjODA1
MDgxYmMwZjliYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtMTM4LDYgKzEzOCw4IEBAIGNvbnN0ZXhwciBib29sIHR5cGVFeHBvc2Vk
QnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBtYWNybyhKU1Byb21pc2UsIHByb21pc2UsIHByb21pc2Us
IEpTUHJvbWlzZSwgUHJvbWlzZSwgb2JqZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCkgXAogICAg
IG1hY3JvKEJpZ0ludCwgYmlnSW50LCBiaWdJbnRPYmplY3QsIEJpZ0ludE9iamVjdCwgQmlnSW50
LCBvYmplY3QsIE9wdGlvbnM6OnVzZUJpZ0ludCgpKSBcCiAgICAgbWFjcm8oV2Vha09iamVjdFJl
Ziwgd2Vha09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgSlNXZWFrT2JqZWN0UmVmLCBXZWFrUmVm
LCBvYmplY3QsIE9wdGlvbnM6OnVzZVdlYWtSZWZzKCkpIFwKKyAgICBtYWNybyhGaW5hbGl6YXRp
b25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJlZ2lzdHJ5LCBK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LCBGaW5hbGl6YXRpb25SZWdpc3RyeSwgb2JqZWN0LCBPcHRp
b25zOjp1c2VXZWFrUmVmcygpKSBcCisKIAogI2RlZmluZSBGT1JfRUFDSF9CVUlMVElOX0RFUklW
RURfSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIG1hY3JvKFN0cmluZ0l0ZXJhdG9yLCBzdHJp
bmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIEpTU3RyaW5nSXRlcmF0b3IsIFN0cmluZ0l0ZXJh
dG9yLCBpdGVyYXRvciwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKQEAgLTIyNyw2ICsyMjksOSBA
QCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgdm9pZCAoKlBy
b21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZSosIEpT
UHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CiAgICAgUHJvbWlzZVJlamVjdGlvblRyYWNrZXJQ
dHIgcHJvbWlzZVJlamVjdGlvblRyYWNrZXI7CiAKKyAgICB0eXBlZGVmIHZvaWQgKCpSZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyKShKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlv
biopOworICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIgcmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKKwogICAgIHR5cGVkZWYgU3RyaW5nICgqRGVmYXVs
dExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAgRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIg
ZGVmYXVsdExhbmd1YWdlOwogCkBAIC00NTMsMjEgKzQ1OCw2IEBAIHB1YmxpYzoKICAgICBXZWFr
UmFuZG9tIG1fd2Vha1JhbmRvbTsKICAgICBSZWdFeHBHbG9iYWxEYXRhIG1fcmVnRXhwR2xvYmFs
RGF0YTsKIAotICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBjb25zdCB7
IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQotCi0gICAgSW5saW5l
V2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0
dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdh
dGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9p
bnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQm
IHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zdHJpbmdJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQm
IG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnRTZXQ7IH0K
LSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlT
cGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNl
dDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9pbnRTZXQoKSB7
IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50
U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQotICAgIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1cm4gbV9udW1iZXJUb1N0
cmluZ1dhdGNocG9pbnRTZXQ7Ci0gICAgfQogICAgIC8vIElmIHRoaXMgaGFzbid0IGJlZW4gaW52
YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2NvbAogICAgIC8vIGlz
IG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5lV2F0Y2hwb2ludFNl
dCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7CkBAIC00OTQsNiArNDg0LDIz
IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90eXBlVG9TdHJp
bmdXYXRjaHBvaW50OwogCitwdWJsaWM6CisgICAgSlNDYWxsZWUqIHN0YWNrT3ZlcmZsb3dGcmFt
ZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlLmdldCgp
OyB9CisKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0
OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9Cisg
ICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQo
KSB7IHJldHVybiBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9CisgICAgSW5s
aW5lV2F0Y2hwb2ludFNldCYgc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7
IHJldHVybiBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9CisgICAgSW5s
aW5lV2F0Y2hwb2ludFNldCYgbWFwU2V0V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwU2V0
V2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEFkZFdhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX3NldEFkZFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBhcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheVNw
ZWNpZXNXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlKb2lu
V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldDsgfQorICAg
IElubGluZVdhdGNocG9pbnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCgpCisgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7CisgICAgICAgIHJl
dHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsKKyAgICB9CisKICAgICBib29sIGlz
QXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKICAg
ICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxl
KCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2Jz
ZXJ2YWJsZSgpOwpAQCAtODI0LDYgKzgzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVuaGFu
ZGxlZFJlamVjdGlvbkNhbGxiYWNrKFZNJiB2bSwgSlNPYmplY3QqIGZ1bmN0aW9uKSB7IG1fdW5o
YW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suc2V0KHZtLCBmdW5jdGlvbik7IH0KICAgICBKU09iamVj
dCogdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3VuaGFuZGxl
ZFJlamVjdGlvbkNhbGxiYWNrLmdldCgpOyB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7CisK
ICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KIAogICAgIEpTT2JqZWN0
KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2Rl
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oCmluZGV4IGUyNTdhMWRmNjAwYjJhOGVkNDc1YjdlODkz
NmU4NGNhNDg1YjI1YjEuLjZhYmI2ZTYyNTkwNDgxZDQ5ZGYyOTBiOGI0YWQ3MDA2OGM4MWVjNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsLmgKQEAgLTMwLDEyICszMCwxMiBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIC8vIFRoaXMgaXMgdXNlZCBmb3Igc2hhcmluZyBpbnRlcmZhY2UgYW5kIGltcGxlbWVudGF0
aW9uLiBJdCBzaG91bGQgbm90IGhhdmUgaXRzIG93biBjbGFzc0luZm8uCi10ZW1wbGF0ZTx1bnNp
Z25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzID0gMT4KLWNsYXNzIEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Cit0ZW1wbGF0ZTx1bnNp
Z25lZCBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzID0gMSwgdHlwZW5hbWUgQmFzZUNsYXNz
ID0gSlNOb25GaW5hbE9iamVjdD4KK2NsYXNzIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgOiBw
dWJsaWMgQmFzZUNsYXNzIHsKIHB1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gQmFzZUNsYXNzOwog
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICB1c2luZyBCYXNl
ID0gSlNOb25GaW5hbE9iamVjdDsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJl
ck9mSW50ZXJuYWxGaWVsZHMgPSBwYXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgpAQCAtNzYsNCArNzYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJuYWxGaWVs
ZHNbbnVtYmVyT2ZJbnRlcm5hbEZpZWxkc10geyB9OwogfTsKIAordGVtcGxhdGU8dW5zaWduZWQg
cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IDE+Cit1c2luZyBKU0Rlc3RydWN0aWJsZUlu
dGVybmFsRmllbGRPYmplY3RJbXBsID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxwYXNzZWRO
dW1iZXJPZkludGVybmFsRmllbGRzLCBKU0Rlc3RydWN0aWJsZU9iamVjdD47CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgKaW5kZXggOGYwM2M4YTZk
YjFiZDU3NTBlNjg1OThlMjFjOWFlMWIzMTNjODVlMS4uZTZhNjFlMWQ5YmQ0MWIzOWJiYTYwOTM3
ZmU4NWRhOWIxODRmZDhmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oCkBAIC0y
OSwxMSArMjksMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHVuc2lnbmVkIHBh
c3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ci12b2lkIEpTSW50ZXJuYWxGaWVsZE9iamVjdElt
cGw8cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3RlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJl
ck9mSW50ZXJuYWxGaWVsZHMsIHR5cGVuYW1lIEJhc2U+Cit2b2lkIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGw8cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkcywgQmFzZT46OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwqPihjZWxsKTsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBCYXNlOjppbmZvKCkpOwogICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmRW
YWx1ZXModGhpc09iamVjdC0+bV9pbnRlcm5hbEZpZWxkcywgbnVtYmVyT2ZJbnRlcm5hbEZpZWxk
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAppbmRl
eCA4ODMwODNlY2I3NjdkMDg4M2Y5YTQ5MjFmMzk5ZjU5MDg4MTNjZmRmLi40ZjM0YjZiNDljYTg5
ZTY2OGNiOWEyNjcxMDMyM2NhZTE3ODY0YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZS5jcHAKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkpTUHJv
bWlzZS5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRX
b3JrVGltZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSlNQcm9taXNlOjpy
ZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogICAgICAgICBjYWxsRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVy
LT5jYW5jZWxQZW5kaW5nUHJvbWlzZSh0aGlzKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+
Y2FuY2VsUGVuZGluZ1dvcmsodGhpcyk7CiB9CiAKIHZvaWQgSlNQcm9taXNlOjpyZWplY3QoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBKU1Byb21pc2U6OnJlamVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCksIHRo
aXMsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5jYW5jZWxQZW5kaW5nUHJvbWlzZSh0aGlzKTsK
KyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+Y2FuY2VsUGVuZGluZ1dvcmsodGhpcyk7CiB9CiAK
IHZvaWQgSlNQcm9taXNlOjpyZWplY3RBc0hhbmRsZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAppbmRleCBhZGZiNzlmZGRhODE4M2NhOTEzMTVjNTIwNjQ3MGQxNDIz
MTI5NDU0Li45YmU4M2NlOGIxODRhNWRkMGZjM2YxZDU3ODdkNWFhNDZmZGVjNTQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4Niw2ICs0ODYs
NyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNl
OwogICAgIHYoQm9vbCwgdXNlRWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hpbmcsIGZhbHNlLCBO
b3JtYWwsICJVbm5hbWVkIFdlYkFzc2VtYmx5IG1vZHVsZXMgYXJlIGlkZW50aWZpZWQgaW4gYmFj
a3RyYWNlcyB0aHJvdWdoIHRoZWlyIGhhc2gsIGlmIGF2YWlsYWJsZS4iKSBcCiAgICAgdihCb29s
LCB1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBm
cm9tIHRoZSB3YXNtIHJlZmVyZW5jZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNt
IG11bGl0LXZhbHVlcyBzcGVjLiIpIFwKKyAgICAvKiBGSVhNRTogV2Ugc2hvdWxkIG1ha2Ugc3Vy
ZSBmaW5hbGl6ZXJzIGRvbid0IHJ1biBmb3IgZGV0YWNoZWQgd2luZG93cyBiZWZvcmUgZW5hYmxp
bmcgV2Vha1JlZnMgYnkgZGVmYXVsdC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDUwOCAqLyBcCiAgICAgdihCb29sLCB1c2VXZWFrUmVmcywgZmFsc2UsIE5vcm1h
bCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VC
aWdJbnQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBw
b3J0LiIpIFwKICAgICB2KEJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9u
IHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMg
Y2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWZk
MmIwMDg0MzAyNjI2MTg1OTgxOTU4OWY3ODRjYmJkMzYzZDA1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgotCi0jaW5jbHVkZSAiSlNQcm9taXNl
LmgiCi0jaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIlZNLmgiCi0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLW5hbWVzcGFjZSBQcm9taXNl
VGltZXJJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwot
fQotCi1Qcm9taXNlVGltZXI6OlByb21pc2VUaW1lcihWTSYgdm0pCi0gICAgOiBCYXNlKHZtKQot
ewotfQotCi12b2lkIFByb21pc2VUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkKLXsKLSAgICBBU1NFUlQo
dm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgbV90YXNrTG9jay5sb2Nr
KCk7Ci0gICAgY2FuY2VsVGltZXIoKTsKLSAgICBpZiAoIW1fcnVuVGFza3MpIHsKLSAgICAgICAg
bV90YXNrTG9jay51bmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHdoaWxl
ICghbV90YXNrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1f
dGFza3MudGFrZUxhc3QoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVySW50ZXJu
YWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7Ci0KLSAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9t
aXNlcy4KLSAgICAgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpIHsK
LSAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4K
LSAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAg
bV90YXNrTG9jay51bmxvY2soKTsgCi0KLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgICAg
IHZtLmRyYWluTWljcm90YXNrcygpOwotCi0gICAgICAgICAgICBtX3Rhc2tMb2NrLmxvY2soKTsK
LSAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSBmYWxzZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkgJiYgbV9zaG91bGRT
dG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkKLSAgICAgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLnN0b3AoKTsKLQotICAgIG1fdGFza0xvY2sudW5sb2NrKCk7Ci19Ci0KLXZvaWQgUHJvbWlz
ZVRpbWVyOjpydW5SdW5Mb29wKCkKLXsKLSAgICBBU1NFUlQoIW1fYXBpTG9jay0+dm0oKS0+Y3Vy
cmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJy
ZW50KCkgPT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKLSAgICBtX3Nob3VsZFN0b3BS
dW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoID0gdHJ1ZTsKLSAgICBpZiAobV9wZW5kaW5nUHJv
bWlzZXMuc2l6ZSgpKQotICAgICAgICBSdW5Mb29wOjpydW4oKTsKLX0KLQotdm9pZCBQcm9taXNl
VGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKFZNJiB2bSwgSlNQcm9taXNlKiB0aWNrZXQsIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCi17Ci0gICAgQVNTRVJUKHZtLmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNb
aV0uZ2V0KCkgIT0gdGlja2V0KTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlz
ZXMuYWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PigpKTsKLSAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6
OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNr
ZXQpKTsKLSAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlj
a2V0KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVu
Y2llcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVySW50
ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgcHJvbWlzZTogIiwg
UmF3UG9pbnRlcih0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBl
bmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsKLSAgICB9Ci19Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpo
YXNQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0
LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIHJldHVybiBtX3Bl
bmRpbmdQcm9taXNlcy5jb250YWlucyh0aWNrZXQpOwotfQotCi1ib29sIFByb21pc2VUaW1lcjo6
aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQsIEpTQ2VsbCog
ZGVwZW5kZW5jeSkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0
aWNrZXQpKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMuZ2V0KHRpY2tl
dCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKLX0KLQotYm9vbCBQ
cm9taXNlVGltZXI6OmNhbmNlbFBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0KQotewot
ICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7
Ci0gICAgYm9vbCByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5yZW1vdmUodGlja2V0KTsKLQot
ICAgIGlmIChyZXN1bHQpCi0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1lckludGVybmFs
Ojp2ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6c2NoZWR1bGVXb3Jr
U29vbihKU1Byb21pc2UqIHRpY2tldCwgVGFzayYmIHRhc2spCi17Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV90YXNrTG9jayk7Ci0gICAgbV90YXNrcy5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHRp
Y2tldCwgV1RGTW92ZSh0YXNrKSkpOwotICAgIGlmICghaXNTY2hlZHVsZWQoKSAmJiAhbV9jdXJy
ZW50bHlSdW5uaW5nVGFzaykKLSAgICAgICAgc2V0VGltZVVudGlsRmlyZSgwX3MpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VUaW1lci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlz
ZVRpbWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNGQwZjI5YWUyZDI4Y2Yz
ZTQwNGJlZmI1NDZmNTNjZDBiYmFlOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU1J1bkxv
b3BUaW1lci5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTUHJvbWlzZTsKLWNsYXNzIFZNOwotY2xhc3MgSlNDZWxs
OwotCi1jbGFzcyBQcm9taXNlVGltZXIgZmluYWwgOiBwdWJsaWMgSlNSdW5Mb29wVGltZXIgewot
cHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU1J1bkxvb3BUaW1lcjsKLQotICAgIHZvaWQgZG9X
b3JrKFZNJikgZmluYWw7Ci0KLSAgICB2b2lkIGFkZFBlbmRpbmdQcm9taXNlKFZNJiwgSlNQcm9t
aXNlKiwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcyk7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBoYXNQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCk7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShK
U1Byb21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKLSAgICAvLyBKU1Byb21pc2Ug
c2hvdWxkIGhhbmRsZSBjYW5jZWxpbmcgd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBvciBy
ZWplY3RlZC4KLSAgICBib29sIGNhbmNlbFBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSopOwotCi0g
ICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdm9pZCBzY2hlZHVsZVdvcmtT
b29uKEpTUHJvbWlzZSosIFRhc2smJik7Ci0KLSAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7
IG1fcnVuVGFza3MgPSBmYWxzZTsgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW5S
dW5Mb29wKCk7Ci0KLSAgICBzdGF0aWMgUmVmPFByb21pc2VUaW1lcj4gY3JlYXRlKFZNJiB2bSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb21pc2VUaW1lcih2bSkpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBQcm9taXNlVGltZXIoVk0mKTsKLQotICAgIEhhc2hNYXA8
SlNQcm9taXNlKiwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+Pj4gbV9wZW5kaW5nUHJvbWlzZXM7Ci0g
ICAgTG9jayBtX3Rhc2tMb2NrOwotICAgIGJvb2wgbV9ydW5UYXNrcyB7IHRydWUgfTsKLSAgICBi
b29sIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggeyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHN0
ZDo6dHVwbGU8SlNQcm9taXNlKiwgVGFzaz4+IG1fdGFza3M7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURU
YWJsZS5jcHAKaW5kZXggYWNiMzRjOWQzZGIyNmU1OGE2MWZmZGIzMTcxN2E1MWU2ODMxZmM1ZC4u
Mzg1N2I3NTBlMjJiZjc5MjZkMGVjZjNkNDc5NjIwOTg1NDVkN2QzZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKQEAgLTMyLDYg
KzMyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAorbmFtZXNw
YWNlIFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbCB7Citib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
KwogU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgpCiAgICAgOiBtX3RhYmxlKG1h
a2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4oc19pbml0aWFsU2l6ZSkpCiAgICAgLCBt
X3NpemUoMSkKQEAgLTE2MSwxMSArMTY1LDE0IEBAIFN0cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFi
bGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgdGFibGUoKVtzdHJ1Y3R1
cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMgPSBlbmNvZGUoc3RydWN0dXJlLCByZXN1bHQp
OwogICAgIG1fc2l6ZSsrOwogICAgIEFTU0VSVCghaXNOdWtlZChyZXN1bHQpKTsKKworICAgIGRh
dGFMb2dMbklmKFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbDo6dmVyYm9zZSwgIkFsbG9jYXRlZCBT
dHJ1Y3R1cmVJRCAiLCByZXN1bHQsICIgZm9yIFN0cnVjdHVyZSAiLCBSYXdQb2ludGVyKHN0cnVj
dHVyZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgU3RydWN0dXJlSURUYWJsZTo6
ZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJ
RCkKIHsKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2Us
ICJEZWFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCBzdHJ1Y3R1cmVJRCk7CiAgICAgQVNTRVJUKHN0
cnVjdHVyZUlEICE9IHNfdW51c2VkSUQpOwogICAgIHVpbnQzMl90IHN0cnVjdHVyZUluZGV4ID0g
c3RydWN0dXJlSUQgPj4gc19udW1iZXJPZkVudHJvcHlCaXRzOwogICAgIEFTU0VSVChzdHJ1Y3R1
cmVJbmRleCAmJiBzdHJ1Y3R1cmVJbmRleCA8IHNfbWF4aW11bU51bWJlck9mU3RydWN0dXJlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOGNhYTQ4YzFiZTMxMWI1ZDg3
ZTg2MDM4YmEwZjQwNDE4Mzg4OGMyYS4uNzgzNmY3M2U5M2FmNDI0MjE3NzI1NDY1YjdiMWMyZjdk
YzIwZjJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRh
dGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZl
cnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkRv
dWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIK
QEAgLTg4LDYgKzg5LDcgQEAKICNpbmNsdWRlICJKU0NhbGxlZS5oIgogI2luY2x1ZGUgIkpTQ3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMTMzLDcgKzEzNSw2IEBACiAj
aW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2su
aCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1l
ci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJveHlS
ZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enplckFnZW50LmgiCkBAIC0zNjUsNyAr
MzY2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1
bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIp
CiAgICAgLCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZy
YW1lOjpub0NhbGxlcigpKQotICAgICwgcHJvbWlzZVRpbWVyKFByb21pc2VUaW1lcjo6Y3JlYXRl
KCp0aGlzKSkKKyAgICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVh
dGUoKnRoaXMpKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBU
aHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUp
CiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xp
c3QpCkBAIC01NzUsNyArNTc2LDcgQEAgVk06On5WTSgpCiAgICAgYXV0byBkZXN0cnVjdGlvbkxv
Y2tlciA9IGhvbGRMb2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQoKSk7CiAgICAgCiAgICAgR2ln
YWNhZ2U6OnJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2FnZURp
c2FibGVkQ2FsbGJhY2ssIHRoaXMpOwotICAgIHByb21pc2VUaW1lci0+c3RvcFJ1bm5pbmdUYXNr
cygpOworICAgIGRlZmVycmVkV29ya1RpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChXYXNtOjpXb3JrbGlzdCogd29ya2xpc3QgPSBXYXNt
OjpleGlzdGluZ1dvcmtsaXN0T3JOdWxsKCkpCiAgICAgICAgIHdvcmtsaXN0LT5zdG9wQWxsUGxh
bnNGb3JDb250ZXh0KHdhc21Db250ZXh0KTsKQEAgLTE0ODcsNiArMTQ4OCw3IEBAIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFw
Q2VsbFR5cGUuZ2V0KCksCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
d2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhh
c2g6MHg0Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdl
YWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVm
KSAvLyBIYXNoOjB4OGVjNjhmMWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXaXRoU2NvcGUp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZSwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5KQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCBhcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBl
ck9iamVjdD4pCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2JqQ0Nh
bGxiYWNrRnVuY3Rpb25TcGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0
KCksIE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCmluZGV4IDYwZjU5NzI5ZmVjMmUwMmU2OTc2YzMxZWQ1MWIxNDhhNWM2
ZWFhMDUuLjM3YzBmZmM5NjQ3NzZlNDhiNjJmZjFhNjY2ZTBhODM2OWFiZWZjMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIEpTV2ViQXNz
ZW1ibHlUYWJsZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGU7CiBjbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbjsKLWNsYXNzIFByb21pc2VUaW1l
cjsKK2NsYXNzIERlZmVycmVkV29ya1RpbWVyOwogY2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhw
Q2FjaGU7CiBjbGFzcyBSZWdpc3RlcjsKQEAgLTU1MCw2ICs1NTAsNyBAQCBwdWJsaWM6CiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKQEAgLTcw
OSw4ICs3MTAsOCBAQCBwdWJsaWM6CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dC
b3VuZEV4ZWN1dGFibGU7CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dDYW5Db25z
dHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CiAKLSAgICBSZWY8UHJvbWlzZVRpbWVyPiBwcm9taXNlVGlt
ZXI7Ci0gICAgCisgICAgUmVmPERlZmVycmVkV29ya1RpbWVyPiBkZWZlcnJlZFdvcmtUaW1lcjsK
KwogICAgIEpTQ2VsbCogY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdDsKICAgICBj
b25zdCBDbGFzc0luZm8qIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0lu
Zm8geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseS5jcHAKaW5kZXggNWRhNjk2ZDY5N2RkNDc1MDVkN2RjNTJiNjA2ZTMxNzc0YTRl
MjY1ZC4uYWY0MmQ4ZDU3MDlmMjA2YTdhNzg3MDhmNjVkN2U1MGI1NThlNjM2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQ2F0Y2hTY29wZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdElubGluZXMuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5TW9kdWxlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiU3Ryb25n
SW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUaHJv
d1Njb3BlLmgiCkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1v
ZHVsZVZhbGlkYXRlQXN5bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogCi0gICAgdm0ucHJv
bWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRl
bmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHBy
b21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlk
YXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRh
c2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBnbG9iYWxPYmplY3QsICZ2
bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0g
ICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlz
ZSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21p
c2UsIFtwcm9taXNlLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZt
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKICAgICAgICAgICAgIEpTVmFsdWUgbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVs
ZTo6Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5
TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBzdGF0aWMg
dm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
UHJvbWlzZSogcHJvbWlzZQogICAgIC8vIFRoZSBpbnN0YW5jZSBrZWVwcyB0aGUgbW9kdWxlIGFs
aXZlLgogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGluc3RhbmNl
KSk7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2Jq
ZWN0KSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlz
ZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRk
UGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAgICAgLy8g
Tm90ZTogVGhpcyBjb21wbGV0aW9uIHRhc2sgbWF5IG9yIG1heSBub3QgZ2V0IGNhbGxlZCBpbW1l
ZGlhdGVseS4KICAgICBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVBc3luYygmdm0ud2FzbUNvbnRl
eHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJs
b2NrOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmpl
Y3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKFJlZjxXYXNtOjpDb2RlQmxvY2s+
JiYgcmVmQ29kZUJsb2NrKSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPFdhc206OkNvZGVCbG9j
az4gY29kZUJsb2NrID0gV1RGTW92ZShyZWZDb2RlQmxvY2spOwotICAgICAgICB2bS5wcm9taXNl
VGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1
bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxv
Y2sgPSBXVEZNb3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2Us
IG1vZHVsZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNv
ZGVCbG9jayA9IFdURk1vdmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwog
ICAgICAgICAgICAgcmVzb2x2ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBpbnN0YW5jZSwg
bW9kdWxlLCBpbXBvcnRPYmplY3QsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNvbHZl
S2luZCwgY3JlYXRpb25Nb2RlKTsKICAgICAgICAgfSk7CkBAIC0yMzMsMTMgKzIzMywxMyBAQCBz
dGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1Byb21pcwogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5k
ZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9y
dE9iamVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIG1v
ZHVsZUtleUNlbGwpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZt
LCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1Rp
bWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFs
dWUodm0sIGdsb2JhbE9iamVjdCwgYnVmZmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCByZWplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgV2FzbTo6
TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBj
cmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1w
b3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVh
dGlvbk1vZGUsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9t
aXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3Qs
IHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZt
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29y
a1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xv
YmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlv
bk1vZGUsICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0yNjgs
MTAgKzI2OCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFz
eW5jSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFZlY3RvcjxTdHJvbmc8
SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpT
Q2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25n
PEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVu
ZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0u
ZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRl
cGVuZGVuY2llcykpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNt
Q29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6
Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0g
KFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
aW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZt
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29y
a1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwg
V1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCkBAIC0zMzksNyArMzM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCoKIAogICAg
IFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5h
cHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VU
aW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVz
KSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNl
LCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZykKICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9i
amVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBAIC0zNzIsNyArMzcyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3Ry
ZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICBWZWN0b3I8U3Ryb25n
PEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICBk
ZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAg
ICAgICAgICAgICAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9t
aXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgICAgICAgICAgICAgIHZtLmRlZmVycmVk
V29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNp
ZXMpKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8x
ODQ4ODg+IGlmIHRoZXJlJ3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBjb250YWlucyBhIE1lbW9y
eSwgdGhlbiB3ZSBjYW4gY29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhlIHJpZ2h0IG1lbW9yeSB0
eXBlIChmYXN0IG9yIG5vdCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5J3MgdHlwZS4KICAgICAg
ICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3Rh
bnRpYXRlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSwgaW1wb3J0T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAppbmRleCA0ODk0OWJmNmVjMjgwZmVmMjcz
ZjA0MDZlZDFjZDEwN2Q5YzU1Y2YyLi44MTdmNzk0NzA2ODM4ZTE4YTQyMDU5OGIyZTcyODU1Y2Ey
NWU0ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRX
b3JrVGltZXIuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCiAjaW5j
bHVkZSAiV2FzbUZvcm1hdC5oIgpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQbGFuOwogY2xhc3Mg
SlNXZWJBc3NlbWJseUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgSlNXZWJBc3Nl
bWJseUNvZGVCbG9jayogY3JlYXRlKFZNJiwgUmVmPFdhc206OkNvZGVCbG9jaz4sIGNvbnN0IFdh
c206Ok1vZHVsZUluZm9ybWF0aW9uJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSlNXZWJBc3Nl
bWJseUNvZGVCbG9jayhWTSYsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYsIGNvbnN0IFdhc206Ok1v
ZHVsZUluZm9ybWF0aW9uJik7CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBkMjhlNTA5ZGIwMWM3MDEwZGQ3N2UyZmViYzM1Yzc5ODlhZGQ3YTMyLi4w
MzllZjgyMzBhODZiNjEzNWNlZWJkZTQzYzNhMTM3MDVkY2Y5N2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yMzQsNiArMjM0
LDExIEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnByb21pc2VSZWplY3Rpb25UcmFja2VyKEpT
R2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwKICAgICB9CiB9CiAKK3ZvaWQgSlNET01HbG9i
YWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmpl
Y3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHJl
cG9ydEV4Y2VwdGlvbihqc0dsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKK30KKwogSlNET01HbG9i
YWxPYmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgY2xhc3MgR2V0Q2FsbGVyR2xv
YmFsT2JqZWN0RnVuY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaAppbmRleCBkMjk4NThjZmE0YjBiZTBkNjIxMzkwYTgzZDc2ZDVhODUwYjlk
MjgwLi43Mzg2N2Q2YWIyZTViNGRiYjcwYjcwYTlhMzYwOTQ4NDlmMGNlZTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTc5LDYgKzc5
LDcgQEAgcHVibGljOgogCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMmIGJ1aWx0aW5J
bnRlcm5hbEZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zOyB9
CiAKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAogcHVibGljOgogICAgIH5KU0RPTUds
b2JhbE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKaW5kZXggODgzMjEzZTkwNjFmMzhiOGJiNDMzNTc5YjI5ODYwOTg3Nzg0ZTc4Mi4u
YWNlYTc2NmFmMWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00OCwxMCArNDgsMTAg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3Nl
bWJseS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01pY3JvdGFzay5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgpAQCAtNzgsNiArNzgsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAg
ICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgICZtb2R1bGVM
b2FkZXJFdmFsdWF0ZSwKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgJmNvbXBpbGVTdHJlYW1pbmcsCkBAIC00NDMsOCAr
NDQ0LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkoKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9t
aXNlKHByb21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5
SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0u
ZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQo
dm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2Us
IGdsb2JhbE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hS
ZXNwb25zZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNl
T25TdHJlYW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBb
cHJvbWlzZV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CkBAIC00NjEsOSArNDYyLDkg
QEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFtaW5nKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNlKHBy
b21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5k
aW5nUHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlz
ZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBpbXBvcnRlZE9i
amVjdCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmso
cHJvbWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5j
eUluUGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRl
ZmVycmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBpbXBv
cnRlZE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNw
b25zZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25T
dHJlYW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJv
bWlzZSwgaW1wb3J0ZWRPYmplY3RdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11dGFibGUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5j
cHAKaW5kZXggNDlkZjQzOTA1N2RmNTlkMjk0ZDQ4NGE5NGYyOWI1MjQwZjg4NjE4MS4uZGNlNzM4
MjBiYmJmZDliOTVjNTg3OWQxM2VmNjVlYWI5OGE5MDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCkBAIC00Nyw2ICs0
Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTUmVtb3RlRE9NV2luZG93QmFz
ZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9h
ZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAg
bnVsbHB0ciwgLy8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAogICAgIG51bGxw
dHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcK
ICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDUz
NzZlODBkMDAwNTM3NzYyNTgyYWEyNWJlOTFkMTJhOGY1OTdlYzQuLmM0NGYyZmIzYTBiMDVkYWFi
MWE4YTllMmY4OWI1MmQ4NTFlYjQzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAg
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVh
dGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1
YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4
Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwg
Ly8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmNwcAppbmRleCAwOTY1YTg2YzQxOGJlNjFlNjJlMWZmZGFjNmNmZThiYWY2YjRk
NmVlLi5iMTRiODE1NDJkYjg4OWVjNmQyNTliYzViNzBlZjJhNTA5OWM5NmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmwKICAgICBudWxs
cHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxw
dHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2Vy
LAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0
TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIs
IC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkzMWNlZTc3NzliZjk2MTQz
OGU4MjAxNTBjN2E3ZjhhYjQ2NzU1NDcuLjcxNmIxYTY5YjhlZWMxZGE2NDcyMDFhNDMyNjkyYjMz
ODk3ZWI3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKICNpbmNsdWRlICJXb3Jr
ZXJDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRp
b24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9j
ay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJT
ZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOCiAKICAgICBwcm9jZXNz
VGltZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGlt
ZXIobV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIo
bV92bS0+cHJvbWlzZVRpbWVyLnB0cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJy
ZWRXb3JrVGltZXIucHRyKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJl
bW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZp
Y2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9v
cFRpbWVyOjpUaW0KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNh
bGxiYWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxi
YWNrKCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIucHRyKCkpOworICAg
IHByb2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7CiB9CiAKIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVi
dWdnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlYzA3
YWM0NjM1MGQyYTM0MjllYTA5ODc0ZTNmZGYyZGZkYTllNDUxLi42NmVjZDUzNmY4MTNkMDI5YzQ5
N2YxYWVhN2YyMTllZGZjNzViMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAj
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KIAogI2lmIFVTRShHTElC
KQogI2luY2x1ZGUgPGdsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2YTg4Y2FhMTQ0YWUyN2ZjN2MxZjJkNWYz
M2JjZDEwOGNjMTIwYTllLi4yMGE2Zjg1NjE4NThhZGZiZTJlMmJjMThlYmY3MTUwYjk3YWQxNGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwCkBAIC0zNywxMSArMzcsMTEgQEAKICNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNs
aWVudC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9u
SGVscGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lu
bGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2ZTdiYzE3YTM3MDE5ODM1
MTY1OTRjNThmNDQ3YWZhOTQ5Y2UyYzYuLjkzMTBhZDM0MGViNDU0ZGM2ZjgyZWJmZDRjNjkwNmZh
ZTM0Y2NjMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVy
ICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmlu
YWxpemF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3Ry
eS5qczogQWRkZWQuCisgICAgICAgIChtYWtlV2Vha1JlZik6CisgICAgICAgICh0dXJuRXZlbnRM
b29wKToKKyAgICAgICAgKGFzeW5jIHRlc3QpOgorICAgICAgICAqIGpzL3VudGl0bGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5
Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTA3LTE3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtXZWJHTDJdIFJlYWRQaXhlbHMgdXBkYXRlcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0
cnkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25y
ZWdpc3RyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDY2NTNiYTkwOWMxYjJkYzhkYWUwMWQxMDJlYTQ5M2Vi
Njk4OWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dl
YWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMKQEAgLTAsMCArMSw0OSBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPXRydWUiKQorCithc3luY1Rlc3RTdGFydCgxKTsKK3Zh
ciBvYmplY3RzID0gW107Cit2YXIgd2Vha1JlZnMgPSBbXTsKK3ZhciBmaW5hbGl6ZXJDYWxsZWQg
PSBmYWxzZTsKK3ZhciBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeSgoKSA9PiBmaW5hbGl6ZXJDYWxsZWQgPSB0cnVlKTsKK2Z1bmN0aW9uIG1ha2VXZWFrUmVm
KCkgeyByZXR1cm4gbmV3IFdlYWtSZWYoeyBmb286IDEgfSk7IH0KK25vSW5saW5lKG1ha2VXZWFr
UmVmKTsKKworbGV0IGxvb3BDb3VudCA9IDEwMDA7CitmdW5jdGlvbiB0dXJuRXZlbnRMb29wKCkg
eworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgfSwgMCk7CisgICAgfSk7Cit9CisKK3ZhciBpOworYXN5bmMgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKSB7CisgICAg
ICAgIGxldCB3ZWFrID0gbWFrZVdlYWtSZWYoKTsKKyAgICAgICAgd2Vha1JlZnMucHVzaCh3ZWFr
KTsKKyAgICAgICAgb2JqZWN0cy5wdXNoKHdlYWsuZGVyZWYoKSk7CisgICAgICAgIGZpbmFsaXph
dGlvblJlZ2lzdHJ5LnJlZ2lzdGVyKHdlYWsuZGVyZWYoKSk7CisgICAgfQorCisgICAgYXdhaXQg
dHVybkV2ZW50TG9vcCgpOworCisgICAgc2hvdWxkQmVGYWxzZShgZmluYWxpemVyQ2FsbGVkYCk7
CisgICAgZm9yIChpID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKQorICAgICAgICBzaG91bGRCZShg
d2Vha1JlZnNbaV0uZGVyZWYoKWAsIGBvYmplY3RzW2ldYCk7CisKKyAgICBvYmplY3RzLmxlbmd0
aCA9IDA7CisgICAgb2JqZWN0cyA9IG51bGw7CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7
CisgICAgLy8gV2UgbmVlZCB0byB0dXJuIHRoZSBldmVudCBsb29wIGFnYWluIHNpbmNlIEZSIG1h
eSBub3QgaGF2ZSBjYWxsZWQgdGhlIGNhbGxiYWNrIGluIHRoZSBsYXN0IHR1cm4uCisgICAgYXdh
aXQgdHVybkV2ZW50TG9vcCgpOworCisgICAgc2hvdWxkQmVUcnVlKGBmaW5hbGl6ZXJDYWxsZWRg
KTsKKyAgICBzaG91bGRCZVRydWUoYHdlYWtSZWZzLnNvbWUoKHdlYWtSZWYpID0+IHdlYWtSZWYu
ZGVyZWYoKSA9PT0gbnVsbClgKTsKKworICAgIGFzeW5jVGVzdFBhc3NlZCgpOworfQorCit0ZXN0
KCkuY2F0Y2goZSA9PiBkZWJ1ZyhlKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy91bnRp
dGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzBl
MWNiNzA1YTlkNzc5MDgwNGM2OTg1MjdjODQzMjEzZDRhZDZmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0
aW9uLXJlZ2lzdHJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTNjYTY1YzM4ZDI0ODJlN2YyOWRhN2IxNWI2ZWFiMjYzZjJhMTk0YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0
cnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAwNyBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGZpbmFsaXplckNhbGxlZCBpcyBmYWxz
ZQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1Jl
ZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMg
b2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mg
d2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVm
KCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0K
K1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ld
LmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVj
dHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtS
ZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlz
IG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNT
IHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJl
ZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ld
CitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tp
XS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmpl
Y3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFr
UmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBp
cyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFT
UyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVy
ZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tp
XQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNb
aV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2Jq
ZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vh
a1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkg
aXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BB
U1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRl
cmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNb
aV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZz
W2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9i
amVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdl
YWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigp
IGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQ
QVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5k
ZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBvYmplY3Rz
W2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3ZWFrUmVm
c1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYoKSBpcyBv
YmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQorUEFTUyB3
ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0uZGVyZWYo
KSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0c1tpXQor
UEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1Mgd2Vha1JlZnNbaV0u
ZGVyZWYoKSBpcyBvYmplY3RzW2ldCitQQVNTIHdlYWtSZWZzW2ldLmRlcmVmKCkgaXMgb2JqZWN0
c1tpXQorUEFTUyB3ZWFrUmVmc1tpXS5kZXJlZigpIGlzIG9iamVjdHNbaV0KK1BBU1MgZmluYWxp
emVyQ2FsbGVkIGlzIHRydWUKK1BBU1Mgd2Vha1JlZnMuc29tZSgod2Vha1JlZikgPT4gd2Vha1Jl
Zi5kZXJlZigpID09PSBudWxsKSBpcyB0cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3dlYWty
ZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWQ3Y2Y0N2Q0YTM0MTY5
OGJkMGQ1NWVkNmE4ODkwYmZlNDEyNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVlIF0gLS0+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvd2Vha3JlZi1m
aW5hbGl6YXRpb25yZWdpc3RyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE5Yzg1YjYy
Y2JjMWMwMTYwY2M3OTcxZjcyMzc2YzM5NWM3NGY0ZDUuLmIxYWY1NjBiNDk1NjU2YTMwZWI5NGY4
MWVhNjZhYzQ5YmIwZDAxYTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4IEBACisyMDIwLTA3LTE3ICBLZWl0aCBNaWxs
ZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBG
aW5hbGl6YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFtZWxlc3NseSBjb3B5IHY4J3MgdGVzdHMgYW5kIHJlZmFjdG9yIHRo
ZW0gdG8gd29yayB3aXRoIGNvbnNlcnZhdGl2ZSBHQy4KKworICAgICAgICAqIHN0cmVzcy9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qczogQWRkZWQuCisgICAgICAgIChNanNVbml0QXNzZXJ0aW9uRXJy
b3IpOgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyk6
CisgICAgICAgIChjYXRjaCk6CisgICAgICAgIChjbGFzc09mKToKKyAgICAgICAgKFZhbHVlT2Yp
OgorICAgICAgICAocHJldHR5UHJpbnRlZCk6CisgICAgICAgIChwcmV0dHlQcmludGVkQXJyYXlF
bGVtZW50KToKKyAgICAgICAgKGZhaWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChmb3JtYXRGYWls
dXJlVGV4dCk6CisgICAgICAgIChmYWlsKToKKyAgICAgICAgKGRlZXBPYmplY3RFcXVhbHMpOgor
ICAgICAgICAoZGVlcEVxdWFscyk6CisgICAgICAgIChhc3NlcnRTYW1lKToKKyAgICAgICAgKGFz
c2VydE5vdFNhbWUpOgorICAgICAgICAoYXNzZXJ0RXF1YWxzKToKKyAgICAgICAgKGFzc2VydE5v
dEVxdWFscyk6CisgICAgICAgIChhc3NlcnRFcXVhbHNEZWx0YSk6CisgICAgICAgIChhc3NlcnRB
cnJheUVxdWFscyk6CisgICAgICAgIChhc3NlcnRQcm9wZXJ0aWVzRXF1YWwpOgorICAgICAgICAo
YXNzZXJ0VG9TdHJpbmdFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0VHJ1ZSk6CisgICAgICAgIChh
c3NlcnRGYWxzZSk6CisgICAgICAgIChhc3NlcnROdWxsKToKKyAgICAgICAgKGFzc2VydE5vdE51
bGwpOgorICAgICAgICAoZXhlY3V0ZUNvZGUpOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgor
ICAgICAgICAoYXNzZXJ0VGhyb3dzKToKKyAgICAgICAgKGFzc2VydFRocm93c0VxdWFscyk6Cisg
ICAgICAgIChhc3NlcnRUaHJvd3NBc3luYyk6CisgICAgICAgIChhc3NlcnRJbnN0YW5jZW9mKToK
KyAgICAgICAgKGFzc2VydERvZXNOb3RUaHJvdyk6CisgICAgICAgIChhc3NlcnRVbnJlYWNoYWJs
ZSk6CisgICAgICAgIChhc3NlcnRDb250YWlucyk6CisgICAgICAgIChhc3NlcnRNYXRjaGVzKToK
KyAgICAgICAgKGNvbmNhdGVuYXRlRXJyb3JzKToKKyAgICAgICAgKGFzc2VydFByb21pc2VSZXN1
bHQpOgorICAgICAgICAoT3B0aW1pemF0aW9uU3RhdHVzKToKKyAgICAgICAgKGFzc2VydFVub3B0
aW1pemVkKToKKyAgICAgICAgKGFzc2VydE9wdGltaXplZCk6CisgICAgICAgIChpc05ldmVyT3B0
aW1pemVMaXRlTW9kZSk6CisgICAgICAgIChpc05ldmVyT3B0aW1pemUpOgorICAgICAgICAoaXNB
bHdheXNPcHRpbWl6ZSk6CisgICAgICAgIChpc0ludGVycHJldGVkKToKKyAgICAgICAgKGlzT3B0
aW1pemVkKToKKyAgICAgICAgKGlzVHVyYm9GYW5uZWQpOgorICAgICAgICAoTWpzVW5pdEFzc2Vy
dGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlKToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51
cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczogQWRkZWQuCisgICAgICAgIChsZXQudGltZW91dF9m
dW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1y
ZWFsbS5qczogQWRkZWQuCisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBz
dHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qczogQWRkZWQuCisgICAgICAg
IChUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAoVGVzdEZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JDYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChUZXN0
Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlDbGVhbnVwTm90Q2FsbGFibGUpOgorICAgICAg
ICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5V2l0aE5vbkNhbGxhYmxlUHJveHlB
c0NsZWFudXApOgorICAgICAgICAoVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFs
dWUpOgorICAgICAgICAoVGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KToK
KyAgICAgICAgKFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkV4aXN0ZW50S2V5KToKKyAgICAgICAgKFRl
c3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RX
ZWFrUmVmQ29uc3RydWN0b3JXaXRoTm9uT2JqZWN0KToKKyAgICAgICAgKFRlc3RXZWFrUmVmV2l0
aFByb3h5KToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdl
YWtyZWYuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAoc2V0VGlt
ZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhv
bGRpbmdzLWFsaXZlLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAg
KGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdp
c3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanM6IEFkZGVkLgorICAg
ICAgICAobGV0LmNsZWFudXAwKToKKyAgICAgICAgKGxldC5jbGVhbnVwMSk6CisgICAgICAgIChs
ZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmlu
YWxpemF0aW9uLXJlZ2lzdHJpZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgor
ICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXJlZW50cmFu
dC1nYy1mcm9tLWNsZWFudXAuanM6IEFkZGVkLgorICAgICAgICAobGV0LnJlZW50cmFudF9nYyk6
CisgICAgICAgIChzZXRUaW1lb3V0KToKKyAgICAgICAgKiBzdHJlc3Mvdjgtc3RyZXNzLWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanM6IEFkZGVkLgorICAgICAgICAoaS5yZWdp
c3RyaWVzLnB1c2gubmV3LkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKHJlZ2lzdHJp
ZXMuZm9yRWFjaCk6CisgICAgICAgICogc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qczog
QWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5j
KToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgor
ICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzOiBBZGRlZC4K
KyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAg
ICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qczogQWRkZWQuCisgICAg
ICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAg
KiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanM6IEFkZGVkLgorICAgICAg
ICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICog
c3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0
cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXAp
OgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXdlYWst
dW5yZWdpc3RlcnRva2VuLmpzOiBBZGRlZC4KKyAgICAgICAgKEZSLm5ldy5GaW5hbGl6YXRpb25S
ZWdpc3RyeSk6CisgICAgICAgICh0cnlBZ2Fpbik6CisKIDIwMjAtMDctMTcgIFhhbiBMb3BleiAg
PHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1hdGgubWF4KCkgY2FuIHlpZWxkIHRoZSB3cm9u
ZyByZXN1bHQgZm9yIG1heCgwLCAtMCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA3NzQ2MWY3NGM5MDIyMzIxZmM2MGU2ODZmNzk1ZDUwZTM5Mjk4MTYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5q
cwpAQCAtMCwwICsxLDgwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlv
biBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkgeworICB0aGlzLm1lc3NhZ2UgPSBtZXNz
YWdlOworICAvLyBUZW1wb3JhcmlseSBpbnN0YWxsIGEgY3VzdG9tIHN0YWNrIHRyYWNlIGZvcm1h
dHRlciBhbmQgcmVzdG9yZSB0aGUKKyAgLy8gcHJldmlvdXMgdmFsdWUuCisgIGxldCBwcmV2UHJl
cGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsKKyAgdHJ5IHsKKyAgICBF
cnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJlU3Rh
Y2tUcmFjZTsKKyAgICAvLyBUaGlzIGFsbG93cyBmZXRjaGluZyB0aGUgc3RhY2sgdHJhY2UgdXNp
bmcgVHJ5Q2F0Y2g6OlN0YWNrVHJhY2UuCisgICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcigiTWpz
VW5pdEFzc2VydGlvbkVycm9yIikuc3RhY2s7CisgIH0gZmluYWxseSB7CisgICAgRXJyb3IucHJl
cGFyZVN0YWNrVHJhY2UgPSBwcmV2UHJlcGFyZVN0YWNrVHJhY2U7CisgIH0KK30KKworLyoKKyAq
IFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbiBhbGwgbWluaSBqc3VuaXQgdGVzdCBjYXNlcy4gIFRo
ZSB0ZXN0CisgKiBmcmFtZXdvcmsgZXhwZWN0cyBsaW5lcyB0aGF0IHNpZ25hbCBmYWlsZWQgdGVz
dHMgdG8gc3RhcnQgd2l0aAorICogdGhlIGYtd29yZCBhbmQgaWdub3JlIGFsbCBvdGhlciBsaW5l
cy4KKyAqLworCitNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5tZXNzYWdlICsgIlxuXG5TdGFjazogIiArIHRoaXMu
c3RhY2s7Cit9OworCisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgdGhlIHNhbWUgb2Jq
ZWN0cywgb3IgdGhlIHNhbWUgcHJpbWl0aXZlCisvLyB2YWx1ZXMuCisvLyBGb3Iga25vd24gcHJp
bWl0aXZlIHZhbHVlcywgcGxlYXNlIHVzZSBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0U2FtZTsK
KworLy8gSW52ZXJzZSBvZiBhc3NlcnRTYW1lLgordmFyIGFzc2VydE5vdFNhbWU7CisKKy8vIEV4
cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9y
IGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcg
aW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3Rz
LCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFy
cmF5IG9iamVjdHMpLgordmFyIGFzc2VydEVxdWFsczsKKworLy8gRGVlcCBlcXVhbGl0eSBwcmVk
aWNhdGUgdXNlZCBieSBhc3NlcnRFcXVhbHMuCit2YXIgZGVlcEVxdWFsczsKKworLy8gRXhwZWN0
ZWQgYW5kIGZvdW5kIHZhbHVlcyBhcmUgbm90IGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9y
IGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcg
aW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3Rz
LCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFy
cmF5IG9iamVjdHMpLgordmFyIGFzc2VydE5vdEVxdWFsczsKKworLy8gVGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiBleHBlY3RlZCBhbmQgZm91bmQgdmFsdWUgaXMgd2l0aGluIGNlcnRhaW4gdG9sZXJh
bmNlLgordmFyIGFzc2VydEVxdWFsc0RlbHRhOworCisvLyBUaGUgZm91bmQgb2JqZWN0IGlzIGFu
IEFycmF5IHdpdGggdGhlIHNhbWUgbGVuZ3RoIGFuZCBlbGVtZW50cworLy8gYXMgdGhlIGV4cGVj
dGVkIG9iamVjdC4gVGhlIGV4cGVjdGVkIG9iamVjdCBkb2Vzbid0IG5lZWQgdG8gYmUgYW4gQXJy
YXksCisvLyBhcyBsb25nIGFzIGl0J3MgImFycmF5LWlzaCIuCit2YXIgYXNzZXJ0QXJyYXlFcXVh
bHM7CisKKy8vIFRoZSBmb3VuZCBvYmplY3QgbXVzdCBoYXZlIHRoZSBzYW1lIGVudW1lcmFibGUg
cHJvcGVydGllcyBhcyB0aGUKKy8vIGV4cGVjdGVkIG9iamVjdC4gVGhlIHR5cGUgb2Ygb2JqZWN0
IGlzbid0IGNoZWNrZWQuCit2YXIgYXNzZXJ0UHJvcGVydGllc0VxdWFsOworCisvLyBBc3NlcnQg
dGhhdCB0aGUgc3RyaW5nIGNvbnZlcnNpb24gb2YgdGhlIGZvdW5kIHZhbHVlIGlzIGVxdWFsIHRv
CisvLyB0aGUgZXhwZWN0ZWQgc3RyaW5nLiBPbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRp
YmlsaXR5LCBwbGVhc2UKKy8vIGNoZWNrIHRoZSByZWFsIHN0cnVjdHVyZSBvZiB0aGUgZm91bmQg
dmFsdWUuCit2YXIgYXNzZXJ0VG9TdHJpbmdFcXVhbHM7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBm
b3VuZCB2YWx1ZSBpcyB0cnVlLiBVc2Ugd2l0aCBib29sZWFuIGV4cHJlc3Npb25zCisvLyBmb3Ig
dGVzdHMgdGhhdCBkb2Vzbid0IGhhdmUgdGhlaXIgb3duIGFzc2VydFhYWCBmdW5jdGlvbi4KK3Zh
ciBhc3NlcnRUcnVlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgZmFsc2Uu
Cit2YXIgYXNzZXJ0RmFsc2U7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBu
dWxsLiBLZXB0IGZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksCisvLyBwbGVhc2UganVzdCB1
c2UgYXNzZXJ0RXF1YWxzKG51bGwsIGV4cGVjdGVkKS4KK3ZhciBhc3NlcnROdWxsOworCisvLyBD
aGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgKm5vdCogbnVsbC4KK3ZhciBhc3NlcnROb3RO
dWxsOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9uIG9yIGV2YWwgY29kZSB0
aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBpcyBh
biBleGNlcHRpb24gY29uc3RydWN0b3IgdGhhdCB0aGUKKy8vIHRocm93biBleGNlcHRpb24gaXMg
Y2hlY2tlZCBhZ2FpbnN0IHdpdGggImluc3RhbmNlb2YiLgorLy8gVGhlIG9wdGlvbmFsIHRoaXJk
IGFyZ3VtZW50IGlzIGEgbWVzc2FnZSB0eXBlIHN0cmluZyBvciBSZWdFeHAgb2JqZWN0IHRoYXQg
aXMKKy8vIGNvbXBhcmVkIHRvIHRoZSBtZXNzYWdlIG9mIHRoZSB0aHJvd24gZXhjZXB0aW9uLgor
dmFyIGFzc2VydFRocm93czsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0
aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qg
dGhlIHNlY29uZCBhcmd1bWVudCB1c2luZyBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0VGhyb3dz
RXF1YWxzOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIHByb21pc2UgZG9lcyBub3QgcmVz
b2x2ZSwgYnV0IGV2ZW50dWFsbHkgdGhyb3dzIGFuCisvLyBleGNlcHRpb24uIFRoZSBvcHRpb25h
bCBzZWNvbmQgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisv
LyB0aHJvd24gZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4K
Ky8vIFRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcg
b3IgUmVnRXhwIG9iamVjdCB0aGF0IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0
aGUgdGhyb3duIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnRUaHJvd3NBc3luYzsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNvZGUgZG9lcyBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uLgordmFyIGFzc2VydERvZXNOb3RUaHJvdzsKKworLy8gQXNzZXJ0cyB0aGF0IHRo
ZSBmb3VuZCB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29uc3RydWN0b3IgcGFzc2VkCisv
LyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LgordmFyIGFzc2VydEluc3RhbmNlb2Y7CisKKy8vIEFz
c2VydCB0aGF0IHRoaXMgY29kZSBpcyBuZXZlciBleGVjdXRlZCAoaS5lLiwgYWx3YXlzIGZhaWxz
IGlmIGV4ZWN1dGVkKS4KK3ZhciBhc3NlcnRVbnJlYWNoYWJsZTsKKworLy8gQXNzZXJ0IHRoYXQg
dGhlIGZ1bmN0aW9uIGNvZGUgaXMgKG5vdCkgb3B0aW1pemVkLiAgSWYgIm5vIHN5bmMiIGlzIHBh
c3NlZAorLy8gYXMgc2Vjb25kIGFyZ3VtZW50LCB3ZSBkbyBub3Qgd2FpdCBmb3IgdGhlIGNvbmN1
cnJlbnQgb3B0aW1pemF0aW9uIHRocmVhZCB0bworLy8gZmluaXNoIHdoZW4gcG9sbGluZyBmb3Ig
b3B0aW1pemF0aW9uIHN0YXR1cy4KKy8vIE9ubHkgd29ya3Mgd2l0aCAtLWFsbG93LW5hdGl2ZXMt
c3ludGF4LgordmFyIGFzc2VydE9wdGltaXplZDsKK3ZhciBhc3NlcnRVbm9wdGltaXplZDsKKwor
Ly8gQXNzZXJ0IHRoYXQgYSBzdHJpbmcgY29udGFpbnMgYW5vdGhlciBleHBlY3RlZCBzdWJzdHJp
bmcuCit2YXIgYXNzZXJ0Q29udGFpbnM7CisKKy8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIG1hdGNo
ZXMgYSBnaXZlbiByZWdleC4KK3ZhciBhc3NlcnRNYXRjaGVzOworCisvLyBBc3NlcnQgdGhhdCBh
IHByb21pc2UgcmVzb2x2ZXMgb3IgcmVqZWN0cy4KKy8vIFBhcmFtZXRlcnM6CisvLyB7cHJvbWlz
ZX0gLSB0aGUgcHJvbWlzZQorLy8ge3N1Y2Nlc3N9IC0gb3B0aW9uYWwgLSBhIGNhbGxiYWNrIHdo
aWNoIGlzIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlCisvLyAgICAgICAgICAgICByZXNv
bHZpbmcgcHJvbWlzZS4KKy8vICB7ZmFpbH0gLSAgIG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3aGlj
aCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAgcmVqZWN0
aW5nIHByb21pc2UuIElmIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGJ1dCBubyB7ZmFpbH0KKy8v
ICAgICAgICAgICAgIGNhbGxiYWNrIGlzIHNldCwgdGhlIGVycm9yIGlzIHByb3BhZ2F0ZWQgb3V0
IG9mIHRoZSBwcm9taXNlCisvLyAgICAgICAgICAgICBjaGFpbi4KK3ZhciBhc3NlcnRQcm9taXNl
UmVzdWx0OworCit2YXIgcHJvbWlzZVRlc3RDaGFpbjsKK3ZhciBwcm9taXNlVGVzdENvdW50ID0g
MDsKKworLy8gVGhlc2UgYml0cyBtdXN0IGJlIGluIHN5bmMgd2l0aCBiaXRzIGRlZmluZWQgaW4g
UnVudGltZV9HZXRPcHRpbWl6YXRpb25TdGF0dXMKK3ZhciBWOE9wdGltaXphdGlvblN0YXR1cyA9
IHsKKyAga0lzRnVuY3Rpb246IDEgPDwgMCwKKyAga05ldmVyT3B0aW1pemU6IDEgPDwgMSwKKyAg
a0Fsd2F5c09wdGltaXplOiAxIDw8IDIsCisgIGtNYXliZURlb3B0ZWQ6IDEgPDwgMywKKyAga09w
dGltaXplZDogMSA8PCA0LAorICBrVHVyYm9GYW5uZWQ6IDEgPDwgNSwKKyAga0ludGVycHJldGVk
OiAxIDw8IDYsCisgIGtNYXJrZWRGb3JPcHRpbWl6YXRpb246IDEgPDwgNywKKyAga01hcmtlZEZv
ckNvbmN1cnJlbnRPcHRpbWl6YXRpb246IDEgPDwgOCwKKyAga09wdGltaXppbmdDb25jdXJyZW50
bHk6IDEgPDwgOSwKKyAga0lzRXhlY3V0aW5nOiAxIDw8IDEwLAorICBrVG9wbW9zdEZyYW1lSXNU
dXJib0Zhbm5lZDogMSA8PCAxMSwKKyAga0xpdGVNb2RlOiAxIDw8IDEyLAorICBrTWFya2VkRm9y
RGVvcHRpbWl6YXRpb246IDEgPDwgMTMsCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1saXRl
LW1vZGUgaXMgb24gYW5kIHdlIGNhbid0IGV2ZXIgdHVybiBvbiBvcHRpbWl6YXRpb24uCit2YXIg
aXNOZXZlck9wdGltaXplTGl0ZU1vZGU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAtLW5vLW9wdCBt
b2RlIGlzIG9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0t
YWx3YXlzLW9wdCBtb2RlIGlzIG9uLgordmFyIGlzQWx3YXlzT3B0aW1pemU7CisKKy8vIFJldHVy
bnMgdHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpbiBpbnRlcnByZXRlZC4KK3ZhciBpc0ludGVycHJl
dGVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMgb3B0aW1pemVkLgor
dmFyIGlzT3B0aW1pemVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMg
Y29tcGlsZWQgYnkgVHVyYm9GYW4uCit2YXIgaXNUdXJib0Zhbm5lZDsKKworLy8gTW9ua2V5LXBh
dGNoYWJsZSBhbGwtcHVycG9zZSBmYWlsdXJlIGhhbmRsZXIuCit2YXIgZmFpbFdpdGhNZXNzYWdl
OworCisvLyBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgZmFpbHVyZSB0ZXh0LiAgVXNlZCBieSB0ZXN0
LWFzeW5jLmpzLgordmFyIGZvcm1hdEZhaWx1cmVUZXh0OworCisvLyBSZXR1cm5zIGEgcHJldHR5
LXByaW50ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXNzZWQgdmFsdWUuCit2YXIg
cHJldHR5UHJpbnRlZDsKKworKGZ1bmN0aW9uICgpIHsgIC8vIFNjb3BlIGZvciB1dGlsaXR5IGZ1
bmN0aW9ucy4KKworICB2YXIgT2JqZWN0UHJvdG90eXBlVG9TdHJpbmcgPSBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nOworICB2YXIgTnVtYmVyUHJvdG90eXBlVmFsdWVPZiA9IE51bWJlci5wcm90
b3R5cGUudmFsdWVPZjsKKyAgdmFyIEJvb2xlYW5Qcm90b3R5cGVWYWx1ZU9mID0gQm9vbGVhbi5w
cm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2YgPSBTdHJpbmcu
cHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBEYXRlUHJvdG90eXBlVmFsdWVPZiA9IERhdGUucHJv
dG90eXBlLnZhbHVlT2Y7CisgIHZhciBSZWdFeHBQcm90b3R5cGVUb1N0cmluZyA9IFJlZ0V4cC5w
cm90b3R5cGUudG9TdHJpbmc7CisgIHZhciBBcnJheVByb3RvdHlwZUZvckVhY2ggPSBBcnJheS5w
cm90b3R5cGUuZm9yRWFjaDsKKyAgdmFyIEFycmF5UHJvdG90eXBlSm9pbiA9IEFycmF5LnByb3Rv
dHlwZS5qb2luOworICB2YXIgQXJyYXlQcm90b3R5cGVNYXAgPSBBcnJheS5wcm90b3R5cGUubWFw
OworICB2YXIgQXJyYXlQcm90b3R5cGVQdXNoID0gQXJyYXkucHJvdG90eXBlLnB1c2g7CisKKyAg
dmFyIEJpZ0ludFByb3RvdHlwZVZhbHVlT2Y7CisgIC8vIFRPRE8obmVpcyk6IFJlbW92ZSB0cnkt
Y2F0Y2ggb25jZSBCaWdJbnRzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCisgIHRyeSB7CisgICAg
QmlnSW50UHJvdG90eXBlVmFsdWVPZiA9IEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZjsKKyAgfSBj
YXRjaCAoZSkge30KKworICBmdW5jdGlvbiBjbGFzc09mKG9iamVjdCkgeworICAgIC8vIEFyZ3Vt
ZW50IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLgorICAgIHZhciBzdHJpbmcgPSBPYmpl
Y3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iamVjdCk7CisgICAgLy8gU3RyaW5nIGhhcyBmb3Jt
YXQgW29iamVjdCA8Q2xhc3NOYW1lPl0uCisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoOCwg
c3RyaW5nLmxlbmd0aCAtIDEpOworICB9CisKKworICBmdW5jdGlvbiBWYWx1ZU9mKHZhbHVlKSB7
CisgICAgc3dpdGNoIChjbGFzc09mKHZhbHVlKSkgeworICAgICAgY2FzZSAiTnVtYmVyIjoKKyAg
ICAgICAgcmV0dXJuIE51bWJlclByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBj
YXNlICJCaWdJbnQiOgorICAgICAgICByZXR1cm4gQmlnSW50UHJvdG90eXBlVmFsdWVPZi5jYWxs
KHZhbHVlKTsKKyAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgIHJldHVybiBTdHJpbmdQcm90
b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAgICAg
IHJldHVybiBCb29sZWFuUHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2Ug
IkRhdGUiOgorICAgICAgICByZXR1cm4gRGF0ZVByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICB9CisKKwor
ICBwcmV0dHlQcmludGVkID0gZnVuY3Rpb24gcHJldHR5UHJpbnRlZCh2YWx1ZSkgeworICAgIHN3
aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICByZXR1
cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpOworICAgICAgY2FzZSAiYmlnaW50IjoKKyAgICAgICAg
cmV0dXJuIFN0cmluZyh2YWx1ZSkgKyAibiI7CisgICAgICBjYXNlICJudW1iZXIiOgorICAgICAg
ICBpZiAodmFsdWUgPT09IDAgJiYgKDEgLyB2YWx1ZSkgPCAwKSByZXR1cm4gIi0wIjsKKyAgICAg
ICAgLy8gRkFMTFRIUk9VR0guCisgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgIGNhc2UgInVu
ZGVmaW5lZCI6CisgICAgICBjYXNlICJmdW5jdGlvbiI6CisgICAgICBjYXNlICJzeW1ib2wiOgor
ICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKKyAgICAgIGNhc2UgIm9iamVjdCI6CisgICAg
ICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICJudWxsIjsKKyAgICAgICAgdmFyIG9iamVj
dENsYXNzID0gY2xhc3NPZih2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAob2JqZWN0Q2xhc3MpIHsK
KyAgICAgICAgICBjYXNlICJOdW1iZXIiOgorICAgICAgICAgIGNhc2UgIkJpZ0ludCI6CisgICAg
ICAgICAgY2FzZSAiU3RyaW5nIjoKKyAgICAgICAgICBjYXNlICJCb29sZWFuIjoKKyAgICAgICAg
ICBjYXNlICJEYXRlIjoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoIiArIHBy
ZXR0eVByaW50ZWQoVmFsdWVPZih2YWx1ZSkpICsgIikiOworICAgICAgICAgIGNhc2UgIlJlZ0V4
cCI6CisgICAgICAgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbCh2YWx1
ZSk7CisgICAgICAgICAgY2FzZSAiQXJyYXkiOgorICAgICAgICAgICAgdmFyIG1hcHBlZCA9IEFy
cmF5UHJvdG90eXBlTWFwLmNhbGwoCisgICAgICAgICAgICAgICAgdmFsdWUsIHByZXR0eVByaW50
ZWRBcnJheUVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGpvaW5lZCA9IEFycmF5UHJvdG90eXBl
Sm9pbi5jYWxsKG1hcHBlZCwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiAiWyIgKyBqb2luZWQg
KyAiXSI7CisgICAgICAgICAgY2FzZSAiVWludDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50
OEFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQxNkFycmF5IjoKKyAgICAgICAgICBjYXNlICJV
aW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAiVWludDMyQXJyYXkiOgorICAgICAgICAgIGNh
c2UgIkludDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkZsb2F0MzJBcnJheSI6CisgICAgICAg
ICAgY2FzZSAiRmxvYXQ2NEFycmF5IjoKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVBy
b3RvdHlwZUpvaW4uY2FsbCh2YWx1ZSwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RD
bGFzcyArICIoWyIgKyBqb2luZWQgKyAiXSkiOworICAgICAgICAgIGNhc2UgIk9iamVjdCI6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IG9iamVjdENsYXNzICsgIigiICsgU3RyaW5nKHZhbHVlKSArICIpIjsKKyAgICAgICAgfQorICAg
ICAgICAvLyBjbGFzc09mKCkgcmV0dXJuZWQgIk9iamVjdCIuCisgICAgICAgIHZhciBuYW1lID0g
dmFsdWUuY29uc3RydWN0b3IubmFtZTsKKyAgICAgICAgaWYgKG5hbWUpIHJldHVybiBuYW1lICsg
IigpIjsKKyAgICAgICAgcmV0dXJuICJPYmplY3QoKSI7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gIi0tIHVua25vd24gdmFsdWUgLS0iOworICAgIH0KKyAgfQorCisKKyAgZnVuY3Rp
b24gcHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCh2YWx1ZSwgaW5kZXgsIGFycmF5KSB7CisgICAg
aWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShpbmRleCBpbiBhcnJheSkpIHJldHVybiAiIjsK
KyAgICByZXR1cm4gcHJldHR5UHJpbnRlZCh2YWx1ZSk7CisgIH0KKworCisgIGZhaWxXaXRoTWVz
c2FnZSA9IGZ1bmN0aW9uIGZhaWxXaXRoTWVzc2FnZShtZXNzYWdlKSB7CisgICAgdGhyb3cgbmV3
IE1qc1VuaXRBc3NlcnRpb25FcnJvcihtZXNzYWdlKTsKKyAgfQorCisgIGZvcm1hdEZhaWx1cmVU
ZXh0ID0gZnVuY3Rpb24oZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIg
bWVzc2FnZSA9ICJGYWlsIiArICJ1cmUiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAgLy8g
Rml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgorICAgICAgbWVzc2Fn
ZSArPSAiICgiICsgbmFtZV9vcHQgKyAiKSI7CisgICAgfQorCisgICAgdmFyIGZvdW5kVGV4dCA9
IHByZXR0eVByaW50ZWQoZm91bmQpOworICAgIGlmIChleHBlY3RlZFRleHQubGVuZ3RoIDw9IDQw
ICYmIGZvdW5kVGV4dC5sZW5ndGggPD0gNDApIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjogZXhwZWN0
ZWQgPCIgKyBleHBlY3RlZFRleHQgKyAiPiBmb3VuZCA8IiArIGZvdW5kVGV4dCArICI+IjsKKyAg
ICB9IGVsc2UgeworICAgICAgbWVzc2FnZSArPSAiOlxuZXhwZWN0ZWQ6XG4iICsgZXhwZWN0ZWRU
ZXh0ICsgIlxuZm91bmQ6XG4iICsgZm91bmRUZXh0OworICAgIH0KKyAgICByZXR1cm4gbWVzc2Fn
ZTsKKyAgfQorCisgIGZ1bmN0aW9uIGZhaWwoZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQp
IHsKKyAgICByZXR1cm4gZmFpbFdpdGhNZXNzYWdlKGZvcm1hdEZhaWx1cmVUZXh0KGV4cGVjdGVk
VGV4dCwgZm91bmQsIG5hbWVfb3B0KSk7CisgIH0KKworCisgIGZ1bmN0aW9uIGRlZXBPYmplY3RF
cXVhbHMoYSwgYikgeworICAgIHZhciBhUHJvcHMgPSBPYmplY3Qua2V5cyhhKTsKKyAgICBhUHJv
cHMuc29ydCgpOworICAgIHZhciBiUHJvcHMgPSBPYmplY3Qua2V5cyhiKTsKKyAgICBiUHJvcHMu
c29ydCgpOworICAgIGlmICghZGVlcEVxdWFscyhhUHJvcHMsIGJQcm9wcykpIHsKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhUHJvcHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIGlmICghZGVlcEVxdWFscyhhW2FQcm9wc1tpXV0sIGJbYVByb3BzW2ld
XSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfQorCisKKyAgZGVlcEVxdWFscyA9IGZ1bmN0aW9uIGRlZXBFcXVhbHMoYSwgYikg
eworICAgIGlmIChhID09PSBiKSB7CisgICAgICAvLyBDaGVjayBmb3IgLTAuCisgICAgICBpZiAo
YSA9PT0gMCkgcmV0dXJuICgxIC8gYSkgPT09ICgxIC8gYik7CisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgcmV0dXJuIGZhbHNlOworICAg
IGlmICh0eXBlb2YgYSA9PT0gIm51bWJlciIpIHJldHVybiBpc05hTihhKSAmJiBpc05hTihiKTsK
KyAgICBpZiAodHlwZW9mIGEgIT09ICJvYmplY3QiICYmIHR5cGVvZiBhICE9PSAiZnVuY3Rpb24i
KSByZXR1cm4gZmFsc2U7CisgICAgLy8gTmVpdGhlciBhIG5vciBiIGlzIHByaW1pdGl2ZS4KKyAg
ICB2YXIgb2JqZWN0Q2xhc3MgPSBjbGFzc09mKGEpOworICAgIGlmIChvYmplY3RDbGFzcyAhPT0g
Y2xhc3NPZihiKSkgcmV0dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIlJlZ0V4
cCIpIHsKKyAgICAgIC8vIEZvciBSZWdFeHAsIGp1c3QgY29tcGFyZSBwYXR0ZXJuIGFuZCBmbGFn
cyB1c2luZyBpdHMgdG9TdHJpbmcuCisgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJp
bmcuY2FsbChhKSA9PT0KKyAgICAgICAgICAgICBSZWdFeHBQcm90b3R5cGVUb1N0cmluZy5jYWxs
KGIpOworICAgIH0KKyAgICAvLyBGdW5jdGlvbnMgYXJlIG9ubHkgaWRlbnRpY2FsIHRvIHRoZW1z
ZWx2ZXMuCisgICAgaWYgKG9iamVjdENsYXNzID09PSAiRnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiQXJyYXkiKSB7CisgICAgICB2YXIgZWxlbWVudENv
dW50ID0gMDsKKyAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgfQorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIGlmICghZGVlcEVxdWFscyhhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNl
OworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChvYmplY3RDbGFz
cyA9PT0gIlN0cmluZyIgfHwgb2JqZWN0Q2xhc3MgPT09ICJOdW1iZXIiIHx8CisgICAgICBvYmpl
Y3RDbGFzcyA9PT0gIkJpZ0ludCIgfHwgb2JqZWN0Q2xhc3MgPT09ICJCb29sZWFuIiB8fAorICAg
ICAgb2JqZWN0Q2xhc3MgPT09ICJEYXRlIikgeworICAgICAgaWYgKFZhbHVlT2YoYSkgIT09IFZh
bHVlT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGRlZXBPYmplY3RFcXVh
bHMoYSwgYik7CisgIH0KKworICBhc3NlcnRTYW1lID0gZnVuY3Rpb24gYXNzZXJ0U2FtZShleHBl
Y3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKE9iamVjdC5pcyhleHBlY3RlZCwgZm91
bmQpKSByZXR1cm47CisgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5h
bWVfb3B0KTsKKyAgfTsKKworICBhc3NlcnROb3RTYW1lID0gZnVuY3Rpb24gYXNzZXJ0Tm90U2Ft
ZShleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKCFPYmplY3QuaXMoZXhwZWN0
ZWQsIGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwoIm5vdCBzYW1lIGFzICIgKyBwcmV0dHlQcmlu
dGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgfQorCisgIGFzc2VydEVxdWFscyA9
IGZ1bmN0aW9uIGFzc2VydEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAg
aWYgKCFkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAgIGZhaWwocHJldHR5UHJp
bnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisgIGFzc2Vy
dE5vdEVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5h
bWVfb3B0KSB7CisgICAgaWYgKGRlZXBFcXVhbHMoZm91bmQsIGV4cGVjdGVkKSkgeworICAgICAg
ZmFpbCgibm90IGVxdWFscyB0byAiICsgcHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBu
YW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0RXF1YWxzRGVsdGEgPQorICAgICAg
ZnVuY3Rpb24gYXNzZXJ0RXF1YWxzRGVsdGEoZXhwZWN0ZWQsIGZvdW5kLCBkZWx0YSwgbmFtZV9v
cHQpIHsKKyAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWQgLSBmb3VuZCkgPiBkZWx0YSkgeworICAg
ICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSArICIgKy0gIiArIHByZXR0eVByaW50ZWQo
ZGVsdGEpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEFycmF5
RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0QXJyYXlFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1l
X29wdCkgeworICAgIHZhciBzdGFydCA9ICIiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAg
c3RhcnQgPSBuYW1lX29wdCArICIgLSAiOworICAgIH0KKyAgICBhc3NlcnRFcXVhbHMoZXhwZWN0
ZWQubGVuZ3RoLCBmb3VuZC5sZW5ndGgsIHN0YXJ0ICsgImFycmF5IGxlbmd0aCIpOworICAgIGlm
IChleHBlY3RlZC5sZW5ndGggPT09IGZvdW5kLmxlbmd0aCkgeworICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICBhc3NlcnRFcXVhbHMoZXhw
ZWN0ZWRbaV0sIGZvdW5kW2ldLAorICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKyAiYXJyYXkg
ZWxlbWVudCBhdCBpbmRleCAiICsgaSk7CisgICAgICB9CisgICAgfQorICB9OworCisKKyAgYXNz
ZXJ0UHJvcGVydGllc0VxdWFsID0gZnVuY3Rpb24gYXNzZXJ0UHJvcGVydGllc0VxdWFsKGV4cGVj
dGVkLCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWVfb3B0KSB7CisgICAgLy8gQ2hlY2sgcHJvcGVydGllcyBvbmx5Lgor
ICAgIGlmICghZGVlcE9iamVjdEVxdWFscyhleHBlY3RlZCwgZm91bmQpKSB7CisgICAgICBmYWls
KGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydFRv
U3RyaW5nRXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0VG9TdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGZv
dW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWVfb3B0KSB7CisgICAgaWYgKGV4cGVjdGVkICE9PSBTdHJpbmcoZm91bmQpKSB7Cisg
ICAgICBmYWlsKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisg
IGFzc2VydFRydWUgPSBmdW5jdGlvbiBhc3NlcnRUcnVlKHZhbHVlLCBuYW1lX29wdCkgeworICAg
IGFzc2VydEVxdWFscyh0cnVlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0
RmFsc2UgPSBmdW5jdGlvbiBhc3NlcnRGYWxzZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBhc3Nl
cnRFcXVhbHMoZmFsc2UsIHZhbHVlLCBuYW1lX29wdCk7CisgIH07CisKKworICBhc3NlcnROdWxs
ID0gZnVuY3Rpb24gYXNzZXJ0TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUg
IT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0K
KyAgfTsKKworCisgIGFzc2VydE5vdE51bGwgPSBmdW5jdGlvbiBhc3NlcnROb3ROdWxsKHZhbHVl
LCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgeworICAgICAgZmFpbCgibm90
IG51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBleGVj
dXRlQ29kZShjb2RlKSB7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSAgcmV0
dXJuIGNvZGUoKTsKKyAgICBpZiAodHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnKSByZXR1cm4gZXZh
bChjb2RlKTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICdHaXZlbiBjb2RlIGlzIG5l
aXRoZXIgZnVuY3Rpb24gbm9yIHN0cmluZywgYnV0ICcgKyAodHlwZW9mIGNvZGUpICsKKyAgICAg
ICAgJzogPCcgKyBwcmV0dHlQcmludGVkKGNvZGUpICsgJz4nKTsKKyAgfQorCisgIGZ1bmN0aW9u
IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAodHlwZV9v
cHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVv
ZiB0eXBlX29wdCk7CisgICAgICBhc3NlcnRJbnN0YW5jZW9mKGUsIHR5cGVfb3B0KTsKKyAgICB9
CisgICAgLy8gaWdub3JlIGNhdXNlX29wdCBiZWNhdXNlIG91ciBlcnJvciBtZXNzYWdlcyBhcmUg
bm90IHRoZSBzYW1lIGFzIFY4J3MKKyAgICByZXR1cm47CisgICAgaWYgKFJlZ0V4cCAhPT0gdW5k
ZWZpbmVkICYmIGNhdXNlX29wdCBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgYXNzZXJ0TWF0
Y2hlcyhjYXVzZV9vcHQsIGUubWVzc2FnZSwgJ0Vycm9yIG1lc3NhZ2UnKTsKKyAgICB9IGVsc2Ug
aWYgKGNhdXNlX29wdCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBhc3NlcnRFcXVhbHMoY2F1c2Vf
b3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfQorICB9CisKKyAgYXNzZXJ0
VGhyb3dzID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGNvZGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQp
IHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5l
ZCkgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3Ms
IHVua25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1
bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWls
V2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5
YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIHRyeSB7CisgICAg
ICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBjaGVja0V4Y2Vw
dGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bGV0IG1zZyA9ICdEaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9
PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9
ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIGZhaWxXaXRoTWVzc2FnZShtc2cp
OworICB9OworCisgIGFzc2VydFRocm93c0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRocm93c0Vx
dWFscyhmdW4sIHZhbCkgeworICAgIHRyeSB7CisgICAgICBmdW4oKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICBhc3NlcnRTYW1lKHZhbCwgZSk7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IGZhaWxXaXRoTWVzc2FnZSgnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24sIGV4cGVjdGVkICcgKyBw
cmV0dHlQcmludGVkKHZhbCkpOworICB9OworCisgIGFzc2VydFRocm93c0FzeW5jID0gZnVuY3Rp
b24gYXNzZXJ0VGhyb3dzQXN5bmMocHJvbWlzZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgeworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlX29wdCA9PT0gdW5kZWZpbmVkKSB7Cisg
ICAgICBmYWlsV2l0aE1lc3NhZ2UoJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgdW5rbm93
biB0eXBlX29wdCBnaXZlbicpOworICAgIH0KKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5l
ZCAmJiB0eXBlb2YgdHlwZV9vcHQgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIGZhaWxXaXRoTWVz
c2FnZSgKKyAgICAgICAgICAnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCBtYXliZSB5b3Ug
d2FudCBhc3NlcnRUaHJvd3NFcXVhbHMnKTsKKyAgICB9CisgICAgbGV0IG1zZyA9ICdQcm9taXNl
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uJzsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5l
ZCAmJiB0eXBlX29wdC5uYW1lICE9PSB1bmRlZmluZWQpCisgICAgICBtc2cgKz0gJywgZXhwZWN0
ZWQgJyArIHR5cGVfb3B0Lm5hbWU7CisgICAgcmV0dXJuIGFzc2VydFByb21pc2VSZXN1bHQoCisg
ICAgICAgIHByb21pc2UsCisgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBl
cnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgIC8vIGNoYWluLgor
ICAgICAgICByZXMgPT4gc2V0VGltZW91dChfID0+IGZhaWwoJzx0aHJvdz4nLCByZXMsIG1zZyks
IDApLAorICAgICAgICBlID0+IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQp
KTsKKyAgfTsKKworICBhc3NlcnRJbnN0YW5jZW9mID0gZnVuY3Rpb24gYXNzZXJ0SW5zdGFuY2Vv
ZihvYmosIHR5cGUpIHsKKyAgICBpZiAoIShvYmogaW5zdGFuY2VvZiB0eXBlKSkgeworICAgICAg
dmFyIGFjdHVhbFR5cGVOYW1lID0gbnVsbDsKKyAgICAgIHZhciBhY3R1YWxDb25zdHJ1Y3RvciA9
IG9iaiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKS5jb25zdHJ1Y3RvcjsKKyAgICAgIGlm
ICh0eXBlb2YgYWN0dWFsQ29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgYWN0
dWFsVHlwZU5hbWUgPSBhY3R1YWxDb25zdHJ1Y3Rvci5uYW1lIHx8IFN0cmluZyhhY3R1YWxDb25z
dHJ1Y3Rvcik7CisgICAgICB9CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ09i
amVjdCA8JyArIHByZXR0eVByaW50ZWQob2JqKSArICc+IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiA8
JyArCisgICAgICAgICAgKHR5cGUubmFtZSB8fCB0eXBlKSArICc+JyArCisgICAgICAgICAgKGFj
dHVhbFR5cGVOYW1lID8gJyBidXQgb2YgPCcgKyBhY3R1YWxUeXBlTmFtZSArICc+JyA6ICcnKSk7
CisgICAgfQorICB9OworCisgIGFzc2VydERvZXNOb3RUaHJvdyA9IGZ1bmN0aW9uIGFzc2VydERv
ZXNOb3RUaHJvdyhjb2RlLCBuYW1lX29wdCkgeworICAgIHRyeSB7CisgICAgICBleGVjdXRlQ29k
ZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAoZSBpbnN0YW5jZW9mIE1qc1Vu
aXRBc3NlcnRpb25FcnJvcikgdGhyb3cgZTsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgidGhyZXcg
YW4gZXhjZXB0aW9uOiAiICsgKGUubWVzc2FnZSB8fCBlKSk7CisgICAgfQorICB9OworCisgIGFz
c2VydFVucmVhY2hhYmxlID0gZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUobmFtZV9vcHQpIHsK
KyAgICAvLyBGaXggdGhpcyB3aGVuIHdlIGRpdGNoIHRoZSBvbGQgdGVzdCBydW5uZXIuCisgICAg
dmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlOiB1bnJlYWNoYWJsZSI7CisgICAgaWYgKG5hbWVf
b3B0KSB7CisgICAgICBtZXNzYWdlICs9ICIgLSAiICsgbmFtZV9vcHQ7CisgICAgfQorICAgIGZh
aWxXaXRoTWVzc2FnZShtZXNzYWdlKTsKKyAgfTsKKworICBhc3NlcnRDb250YWlucyA9IGZ1bmN0
aW9uKHN1YiwgdmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVlID09IG51bGwgPyAoc3Vi
ICE9IG51bGwpIDogdmFsdWUuaW5kZXhPZihzdWIpID09IC0xKSB7CisgICAgICBmYWlsKCJjb250
YWlucyAnIiArIFN0cmluZyhzdWIpICsgIiciLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAg
fTsKKworICBhc3NlcnRNYXRjaGVzID0gZnVuY3Rpb24ocmVnZXhwLCBzdHIsIG5hbWVfb3B0KSB7
CisgICAgaWYgKCEocmVnZXhwIGluc3RhbmNlb2YgUmVnRXhwKSkgeworICAgICAgcmVnZXhwID0g
bmV3IFJlZ0V4cChyZWdleHApOworICAgIH0KKyAgICBpZiAoIXN0ci5tYXRjaChyZWdleHApKSB7
CisgICAgICBmYWlsKCJzaG91bGQgbWF0Y2ggJyIgKyByZWdleHAgKyAiJyIsIHN0ciwgbmFtZV9v
cHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywg
ZXhjZXB0aW9uKSB7CisgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBkb2VzIG5vdCBjb250YWluIGEg
c3RhY2sgdHJhY2UsIHdyYXAgaXQgaW4gYSBuZXcgRXJyb3IuCisgICAgaWYgKCFleGNlcHRpb24u
c3RhY2spIGV4Y2VwdGlvbiA9IG5ldyBFcnJvcihleGNlcHRpb24pOworCisgICAgLy8gSWYgdGhl
IGV4Y2VwdGlvbiBhbHJlYWR5IHByb3ZpZGVzIGEgc3BlY2lhbCBzdGFjayB0cmFjZSwgd2UgZG8g
bm90IG1vZGlmeQorICAgIC8vIGl0LgorICAgIGlmICh0eXBlb2YgZXhjZXB0aW9uLnN0YWNrICE9
PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CisgICAgZXhjZXB0
aW9uLnN0YWNrID0gc3RhY2sgKyAnXG5cbicgKyBleGNlcHRpb24uc3RhY2s7CisgICAgcmV0dXJu
IGV4Y2VwdGlvbjsKKyAgfQorCisgIGFzc2VydFByb21pc2VSZXN1bHQgPSBmdW5jdGlvbihwcm9t
aXNlLCBzdWNjZXNzLCBmYWlsKSB7CisgICAgaWYgKHN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkgYXNz
ZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBzdWNjZXNzKTsKKyAgICBpZiAoZmFpbCAhPT0g
dW5kZWZpbmVkKSBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9mIGZhaWwpOworICAgIGFz
c2VydEluc3RhbmNlb2YocHJvbWlzZSwgUHJvbWlzZSk7CisgICAgY29uc3Qgc3RhY2sgPSAobmV3
IEVycm9yKCkpLnN0YWNrOworCisgICAgdmFyIHRlc3RfcHJvbWlzZSA9IHByb21pc2UudGhlbigK
KyAgICAgICAgcmVzdWx0ID0+IHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKC0t
cHJvbWlzZVRlc3RDb3VudCA9PSAwKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIHN1Y2Nlc3MocmVzdWx0KTsKKyAgICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0
aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAgICAgLy8g
Y2hhaW4uCisgICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4geworICAgICAgICAgICAgICB0aHJv
dyBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZSk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGlmICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICBpZiAoZmFpbCA9PT0gdW5kZWZpbmVkKSB0aHJvdyByZXN1
bHQ7CisgICAgICAgICAgICBmYWlsKHJlc3VsdCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRv
IGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAgIC8vIGNoYWluLgorICAgICAgICAg
ICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJv
cnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9
KTsKKworICAgIGlmICghcHJvbWlzZVRlc3RDaGFpbikgcHJvbWlzZVRlc3RDaGFpbiA9IFByb21p
c2UucmVzb2x2ZSgpOworICAgIC8vIHdhaXRVbnRpbERvbmUgaXMgaWRlbXBvdGVudC4KKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICArK3Byb21pc2VUZXN0Q291bnQ7CisgICAg
cmV0dXJuIHByb21pc2VUZXN0Q2hhaW4udGhlbih0ZXN0X3Byb21pc2UpOworICB9OworCisgIHZh
ciBPcHRpbWl6YXRpb25TdGF0dXNJbXBsID0gdW5kZWZpbmVkOworCisgIHZhciBPcHRpbWl6YXRp
b25TdGF0dXMgPSBmdW5jdGlvbihmdW4sIHN5bmNfb3B0KSB7CisgICAgaWYgKE9wdGltaXphdGlv
blN0YXR1c0ltcGwgPT09IHVuZGVmaW5lZCkgeworICAgICAgdHJ5IHsKKyAgICAgICAgT3B0aW1p
emF0aW9uU3RhdHVzSW1wbCA9IG5ldyBGdW5jdGlvbigKKyAgICAgICAgICAgICJmdW4iLCAic3lu
YyIsICJyZXR1cm4gJUdldE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmMpOyIpOworICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5hdGl2ZXMgc3ludGF4IG5v
dCBhbGxvd2VkIik7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBPcHRpbWl6YXRpb25TdGF0
dXNJbXBsKGZ1biwgc3luY19vcHQpOworICB9CisKKyAgYXNzZXJ0VW5vcHRpbWl6ZWQgPSBmdW5j
dGlvbiBhc3NlcnRVbm9wdGltaXplZCgKKyAgICAgIGZ1biwgc3luY19vcHQsIG5hbWVfb3B0LCBz
a2lwX2lmX21heWJlX2Rlb3B0ZWQgPSB0cnVlKSB7CisgICAgaWYgKHN5bmNfb3B0ID09PSB1bmRl
ZmluZWQpIHN5bmNfb3B0ID0gIiI7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25T
dGF0dXMoZnVuLCBzeW5jX29wdCk7CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0VW5vcHRp
bWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBpZiAtLWFsd2F5cy1vcHQKKyAgICAvLyBvcHRpb24g
aXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVzdCBhZGQgLS1uby1hbHdheXMtb3B0IHRvIGZsYWdz
IGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0
YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAwLAorICAgICAgICAgICAgICAgICJ0ZXN0IGRvZXMg
bm90IG1ha2Ugc2Vuc2Ugd2l0aCAtLWFsd2F5cy1vcHQiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLCBuYW1lX29w
dCk7CisgICAgaWYgKHNraXBfaWZfbWF5YmVfZGVvcHRlZCAmJgorICAgICAgICAob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtNYXliZURlb3B0ZWQpICE9PSAwKSB7CisgICAgICAv
LyBXaGVuIC0tZGVvcHQtZXZlcnktbi10aW1lcyBmbGFnIGlzIHNwZWNpZmllZCBpdCdzIG5vIGxv
bmdlciBndWFyYW50ZWVkCisgICAgICAvLyB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgc3Rp
bGwgZGVvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8gdG8gc3Ry
ZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3Nl
cnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9
PSAwLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRPcHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3Nl
cnRPcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29wdCwgc2tpcF9pZl9tYXli
ZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0gdW5kZWZpbmVkKSBzeW5j
X29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwg
c3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5v
dCBtYWtlIHNlbnNlIGZvciBMaXRlIG1vZGUgd2hlcmUKKyAgICAvLyBvcHRpbWl6YXRpb24gaXMg
YWx3YXlzIGRpc2FibGVkLCBleHBsaWNpdGx5IGV4aXQgdGhlIHRlc3Qgd2l0aCBhIHdhcm5pbmcu
CisgICAgaWYgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTGl0ZU1vZGUpIHsK
KyAgICAgIHByaW50KCJXYXJuaW5nOiBUZXN0IHVzZXMgYXNzZXJ0T3B0aW1pemVkIGluIExpdGUg
bW9kZSwgc2tpcHBpbmcgdGVzdC4iKTsKKyAgICAgIHRlc3RSdW5uZXIucXVpdCgwKTsKKyAgICB9
CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0T3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vu
c2UgaWYgLS1uby1vcHQKKyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVz
dCBhZGQgLS1vcHQgdG8gZmxhZ3MgY29tbWVudC4KKyAgICBhc3NlcnRGYWxzZSgob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMCwKKyAgICAgICAg
ICAgICAgICAidGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1uby1vcHQiKTsKKyAgICBh
c3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJ
c0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgJ3Nob3VsZCBiZSBhIGZ1bmN0aW9uOiAnICsgbmFt
ZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAg
ICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBu
byBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlz
IHN0aWxsIG9wdGltaXplZCwgc28ga2VlcCBydW5uaW5nIHRoZSB0ZXN0CisgICAgICAvLyB0byBz
dHJlc3MgdGVzdCB0aGUgZGVvcHRpbWl6ZXIuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGFz
c2VydFRydWUoCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09w
dGltaXplZCkgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgb3B0aW1pemVkOiAnICsgbmFtZV9v
cHQpOworICB9CisKKyAgaXNOZXZlck9wdGltaXplTGl0ZU1vZGUgPSBmdW5jdGlvbiBpc05ldmVy
T3B0aW1pemVMaXRlTW9kZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0
YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rTGl0ZU1vZGUpICE9PSAwOworICB9CisKKyAgaXNOZXZlck9wdGltaXplID0g
ZnVuY3Rpb24gaXNOZXZlck9wdGltaXplKCkgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1p
emF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4
T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMDsKKyAgfQorCisgIGlzQWx3
YXlzT3B0aW1pemUgPSBmdW5jdGlvbiBpc0Fsd2F5c09wdGltaXplKCkgeworICAgIHZhciBvcHRf
c3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtBbHdheXNPcHRpbWl6ZSkgIT09IDA7
CisgIH0KKworICBpc0ludGVycHJldGVkID0gZnVuY3Rpb24gaXNJbnRlcnByZXRlZChmdW4pIHsK
KyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBh
c3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24p
ICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChv
cHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgPT09IDAgJiYKKyAg
ICAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rSW50ZXJwcmV0ZWQp
ICE9PSAwOworICB9CisKKyAgaXNPcHRpbWl6ZWQgPSBmdW5jdGlvbiBpc09wdGltaXplZChmdW4p
IHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAg
ICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rp
b24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJu
IChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDA7Cisg
IH0KKworICBpc1R1cmJvRmFubmVkID0gZnVuY3Rpb24gaXNUdXJib0Zhbm5lZChmdW4pIHsKKyAg
ICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3Nl
cnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9
PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAgJiYKKyAgICAg
ICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rVHVyYm9GYW5uZWQpICE9
PSAwOworICB9CisKKyAgLy8gQ3VzdG9tIFY4LXNwZWNpZmljIHN0YWNrIHRyYWNlIGZvcm1hdHRl
ciB0aGF0IGlzIHRlbXBvcmFyaWx5IGluc3RhbGxlZCBvbgorICAvLyB0aGUgRXJyb3Igb2JqZWN0
LgorICBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbihl
cnJvciwgc3RhY2spIHsKKyAgICAvLyBUcmlnZ2VyIGRlZmF1bHQgZm9ybWF0dGluZyB3aXRoIHJl
Y3Vyc2lvbi4KKyAgICB0cnkgeworICAgICAgLy8gRmlsdGVyLW91dCBhbGwgYnV0IHRoZSBmaXJz
dCBtanN1bml0IGZyYW1lLgorICAgICAgbGV0IGZpbHRlcmVkU3RhY2sgPSBbXTsKKyAgICAgIGxl
dCBpbk1qc3VuaXQgPSB0cnVlOworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFjay5sZW5n
dGg7IGkrKykgeworICAgICAgICBsZXQgZnJhbWUgPSBzdGFja1tpXTsKKyAgICAgICAgaWYgKGlu
TWpzdW5pdCkgeworICAgICAgICAgIGxldCBmaWxlID0gZnJhbWUuZ2V0RmlsZU5hbWUoKTsKKyAg
ICAgICAgICBpZiAoIWZpbGUgfHwgIWZpbGUuZW5kc1dpdGgoIm1qc3VuaXQuanMiKSkgeworICAg
ICAgICAgICAgaW5NanN1bml0ID0gZmFsc2U7CisgICAgICAgICAgICAvLyBQdXNoIHRoZSBsYXN0
IG1qc3VuaXQgZnJhbWUsIHR5cGljYWxseSBjb250YWluaW5nIHRoZSBhc3NlcnRpb24KKyAgICAg
ICAgICAgIC8vIGZ1bmN0aW9uLgorICAgICAgICAgICAgaWYgKGkgPiAwKSBBcnJheVByb3RvdHlw
ZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpLTFdKTsKKyAgICAgICAgICAgIEFycmF5
UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIHN0YWNrW2ldKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlQcm90b3R5cGVQ
dXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgZnJhbWUpOworICAgICAgfQorICAgICAgc3RhY2sgPSBm
aWx0ZXJlZFN0YWNrOworCisgICAgICAvLyBJbmZlciBmdW5jdGlvbiBuYW1lcyBhbmQgY2FsY3Vs
YXRlIHttYXhfbmFtZV9sZW5ndGh9CisgICAgICBsZXQgbWF4X25hbWVfbGVuZ3RoID0gMDsKKyAg
ICAgIEFycmF5UHJvdG90eXBlRm9yRWFjaC5jYWxsKHN0YWNrLCBlYWNoID0+IHsKKyAgICAgICAg
bGV0IG5hbWUgPSBlYWNoLmdldEZ1bmN0aW9uTmFtZSgpOworICAgICAgICBpZiAobmFtZSA9PSBu
dWxsKSBuYW1lID0gIiI7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSB7CisgICAgICAgICAg
bmFtZSA9IG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoZWFjaC5pc0NvbnN0cnVjdG9yKCkpIHsK
KyAgICAgICAgICBuYW1lID0gIm5ldyAiICsgbmFtZTsKKyAgICAgICAgfSBlbHNlIGlmIChlYWNo
LmlzTmF0aXZlKCkpIHsKKyAgICAgICAgICBuYW1lID0gIm5hdGl2ZSAiICsgbmFtZTsKKyAgICAg
ICAgfSBlbHNlIGlmICghZWFjaC5pc1RvcGxldmVsKCkpIHsKKyAgICAgICAgICBuYW1lID0gZWFj
aC5nZXRUeXBlTmFtZSgpICsgIi4iICsgbmFtZTsKKyAgICAgICAgfQorICAgICAgICBlYWNoLm5h
bWUgPSBuYW1lOworICAgICAgICBtYXhfbmFtZV9sZW5ndGggPSBNYXRoLm1heChuYW1lLmxlbmd0
aCwgbWF4X25hbWVfbGVuZ3RoKQorICAgICAgfSk7CisKKyAgICAgIC8vIEZvcm1hdCBzdGFjayBm
cmFtZXMuCisgICAgICBzdGFjayA9IEFycmF5UHJvdG90eXBlTWFwLmNhbGwoc3RhY2ssIGVhY2gg
PT4geworICAgICAgICBsZXQgZnJhbWUgPSAiICAgIGF0ICIgKyBlYWNoLm5hbWUucGFkRW5kKG1h
eF9uYW1lX2xlbmd0aCk7CisgICAgICAgIGxldCBmaWxlTmFtZSA9IGVhY2guZ2V0RmlsZU5hbWUo
KTsKKyAgICAgICAgaWYgKGVhY2guaXNFdmFsKCkpIHJldHVybiBmcmFtZSArICIgIiArIGVhY2gu
Z2V0RXZhbE9yaWdpbigpOworICAgICAgICBmcmFtZSArPSAiICIgKyAoZmlsZU5hbWUgPyBmaWxl
TmFtZSA6ICIiKTsKKyAgICAgICAgbGV0IGxpbmU9IGVhY2guZ2V0TGluZU51bWJlcigpOworICAg
ICAgICBmcmFtZSArPSAiICIgKyAobGluZSA/IGxpbmUgOiAiIik7CisgICAgICAgIGxldCBjb2x1
bW4gPSBlYWNoLmdldENvbHVtbk51bWJlcigpOworICAgICAgICBmcmFtZSArPSAoY29sdW1uID8g
IjoiICsgY29sdW1uIDogIiIpOworICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICB9KTsKKyAg
ICAgIHJldHVybiAiIiArIGVycm9yLm1lc3NhZ2UgKyAiXG4iICsgQXJyYXlQcm90b3R5cGVKb2lu
LmNhbGwoc3RhY2ssICJcbiIpOworICAgIH0gY2F0Y2ggKGUpIHt9OworICAgIHJldHVybiBlcnJv
ci5zdGFjazsKKyAgfQorfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFu
dXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZy
b20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NzUwMDE4NTc1OWM3MmU2YWNiMzJk
YjI2NmM2NzVlYTM0NWU1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vh
ay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CitsZXQgUmVhbG0gPSB7
IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMpID0+ICQuZXZhbFNjcmlwdC5jYWxs
KHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgpOworCitsZXQgY2xlYW51cCA9IFJl
YWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBmdW5jdGlvbiBjbGVhbnVwKCkgeyBzdG9y
ZWRfZ2xvYmFsID0gZ2xvYmFsVGhpczsgfSBjbGVhbnVwOyIpOworbGV0IHJlYWxtX2dsb2JhbF90
aGlzID0gUmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIGEgcmVn
aXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisv
LyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhl
bSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7
CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0KTsK
KyAgICB9Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5j
dGlvbiB3YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlv
bigpIHsKKyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFs
OyIpOworICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFz
c2VydEVxdWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRp
bWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNs
ZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNGQwMjQ3
ZTI3MTBkYTQ4NWM5MjU3MmFiYTljMjc2Y2RlZjM1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0w
LDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8g
Q29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8v
IEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1t
YXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0
aXZlIik7CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMp
ID0+ICQuZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgp
OworCitsZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBsZXQg
Y2xlYW51cCA9IG5ldyBQcm94eShmdW5jdGlvbigpIHsgc3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRo
aXM7fSwge30pOyBjbGVhbnVwIik7CitsZXQgcmVhbG1fZ2xvYmFsX3RoaXMgPSBSZWFsbS5ldmFs
KHIsICJnbG9iYWxUaGlzIik7CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShj
bGVhbnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZp
bmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBj
bG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkg
eworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmpl
Y3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiKTsKKyAgICB9
Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3
YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFsOyIpOwor
ICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFzc2VydEVx
dWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbi1yZWdpc3RyeS1iYXNpY3MuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24t
cmVnaXN0cnktYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NjE2YTUwMjFhY2E3NTUxYzgxMTllYjYx
ZWZlOTQ3YjUxMmMzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5h
bGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTUyIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2
ZSIpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgewor
ICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBhc3NlcnRF
cXVhbHMoZmcudG9TdHJpbmcoKSwgIltvYmplY3QgRmluYWxpemF0aW9uUmVnaXN0cnldIik7Cisg
IGFzc2VydE5vdFNhbWUoZmcuX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKKyAgYXNzZXJ0
U2FtZShmZy5fX3Byb3RvX18uX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKK30pKCk7CisK
KyhmdW5jdGlvbiBUZXN0RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0
aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRy
eSB7CisgICAgbGV0IGYgPSBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICBtZXNzYWdlID0gZS5tZXNzYWdlOworICAgIGNhdWdodCA9IHRydWU7Cisg
IH0gZmluYWxseSB7CisgICAgYXNzZXJ0VHJ1ZShjYXVnaHQpOworICB9Cit9KSgpOworCisoZnVu
Y3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxl
KCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0
IGJlIGNhbGxhYmxlIjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KCk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93
cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgxKTsgfSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KG51bGwpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsKKwor
KGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhDYWxsYWJsZVBy
b3h5QXNDbGVhbnVwKCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0gKCkgPT4g
e307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkocHJveHkpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RD
b25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXNDbGVhbnVw
KCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0
IGJlIGNhbGxhYmxlIjsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBs
ZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsgfSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRoTm9uT2JqZWN0
VGFyZ2V0KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30p
OworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0
ZXI6IHRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5y
ZWdpc3RlcigxLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnJlZ2lzdGVyKGZhbHNlLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNz
YWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKCJmb28iLCAiaG9sZGluZ3Mi
KSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVy
KFN5bWJvbCgpLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnJlZ2lzdGVyKG51bGwsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3Nh
Z2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIodW5kZWZpbmVkLCAiaG9sZGlu
Z3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0
ZXJXaXRoUHJveHkoKSB7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsKKyAg
bGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGZnLnJlZ2lzdGVyKHByb3h5KTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJUYXJnZXRBbmRIb2xkaW5nc1NhbWVWYWx1ZSgpIHsK
KyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IG9i
aiA9IHthOiAxfTsKKyAgLy8gU2FtZVZhbHVlKHRhcmdldCwgaG9sZGluZ3MpIG5vdCBvaworICBh
c3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIob2JqLCBvYmopLCBUeXBlRXJyb3IsCisgICAg
ICAgICAgICAgICAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyOiB0YXJn
ZXQgYW5kIGhvbGRpbmdzIG11c3Qgbm90IGJlIHNhbWUiKTsKKyAgbGV0IGhvbGRpbmdzID0ge2E6
IDF9OworICBmZy5yZWdpc3RlcihvYmosIGhvbGRpbmdzKTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0UmVnaXN0ZXJXaXRob3V0RmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93
cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXIuY2FsbCh7fSwg
e30sICJob2xkaW5ncyIpLCBUeXBlRXJyb3IpOworICAvLyBEb2VzIG5vdCB0aHJvdzoKKyAgbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgRmluYWxpemF0aW9u
UmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwoZmcsIHt9LCAiaG9sZGluZ3MiKTsKK30p
KCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSgpIHsKKyAg
bGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IHN1Y2Nl
c3MgPSBmZy51bnJlZ2lzdGVyKHsiayI6ICJ3aGF0ZXZlciJ9KTsKKyAgYXNzZXJ0RmFsc2Uoc3Vj
Y2Vzcyk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRmluYWxpemF0
aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3Ry
eS5wcm90b3R5cGUudW5yZWdpc3Rlci5jYWxsKHt9LCB7fSksCisgICAgICAgICAgICAgICBUeXBl
RXJyb3IpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbk9iamVjdFVu
cmVnaXN0ZXJUb2tlbigpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgp
ID0+IHt9KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoMSksIFR5cGVFcnJv
cik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKEJpZ0ludCgxKSksIFR5cGVF
cnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKCdvbmUnKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoU3ltYm9sKCkpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih0cnVlKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoZmFsc2UpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih1bmRlZmluZWQpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihudWxsKSwgVHlwZUVy
cm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yKCkgeworICBs
ZXQgd3IgPSBuZXcgV2Vha1JlZih7fSk7CisgIGFzc2VydEVxdWFscyh3ci50b1N0cmluZygpLCAi
W29iamVjdCBXZWFrUmVmXSIpOworICBhc3NlcnROb3RTYW1lKHdyLl9fcHJvdG9fXywgT2JqZWN0
LnByb3RvdHlwZSk7CisKKyAgbGV0IGRlcmVmX2Rlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHdyLl9fcHJvdG9fXywgImRlcmVmIik7CisgIGFzc2VydEVxdWFscyh0cnVlLCBk
ZXJlZl9kZXNjLmNvbmZpZ3VyYWJsZSk7CisgIGFzc2VydEVxdWFscyhmYWxzZSwgZGVyZWZfZGVz
Yy5lbnVtZXJhYmxlKTsKKyAgYXNzZXJ0RXF1YWxzKCJmdW5jdGlvbiIsIHR5cGVvZiBkZXJlZl9k
ZXNjLnZhbHVlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0
aE5vbk9iamVjdCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiV2Vha1JlZjogdGFyZ2V0IG11c3QgYmUg
YW4gb2JqZWN0IjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCksIFR5cGVFcnJv
ciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigxKSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKGZhbHNlKSwg
VHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCJm
b28iKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFr
UmVmKFN5bWJvbCgpKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IG5ldyBXZWFrUmVmKG51bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3Mo
KCkgPT4gbmV3IFdlYWtSZWYodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24oKSB7Cisg
IGxldCBjYXVnaHQgPSBmYWxzZTsKKyAgbGV0IG1lc3NhZ2UgPSAiIjsKKyAgdHJ5IHsKKyAgICBs
ZXQgZiA9IFdlYWtSZWYoe30pOworICB9IGNhdGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVz
c2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOworICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUo
Y2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RXZWFrUmVmV2l0aFByb3h5KCkg
eworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5l
dyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgd3IgPSBuZXcgV2Vha1JlZihwcm94eSk7Cit9
KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
YW5kLXdlYWtyZWYuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1h
bmQtd2Vha3JlZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGRhOGEwYzlmZWZjOWQxZGUyNjk1YjIzZDUyMDE0
MjhmYjI2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0
aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJl
ZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJj
ZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2Fs
bGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGxldCBo
b2xkaW5nc19saXN0ID0gW107CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGFz
c2VydEVxdWFscygxLCBob2xkaW5nc19saXN0Lmxlbmd0aCk7CisgIGFzc2VydEVxdWFscygiaG9s
ZGluZ3MiLCBob2xkaW5nc19saXN0WzBdKTsKKyAgY2xlYW51cF9jYWxsZWQgPSB0cnVlOworfQor
CitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQgd2Vha19y
ZWZzID0gW107CisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyAr
K2kpIHsKKyAgICAgICAgbGV0IG8gPSB7fTsKKyAgICAgICAgd2Vha19yZWZzLnB1c2gobmV3IFdl
YWtSZWYobykpOworICAgICAgICBmZy5yZWdpc3RlcihvLCAiaG9sZGluZ3MiKTsKKyAgICB9Cit9
KSgpOworCisvLyBTaW5jZSB0aGUgV2Vha1JlZiB3YXMgY3JlYXRlZCBkdXJpbmcgdGhpcyB0dXJu
LCBpdCBpcyBub3QgY2xlYXJlZCBieSBHQy4gVGhlCisvLyBwb2ludGVyIGluc2lkZSB0aGUgRmlu
YWxpemF0aW9uUmVnaXN0cnkgaXMgbm90IGNsZWFyZWQgZWl0aGVyLCBzaW5jZSB0aGUgV2Vha1Jl
ZgorLy8ga2VlcHMgdGhlIHRhcmdldCBvYmplY3QgYWxpdmUuCitnYygpOworKGZ1bmN0aW9uKCkg
eworICAgIHdlYWtfcmVmcy5mb3JFYWNoKCh3ZWFrX3JlZikgPT4gYXNzZXJ0RXF1YWxzKCJvYmpl
Y3QiLCB0eXBlb2Yod2Vha19yZWYuZGVyZWYoKSkpKTsKK30pKCk7CisKKy8vIFRyaWdnZXIgZ2Mg
aW4gbmV4dCB0YXNrCitzZXRUaW1lb3V0KCgpID0+IHsKKyAgICBnYygpOworCisgICAgLy8gQ2hl
Y2sgdGhhdCBjbGVhbnVwIGNhbGxiYWNrIHdhcyBjYWxsZWQgaW4gYSBmb2xsb3cgdXAgdGFzawor
ICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVk
KTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh3ZWFrX3JlZnMuc29tZSgod2Vha19yZWYpID0+IHdlYWtf
cmVmLmRlcmVmKCkgPT09IG51bGwpKTsKKyAgICB9LCAwKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxp
dmUuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xk
aW5ncy1hbGl2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDJjNGJiOGVlODRlMDEwYjc0ZDZkZWIzNWEwY2Zh
Y2YxNmQ0OTNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0
aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMKQEAgLTAsMCArMSw0NyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0
aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9u
eS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgi
Li9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNs
ZWFudXBfY2FsbGVkID0gZmFsc2U7CitsZXQgaG9sZGluZ3NfbGlzdCA9IFtdOworbGV0IGNsZWFu
dXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7
CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1
ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0
IG8xID0ge307CitsZXQgaG9sZGluZ3MgPSB7J2EnOiAndGhpcyBpcyB0aGUgaG9sZGluZ3Mgb2Jq
ZWN0J307CisKKy8vIElnbml0aW9uIGhvbGRzIHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1w
b3JhcnkgcmVnaXN0ZXJzLiBUaGVzZSB3aWxsIGJlCisvLyByZWxlYXNlZCB3aGVuIHRoZSBmdW5j
dGlvbiBleGl0cy4gU28gb25seSBhY2Nlc3MgbyBpbnNpZGUgYSBmdW5jdGlvbiB0bworLy8gcHJl
dmVudCBhbnkgcmVmZXJlbmNlcyB0byBvYmplY3RzIGluIHRlbXBvcmFyeSByZWdpc3RlcnMgd2hl
biBhIGdjIGlzCisvLyB0cmlnZ2VyZWQuCisoKCkgPT4ge2ZnLnJlZ2lzdGVyKG8xLCBob2xkaW5n
cyk7fSkoKQorCitnYygpOworYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQpOworCisvLyBEcm9w
IHRoZSBsYXN0IHJlZmVyZW5jZXMgdG8gbzEuCisoKCkgPT4ge28xID0gbnVsbDt9KSgpCisKKy8v
IERyb3AgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBob2xkaW5ncy4gVGhlIEZpbmFsaXphdGlv
blJlZ2lzdHJ5IGtlZXBzIGl0CisvLyBhbGl2ZSwgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQgYXMgbm9ybWFsLgoraG9sZGluZ3MgPSBudWxsOworZ2MoKTsKK2Fzc2VydEZh
bHNlKGNsZWFudXBfY2FsbGVkKTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgewor
ICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVkKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xp
c3QubGVuZ3RoLCAxKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xpc3RbMF0uYSwgInRoaXMg
aXMgdGhlIGhvbGRpbmdzIG9iamVjdCIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywg
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1z
Y2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92
OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGlt
ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2Q4Yzk2Mzk3NWQyZWNmYjg3NzY1OTJjZGI1NWZlODUzNzI3OWMy
MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5qcwpAQCAtMCwwICsxLDg1
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdo
dCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczog
LS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZwor
Ly8gRmxhZ3M6IC0tbm8tc3RyZXNzLWZsdXNoLWJ5dGVjb2RlCisKK2xvYWQoIi4vcmVzb3VyY2Vz
L3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwMF9jYWxs
X2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVh
bnVwMF8xX2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAxX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAxXzFfaG9s
ZGluZ3NfY291bnQgPSAwOworCitsZXQgY2xlYW51cDAgPSBmdW5jdGlvbihob2xkaW5ncykgewor
ICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0gIjAiKQorICAgICsrY2xlYW51
cDBfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xlYW51cDBfMV9ob2xkaW5nc19j
b3VudDsKKyAgKytjbGVhbnVwMF9jYWxsX2NvdW50OworfQorCitsZXQgY2xlYW51cDEgPSBmdW5j
dGlvbihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0g
IjAiKQorICAgICsrY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xl
YW51cDFfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwMV9jYWxsX2NvdW50OworfQorCits
ZXQgZmcwID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAwKTsKK2xldCBmZzEgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cDEpOworCisvLyBSZWdpc3RlciAxIHdlYWsg
cmVmZXJlbmNlIGZvciBlYWNoIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGFuZCBraWxsIHRoZSBvYmpl
Y3RzIHRoZXkgcG9pbnQgdG8uCisoZnVuY3Rpb24oKSB7CisgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7CisgICAgLy8gVGhlIG9iamVjdHMgbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9z
dXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbS4KKyAgICBsZXQgb2JqZWN0cyA9
IFtdOworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisKKyAgICBm
ZzAucmVnaXN0ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0wIik7CisgICAgZmcxLnJlZ2lzdGVy
KG9iamVjdHNbMV0sICJob2xkaW5nczEtMCIpOworCisgICAgLy8gRHJvcCB0aGUgcmVmZXJlbmNl
cyB0byB0aGUgb2JqZWN0cy4KKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisKKy8vIFdp
bGwgc2NoZWR1bGUgYm90aCBmZzAgYW5kIGZnMSBmb3IgY2xlYW51cC4KK2djKCk7CisKKy8vIEJl
Zm9yZSB0aGUgY2xlYW51cCB0YXNrIGhhcyBhIGNoYW5jZSB0byBydW4sIGRvIHRoZSBzYW1lIHRo
aW5nIGFnYWluLCBzbyBib3RoCisvLyBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIGFyZSAoYWdhaW4p
IHNjaGVkdWxlZCBmb3IgY2xlYW51cC4gVGhpcyBoYXMgdG8gYmUgYSBJSUZFIGZ1bmN0aW9uCisv
LyAoc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGUgb2JqZWN0cykgc28gd2UgY2Fubm90
IHVzZSB0aGUgc2FtZSBmdW5jdGlvbgorLy8gYXMgYmVmb3JlLgorKGZ1bmN0aW9uKCkgeworICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGxldCBvYmplY3RzID0gW107Cisg
ICAgb2JqZWN0c1swXSA9IHt9OworICAgIG9iamVjdHNbMV0gPSB7fTsKKyAgICBmZzAucmVnaXN0
ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0xIik7CisgICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNb
MV0sICJob2xkaW5nczEtMSIpOworICAgIG9iamVjdHMgPSBbXTsKKyAgfQorfSkoKTsKKworZ2Mo
KTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMo
MCwgY2xlYW51cDBfY2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8w
X2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwXzFfaG9sZGlu
Z3NfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfY2FsbF9jb3VudCk7Cisg
IGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0
Tm90RXF1YWxzKDAsIGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQpOworfQorCisvLyBHaXZlIHRo
ZSBjbGVhbnVwIHRhc2sgYSBjaGFuY2UgdG8gcnVuLgorc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMs
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxp
emF0aW9uLXJlZ2lzdHJpZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1m
aW5hbGl6YXRpb24tcmVnaXN0cmllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTA3M2EwMzFkYjA2Y2NkMzAy
NmQ4ZjI0ZjEyN2ZhZGRiODk4YWM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
djgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKQEAgLTAsMCArMSw1
MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmln
aHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6
IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcK
KworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsK
KworbGV0IGNsZWFudXBfY2FsbF9jb3VudDEgPSAwOworbGV0IGNsZWFudXBfY2FsbF9jb3VudDIg
PSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGlmIChob2xkaW5n
cyA9PT0gImhvbGRpbmdzMSIpCisgICAgICAgICsrY2xlYW51cF9jYWxsX2NvdW50MTsKKyAgICBl
bHNlIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdzMiIpCisgICAgICAgICsrY2xlYW51cF9jYWxs
X2NvdW50MjsKKyAgICBlbHNlCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCitsZXQg
ZmcxID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGZnMiA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRlIHR3byBvYmplY3RzIGFu
ZCByZWdpc3RlciB0aGVtIGluIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZSBvYmplY3RzIG5l
ZWQKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2ls
bCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyAr
K2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcxLnJlZ2lzdGVyKG9i
amVjdDEsICJob2xkaW5nczEiKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAg
ICBmZzIucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIpOworICAgIH0KKyAgICAvLyBvYmpl
Y3QxIGFuZCBvYmplY3QyIGdvIG91dCBvZiBzY29wZS4KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2ls
bCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOwor
YXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDEpOworYXNzZXJ0RXF1YWxzKDAsIGNs
ZWFudXBfY2FsbF9jb3VudDIpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlv
biB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2Vy
dE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKKyAgICBhc3NlcnROb3RFcXVhbHMo
MCwgY2xlYW51cF9jYWxsX2NvdW50Mik7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFu
dXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhOTdkYWE0ZDFkMjY1MjQ4MjIwMmQxMWI1YjJjYmM0NWNiMjcyMTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVw
LmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0x
IikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNy
ZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2Fs
bGVyIHJlbGF0aXZlIik7CisKK2xldCBjYWxsZWQgPSBmYWxzZTsKK2xldCByZWVudHJhbnRfZ2Mg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGdjKCk7CisgICAgY2FsbGVkID0gdHJ1ZTsKK30K
KworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHJlZW50cmFudF9nYyk7CisKKyhm
dW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIGZn
LnJlZ2lzdGVyKHt9LCA0Mik7Cit9KSgpOworCitnYygpOworCitzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydFRydWUoY2FsbGVkKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3MtZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHktZW5x
dWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTI0ZTJjZDNlYzc2ZDVjODk1MWNkMmZhMGE1MWE4NWZkMDgw
OTgxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXph
dGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAyMCB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0tc3RyZXNzLWNvbXBh
Y3Rpb24gLS1leHBvc2UtZ2MKKworLy8gVGVzdCB0aGF0IHRoZSBkaXJ0eSBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzIHRoYXQgYXJlIGVucXVldWVkIGR1cmluZyBHQyBoYXZlCisvLyB0aGVpciBzbG90
cyBjb3JyZWN0bHkgcmVjb3JkZWQgYnkgdGhlIEdDLgorCisvLyAxKSBDcmVhdGUgbWFueSBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5IG9iamVjdHMgc28gdGhhdCB0aGV5IHNwYW4gc2V2ZXJhbCBwYWdl
cworLy8gKHBhZ2Ugc2l6ZSBpcyAyNTZrYikuCitsZXQgcmVnaXN0cmllcyA9IFtdOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDI0ICogODsgaSsrKSB7CisgIHJlZ2lzdHJpZXMucHVzaChuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pKTsKK30KKworLy8gMikgRm9yY2UgdHdvIEdDcyB0
byBlbnN1cmUgdGhhdCBKU0ZpbmFsaXphdG9uUmVnaXN0cnkgb2JqZWN0cyBhcmUgdGVudXJlZC4K
K2djKCk7CitnYygpOworCisvLyAzKSBJbiBhIGZ1bmN0aW9uOiBjcmVhdGUgYSBkdW1teSB0YXJn
ZXQgYW5kIHJlZ2lzdGVyIGl0IGluIGFsbAorLy8gSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVj
dHMuCisoZnVuY3Rpb24oKSB7CisgIGxldCBnYXJiYWdlID0ge307CisgIHJlZ2lzdHJpZXMuZm9y
RWFjaCgoZnIpID0+IHsKKyAgICBmci5yZWdpc3RlcihnYXJiYWdlLCA0Mik7CisgIH0pOworICBn
YXJiYWdlID0gbnVsbDsKK30pKCk7CisKKy8vIDQpIE91dHNpZGUgdGhlIGZ1bmN0aW9uIHdoZXJl
IHRoZSB0YXJnZXQgaXMgdW5yZWFjaGFibGU6IGZvcmNlIEdDIHRvIGNvbGxlY3QKKy8vIHRoZSBv
YmplY3QuCitnYygpOworCisvLyA1KSBGb3JjZSBhbm90aGVyIEdDIHRvIHRlc3QgdGhhdCB0aGUg
c2xvdCB3YXMgY29ycmVjdGx5IHVwZGF0ZWQuCitnYygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZp
bmVkLWhvbGRpbmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzYwY2ZkYTc3ZjBhZmNhMWI1Y2I5ZmRkYWZl
YWMwZDkwNzUwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmlu
ZWQtaG9sZGluZ3MuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2Ut
Z2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7
CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICAgYXNzZXJ0RXF1YWxzKGhv
bGRpbmdzLCB1bmRlZmluZWQpOworICAgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQg
ZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBv
YmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lz
dGVyKG9iamVjdCk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhl
IHRhcmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1
bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYWZ0ZXItY2xlYW51cC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXIt
Y2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDcyYjBmOGIzYmI4ZWJhNjkwYTE2MGQxNjM4ZDM5ZTQz
ZjQ3MmQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1h
ZnRlci1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhv
bGRpbmdzIiwgaG9sZGluZ3MpOworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0
aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGlu
IHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5z
aWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5j
dGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBs
ZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwg
a2V5KTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0
IG9iamVjdCBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24g
d2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRO
b3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKyAgICBsZXQgb2xkX2NsZWFudXBfY2Fs
bF9jb3VudCA9IGNsZWFudXBfY2FsbF9jb3VudDsKKworICAgIC8vIFVucmVnaXN0ZXIgYW4gYWxy
ZWFkeSBjbGVhbmVkLXVwIHdlYWsgcmVmZXJlbmNlLgorICAgIGxldCBzdWNjZXNzID0gZmcudW5y
ZWdpc3RlcihrZXkpOworICAgIC8vIFNpbmNlIHdlIG1heSBub3QgY29sbGVjdCBldmVyeXRoaW5n
IHdlIGRvbid0IGtub3cgd2hhdCBzdWNjZXNzIHdpbGwgYmUgdW5saWtlIHY4LgorICAgIC8vIGFz
c2VydEZhbHNlKHN1Y2Nlc3MpOworCisgICAgLy8gQXNzZXJ0IHRoYXQgaXQgZGlkbid0IGRvIGFu
eXRoaW5nLgorICAgIHNldFRpbWVvdXQoKCkgPT4geyBhc3NlcnRFcXVhbHMob2xkX2NsZWFudXBf
Y2FsbF9jb3VudCwgY2xlYW51cF9jYWxsX2NvdW50KTsgfSwgMCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYmVmb3JlLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9y
ZS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDFlM2VjNmEzYWViZmM3ODc2YzdkZGFmN2Q3ZGI4
YzE1M2ZlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVy
LWJlZm9yZS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisK
K2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisK
K2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xk
aW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBr
ZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6
YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3Vy
ZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAg
bGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJteSBob2xkaW5ncyIsIGtl
eSk7CisKKyAgLy8gQ2xlYXIgdGhlIFdlYWtDZWxsIGJlZm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNl
IHRvIGRpc2NvdmVyIGl0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAg
YXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9
KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7
Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQg
dGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5jZSB3ZSBjYWxsZWQgdW5y
ZWdpc3Rlci4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzhlZmU4MjRiNmM3NGEwNThjYjFkMWViMzg3MWVjZTViYWY4YmE3MwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCkBA
IC0wLDAgKzEsNDYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRh
bC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJl
bGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBm
dW5jdGlvbihob2xkaW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0
aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGlu
IHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5z
aWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5j
dGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xk
aW5ncyIsIGtleSk7CisKKyAgLy8gVW5yZWdpc3RlciBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5j
ZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIo
a2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBDYWxsIHVucmVnaXN0ZXIgYWdh
aW4gKGp1c3QgdG8gYXNzZXJ0IHdlIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkpLgorICBzdWNjZXNz
ID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAvLyBv
YmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFp
bSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxs
X2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUg
Y2FsbGVkLCBzaW5jZSB0aGUgd2VhayByZWZlcmVuY2UKKy8vIHdhcyB1bnJlZ2lzdGVyZWQuCits
ZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygwLCBjbGVhbnVw
X2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmViMjEyMjg2NjNhZDJjZWQ1OTY5NWE1M2M1YjNiMGU1ZjdjYjAwYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpAQCAt
MCwwICsxLDQ5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhv
bGRpbmdzKSB7CisgIC8vIFNlZSB3aGljaCB0YXJnZXQgd2UncmUgY2xlYW5pbmcgdXAgYW5kIHVu
cmVnaXN0ZXIgdGhlIG90aGVyIG9uZS4KKyAgaWYgKGhvbGRpbmdzID09IDEpIHsKKyAgICBsZXQg
c3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5Mik7CisgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzIHx8
IGNhbGxlZCk7CisgIH0gZWxzZSB7CisgICAgYXNzZXJ0U2FtZShob2xkaW5ncywgMik7CisgICAg
bGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgIGFzc2VydFRydWUoc3VjY2Vz
cyB8fCBjYWxsZWQpOworICB9CisgIGNhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkxID0geyJrIjogImZpcnN0IGtl
eSJ9OworbGV0IGtleTIgPSB7ImsiOiAic2Vjb25kIGtleSJ9OworLy8gQ3JlYXRlIHR3byBvYmpl
Y3RzIGFuZCByZWdpc3RlciB0aGVtIGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdHMKKy8vIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0MSA9IHt9OworICAgICAgICBmZy5yZWdp
c3RlcihvYmplY3QxLCAxLCBrZXkxKTsKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAg
ICAgZmcucmVnaXN0ZXIob2JqZWN0MiwgMiwga2V5Mik7CisgICAgfQorfSkoKTsKKworLy8gVGhp
cyBHQyB3aWxsIHJlY2xhaW0gdGFyZ2V0IG9iamVjdHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitn
YygpOworYXNzZXJ0RmFsc2UoY2FsbGVkKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAg
ZnVuY3Rpb24gd2FzIGNhbGxlZCBhbmQgY2xlYW5lZCB1cCBvbmUgaG9sZGluZ3MgKGJ1dCBub3Qg
dGhlIG90aGVyIG9uZSkuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0VHJ1ZShjYWxsZWQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI3ZmFhN2I2ZTNjNDNiZjJiMTI4NjZmMjQwY2M2ZWFjMTg3ZDIxYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpA
QCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwX2hv
bGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAg
YXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCAiaG9sZGluZ3MiKTsKKworICAvLyBUaGVyZSdzIG1vcmVz
IG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleSB0aGF0IHdlIGhhdmVuJ3QKKyAgLy8gY2xlYW5lZCB1
cCB5ZXQgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gdW5yZWdpc3RlciB0aGUKKyAgLy8gY2FsbGJh
Y2sgZm9yIHRoYXQgb25lLgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKwor
ICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworCisgICsrY2xlYW51cF9ob2xkaW5nc19jb3VudDsKKyAg
KytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShjbGVhbnVwKTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRo
ZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8v
IGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCitsZXQga2V5ID0g
eyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAg
ICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5n
cyIsIGtleSk7CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5ncyIsIGtleSk7
CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIGRpc2NvdmVyIGRpcnR5IFdlYWtDZWxs
cyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9j
YWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNh
bGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxzKDEs
IGNsZWFudXBfY2FsbF9jb3VudCk7CisgIGFzc2VydEVxdWFscygxLCBjbGVhbnVwX2hvbGRpbmdz
X2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
dW5yZWdpc3Rlci1tYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MzM5OWU2NWYwZDI3NDI2MDhiMTM4NDZk
NWE1ZDkxN2FiMzdlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJl
Z2lzdGVyLW1hbnkuanMKQEAgLTAsMCArMSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2Ut
Z2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7
CitsZXQgY2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9u
KGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MyIiwgaG9sZGluZ3MpOworICAr
K2NsZWFudXBfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCits
ZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsi
ayI6ICJrZXkxIn07CitsZXQga2V5MiA9IHsiayI6ICJrZXkyIn07CisvLyBDcmVhdGUgdGhyZWUg
b2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRo
ZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4g
cmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDFhID0ge307CisgICAgICAgIGZn
LnJlZ2lzdGVyKG9iamVjdDFhLCAiaG9sZGluZ3MxYSIsIGtleTEpOworCisgICAgICAgIGxldCBv
YmplY3QxYiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxYiwgImhvbGRpbmdzMWIi
LCBrZXkxKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3Rl
cihvYmplY3QyLCAiaG9sZGluZ3MyIiwga2V5Mik7CisKKyAgICAgICAgLy8gVW5yZWdpc3RlciBi
ZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0cy4KKyAgICAg
ICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgICAgICBhc3NlcnRUcnVl
KHN1Y2Nlc3MpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0
YXJnZXQgb2JqZWN0cy4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50
KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQg
b25seSBmb3IgdGhlIHJlZmVyZW5jZSB3aGljaAorLy8gd2FzIG5vdCB1bnJlZ2lzdGVyZWQuCits
ZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVh
bnVwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9ob2xkaW5nc19j
b3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtd2Vhay11bnJlZ2lzdGVydG9rZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZTgwMGFhMmFjZTA5ZjZm
Mjk1MmU0ZTk3Y2I1Njk4MWVhMmUzZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1y
ZWZzLXdpdGgtY2xlYW51cC1zb21lIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CisKK3ZhciBGUiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSAoZnVuY3Rpb24gKGhvbGRpbmdz
KSB7IGdsb2JhbFRoaXMuRlJSYW4gPSB0cnVlOyB9KTsKK3sKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqID0ge307CisgICAgICAgIC8vIG9iaiBp
cyBpdHMgb3duIHVucmVnaXN0ZXIgdG9rZW4gYW5kIGJlY29tZXMgdW5yZWFjaGFibGUgYWZ0ZXIg
dGhpcworICAgICAgICAvLyBibG9jay4gSWYgdGhlIHVucmVnaXN0ZXIgdG9rZW4gaXMgaGVsZCBz
dHJvbmdseSB0aGlzIHRlc3Qgd2lsbCBub3QKKyAgICAgICAgLy8gdGVybWluYXRlLgorICAgICAg
ICBGUi5yZWdpc3RlcihvYmosIDQyLCBvYmopOworICAgIH0KK30KKworbGV0IHRyeUFnYWluQ291
bnQgPSAxMDsKK2Z1bmN0aW9uIHRyeUFnYWluKCkgeworICAgIGdjKCk7CisgICAgaWYgKGdsb2Jh
bFRoaXMuRlJSYW4pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIS0tdHJ5QWdhaW5Db3VudCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgc2V0VGltZW91dCh0cnlBZ2FpbiwgMCk7
Cit9Cit0cnlBZ2FpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404733</attachid>
            <date>2020-07-20 11:46:37 -0700</date>
            <delta_ts>2020-07-20 11:47:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199888-20200720114636.patch</filename>
            <type>text/plain</type>
            <size>193305</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGJhMmZhZGUwNDJkODZmOWVkYzExNTZkMGQ4NjQyY2JmYzUwZTk3Li5jZjRlMzU3YmQ1MjgzMGQy
YWUxNDNmMjliMWU4OWQzN2ZjOTE3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZXJlIGFyZSB0d28K
KyAgICAgICAgbWFpbiBwYXJ0cyB0byB0aGlzIHBhdGNoLCB0aGUgZmlyc3QgaXMgcmVmYWN0b3Jp
bmcgUHJvbWlzZVRpbWVyIGEKKyAgICAgICAgbW9yZSBnZW5lcmFsIGludG8gRGVmZXJyZWRXb3Jr
VGltZXIuIFRoaXMgYWxsb3dzIHVzIHRvIGZpbmFsbHkKKyAgICAgICAgaGF2ZSBhICJyZWFsIiBz
ZXRUaW1lb3V0IG9uIHRoZSBqc2MgY29tbWFuZCBsaW5lLiBUaGUgc2Vjb25kIHBhcnQKKyAgICAg
ICAgaXMgYWRkaW5nIGFsbCB0aGUgbmV3IGNsYXNzZXMgbmVlZGVkIGZvciBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBpcyBtb3N0bHkgYSByZW5hbWUg
YnV0IGRvZXMgdHdvIG1haW4gbmV3CisgICAgICAgIHRoaW5ncy4gVGhlIGZpcnN0IGlzIHRoYXQg
aXQgbm93IG5vdGlmaWVzIHRoZSBWTSB3ZSBoYXZlIGZpbmlzaGVkCisgICAgICAgIGEgc3luY2hy
b251b3VzIEpTIGV4ZWN1dGlvbiwgc28gdGhhdCBXZWFrUmVmcyBjYW4gYmUKKyAgICAgICAgY29s
bGVjdGVkLiBUaGUgc2Vjb25kIGlzIHRoYXQgaXQgbm93IGNhdGNoZXMgYW55IGV4Y2VwdGlvbnMg
YW5kCisgICAgICAgIGZvcndhcmRzIHRoZSB0byBhIG5ldyBtZXRob2Qgb24gdGhlIGdsb2JhbCBv
YmplY3QgbWV0aG9kCisgICAgICAgIHRhYmxlLiBGb3IgV2ViQ29yZSwgdGhpcyByZXBvcnRzIHRo
ZSBleGNlcHRpb24gdG8gdGhlIGNvbnNvbGUuIEZvcgorICAgICAgICBBUEkgdXNlcnMsIHRoaXMg
Y2FsbHMgdGhlaXIgZXhjZXB0aW9uSGFuZGxlciBibG9jay4gRm9yIHRoZSBDTEksCisgICAgICAg
IGl0IGV4aXRzIHdpdGggZXhpdCBzdGF0dXMgMyAob3VyIGdlbmVyYWwgZXhjZXB0aW9uIGV4aXQK
KyAgICAgICAgc3RhdHVzKS4gVW5mb3J0dW5hdGVseSwgdGhlcmUncyBub3QgY3VycmVudGx5IGFu
IGVyZ29ub21pYyB3YXkgdG8KKyAgICAgICAgcGFzcyB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uIGZy
b20gdGhlIENMSSBhcmd1bWVudHMgdG8gdGhpcyBoYW5kbGVyCisgICAgICAgIHNvIHRoYXQncyBu
b3Qgc3VwcG9ydGVkIGhlcmUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBGaW5hbGl6
YXRpb25SZWdpc3RyeSB0aGlzIHBhdGNoIGFkZHMgYSAibmV3IgorICAgICAgICBjbGFzcyBKU0Rl
c3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsLCB3aGljaCBhbGxvd3MgdXMgdG8KKyAg
ICAgICAgaGF2ZSBhIGRlc3RydWN0aWJsZSBvYmplY3Qgd2l0aCBpbnRlcm5hbCBmaWVsZHMuIFNp
bmNlIHRoZSBvcmRlcgorICAgICAgICBvZiBjb2xsZWN0aW9uIGRvZXNuJ3QgbWF0dGVyIHdlIGN1
cnJlbnRseSB1c2UgQysrIEhhc2hUYWJsZXMgb24KKyAgICAgICAgdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBTaW5jZSB1c2VycyBjYW4gdW5yZWdpc3RlciBvYmplY3RzIHdoaWxlCisgICAgICAg
IHRoZSBjYWxsYmFjayBpcyBwZW5kaW5nIHdlIGhhdmUgYSBoYXNoIHRhYmxlIGZvciB0aGUgbGl2
ZSBlbnRyaWVzCisgICAgICAgIGFuZCBhIHNlY29uZCBoYXNoIHRhYmxlIGZvciB0aGUgZGVhZCBv
bmVzLiBMYXN0bHksIGJlY2F1c2UgdXNlcnMKKyAgICAgICAgYXJlIG5vdCByZXF1cmVkIHRvIHBy
b3ZpZGUgYSB0b2tlbiBmb3IgdW5yZWdpc3RyYXRpb24gd2UgaGF2ZSB0d28KKyAgICAgICAgZXh0
cmEgVmVjdG9ycyBjb250YWluaW5nIHRoZSBsaXZlL2RlYWQgb2JqZWN0cyB0aGF0IGFyZSBub3QK
KyAgICAgICAgdW5yZWdpc3RlcmlibGUuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvblNldFRpbWVvdXQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6YXRpb25S
ZWdpc3RyeUxpdmVDb3VudCk6CisgICAgICAgIChmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY2hlY2tVbmNhdWdodEV4Y2Vw
dGlvbik6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3ApOgorICAgICAgICAocnVuSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5jcHAuCisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsp
OgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVy
cmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRl
ZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKToKKyAgICAgICAgKiBydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpGaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAqIHJ1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jRmlu
YWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OnByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpydW5GaW5hbGl6YXRpb25DbGVhbnVwKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZGVhZENvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdGFja092ZXJmbG93RnJhbWVDYWxsZWUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjptYXBTZXRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnNldEFkZFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphcnJheUpvaW5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg6CisgICAgICAgICogcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCYXNlPjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNv
bHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6
OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRl
SUQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlN
b2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMC0wNy0xNyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIENsZWFuIHVwIHJlc29sdmVMb2Nh
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwODBlYzkxZWM2ZGNlZDFlZGNlNjg0ZThjNWRlNmIxNjRkZjIzZjI1
Li43NzcxNmEzOTkyYTI3MzM0MzQ1NTFiMDEwYzBkNGRiMDg1OTRjN2Q2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmVmYWN0
b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQcm9taXNlRGVmZXJyZWRUaW1lciB0byBEZWZlcnJlZFdv
cmtUaW1lci4KKworICAgICAgICBBbHNvLCBhZGQgZ2xvYmFsT2JqZWN0IGhvb2sgZm9yIHJlcG9y
dGluZyB1bmNhdWdodCBleGNlcHRpb25zIGZyb20gSlNDJ3MKKyAgICAgICAgcnVubG9vcCBjYWxs
YmFja3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRp
b25BdEV2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFtaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlhdGVTdHJlYW1pbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24p
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgICogd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorCiAyMDIwLTA3LTE3ICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJHTDJdIFJlYWRQaXhlbHMg
dXBkYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBkNzVjNThkNDk5YWM0NzI1NmVjOGRlN2RhMTI2MDFkM2M2MGE2MzM4Li40YWI1
NDdlOWRlMGRmOGVhNDcxNDVmMmFmZDU5ZmY1NjUzY2IzOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3Vh
Z2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5z
dGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9i
YWxPYmplY3QuaAppbmRleCA3Mzk3YzZiNGE2MGM2MmMzOGY0MGM2ODEwNzYxYzg1YzhmYzNjYzc0
Li44MTY3YzVjYzBiYzRhZmQ5N2M5ODU2NDk1M2RkZWQ0MzBjNzMzZTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCkBAIC01OSw2ICs1OSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9p
ZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhj
ZXB0aW9uKik7CisKICAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlcklt
cG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqIG1v
ZHVsZU5hbWVWYWx1ZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBTb3VyY2VPcmlnaW4mKTsK
ICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0
KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleVZhbHVlLCBKU1ZhbHVlIHJlZmVycmVyVmFs
dWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVy
RmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW0KaW5kZXggZDYxYWFjN2U0NWM1MzcyMDVhOGFjYTdlMDhlZmQ2OTRjYmVkYzQyMy4uZGRl
MmJkMzIzYmM3YjY1YjRmMDkwMjNiODdhZWEyN2IwNDIzNjM5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC02MiwxMyArNjIsMjAgQEAg
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlclJlc29sdmUsIC8vIG1vZHVs
ZUxvYWRlclJlc29sdmUKICAgICAmbW9kdWxlTG9hZGVyRmV0Y2gsIC8vIG1vZHVsZUxvYWRlckZl
dGNoCiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1
bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwotICAgIG1vZHVsZUxvYWRlckV2YWx1
YXRlLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQorICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwg
Ly8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9u
VHJhY2tlcgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51
bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1p
bmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwogfTsKIAordm9pZCBKU0FQ
SUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVm
OnRvR2xvYmFsUmVmKGdsb2JhbE9iamVjdCldOworICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlv
bjp0b1JlZihnbG9iYWxPYmplY3QtPnZtKCksIGV4Y2VwdGlvbi0+dmFsdWUoKSldOworfQorCiBz
dGF0aWMgRXhwZWN0ZWQ8VVJMLCBTdHJpbmc+IGNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcihj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgc3BlY2lmaWVyKQogewogICAgIFVSTCBhYnNv
bHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAzNmEwODMwZmE1MWU5YjIyOWE0ZWYzMThhOTBjOWU3NTIyYzBhYmU3Li4zNjc2NTkz
NzRlYjJkM2NiMzE0NjRhNWE5MTRlZWU5OGEyYWM5OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC04MzAsNiArODMwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0RhdGFWaWV3LmgKICAgICBydW50aW1l
L0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCisgICAgcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCiAgICAgcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaAogICAgIHJ1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKICAgICBydW50aW1lL0Rp
cmVjdEFyZ3VtZW50c09mZnNldC5oCkBAIC05NjgsNyArOTY5LDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL1BhcnNlSW50LmgKICAg
ICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgK
LSAgICBydW50aW1lL1Byb21pc2VUaW1lci5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAogICAgIHJ1bnRpbWUvUHJv
cGVydHlOYW1lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNkNzRjMjUyMmVh
MmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1Zi4uYTI2YTk5NzUyNTJkMDY1NDY2YmZhNjFhNWI1
YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkzMSwxNiAr
OTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIwMDYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEZERTczMjFG
QUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSAqLzsgfTsKIAkJNTMxMUJENEIxRUE1ODFF
NTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4u
aCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2
MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsgfTsKLQkJNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQy
IC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAq
LzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4
ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9
OworICAgICAgICAgICAgICAgIDUzMTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMx
ODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi87IH07CisgICAgICAg
ICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyog
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUzMzNCQkRDMjExMEY3RDkwMDc2MThFQyAvKiBERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3Bw
ICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0UxMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4
MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi87IH07Ci0J
CTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYy
Mzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1
MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5
NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzMzhFQkEzMjNBQjA0Qjgw
MDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZU
TFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87IH07Ci0JCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRE
NyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJG
RTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0
NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQy
RkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1
MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQz
QzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzEx
RTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNS
dW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVD
MDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NTFF
NzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBE
ZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisgICAgICAgICAgICAgICAgNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpT
VHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAw
MTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJh
eUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNz
Q2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCAqLzsgfTsKQEAgLTM1OTcsNiAr
MzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkFsbG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFF
QjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9
IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MDFGQTNFMzFDMDAyNkE1NDUgLyogU291
cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VzQ29jb2EudHh0OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MTFGQTNFMzFEMDAyNkE1NDUgLyog
U291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlcy50eHQ7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2NkFEMUZBM0U3NzcwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZp
ZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3ICszNjI2LDIyIEBACiAJCTUzMTgwNDVCMjJFQUFD
NEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0V4dHJhY3RW
YWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFjdFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzRXh0cmFj
dFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0RE
MjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7
IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyog
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3QjgxOTEgLyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9kdWxlLW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29y
ZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMzhFMkE2MjM5NkVG
RUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RUJBMjIzQUIwNEEzMDAzODI2NjIgLyogRlRMU2Vs
ZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRM
U2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0aCA9IGZ0bC9GVExTZWxlY3RQcmVkaWN0YWJpbGl0
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUw
MEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3Bz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZF
MiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQ2MjJDMkQ5
RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0
MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5j
cHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5M
b29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEy
QUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNlVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9taXNlVGltZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNU
eXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDYzODc0
MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdvcmtUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJyZWRXb3JrVGlt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDg2
QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJy
YXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFy
cmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBl
ZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJh
eUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJheUNUZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYgKzcxNDMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYz
NjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEz
NUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5jcHAgKi8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAw
RjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIw
MUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJCTczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFB
QTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAqLywKQEAgLTcxODQsMTEgKzcx
OTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJDRjI1MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2Uu
Y3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5o
ICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0EwMEFDNDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlubGlu
ZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVy
QWdlbnQuY3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNGQUQzMzIz
NzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAogCQkJCUNFQ0ZB
RDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNF
MjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICov
LAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJh
c2UuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDUyMkMyRDg3
RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovLAorCQkJ
CTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRFNkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJCQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyog
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLywKIAkJCQlBN0E4QUYyOTE3QURCNUYz
MDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAv
KiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxv
YXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgwQzAwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5j
dGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03MzQ1LDcgKzczNjIsMTMgQEAKIAkJCQkwRjdERjEz
OTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3Bw
ICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4
cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0
MzJBcnJheS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzAwNzQwQzIy
REQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5
ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkz
Nzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuaCAqLywKKwkJCQk3OTg5Mzc3NzFE
Q0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmggKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5o
ICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICov
LAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJ
CQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLApAQCAtNzU0NCw5
ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUu
aCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
Y3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3Bw
ICovLAotCQkJCTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLywK
LQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdGQjYwQTMxMDNGN0RDMjAwMTdB
Mjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQw
MDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLAogCQkJCTg2MTU4QUIyMTU1QzhC
M0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKQEAgLTkyODYsNiArOTMwNyw3IEBACiAJ
CQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0IC8qIERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZl
cnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNDYzODc1MUU3MERERUMwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3
NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVC
eUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTI2LDkgKzk1NDgsMTEgQEAKIAkJCQkw
RjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZCMTAwMjJCRjZEIC8qIEZhc3RKSVRQZXJtaXNzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUNGQUQz
NzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1
OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMjBCRDA1
MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJE
Nzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1Nyw3ICs5ODgxLDggQEAKIAkJCQlGRTM4NEVFNjFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2
MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0
QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ3MjJDMkQ5RDIw
MDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3
OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURDNjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9m
aWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8q
IFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQw
MEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4
NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVy
cyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAw
QzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEw
MDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5h
bWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAy
YTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0YzI3MDUuLjJhMjg3YTdmZGRiMDgwNGYzYjYw
MTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc4
Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAogcnVudGltZS9FeGVjdXRh
YmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0Zp
bGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKK3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAKQEAgLTg1MCw2ICs4
NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcuY3BwCiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTkzMiw3ICs5MzUsNyBAQCBydW50aW1lL09wZXJh
dGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3Jl
YXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCi1ydW50
aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcAogcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRl
eCAxODRiYjk0NDQxZDNmYTQzMzQyYWZiZjk2NjVjYzFiZTczOWVlMDEzLi5kODFhZGVmZjVmODQy
NmE4NTMyNDJjNGU3YTE3YjU3YTY1MjFjNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxN
YWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dl
YWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2MTIsOCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2Up
OwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1h
cmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJ
bnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2Up
CisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDJlMGQwYTMwZGY1ZjY1MzA4ZTdhOWZjZWI5
NjQzNGEyOTdmMTgzMTkuLmM5YmVlZDlmYTgyMzRmMWExMDYyMWYzMTM2MjBiYmNhZjU2MjlkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29tcGls
ZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb25m
aWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNh
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTU2LDcgKzU4
LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVy
cm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb21pc2VU
aW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFwQWNjZXNzU2NvcGUuaCIKICNpbmNsdWRlICJT
YW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0xNTUsNiAr
MTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIHsKIAorI2RlZmluZSBF
WElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIHN0YXRpYyB2b2lkIGpzY0V4
aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsK
QEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBXb3JrZXJzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYsIGJvb2wgaXNXb3JrZXIsIGNvbnN0
IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wg
aXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9v
bCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBi
b29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlLCBjb25zdCBDb21tYW5k
TGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBjbGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1YmxpYzoKQEAgLTMwMiw3ICszMDUsMTAgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIo
SlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNG
b3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklz
MzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDggKzU0NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5
cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFp
bk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWluTWljcm90YXNrcywgMCk7Ci0gICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDAp
OworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVv
dXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVu
Y3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFs
aXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50IiwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxp
dmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0
cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50LCAwKTsK
KyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0UmFuZG9tU2VlZCIsIGZ1bmN0
aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0UmFuZG9t
U2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUsIDEpOwpAQCAtNjM4LDYgKzY0OCw4IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9i
amVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAg
c3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVj
dCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3Rh
dGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0ds
b2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBK
U1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KTsKIApAQCAt
NjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVj
dDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRl
SW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVh
dGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5n
dWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBp
bnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIxODcsNiArMjIwMCwyOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFu
eSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBkb24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0
ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sgPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2
bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3Vt
ZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsKKworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBs
b29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBzY2hl
ZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGlu
Z1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hl
ZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2FsbGJhY2tdIHsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywganNVbmRlZmluZWQo
KSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2VlIHRoaXMuLi4iKTsKKyAgICAgICAgdm0uZGVmZXJy
ZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKGNhbGxiYWNrKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVD
b3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkg
PSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5hbGl6YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50
IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lzdHJ5Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxpemF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChs
b2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxp
emF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3Ry
eSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5
LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFs
aXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQobG9ja2VyKSkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjYxNywxMCArMjY3OSwxMCBA
QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICAvLyBXZSBjYW4ndCB1c2Ug
ZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2luZyBjb2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dz
CiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRpb24gSGFuZGxpbmcKLSAgICBpbnQgcmVzID0gMDsK
KyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNTOwogICAgIFRSWQogICAgICAgICByZXMgPSBqc2Nt
YWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQVChyZXMgPSAzKQorICAgIEVYQ0VQVChyZXMgPSBF
WElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6ZVN0YXRzQXRFbmRPZlRlc3RpbmcoKTsKICAgICBp
ZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZPUl9JTlBVVF9UT19FWElUIikpIHsKICAgICAgICAg
V1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigpOwpAQCAtMjY5MSw3ICsyNzUzLDcgQEAgc3RhdGlj
IHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBl
eGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhDRVBUSU9OCiB9CiAKLXN0YXRpYyBib29sIGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5lJiBvcHRpb25zKQorc3RhdGljIGJvb2wgY2hlY2tV
bmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMpCiB7CiAgICAgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5hbWUgPSBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRp
b25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTI3
MjMsNyArMjc4NSw3IEBAIHN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZt
LCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwg
Q29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMs
IGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBA
IC0yNzQyLDYgKzI4MDQsMTUgQEAgc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXMKICAgICAgICAgc3Vj
Y2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDogSlNWYWx1ZSgpLCBvcHRpb25zKTsKIH0KIAordm9p
ZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0
byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgZHVt
cEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7CisgICAgYm9vbCBoaWRlTm9S
ZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRlTm9SZXR1cm4pCisgICAgICAgIGpzY0V4aXQoRVhJ
VF9FWENFUFRJT04pOworfQorCiBzdGF0aWMgdm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7
CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlwdHMgPSBvcHRpb25zLm1fc2NyaXB0czsKQEAgLTMx
NzYsNyArMzI0Nyw3IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJv
b2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIGZ1bmModm0sIGdsb2JhbE9i
amVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIH0KLSAg
ICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxvb3AoKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2
OGVmZWRhMTRkNDYxMDUyNjA3NWFmZGViYWM5YWRiYTI1MjY2YmEuLjUwZDZiYmE1NDk4YzAyYjUy
MjRiYjM3YzY1ZDdhYjJkMTgyZThiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiw2ICszNiw3IEBACiAgICAgbWFjcm8oRGF0ZVRp
bWVGb3JtYXQpIFwKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAor
ICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwK
ICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xOTU2ZGE0MTQwMWIxNmFmZGVkOGUxYWQzOWMyNDZjZDM2YmZiNTBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3Bw
CkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3Jr
VGltZXIuaCIKKworI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCituYW1lc3BhY2UgRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKK0RlZmVycmVkV29ya1RpbWVyOjpE
ZWZlcnJlZFdvcmtUaW1lcihWTSYgdm0pCisgICAgOiBCYXNlKHZtKQoreworfQorCit2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0mIHZtKQoreworICAgIEFTU0VSVCh2bS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBj
YW5jZWxUaW1lcigpOworICAgIGlmICghbV9ydW5UYXNrcykgeworICAgICAgICBtX3Rhc2tMb2Nr
LnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKCFtX3Rhc2tz
LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtl
Rmlyc3QoKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6
dmVyYm9zZSwgIkRvaW5nIHdvcmsgb246ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisKKyAgICAg
ICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KKyAgICAg
ICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSkgeworICAgICAgICAgICAg
Ly8gQWxsb3cgdGFza3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgorICAgICAgICAgICAg
bV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRydWU7CisgICAgICAgICAgICBtX3Rhc2tMb2NrLnVu
bG9jaygpOyAKKworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBydW5sb29w
IHR1cm4sIHdlIGNhbiByZWxlYXNlIGFueSB3ZWFrcmVmcyBoZXJlLgorICAgICAgICAgICAgdm0u
ZmluYWxpemVTeW5jaHJvbm91c0pTRXhlY3V0aW9uKCk7CisKKyAgICAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRhc2soKTsKKyAgICAg
ICAgICAgIGlmIChFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGlja2V0LT5nbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAg
ICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0VW5jYXVn
aHRFeGNlcHRpb25BdEV2ZW50TG9vcChnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOworICAgICAgICAgICAg
QVNTRVJUKCF2bS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkpOworCisgICAgICAgICAgICBtX3Rh
c2tMb2NrLmxvY2soKTsKKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHko
KSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpCisgICAgICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CisKKyAgICBtX3Rhc2tMb2NrLnVubG9jaygpOworfQor
Cit2b2lkIERlZmVycmVkV29ya1RpbWVyOjpydW5SdW5Mb29wKCkKK3sKKyAgICBBU1NFUlQoIW1f
YXBpTG9jay0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgQVNT
RVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsK
KyAgICBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2ggPSB0cnVlOworICAg
IGlmIChtX3BlbmRpbmdUaWNrZXRzLnNpemUoKSkKKyAgICAgICAgUnVuTG9vcDo6cnVuKCk7Cit9
CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmFkZFBlbmRpbmdXb3JrKFZNJiB2bSwgVGlja2V0
IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykKK3sKKyAgICBB
U1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKKyAgICAgICAgQVNTRVJU
KGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOworCisgICAgYXV0byByZXN1bHQgPSBt
X3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVk
V29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgdGlja2V0OiAi
LCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9u
ZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhTG9nTG5J
ZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRl
bmNpZXMgZm9yIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsKKyAgICB9Cit9CisK
K2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc1BlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQpCit7
CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKKyAgICByZXR1cm4gbV9wZW5kaW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpOworfQorCiti
b29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQg
dGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpCit7CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nVGlj
a2V0cy5jb250YWlucyh0aWNrZXQpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5nZXQodGlja2V0KTsKKyAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRlcGVuZGVuY3kp
OworfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayhUaWNrZXQg
dGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7CisgICAgYm9vbCByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLnJlbW92ZSh0
aWNrZXQpOworCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRX
b3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50
ZXIodGlja2V0KSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIERlZmVycmVkV29y
a1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKFRpY2tldCB0aWNrZXQsIFRhc2smJiB0YXNrKQorewor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOworICAgIG1fdGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKKyAgICBpZiAoIWlzU2NoZWR1
bGVkKCkgJiYgIW1fY3VycmVudGx5UnVubmluZ1Rhc2spCisgICAgICAgIHNldFRpbWVVbnRpbEZp
cmUoMF9zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzFhOGFiYzll
YzQyODU2ZTlkZDNhMWNjM2JjNWNlODZkYjRmNjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlOworY2xhc3MgVk07CitjbGFzcyBKU0NlbGw7
CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlZmVycmVkV29ya1RpbWVyIGZpbmFsIDogcHVi
bGljIEpTUnVuTG9vcFRpbWVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNSdW5Mb29w
VGltZXI7CisKKyAgICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOworCisgICAgdXNpbmcgVGlja2V0
ID0gSlNPYmplY3QqOworICAgIHZvaWQgYWRkUGVuZGluZ1dvcmsoVk0mLCBUaWNrZXQsIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOworICAgIGJvb2wgaGFzUGVuZGluZ1dv
cmsoVGlja2V0KTsKKyAgICBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCwg
SlNDZWxsKiBkZXBlbmRlbmN5KTsKKyAgICBib29sIGNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCk7
CisKKyAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB2b2lkIHNjaGVkdWxl
V29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworCisgICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tzKCkg
eyBtX3J1blRhc2tzID0gZmFsc2U7IH0KKworICAgIHZvaWQgcnVuUnVuTG9vcCgpOworCisgICAg
c3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIERlZmVycmVkV29ya1RpbWVyKFZNJik7CisKKyAgICBMb2NrIG1fdGFz
a0xvY2s7CisgICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRT
dG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY3Vy
cmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OworICAgIERlcXVlPHN0ZDo6dHVwbGU8VGlja2V0
LCBUYXNrPj4gbV90YXNrczsKKyAgICBIYXNoTWFwPFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0Nl
bGw+Pj4gbV9wZW5kaW5nVGlja2V0czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDY5OGYwYzkxNDllZTk3MWMz
YTlmY2FmMThkODc2NjYyYzNjMGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTAs
MCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMu
aCIKKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yKSB9OworCit2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHBy
b3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkZpbmFsaXphdGlvblJl
Z2lzdHJ5Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RmluYWxpemF0
aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxs
RmluYWxpemF0aW9uUmVnaXN0cnksIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KQorewor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmluYWxpemF0aW9u
UmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmluYWxpemF0aW9uUmVnaXN0cnkiKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNDYWxsYWJsZSh2bSkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJz
dCBhcmd1bWVudCB0byBGaW5hbGl6YXRpb25SZWdpc3RyeSBzaG91bGQgYmUgYSBmdW5jdGlvbiJf
cyk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSA9
IGNhbGxGcmFtZS0+anNDYWxsZWUoKSA9PSBuZXdUYXJnZXQKKyAgICAgICAgPyBnbG9iYWxPYmpl
Y3QtPmZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkKKyAgICAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG5ld1RhcmdldCwg
Z2V0RnVuY3Rpb25SZWFsbSh2bSwgbmV3VGFyZ2V0KS0+ZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1
Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKHZtLCBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVy
ZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKSkpKTsKK30KKwor
fQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWUxNjhjY2Nj
YTZlNmJkYjEwNTU3NTZkMTA0MTdhZGQ2OTI3NzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOwor
CitjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0
aW9uOworCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAgRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0
aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKik7
Cit9OworCitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxMWY5ZjhmNjkzMDE3ZGRmMzlmOGZiNDc0NTg0
OTNkYzk5MGI4ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXph
dGlvblJlZ2lzdHJ5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSkgfTsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlS
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHByb3Bl
cnR5IG5hbWUgYmVjYXVzZSBpdCdzIGEgcmVzZXZlcmVkIHdvcmQgaW4gQysrLi4uCisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidW5yZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3Ry
eVVucmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
K30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdp
c3RyeSBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgYXV0byogZ3JvdXAgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9u
UmVnaXN0cnkqPih2bSwgYXNPYmplY3QodmFsdWUpKTsKKyAgICBpZiAoTElLRUxZKGdyb3VwKSkK
KyAgICAgICAgcmV0dXJuIGdyb3VwOworCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdpc3RyeSBmdW5jdGlvbiBvbiBhIG5vbi1G
aW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3QiX3MpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lz
dHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGdyb3VwID0gZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUg
dGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB0YXJnZXQiX3MpOworCisgICAg
SlNWYWx1ZSBob2xkaW5ncyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKHNhbWVW
YWx1ZShnbG9iYWxPYmplY3QsIHRhcmdldCwgaG9sZGluZ3MpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgZXhwZWN0cyB0aGUg
dGFyZ2V0IG9iamVjdCBhbmQgdGhlIGhvbGRpbmdzIHBhcmFtZXRlciBhcmUgbm90IHRoZSBzYW1l
LiBPdGhlcndpc2UsIHRoZSB0YXJnZXQgY2FuIG5ldmVyIGJlIGNvbGxlY3RlZCJfcyk7CisKKyAg
ICBKU1ZhbHVlIHVucmVnaXN0ZXJUb2tlbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CisgICAg
aWYgKCF1bnJlZ2lzdGVyVG9rZW4uaXNVbmRlZmluZWQoKSAmJiAhdW5yZWdpc3RlclRva2VuLmlz
T2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJyZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgYXMgdGhlIHVucmVnaXN0cmF0aW9u
IHRva2VuIl9zKTsKKworICAgIGdyb3VwLT5yZWdpc3RlclRhcmdldCh2bSwgdGFyZ2V0LmdldE9i
amVjdCgpLCBob2xkaW5ncywgdW5yZWdpc3RlclRva2VuKTsKKyAgICByZXR1cm4gZW5jb2RlZEpT
VW5kZWZpbmVkKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
RmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAoYXV0byogdG9rZW4gPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gZ3JvdXAt
PnVucmVnaXN0ZXIodm0sIHRva2VuKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgfQorCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGlzIHRo
ZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTVhNTM1MzYxYzk4ZGY2OGY1OWZlNzEzMmM1YzM3NzkwYjA3Yjhh
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNlKTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU+KHZtLmhlYXApKSBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHBy
b3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMzI3YWNl
ZTljOTI3MGU0OTI1YWJkNjY2M2ZjYTVmNDUyYWM2OWIwOC4uMTBjNmZmZDRkNmM3ZTIzN2MxNzFk
ZmQzYTQ3YmFhYWZiYWNmNTM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAKLSNpbmNsdWRl
ICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAppbmRleCAxNTEwYTRmYWI1ODk1ODAxZGM4
N2ZhNjczNjY0NzhmMjhjYmE2OWM5Li4xYTAwZjQ5NmJjN2M2NzgwMTNhZGZkNzQzYThiY2JjMTc2
ZmNiMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFJlbGF0aXZlVGltZUZvcm1hdC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzEsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
ZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CisKIGNsYXNzIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYyODNkNjNkZjI1MDhkNGY1N2U4NGZhZWYxYjFkZDYxMDM2N2QyZTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpzX2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdpc3RyeSIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSkgfTsKKworU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0pTRmluYWxpemF0aW9uUmVnaXN0cnkqIEpTRmluYWxpemF0aW9u
UmVnaXN0cnk6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCog
Y2FsbGJhY2spCit7CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pih2bS5oZWFwKSkg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSh2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24odm0sIGNhbGxiYWNrKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK3Zv
aWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVj
dCogY2FsbGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VS
VChjYWxsYmFjay0+aXNDYWxsYWJsZSh2bSkpOworICAgIGF1dG8gdmFsdWVzID0gaW5pdGlhbFZh
bHVlcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlcy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIEJhc2U6OmludGVybmFsRmllbGQoaW5kZXgpLnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIodmFsdWVzW2luZGV4XSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6
Q2FsbGJhY2spLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY2FsbGJhY2spOworfQorCit2b2lkIEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3Ip
OworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
Kj4oY2VsbCk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRoaXNPYmplY3QtPmNlbGxM
b2NrKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3QtPm1fbGl2ZVJl
Z2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiBpdGVyLnZh
bHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0aW9uLmhvbGRpbmdzKTsK
KyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiB0aGlzT2JqZWN0LT5tX25vVW5y
ZWdpc3RyYXRpb25MaXZlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZChyZWdpc3RyYXRpb24uaG9s
ZGluZ3MpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3QtPm1fZGVhZFJl
Z2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBob2xkaW5ncyA6IGl0ZXIudmFsdWUp
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisgICAgfQorICAgIGZvciAo
YXV0byYgaG9sZGluZ3MgOiB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkKQorICAg
ICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisKKyAgICBzaXplX3QgdG90YWxCdWZmZXJT
aXplc0luQnl0ZXMgPSB0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkg
KiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZh
bHVlUGFpclR5cGUpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3Qt
Pm1fbGl2ZVJlZ2lzdHJhdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2Jq
ZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKTo6S2V5VmFsdWVQYWlyVHlwZSk7CisgICAgdG90YWxC
dWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5j
YXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlv
bkxpdmUudGFrZUxhc3QoKSkpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNP
YmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlw
ZSh0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB2
aXNpdG9yLnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodG90YWxCdWZmZXJTaXpl
c0luQnl0ZXMpOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlc3Ryb3koSlND
ZWxsKiB0YWJsZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4o
dGFibGUpLT5+SlNGaW5hbGl6YXRpb25SZWdpc3RyeSgpOworfQorCit2b2lkIEpTRmluYWxpemF0
aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworCisgICAgYXV0byByZW1vdmVGcm9tVmVj
dG9yID0gW10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHBvc2l0aW9uKSB7CisgICAgICAgIHN0ZDo6
c3dhcCh2ZWN0b3JbcG9zaXRpb25dLCB2ZWN0b3IubGFzdCgpKTsKKyAgICAgICAgcmV0dXJuIHZl
Y3Rvci50YWtlTGFzdCgpOworICAgIH07CisKKyAgICBib29sIHJlYWRpZWRDZWxsID0gZmFsc2U7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFtX25vVW5yZWdpc3RyYXRpb25MaXZlW2ldLmhv
bGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJrZWQobV9ub1VucmVnaXN0cmF0
aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5hc0NlbGwoKSkpOworICAgICAgICBpZiAoIXZtLmhl
YXAuaXNNYXJrZWQobV9ub1VucmVnaXN0cmF0aW9uTGl2ZVtpXS50YXJnZXQpKSB7CisgICAgICAg
ICAgICBtX25vVW5yZWdpc3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKG1fbm9V
bnJlZ2lzdHJhdGlvbkxpdmUsIGkpLmhvbGRpbmdzKTsKKyAgICAgICAgICAgIHJlYWRpZWRDZWxs
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbGl2ZVJlZ2lzdHJhdGlvbnMucmVt
b3ZlSWYoWyZdIChhdXRvJiBidWNrZXQpIC0+IGJvb2wgeworICAgICAgICBBU1NFUlQoYnVja2V0
LnZhbHVlLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCBrZXlJc0RlYWQgPSAhdm0uaGVhcC5pc01h
cmtlZChidWNrZXQua2V5KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1Y2tl
dC52YWx1ZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKCFidWNrZXQudmFsdWVb
aV0uaG9sZGluZ3MuZ2V0KCkuaXNDZWxsKCkgfHwgdm0uaGVhcC5pc01hcmtlZChidWNrZXQudmFs
dWVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAgICAgICAgIGlmICghdm0uaGVh
cC5pc01hcmtlZChidWNrZXQudmFsdWVbaV0udGFyZ2V0KSkgeworICAgICAgICAgICAgICAgIGlm
IChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQu
YXBwZW5kKHJlbW92ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKS5ob2xkaW5ncyk7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZGVhZExpc3QgPSBt
X2RlYWRSZWdpc3RyYXRpb25zLmFkZChidWNrZXQua2V5LCBEZWFkUmVnaXN0cmF0aW9ucygpKTsK
KyAgICAgICAgICAgICAgICAgICAgZGVhZExpc3QuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChyZW1v
dmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9sZGluZ3MpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGtleUlzRGVhZCkKKyAgICAgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25MaXZl
LmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuICFidWNrZXQudmFsdWUuc2l6ZSgpOworICAgIH0pOworCisgICAgaWYg
KCF2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykgJiYgKHJlYWRpZWRD
ZWxsIHx8IGRlYWRDb3VudChsb2NrZXIpKSkgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+YWRkUGVuZGluZ1dvcmsodm0sIHRoaXMsIHsgfSk7CisgICAgICAgIEFTU0VSVCh2bS5kZWZl
cnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykpOworICAgICAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbih0aGlzLCBbdGhpc10geworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAg
ICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICAgICAgdGhpcy0+
cnVuRmluYWxpemF0aW9uQ2xlYW51cChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOworICAgICAgICB9KTsKKyAg
ICB9Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xl
YW51cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICB3aGlsZSAoSlNWYWx1ZSB2YWx1ZSA9IHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpKSB7
CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGFyZ3MuYXBwZW5k
KHZhbHVlKTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGNhbGxiYWNrKCksIGFyZ3MsICJU
aGlzIHNob3VsZCBub3QgYmUgdmlzaWJsZTogcGxlYXNlIHJlcG9ydCBhIGJ1ZyB0byBidWdzLndl
YmtpdC5vcmciKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICB9Cit9CisKK0pTVmFsdWUgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xk
aW5nc1ZhbHVlKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0OworICAgIGlmIChtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUo
KSkKKyAgICAgICAgcmVzdWx0ID0gbV9ub1VucmVnaXN0cmF0aW9uRGVhZC50YWtlTGFzdCgpLmdl
dCgpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX2RlYWRSZWdpc3RyYXRpb25z
LmJlZ2luKCk7CisgICAgICAgIGlmIChpdGVyID09IG1fZGVhZFJlZ2lzdHJhdGlvbnMuZW5kKCkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICBBU1NFUlQoaXRlci0+dmFs
dWUuc2l6ZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gaXRlci0+dmFsdWUudGFrZUxhc3QoKS5nZXQo
KTsKKyAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5zaXplKCkpCisgICAgICAgICAgICBtX2RlYWRS
ZWdpc3RyYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBpZiBjb25zdGV4cHIgKEFT
U0VSVF9FTkFCTEVEKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IG1fZGVhZFJl
Z2lzdHJhdGlvbnMpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyLnZhbHVlLnNpemUo
KSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5OjpyZWdpc3RlclRhcmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFs
dWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9rZW4pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhjZWxsTG9jaygpKTsKKyAgICBSZWdpc3RyYXRpb24gcmVnaXN0cmF0aW9uOworICAgIHJlZ2lz
dHJhdGlvbi50YXJnZXQgPSB0YXJnZXQ7CisgICAgcmVnaXN0cmF0aW9uLmhvbGRpbmdzLnNldFdp
dGhvdXRXcml0ZUJhcnJpZXIoaG9sZGluZ3MpOworICAgIGlmICh0b2tlbi5pc1VuZGVmaW5lZCgp
KQorICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25MaXZlLmFwcGVuZChXVEZNb3ZlKHJlZ2lzdHJh
dGlvbikpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbGl2ZVJlZ2lzdHJh
dGlvbnMuYWRkKGpzU2VjdXJlQ2FzdDxKU09iamVjdCo+KHZtLCB0b2tlbiksIExpdmVSZWdpc3Ry
YXRpb25zKCkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3Zl
KHJlZ2lzdHJhdGlvbikpOworICAgIH0KKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsK
K30KKworYm9vbCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKFZNJiwgSlNPYmpl
Y3QqIHRva2VuKQoreworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd3JpdGUgYmFycmllciBvdXJz
ZWx2ZXMgaGVyZSBiZWNhdXNlIHdlIHdpbGwgb25seSBwb2ludCB0byBsZXNzIHRoaW5ncyBhZnRl
ciB0aGlzIGZpbmlzaGVzLgorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7
CisgICAgYm9vbCByZXN1bHQgPSBtX2xpdmVSZWdpc3RyYXRpb25zLnJlbW92ZSh0b2tlbik7Cisg
ICAgcmVzdWx0IHw9IG1fZGVhZFJlZ2lzdHJhdGlvbnMucmVtb3ZlKHRva2VuKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3NpemVfdCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpsaXZlQ291
bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikKK3sKKyAgICBzaXplX3QgY291bnQgPSBtX25v
VW5yZWdpc3RyYXRpb25MaXZlLnNpemUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBt
X2xpdmVSZWdpc3RyYXRpb25zKQorICAgICAgICBjb3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsK
KworICAgIHJldHVybiBjb3VudDsKK30KKworc2l6ZV90IEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OmRlYWRDb3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKQoreworICAgIHNpemVfdCBjb3Vu
dCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuc2l6ZSgpOworICAgIGZvciAoY29uc3QgYXV0byYg
aXRlciA6IG1fZGVhZFJlZ2lzdHJhdGlvbnMpCisgICAgICAgIGNvdW50ICs9IGl0ZXIudmFsdWUu
c2l6ZSgpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitTdHJpbmcgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopCit7CisgICAgcmV0dXJuICJPYmplY3QiX3M7Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmQ1Y2QzOGNmMGJhN2Q4Mjk5MWNkYjVjMGFhYTFmZjY0NDJhZjYzMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9u
UmVnaXN0cnkuaApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwxPiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT47
CisKKyAgICBlbnVtIGNsYXNzIEZpZWxkIDogdWludDhfdCB7IAorICAgICAgICBDYWxsYmFjaywK
KyAgICB9OworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVf
dD4gaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNh
cGFjaXR5LCBpbmxpbmVDYXBhY2l0eSA9PSAwVSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNG
aW5hbGl6YXRpb25SZWdpc3RyeSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFs
dWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgIH0gfTsKKyAgICB9
CisKKyAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQg
ZmllbGQpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGZpZWxkKSk7IH0KKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmll
bGQoRmllbGQgZmllbGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZpZWxkKSk7IH0KKworICAgIEpTT2JqZWN0KiBjYWxsYmFjaygpIGNvbnN0IHsg
cmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6OkNhbGxiYWNrKS5n
ZXQoKSk7IH0KKworICAgIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogY2FsbGJhY2spOworICAgIHN0YXRpYyBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5KiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9pZCBydW5GaW5hbGl6YXRpb25DbGVhbnVw
KEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9p
ZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKKworICAgIEpTVmFsdWUgdGFrZURlYWRIb2xkaW5nc1ZhbHVlKCk7CisKKyAgICBib29sIHVu
cmVnaXN0ZXIoVk0mLCBKU09iamVjdCogdG9rZW4pOworICAgIC8vIHRva2VuIHNob3VsZCBiZSBh
IEpTT2JqZWN0IG9yIHVuZGVmaW5lZC4KKyAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0KFZNJiwgSlNP
YmplY3QqIHRhcmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbik7CisKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzaXplX3QgbGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2Nr
PiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBkZWFkQ291bnQoY29uc3QgTG9ja2Vy
PEpTQ2VsbExvY2s+Jik7CisKK3ByaXZhdGU6CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTT2JqZWN0KiBjYWxsYmFjayk7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdHJ1Y3Qg
UmVnaXN0cmF0aW9uIHsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldDsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+IGhvbGRpbmdzOworICAgIH07CisKKyAgICB1c2luZyBMaXZlUmVnaXN0
cmF0aW9ucyA9IFZlY3RvcjxSZWdpc3RyYXRpb24+OworICAgIC8vIFdlIGRvbid0IG5lZWQgdGhl
IHRhcmdldCBhbnltb3JlIHNpbmNlIHdlIGtub3cgaXQncyBkZWFkLgorICAgIHVzaW5nIERlYWRS
ZWdpc3RyYXRpb25zID0gVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj47CisKKyAgICAvLyBO
b3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVyIHB1dHRpbmcgYSB3cml0ZSBiYXJyaWVyIG9uIHRoZSBr
ZXkgb3IgdGFyZ2V0IGJlY2F1c2UgdGhleSBhcmUgd2Vha2x5IHJlZmVyZW5jZWQuCisgICAgSGFz
aE1hcDxKU09iamVjdCosIExpdmVSZWdpc3RyYXRpb25zPiBtX2xpdmVSZWdpc3RyYXRpb25zOwor
ICAgIEhhc2hNYXA8SlNPYmplY3QqLCBEZWFkUmVnaXN0cmF0aW9ucz4gbV9kZWFkUmVnaXN0cmF0
aW9uczsKKyAgICAvLyBXZSB1c2UgYSBzZXBhcmF0ZSBsaXN0IGZvciBubyB1bnJlZ2lzdGVyIHZh
bHVlcyBpbnN0ZWFkIG9mIGEgc3BlY2lhbCBrZXkgaW4gdGhlIHRhYmxlcyBhYm92ZSBiZWNhdXNl
IHRoZSBIYXNoTWFwIGhhcyBhIHRlbmRlbmN5IHRvIHJlYWxsb2NhdGUgdW5kZXIgdXMgd2hlbiBp
dGVyYXRpbmcuLi4KKyAgICBMaXZlUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25MaXZl
OworICAgIERlYWRSZWdpc3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5Yjll
NGM5ODIzNzAwNi4uNmQ3MGVmY2U1NjJlMTZjZWVkZjk5MThjZWY5MjIxNDQzNWZmMWM0MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtNjEsNiArNjEsOCBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCIKQEAgLTk5LDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSlNEYXRh
Vmlldy5oIgogI2luY2x1ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Rv
bGxhclZNLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTM4Nyw2ICszOTAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBj
b21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAg
LTIxOTksNiArMjIwMywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhS
ZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAgdm0oKS5xdWV1ZU1pY3JvdGFzaygqdGhpcywgV1RG
TW92ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhj
ZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikK
K3sKKyAgICBkYXRhTG9nTG4oIlVuY2F1Z2h0IEV4Y2VwdGlvbiBhdCBydW4gbG9vcDogIiwgZXhj
ZXB0aW9uLT52YWx1ZSgpKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0RGVidWdnZXIo
RGVidWdnZXIqIGRlYnVnZ2VyKQogewogICAgIG1fZGVidWdnZXIgPSBkZWJ1Z2dlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRkYzMw
YjgyZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjQ3NGZkZTY0ZmY2Y2FlMjgzZTk5
ZTQ2ZWVjODA1MDgxYmMwZjliYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTM4LDYgKzEzOCw4IEBAIGNvbnN0ZXhwciBib29sIHR5
cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBtYWNybyhKU1Byb21pc2UsIHByb21pc2Us
IHByb21pc2UsIEpTUHJvbWlzZSwgUHJvbWlzZSwgb2JqZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVs
dCkgXAogICAgIG1hY3JvKEJpZ0ludCwgYmlnSW50LCBiaWdJbnRPYmplY3QsIEJpZ0ludE9iamVj
dCwgQmlnSW50LCBvYmplY3QsIE9wdGlvbnM6OnVzZUJpZ0ludCgpKSBcCiAgICAgbWFjcm8oV2Vh
a09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgSlNXZWFrT2JqZWN0UmVm
LCBXZWFrUmVmLCBvYmplY3QsIE9wdGlvbnM6OnVzZVdlYWtSZWZzKCkpIFwKKyAgICBtYWNybyhG
aW5hbGl6YXRpb25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJl
Z2lzdHJ5LCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LCBGaW5hbGl6YXRpb25SZWdpc3RyeSwgb2Jq
ZWN0LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisKIAogI2RlZmluZSBGT1JfRUFDSF9CVUlM
VElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIG1hY3JvKFN0cmluZ0l0ZXJh
dG9yLCBzdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIEpTU3RyaW5nSXRlcmF0b3IsIFN0
cmluZ0l0ZXJhdG9yLCBpdGVyYXRvciwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKQEAgLTIyNyw2
ICsyMjksOSBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYg
dm9pZCAoKlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJv
bWlzZSosIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CiAgICAgUHJvbWlzZVJlamVjdGlv
blRyYWNrZXJQdHIgcHJvbWlzZVJlamVjdGlvblRyYWNrZXI7CiAKKyAgICB0eXBlZGVmIHZvaWQg
KCpSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyKShKU0dsb2JhbE9iamVjdCos
IEV4Y2VwdGlvbiopOworICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIg
cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKKwogICAgIHR5cGVkZWYgU3RyaW5n
ICgqRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAgRGVmYXVsdExhbmd1YWdlRnVu
Y3Rpb25QdHIgZGVmYXVsdExhbmd1YWdlOwogCkBAIC00NTMsMjEgKzQ1OCw2IEBAIHB1YmxpYzoK
ICAgICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKICAgICBSZWdFeHBHbG9iYWxEYXRhIG1fcmVn
RXhwR2xvYmFsRGF0YTsKIAotICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUo
KSBjb25zdCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQotCi0g
ICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAg
IElubGluZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkg
eyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1
cm4gbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNo
cG9pbnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNo
cG9pbnRTZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9p
bnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkg
eyByZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNl
dCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0
Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQotICAgIHsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1cm4gbV9u
dW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7Ci0gICAgfQogICAgIC8vIElmIHRoaXMgaGFzbid0
IGJlZW4gaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2NvbAog
ICAgIC8vIGlzIG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5lV2F0
Y2hwb2ludFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7CkBAIC00OTQs
NiArNDg0LDIzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90
eXBlQWRkV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90
eXBlVG9TdHJpbmdXYXRjaHBvaW50OwogCitwdWJsaWM6CisgICAgSlNDYWxsZWUqIHN0YWNrT3Zl
cmZsb3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2Fs
bGVlLmdldCgpOyB9CisKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9
CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9
CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwU2V0V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJu
IG1fbWFwU2V0V2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEFk
ZFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEFkZFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYg
YXJyYXlKb2luV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNl
dDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNl
dCgpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7Cisg
ICAgICAgIHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsKKyAgICB9CisKICAg
ICBib29sIGlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFi
bGUoKTsKICAgICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25P
YnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0
QW5kTm9uT2JzZXJ2YWJsZSgpOwpAQCAtODI0LDYgKzgzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKFZNJiB2bSwgSlNPYmplY3QqIGZ1bmN0aW9u
KSB7IG1fdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suc2V0KHZtLCBmdW5jdGlvbik7IH0KICAg
ICBKU09iamVjdCogdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBt
X3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLmdldCgpOyB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0
aW9uKik7CisKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KIAogICAg
IEpTT2JqZWN0KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNo
YXJpbmdNb2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZS5jcHAKaW5kZXggODgzMDgzZWNiNzY3ZDA4ODNmOWE0OTIxZjM5OWY1OTA4ODEzY2ZkZi4uNGYz
NGI2YjQ5Y2E4OWU2NjhjYjlhMjY3MTAzMjNjYWUxNzg2NGI0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNs
dWRlICJKU1Byb21pc2UuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUg
IkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNl
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKLSNpbmNsdWRlICJQcm9taXNl
VGltZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEpT
UHJvbWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnBy
b21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6
cmVqZWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZWplY3QoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5j
dGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlamVjdFByb21pc2VGdW5j
dGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21p
c2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRo
aXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0QXNIYW5kbGVkKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYWRmYjc5ZmRkYTgxODNjYTkxMzE1YzUy
MDY0NzBkMTQyMzEyOTQ1NC4uOWJlODNjZThiMTg0YTVkZDBmYzNmMWQ1Nzg3ZDVhYTQ2ZmRlYzU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00
ODYsNiArNDg2LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNoaW5n
LCBmYWxzZSwgTm9ybWFsLCAiVW5uYW1lZCBXZWJBc3NlbWJseSBtb2R1bGVzIGFyZSBpZGVudGlm
aWVkIGluIGJhY2t0cmFjZXMgdGhyb3VnaCB0aGVpciBoYXNoLCBpZiBhdmFpbGFibGUuIikgXAog
ICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxs
b3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAogICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJv
bSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCisgICAgLyogRklYTUU6IFdlIHNob3Vs
ZCBtYWtlIHN1cmUgZmluYWxpemVycyBkb24ndCBydW4gZm9yIGRldGFjaGVkIHdpbmRvd3MgYmVm
b3JlIGVuYWJsaW5nIFdlYWtSZWZzIGJ5IGRlZmF1bHQuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTQ1MDggKi8gXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYo
Qm9vbCwgdXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBC
aWdJbnQgc3VwcG9ydC4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxp
bmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkg
YWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdp
bGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGVmZDJiMDA4NDMwMjYyNjE4NTk4MTk1ODlmNzg0Y2JiZDM2M2QwNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKLQotI2luY2x1ZGUg
IkpTUHJvbWlzZS5oIgotI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJWTS5o
IgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3Bh
Y2UgUHJvbWlzZVRpbWVySW50ZXJuYWwgewotc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKLX0KLQotUHJvbWlzZVRpbWVyOjpQcm9taXNlVGltZXIoVk0mIHZtKQotICAgIDog
QmFzZSh2bSkKLXsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OmRvV29yayhWTSYgdm0pCi17Ci0g
ICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIG1fdGFz
a0xvY2subG9jaygpOwotICAgIGNhbmNlbFRpbWVyKCk7Ci0gICAgaWYgKCFtX3J1blRhc2tzKSB7
Ci0gICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3RpY2tldCwg
dGFza10gPSBtX3Rhc2tzLnRha2VMYXN0KCk7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VU
aW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2lu
dGVyKHRpY2tldCkpOwotCi0gICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQg
dGhlc2UgcHJvbWlzZXMuCi0gICAgICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0
aWNrZXQpKSB7Ci0gICAgICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBydW4gbm93IHRvIHNjaGVk
dWxlIHdvcmsuCi0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKLSAg
ICAgICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7IAotCi0gICAgICAgICAgICB0YXNrKCk7Ci0g
ICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKLQotICAgICAgICAgICAgbV90YXNrTG9j
ay5sb2NrKCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpICYm
IG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2gpCi0gICAgICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5zdG9wKCk7Ci0KLSAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotfQotCi12
b2lkIFByb21pc2VUaW1lcjo6cnVuUnVuTG9vcCgpCi17Ci0gICAgQVNTRVJUKCFtX2FwaUxvY2st
PnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIEFTU0VSVCgmUnVu
TG9vcDo6Y3VycmVudCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7Ci0gICAgbV9z
aG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCA9IHRydWU7Ci0gICAgaWYgKG1f
cGVuZGluZ1Byb21pc2VzLnNpemUoKSkKLSAgICAgICAgUnVuTG9vcDo6cnVuKCk7Ci19Ci0KLXZv
aWQgUHJvbWlzZVRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShWTSYgdm0sIEpTUHJvbWlzZSogdGlj
a2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKQotewotICAgIEFTU0VS
VCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQotICAgICAgICBBU1NFUlQoZGVw
ZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tldCk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVu
ZGluZ1Byb21pc2VzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Ci0gICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1l
ckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7Ci0gICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2Vs
bD4odm0sIHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92
ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21p
c2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHBy
b21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7Ci0gICAgfQotfQotCi1ib29sIFByb21p
c2VUaW1lcjo6aGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNT
RVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBy
ZXR1cm4gbV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlja2V0KTsKLX0KLQotYm9vbCBQcm9t
aXNlVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0
LCBKU0NlbGwqIGRlcGVuZGVuY3kpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nUHJvbWlzZXMu
Y29udGFpbnModGlja2V0KSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2Vz
LmdldCh0aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7Ci19
Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRp
Y2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMucmVtb3ZlKHRp
Y2tldCk7Ci0KLSAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGlt
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRp
Y2tldCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnNj
aGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiB0aWNrZXQsIFRhc2smJiB0YXNrKQotewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOwotICAgIG1fdGFza3MuYXBwZW5kKHN0ZDo6bWFr
ZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKLSAgICBpZiAoIWlzU2NoZWR1bGVkKCkg
JiYgIW1fY3VycmVudGx5UnVubmluZ1Rhc2spCi0gICAgICAgIHNldFRpbWVVbnRpbEZpcmUoMF9z
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VUaW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTRkMGYy
OWFlMmQyOGNmM2U0MDRiZWZiNTQ2ZjUzY2QwYmJhZTliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b21pc2VUaW1lci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiSlNSdW5Mb29wVGltZXIuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKLQotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1Byb21pc2U7Ci1jbGFzcyBWTTsKLWNs
YXNzIEpTQ2VsbDsKLQotY2xhc3MgUHJvbWlzZVRpbWVyIGZpbmFsIDogcHVibGljIEpTUnVuTG9v
cFRpbWVyIHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNSdW5Mb29wVGltZXI7Ci0KLSAg
ICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOwotCi0gICAgdm9pZCBhZGRQZW5kaW5nUHJvbWlzZShW
TSYsIEpTUHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0
aWNrZXQpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzRGVwZW5kYW5jeUluUGVuZGlu
Z1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7Ci0gICAgLy8g
SlNQcm9taXNlIHNob3VsZCBoYW5kbGUgY2FuY2VsaW5nIHdoZW4gdGhlIHByb21pc2UgaXMgcmVz
b2x2ZWQgb3IgcmVqZWN0ZWQuCi0gICAgYm9vbCBjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21p
c2UqKTsKLQotICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHZvaWQgc2No
ZWR1bGVXb3JrU29vbihKU1Byb21pc2UqLCBUYXNrJiYpOwotCi0gICAgdm9pZCBzdG9wUnVubmlu
Z1Rhc2tzKCkgeyBtX3J1blRhc2tzID0gZmFsc2U7IH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcnVuUnVuTG9vcCgpOwotCi0gICAgc3RhdGljIFJlZjxQcm9taXNlVGltZXI+IGNyZWF0
ZShWTSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9taXNlVGlt
ZXIodm0pKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUHJvbWlzZVRpbWVyKFZNJik7Ci0KLSAg
ICBIYXNoTWFwPEpTUHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1By
b21pc2VzOwotICAgIExvY2sgbV90YXNrTG9jazsKLSAgICBib29sIG1fcnVuVGFza3MgeyB0cnVl
IH07Ci0gICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OwotICAg
IFZlY3RvcjxzdGQ6OnR1cGxlPEpTUHJvbWlzZSosIFRhc2s+PiBtX3Rhc2tzOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwCmluZGV4IGFjYjM0YzlkM2RiMjZlNThhNjFmZmRiMzE3MTdhNTFl
NjgzMWZjNWQuLmUyMTEzOTc4YTMyNGVkN2I0YTVmMTBkMWIzZDA1YmY5ZTRjZmIzZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3Bw
CkBAIC0zMiw2ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAKK25hbWVzcGFjZSBTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKwogU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJl
SURUYWJsZSgpCiAgICAgOiBtX3RhYmxlKG1ha2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNl
dD4oc19pbml0aWFsU2l6ZSkpCiAgICAgLCBtX3NpemUoMSkKQEAgLTE2MSwxMSArMTY1LDE0IEBA
IFN0cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgdGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMg
PSBlbmNvZGUoc3RydWN0dXJlLCByZXN1bHQpOwogICAgIG1fc2l6ZSsrOwogICAgIEFTU0VSVCgh
aXNOdWtlZChyZXN1bHQpKTsKKworICAgIGRhdGFMb2dMbklmKFN0cnVjdHVyZUlEVGFibGVJbnRl
cm5hbDo6dmVyYm9zZSwgIkFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCByZXN1bHQsICIgZm9yIFN0
cnVjdHVyZSAiLCBSYXdQb2ludGVyKHN0cnVjdHVyZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHZvaWQgU3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKIHsKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1
cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2UsICJEZWFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCBz
dHJ1Y3R1cmVJRCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZUlEICE9IHNfdW51c2VkSUQpOwogICAg
IHVpbnQzMl90IHN0cnVjdHVyZUluZGV4ID0gc3RydWN0dXJlSUQgPj4gc19udW1iZXJPZkVudHJv
cHlCaXRzOwogICAgIEFTU0VSVChzdHJ1Y3R1cmVJbmRleCAmJiBzdHJ1Y3R1cmVJbmRleCA8IHNf
bWF4aW11bU51bWJlck9mU3RydWN0dXJlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggOGNhYTQ4YzFiZTMxMWI1ZDg3ZTg2MDM4YmEwZjQwNDE4Mzg4OGMyYS4uYmNmNjA5
YWQ0NmY0ODQyN2U5NmU2YTQyYTBhYjE4YjQ3OTE0ZWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkRlYnVn
Z2VyU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRp
c2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgog
I2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKQEAgLTg4LDYgKzg5LDcgQEAKICNpbmNsdWRlICJK
U0NhbGxlZS5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgpAQCAtMTMzLDcgKzEzNSw2IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJs
ZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFz
aFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemlu
Z0Z1enplckFnZW50LmgiCkBAIC0yODIsNiArMjgzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3Mp
CiAgICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQogICAgICwgZGF0ZUluc3Rh
bmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPERhdGVJbnN0YW5jZT4oKSkK
ICAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
RXJyb3JJbnN0YW5jZT4oKSkKKyAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKICAgICAsIGds
b2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKICAgICAsIGdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0dsb2JhbE9iamVjdD4oKSkKICAgICAs
IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+KCkpCkBAIC0zNjUsNyArMzY3LDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3Aq
IHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAg
LCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpu
b0NhbGxlcigpKQotICAgICwgcHJvbWlzZVRpbWVyKFByb21pc2VUaW1lcjo6Y3JlYXRlKCp0aGlz
KSkKKyAgICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVhdGUoKnRo
aXMpKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAg
LCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCkBA
IC01NzUsNyArNTc3LDcgQEAgVk06On5WTSgpCiAgICAgYXV0byBkZXN0cnVjdGlvbkxvY2tlciA9
IGhvbGRMb2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQoKSk7CiAgICAgCiAgICAgR2lnYWNhZ2U6
OnJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2FnZURpc2FibGVk
Q2FsbGJhY2ssIHRoaXMpOwotICAgIHByb21pc2VUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygpOwor
ICAgIGRlZmVycmVkV29ya1RpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIGlmIChXYXNtOjpXb3JrbGlzdCogd29ya2xpc3QgPSBXYXNtOjpleGlz
dGluZ1dvcmtsaXN0T3JOdWxsKCkpCiAgICAgICAgIHdvcmtsaXN0LT5zdG9wQWxsUGxhbnNGb3JD
b250ZXh0KHdhc21Db250ZXh0KTsKQEAgLTE0ODcsNiArMTQ4OSw3IEBAIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5
cGUuZ2V0KCksCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1Nl
dFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0
Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmpl
Y3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBI
YXNoOjB4OGVjNjhmMWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3
aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXaXRoU2NvcGUpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZSwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZS5nZXQoKSwgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2UsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBPYmpD
Q2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCA2MGY1OTcyOWZlYzJlMDJlNjk3NmMzMWVkNTFiMTQ4YTVjNmVhYTA1Li5m
NGYyZWZlMDNiZTY2Mzk2NDg1OWI2NGI3Yjc4MjgwNGQ0ZTY3YjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5VGFi
bGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxl
OwogY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247Ci1jbGFzcyBQcm9taXNlVGltZXI7CitjbGFz
cyBEZWZlcnJlZFdvcmtUaW1lcjsKIGNsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwog
Y2xhc3MgUmVnaXN0ZXI7CkBAIC0zNzcsNiArMzc3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlw
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBlcnJvckluc3RhbmNlSGVh
cENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGZpbmFsaXph
dGlvblJlZ2lzdHJ5Q2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBD
ZWxsVHlwZTsKQEAgLTU1MCw2ICs1NTEsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKQEAgLTcwOSw4ICs3MTEsOCBAQCBw
dWJsaWM6CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dCb3VuZEV4ZWN1dGFibGU7
CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dDYW5Db25zdHJ1Y3RCb3VuZEV4ZWN1
dGFibGU7CiAKLSAgICBSZWY8UHJvbWlzZVRpbWVyPiBwcm9taXNlVGltZXI7Ci0gICAgCisgICAg
UmVmPERlZmVycmVkV29ya1RpbWVyPiBkZWZlcnJlZFdvcmtUaW1lcjsKKwogICAgIEpTQ2VsbCog
Y3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdDsKICAgICBjb25zdCBDbGFzc0luZm8q
IGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8geyBudWxscHRyIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAK
aW5kZXggNWRhNjk2ZDY5N2RkNDc1MDVkN2RjNTJiNjA2ZTMxNzc0YTRlMjY1ZC4uYWY0MmQ4ZDU3
MDlmMjA2YTdhNzg3MDhmNjVkN2U1MGI1NThlNjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5o
IgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGlu
ZXMuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgi
CiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0j
aW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCkBAIC0x
MzQsMTAgKzEzNCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5
bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZlY3RvcjxTdHJv
bmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25n
PEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogCi0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQ
ZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUo
ZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndh
c21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxl
OjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVs
ZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21p
c2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0
LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBn
bG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAg
ICAgICAgIEpTVmFsdWUgbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2
bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJl
KCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlz
ZQogICAgIC8vIFRoZSBpbnN0YW5jZSBrZWVwcyB0aGUgbW9kdWxlIGFsaXZlLgogICAgIGRlcGVu
ZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGluc3RhbmNlKSk7CiAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7Ci0gICAgdm0u
cHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBl
bmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0s
IHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAgICAgLy8gTm90ZTogVGhpcyBjb21w
bGV0aW9uIHRhc2sgbWF5IG9yIG1heSBub3QgZ2V0IGNhbGxlZCBpbW1lZGlhdGVseS4KICAgICBt
b2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5t
ZW1vcnlNb2RlKCksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFja1R5
cGU+KFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5k
LCBjcmVhdGlvbk1vZGUsICZ2bV0gKFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgcmVmQ29kZUJsb2Nr
KSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPFdhc206OkNvZGVCbG9jaz4gY29kZUJsb2NrID0g
V1RGTW92ZShyZWZDb2RlQmxvY2spOwotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxl
V29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVj
dCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3ZlKGNv
ZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2No
ZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0
T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1v
dmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgcmVz
b2x2ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRP
YmplY3QsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNvbHZlS2luZCwgY3JlYXRpb25N
b2RlKTsKICAgICAgICAgfSk7CkBAIC0yMzMsMTMgKzIzMywxMyBAQCBzdGF0aWMgdm9pZCBjb21w
aWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1Byb21pcwogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRl
cGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwogICAg
IGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIG1vZHVsZUtleUNlbGwpKTsK
LSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZN
b3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5n
V29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGdsb2JhbE9i
amVjdCwgYnVmZmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0
ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNr
PFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1
bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0g
KFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
aW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwg
W3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2Vt
Ymx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBz
dGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5k
ZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9y
dE9iamVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGds
b2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0s
IHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGlt
ZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwog
CiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92
ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihb
cHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVsZTo6
VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VU
aW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBn
bG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwg
W3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0zMzks
NyArMzM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBp
bGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCoKIAogICAgIFZlY3RvcjxTdHJvbmc8
SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpT
Q2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGlu
Z1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVu
ZGVuY2llcykpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+Y29tcGlsZVN0cmVhbWluZykKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwo
SlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVu
ZGVuY2llczsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0Nl
bGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICAgICAgICAgICAgICB2
bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRl
cGVuZGVuY2llcykpOworICAgICAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQ
ZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xODQ4ODg+IGlmIHRoZXJl
J3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBjb250YWlucyBhIE1lbW9yeSwgdGhlbiB3ZSBjYW4g
Y29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhlIHJpZ2h0IG1lbW9yeSB0eXBlIChmYXN0IG9yIG5v
dCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5J3MgdHlwZS4KICAgICAgICAgICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5n
KGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgaW1wb3J0T2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaAppbmRleCA0ODk0OWJmNmVjMjgwZmVmMjczZjA0MDZlZDFjZDEwN2Q5
YzU1Y2YyLi4yZTU2YjRkM2JhZjdmMDBmZWFkZDMwMDRiNGJmZTJjOTY1ZDUzNjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVC
bG9jay5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2lu
Y2x1ZGUgIkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAj
aW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgogI2luY2x1ZGUgIldhc21Gb3Jt
YXQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBkMjhlNTA5ZGIwMWM3MDEwZGQ3N2UyZmViYzM1Yzc5ODlhZGQ3YTMyLi4wMzll
ZjgyMzBhODZiNjEzNWNlZWJkZTQzYzNhMTM3MDVkY2Y5N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yMzQsNiArMjM0LDEx
IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnByb21pc2VSZWplY3Rpb25UcmFja2VyKEpTR2xv
YmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwKICAgICB9CiB9CiAKK3ZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3Qq
IGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHJlcG9y
dEV4Y2VwdGlvbihqc0dsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKK30KKwogSlNET01HbG9iYWxP
YmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgY2xhc3MgR2V0Q2FsbGVyR2xvYmFs
T2JqZWN0RnVuY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAppbmRleCBkMjk4NThjZmE0YjBiZTBkNjIxMzkwYTgzZDc2ZDVhODUwYjlkMjgw
Li43Mzg2N2Q2YWIyZTViNGRiYjcwYjcwYTlhMzYwOTQ4NDlmMGNlZTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTc5LDYgKzc5LDcg
QEAgcHVibGljOgogCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMmIGJ1aWx0aW5JbnRl
cm5hbEZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zOyB9CiAK
KyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAogcHVibGljOgogICAgIH5KU0RPTUdsb2Jh
bE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKaW5kZXggODgzMjEzZTkwNjFmMzhiOGJiNDMzNTc5YjI5ODYwOTg3Nzg0ZTc4Mi4uYWNl
YTc2NmFmMWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
SW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3NlbWJs
eS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01pY3JvdGFzay5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgpAQCAtNzgsNiArNzgsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
Jm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgICZtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZSwKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVu
Y2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgJmNvbXBpbGVTdHJlYW1pbmcsCkBAIC00NDMsOCArNDQ0
LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkoKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNl
KHByb21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5Q
ZW5kaW5nUHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVm
ZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0u
ZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGds
b2JhbE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNw
b25zZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25T
dHJlYW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJv
bWlzZV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CkBAIC00NjEsOSArNDYyLDkgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFtaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNlKHByb21p
c2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5n
UHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRp
bWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBpbXBvcnRlZE9iamVj
dCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsocHJv
bWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUlu
UGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBpbXBvcnRl
ZE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNwb25z
ZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25TdHJl
YW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJvbWlz
ZSwgaW1wb3J0ZWRPYmplY3RdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11dGFibGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAK
aW5kZXggNDlkZjQzOTA1N2RmNTlkMjk0ZDQ4NGE5NGYyOWI1MjQwZjg4NjE4MS4uZGNlNzM4MjBi
YmJmZDliOTVjNTg3OWQxM2VmNjVlYWI5OGE5MDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCkBAIC00Nyw2ICs0Nyw3
IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTUmVtb3RlRE9NV2luZG93QmFzZTo6
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
Q3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJF
dmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgbnVs
bHB0ciwgLy8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAogICAgIG51bGxwdHIs
IC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAg
ICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDUzNzZl
ODBkMDAwNTM3NzYyNTgyYWEyNWJlOTFkMTJhOGY1OTdlYzQuLmM0NGYyZmIzYTBiMDVkYWFiMWE4
YTllMmY4OWI1MmQ4NTFlYjQzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAgY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8g
Y29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAppbmRleCAwOTY1YTg2YzQxOGJlNjFlNjJlMWZmZGFjNmNmZThiYWY2YjRkNmVl
Li5iMTRiODE1NDJkYjg4OWVjNmQyNTliYzViNzBlZjJhNTA5OWM5NmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAKQEAgLTU3LDYgKzU3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmwKICAgICBudWxscHRy
LCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIs
IC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAor
ICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFu
Z3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8v
IGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkzMWNlZTc3NzliZjk2MTQzOGU4
MjAxNTBjN2E3ZjhhYjQ2NzU1NDcuLjcxNmIxYTY5YjhlZWMxZGE2NDcyMDFhNDMyNjkyYjMzODk3
ZWI3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKICNpbmNsdWRlICJXb3JrZXJD
b25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24u
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXRO
b3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOCiAKICAgICBwcm9jZXNzVGlt
ZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIo
bV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92
bS0+cHJvbWlzZVRpbWVyLnB0cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRX
b3JrVGltZXIucHRyKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJlbW92
ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0
aW9uQ2FsbGJhY2sgY2FsbGJhY2spCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRp
bWVyOjpUaW0KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxi
YWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNr
KCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIucHRyKCkpOworICAgIHBy
b2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7CiB9CiAKIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdn
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlYzA3YWM0
NjM1MGQyYTM0MjllYTA5ODc0ZTNmZGYyZGZkYTllNDUxLi42NmVjZDUzNmY4MTNkMDI5YzQ5N2Yx
YWVhN2YyMTllZGZjNzViMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KIAogI2lmIFVTRShHTElCKQog
I2luY2x1ZGUgPGdsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2YTg4Y2FhMTQ0YWUyN2ZjN2MxZjJkNWYzM2Jj
ZDEwOGNjMTIwYTllLi4yMGE2Zjg1NjE4NThhZGZiZTJlMmJjMThlYmY3MTUwYjk3YWQxNGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0zNywxMSArMzcsMTEgQEAKICNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVu
dC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVs
cGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2ZTdiYzE3YTM3MDE5ODM1MTY1
OTRjNThmNDQ3YWZhOTQ5Y2UyYzYuLjIxN2UzZjhiMWY3N2RiNjk1ZjdhYjc3ZTcxNDJhOTZkOTFj
ZDBiNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxp
emF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKG1ha2VXZWFrUmVmKToKKyAgICAgICAgKHR1cm5FdmVudExvb3Ap
OgorICAgICAgICAoYXN5bmMgdGVzdCk6CisgICAgICAgICoganMvdW50aXRsZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRt
bDogQWRkZWQuCisKIDIwMjAtMDctMTcgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1dlYkdMMl0gUmVhZFBpeGVscyB1cGRhdGVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5q
cyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiMjJkYzM5ZGU4MGI0ZGQ5ZDFkZTRmYmQwNGQzMWQzMzE2MTRl
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3Jl
Zi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcwpAQCAtMCwwICsxLDU1IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlV2Vha1JlZnM9dHJ1ZSIpCisKK2FzeW5jVGVzdFN0YXJ0KDEpOwordmFyIG9i
amVjdHMgPSBbXTsKK3ZhciB3ZWFrUmVmcyA9IFtdOwordmFyIGZpbmFsaXplckNhbGxlZCA9IGZh
bHNlOwordmFyIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KCgpID0+IGZpbmFsaXplckNhbGxlZCA9IHRydWUpOworZnVuY3Rpb24gbWFrZVdlYWtSZWYoKSB7
IHJldHVybiBuZXcgV2Vha1JlZih7IGZvbzogMSB9KTsgfQorbm9JbmxpbmUobWFrZVdlYWtSZWYp
OworCisvLyBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMgdGVzdCBzdGFuZGFsb25lLXByZS5q
cyBwcmludHMgbmV3bGluZXMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZnJvbSBqcy10ZXN0LXByZS5q
cyBmb3IgYXN5bmMgdGVzdHMgc28gd2UgZG9uJ3QgdXNlIHRoZSBzaG91bGRCZSBoZWxwZXJzLi4u
CitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCBtc2cgPSAiIikgeworICAgIGlmICghY29uZGl0
aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30KKworbGV0IGxvb3BDb3VudCA9
IDEwMDA7CitmdW5jdGlvbiB0dXJuRXZlbnRMb29wKCkgeworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg
ICAgICAgZ2MoKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSwgMCk7CisgICAg
fSk7Cit9CisKK3ZhciBpOworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKSB7CisgICAgICAgIGxldCB3ZWFrID0gbWFrZVdlYWtS
ZWYoKTsKKyAgICAgICAgd2Vha1JlZnMucHVzaCh3ZWFrKTsKKyAgICAgICAgb2JqZWN0cy5wdXNo
KHdlYWsuZGVyZWYoKSk7CisgICAgICAgIGZpbmFsaXphdGlvblJlZ2lzdHJ5LnJlZ2lzdGVyKHdl
YWsuZGVyZWYoKSk7CisgICAgfQorCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAg
YXNzZXJ0KGZpbmFsaXplckNhbGxlZCA9PT0gZmFsc2UpOworICAgIGZvciAoaSA9IDA7IGkgPCBs
b29wQ291bnQ7IGkrKykKKyAgICAgICAgYXNzZXJ0KHdlYWtSZWZzW2ldLmRlcmVmKCkgPT09IG9i
amVjdHNbaV0sICJmYWlsZWQgb24gaXRlcmF0aW9uOiAiICsgaSk7CisKKyAgICBvYmplY3RzLmxl
bmd0aCA9IDA7CisgICAgb2JqZWN0cyA9IG51bGw7CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29w
KCk7CisgICAgLy8gV2UgbmVlZCB0byB0dXJuIHRoZSBldmVudCBsb29wIGFnYWluIHNpbmNlIEZS
IG1heSBub3QgaGF2ZSBjYWxsZWQgdGhlIGNhbGxiYWNrIGluIHRoZSBsYXN0IHR1cm4uCisgICAg
YXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAgYXNzZXJ0KGZpbmFsaXplckNhbGxlZCA9PT0g
dHJ1ZSk7CisgICAgYXNzZXJ0KHdlYWtSZWZzLnNvbWUoKHdlYWtSZWYpID0+IHdlYWtSZWYuZGVy
ZWYoKSA9PT0gbnVsbCkgPT09IHRydWUpOworCisgICAgYXN5bmNUZXN0UGFzc2VkKCk7Cit9CisK
K3Rlc3QoKS5jYXRjaChlID0+IGRlYnVnKGUpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3VudGl0bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy91bnRpdGxlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNjMGUxY2I3MDVhOWQ3NzkwODA0YzY5ODUyN2M4NDMyMTNkNGFkNmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy91bnRpdGxlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj48IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5h
bGl6YXRpb24tcmVnaXN0cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40M2U1ZWVlZGJmMWI0MzVmOTZjM2EyMGJmODE0MDFhZWU0MzMxOTgx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25y
ZWdpc3RyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvd2Vh
a3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxZDdjZjQ3ZDRhMzQx
Njk4YmQwZDU1ZWQ2YTg4OTBiZmU0MTI3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFrcmVm
LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTljODVi
NjJjYmMxYzAxNjBjYzc5NzFmNzIzNzZjMzk1Yzc0ZjRkNS4uMjYwMDZmNzJjMzk4NDNiYjVkNzcx
ODJkMzdmY2IxMDg1ZTFkMjM3MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IEZpbmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1
a2kuCisKKyAgICAgICAgU2hhbWVsZXNzbHkgY29weSB2OCdzIHRlc3RzIGFuZCByZWZhY3RvciB0
aGVtIHRvIHdvcmsgd2l0aCBjb25zZXJ2YXRpdmUgR0MuCisKKyAgICAgICAgKiBzdHJlc3MvcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanM6IEFkZGVkLgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVy
cm9yKToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcm90b3R5cGUudG9TdHJpbmcp
OgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoY2xhc3NPZik6CisgICAgICAgIChWYWx1ZU9m
KToKKyAgICAgICAgKHByZXR0eVByaW50ZWQpOgorICAgICAgICAocHJldHR5UHJpbnRlZEFycmF5
RWxlbWVudCk6CisgICAgICAgIChmYWlsV2l0aE1lc3NhZ2UpOgorICAgICAgICAoZm9ybWF0RmFp
bHVyZVRleHQpOgorICAgICAgICAoZmFpbCk6CisgICAgICAgIChkZWVwT2JqZWN0RXF1YWxzKToK
KyAgICAgICAgKGRlZXBFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0U2FtZSk6CisgICAgICAgIChh
c3NlcnROb3RTYW1lKToKKyAgICAgICAgKGFzc2VydEVxdWFscyk6CisgICAgICAgIChhc3NlcnRO
b3RFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0RXF1YWxzRGVsdGEpOgorICAgICAgICAoYXNzZXJ0
QXJyYXlFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0UHJvcGVydGllc0VxdWFsKToKKyAgICAgICAg
KGFzc2VydFRvU3RyaW5nRXF1YWxzKToKKyAgICAgICAgKGFzc2VydFRydWUpOgorICAgICAgICAo
YXNzZXJ0RmFsc2UpOgorICAgICAgICAoYXNzZXJ0TnVsbCk6CisgICAgICAgIChhc3NlcnROb3RO
dWxsKToKKyAgICAgICAgKGV4ZWN1dGVDb2RlKToKKyAgICAgICAgKGNoZWNrRXhjZXB0aW9uKToK
KyAgICAgICAgKGFzc2VydFRocm93cyk6CisgICAgICAgIChhc3NlcnRUaHJvd3NFcXVhbHMpOgor
ICAgICAgICAoYXNzZXJ0VGhyb3dzQXN5bmMpOgorICAgICAgICAoYXNzZXJ0SW5zdGFuY2VvZik6
CisgICAgICAgIChhc3NlcnREb2VzTm90VGhyb3cpOgorICAgICAgICAoYXNzZXJ0VW5yZWFjaGFi
bGUpOgorICAgICAgICAoYXNzZXJ0Q29udGFpbnMpOgorICAgICAgICAoYXNzZXJ0TWF0Y2hlcyk6
CisgICAgICAgIChjb25jYXRlbmF0ZUVycm9ycyk6CisgICAgICAgIChhc3NlcnRQcm9taXNlUmVz
dWx0KToKKyAgICAgICAgKE9wdGltaXphdGlvblN0YXR1cyk6CisgICAgICAgIChhc3NlcnRVbm9w
dGltaXplZCk6CisgICAgICAgIChhc3NlcnRPcHRpbWl6ZWQpOgorICAgICAgICAoaXNOZXZlck9w
dGltaXplTGl0ZU1vZGUpOgorICAgICAgICAoaXNOZXZlck9wdGltaXplKToKKyAgICAgICAgKGlz
QWx3YXlzT3B0aW1pemUpOgorICAgICAgICAoaXNJbnRlcnByZXRlZCk6CisgICAgICAgIChpc09w
dGltaXplZCk6CisgICAgICAgIChpc1R1cmJvRmFubmVkKToKKyAgICAgICAgKE1qc1VuaXRBc3Nl
cnRpb25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFu
dXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRf
ZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQt
cmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICog
c3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanM6IEFkZGVkLgorICAgICAg
ICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoVGVz
dENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxlKToKKyAgICAg
ICAgKFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5
QXNDbGVhbnVwKToKKyAgICAgICAgKFRlc3RSZWdpc3RlclRhcmdldEFuZEhvbGRpbmdzU2FtZVZh
bHVlKToKKyAgICAgICAgKFRlc3RSZWdpc3RlcldpdGhvdXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSk6CisgICAgICAgIChU
ZXN0VW5yZWdpc3RlcldpdGhOb25GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0
V2Vha1JlZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCk6CisgICAgICAgIChUZXN0V2Vha1JlZldp
dGhQcm94eSk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13
ZWFrcmVmLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKHNldFRp
bWVvdXQpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1o
b2xkaW5ncy1hbGl2ZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAg
IChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVn
aXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC5jbGVhbnVwMCk6CisgICAgICAgIChsZXQuY2xlYW51cDEpOgorICAgICAgICAo
bGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZp
bmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToK
KyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1yZWVudHJh
bnQtZ2MtZnJvbS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5yZWVudHJhbnRfZ2Mp
OgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LXN0cmVzcy1maW5h
bGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzOiBBZGRlZC4KKyAgICAgICAgKGkucmVn
aXN0cmllcy5wdXNoLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChyZWdpc3Ry
aWVzLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanM6
IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVu
Yyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qczogQWRk
ZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToK
KyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qczogQWRkZWQu
CisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAg
ICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanM6IEFkZGVkLgorICAg
ICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAg
ICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAq
IHN0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qczogQWRkZWQuCisgICAgICAg
IChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBz
dHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVw
KToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC13ZWFr
LXVucmVnaXN0ZXJ0b2tlbi5qczogQWRkZWQuCisgICAgICAgIChGUi5uZXcuRmluYWxpemF0aW9u
UmVnaXN0cnkpOgorICAgICAgICAodHJ5QWdhaW4pOgorCiAyMDIwLTA3LTE3ICBYYW4gTG9wZXog
IDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVsZCB0aGUgd3Jv
bmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNzc0NjFmNzRjOTAyMjMyMWZjNjBlNjg2Zjc5NWQ1MGUzOTI5ODE2
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQu
anMKQEAgLTAsMCArMSw4MDkgQEAKKy8vIENvcHlyaWdodCAyMDA4IHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gTWpzVW5pdEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpIHsKKyAgdGhpcy5tZXNzYWdlID0gbWVz
c2FnZTsKKyAgLy8gVGVtcG9yYXJpbHkgaW5zdGFsbCBhIGN1c3RvbSBzdGFjayB0cmFjZSBmb3Jt
YXR0ZXIgYW5kIHJlc3RvcmUgdGhlCisgIC8vIHByZXZpb3VzIHZhbHVlLgorICBsZXQgcHJldlBy
ZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CisgIHRyeSB7CisgICAg
RXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0
YWNrVHJhY2U7CisgICAgLy8gVGhpcyBhbGxvd3MgZmV0Y2hpbmcgdGhlIHN0YWNrIHRyYWNlIHVz
aW5nIFRyeUNhdGNoOjpTdGFja1RyYWNlLgorICAgIHRoaXMuc3RhY2sgPSBuZXcgRXJyb3IoIk1q
c1VuaXRBc3NlcnRpb25FcnJvciIpLnN0YWNrOworICB9IGZpbmFsbHkgeworICAgIEVycm9yLnBy
ZXBhcmVTdGFja1RyYWNlID0gcHJldlByZXBhcmVTdGFja1RyYWNlOworICB9Cit9CisKKy8qCisg
KiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgaW4gYWxsIG1pbmkganN1bml0IHRlc3QgY2FzZXMuICBU
aGUgdGVzdAorICogZnJhbWV3b3JrIGV4cGVjdHMgbGluZXMgdGhhdCBzaWduYWwgZmFpbGVkIHRl
c3RzIHRvIHN0YXJ0IHdpdGgKKyAqIHRoZSBmLXdvcmQgYW5kIGlnbm9yZSBhbGwgb3RoZXIgbGlu
ZXMuCisgKi8KKworTWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1
bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubWVzc2FnZSArICJcblxuU3RhY2s6ICIgKyB0aGlz
LnN0YWNrOworfTsKKworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIHRoZSBzYW1lIG9i
amVjdHMsIG9yIHRoZSBzYW1lIHByaW1pdGl2ZQorLy8gdmFsdWVzLgorLy8gRm9yIGtub3duIHBy
aW1pdGl2ZSB2YWx1ZXMsIHBsZWFzZSB1c2UgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFNhbWU7
CisKKy8vIEludmVyc2Ugb2YgYXNzZXJ0U2FtZS4KK3ZhciBhc3NlcnROb3RTYW1lOworCisvLyBF
eHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIGFyZSBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVlcyBv
ciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5n
IGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0
cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1B
cnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnRFcXVhbHM7CisKKy8vIERlZXAgZXF1YWxpdHkgcHJl
ZGljYXRlIHVzZWQgYnkgYXNzZXJ0RXF1YWxzLgordmFyIGRlZXBFcXVhbHM7CisKKy8vIEV4cGVj
dGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIG5vdCBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVlcyBv
ciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5n
IGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0
cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1B
cnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnROb3RFcXVhbHM7CisKKy8vIFRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlIGlzIHdpdGhpbiBjZXJ0YWluIHRvbGVy
YW5jZS4KK3ZhciBhc3NlcnRFcXVhbHNEZWx0YTsKKworLy8gVGhlIGZvdW5kIG9iamVjdCBpcyBh
biBBcnJheSB3aXRoIHRoZSBzYW1lIGxlbmd0aCBhbmQgZWxlbWVudHMKKy8vIGFzIHRoZSBleHBl
Y3RlZCBvYmplY3QuIFRoZSBleHBlY3RlZCBvYmplY3QgZG9lc24ndCBuZWVkIHRvIGJlIGFuIEFy
cmF5LAorLy8gYXMgbG9uZyBhcyBpdCdzICJhcnJheS1pc2giLgordmFyIGFzc2VydEFycmF5RXF1
YWxzOworCisvLyBUaGUgZm91bmQgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc2FtZSBlbnVtZXJhYmxl
IHByb3BlcnRpZXMgYXMgdGhlCisvLyBleHBlY3RlZCBvYmplY3QuIFRoZSB0eXBlIG9mIG9iamVj
dCBpc24ndCBjaGVja2VkLgordmFyIGFzc2VydFByb3BlcnRpZXNFcXVhbDsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIHN0cmluZyBjb252ZXJzaW9uIG9mIHRoZSBmb3VuZCB2YWx1ZSBpcyBlcXVhbCB0
bworLy8gdGhlIGV4cGVjdGVkIHN0cmluZy4gT25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSwgcGxlYXNlCisvLyBjaGVjayB0aGUgcmVhbCBzdHJ1Y3R1cmUgb2YgdGhlIGZvdW5k
IHZhbHVlLgordmFyIGFzc2VydFRvU3RyaW5nRXF1YWxzOworCisvLyBDaGVja3MgdGhhdCB0aGUg
Zm91bmQgdmFsdWUgaXMgdHJ1ZS4gVXNlIHdpdGggYm9vbGVhbiBleHByZXNzaW9ucworLy8gZm9y
IHRlc3RzIHRoYXQgZG9lc24ndCBoYXZlIHRoZWlyIG93biBhc3NlcnRYWFggZnVuY3Rpb24uCit2
YXIgYXNzZXJ0VHJ1ZTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIGZhbHNl
LgordmFyIGFzc2VydEZhbHNlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMg
bnVsbC4gS2VwdCBmb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LAorLy8gcGxlYXNlIGp1c3Qg
dXNlIGFzc2VydEVxdWFscyhudWxsLCBleHBlY3RlZCkuCit2YXIgYXNzZXJ0TnVsbDsKKworLy8g
Q2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzICpub3QqIG51bGwuCit2YXIgYXNzZXJ0Tm90
TnVsbDsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNvZGUg
dGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgaXMg
YW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhjZXB0aW9uIGlz
IGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRpb25hbCB0aGly
ZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9iamVjdCB0aGF0
IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4K
K3ZhciBhc3NlcnRUaHJvd3M7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24g
dGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBleGNlcHRpb24gaXMgY2hlY2tlZCBhZ2FpbnN0
IHRoZSBzZWNvbmQgYXJndW1lbnQgdXNpbmcgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFRocm93
c0VxdWFsczsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBwcm9taXNlIGRvZXMgbm90IHJl
c29sdmUsIGJ1dCBldmVudHVhbGx5IHRocm93cyBhbgorLy8gZXhjZXB0aW9uLiBUaGUgb3B0aW9u
YWwgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlvbiBjb25zdHJ1Y3RvciB0aGF0IHRoZQor
Ly8gdGhyb3duIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qgd2l0aCAiaW5zdGFuY2VvZiIu
CisvLyBUaGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBtZXNzYWdlIHR5cGUgc3RyaW5n
IG9yIFJlZ0V4cCBvYmplY3QgdGhhdCBpcworLy8gY29tcGFyZWQgdG8gdGhlIG1lc3NhZ2Ugb2Yg
dGhlIHRocm93biBleGNlcHRpb24uCit2YXIgYXNzZXJ0VGhyb3dzQXN5bmM7CisKKy8vIEFzc2Vy
dCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gb3IgZXZhbCBjb2RlIGRvZXMgbm90IHRocm93IGFu
IGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnREb2VzTm90VGhyb3c7CisKKy8vIEFzc2VydHMgdGhhdCB0
aGUgZm91bmQgdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvbnN0cnVjdG9yIHBhc3NlZAor
Ly8gYXMgdGhlIHNlY29uZCBhcmd1bWVudC4KK3ZhciBhc3NlcnRJbnN0YW5jZW9mOworCisvLyBB
c3NlcnQgdGhhdCB0aGlzIGNvZGUgaXMgbmV2ZXIgZXhlY3V0ZWQgKGkuZS4sIGFsd2F5cyBmYWls
cyBpZiBleGVjdXRlZCkuCit2YXIgYXNzZXJ0VW5yZWFjaGFibGU7CisKKy8vIEFzc2VydCB0aGF0
IHRoZSBmdW5jdGlvbiBjb2RlIGlzIChub3QpIG9wdGltaXplZC4gIElmICJubyBzeW5jIiBpcyBw
YXNzZWQKKy8vIGFzIHNlY29uZCBhcmd1bWVudCwgd2UgZG8gbm90IHdhaXQgZm9yIHRoZSBjb25j
dXJyZW50IG9wdGltaXphdGlvbiB0aHJlYWQgdG8KKy8vIGZpbmlzaCB3aGVuIHBvbGxpbmcgZm9y
IG9wdGltaXphdGlvbiBzdGF0dXMuCisvLyBPbmx5IHdvcmtzIHdpdGggLS1hbGxvdy1uYXRpdmVz
LXN5bnRheC4KK3ZhciBhc3NlcnRPcHRpbWl6ZWQ7Cit2YXIgYXNzZXJ0VW5vcHRpbWl6ZWQ7CisK
Ky8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIGNvbnRhaW5zIGFub3RoZXIgZXhwZWN0ZWQgc3Vic3Ry
aW5nLgordmFyIGFzc2VydENvbnRhaW5zOworCisvLyBBc3NlcnQgdGhhdCBhIHN0cmluZyBtYXRj
aGVzIGEgZ2l2ZW4gcmVnZXguCit2YXIgYXNzZXJ0TWF0Y2hlczsKKworLy8gQXNzZXJ0IHRoYXQg
YSBwcm9taXNlIHJlc29sdmVzIG9yIHJlamVjdHMuCisvLyBQYXJhbWV0ZXJzOgorLy8ge3Byb21p
c2V9IC0gdGhlIHByb21pc2UKKy8vIHtzdWNjZXNzfSAtIG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3
aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAgcmVz
b2x2aW5nIHByb21pc2UuCisvLyAge2ZhaWx9IC0gICBvcHRpb25hbCAtIGEgY2FsbGJhY2sgd2hp
Y2ggaXMgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUKKy8vICAgICAgICAgICAgIHJlamVj
dGluZyBwcm9taXNlLiBJZiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCBidXQgbm8ge2ZhaWx9Cisv
LyAgICAgICAgICAgICBjYWxsYmFjayBpcyBzZXQsIHRoZSBlcnJvciBpcyBwcm9wYWdhdGVkIG91
dCBvZiB0aGUgcHJvbWlzZQorLy8gICAgICAgICAgICAgY2hhaW4uCit2YXIgYXNzZXJ0UHJvbWlz
ZVJlc3VsdDsKKwordmFyIHByb21pc2VUZXN0Q2hhaW47Cit2YXIgcHJvbWlzZVRlc3RDb3VudCA9
IDA7CisKKy8vIFRoZXNlIGJpdHMgbXVzdCBiZSBpbiBzeW5jIHdpdGggYml0cyBkZWZpbmVkIGlu
IFJ1bnRpbWVfR2V0T3B0aW1pemF0aW9uU3RhdHVzCit2YXIgVjhPcHRpbWl6YXRpb25TdGF0dXMg
PSB7CisgIGtJc0Z1bmN0aW9uOiAxIDw8IDAsCisgIGtOZXZlck9wdGltaXplOiAxIDw8IDEsCisg
IGtBbHdheXNPcHRpbWl6ZTogMSA8PCAyLAorICBrTWF5YmVEZW9wdGVkOiAxIDw8IDMsCisgIGtP
cHRpbWl6ZWQ6IDEgPDwgNCwKKyAga1R1cmJvRmFubmVkOiAxIDw8IDUsCisgIGtJbnRlcnByZXRl
ZDogMSA8PCA2LAorICBrTWFya2VkRm9yT3B0aW1pemF0aW9uOiAxIDw8IDcsCisgIGtNYXJrZWRG
b3JDb25jdXJyZW50T3B0aW1pemF0aW9uOiAxIDw8IDgsCisgIGtPcHRpbWl6aW5nQ29uY3VycmVu
dGx5OiAxIDw8IDksCisgIGtJc0V4ZWN1dGluZzogMSA8PCAxMCwKKyAga1RvcG1vc3RGcmFtZUlz
VHVyYm9GYW5uZWQ6IDEgPDwgMTEsCisgIGtMaXRlTW9kZTogMSA8PCAxMiwKKyAga01hcmtlZEZv
ckRlb3B0aW1pemF0aW9uOiAxIDw8IDEzLAorfTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0tbGl0
ZS1tb2RlIGlzIG9uIGFuZCB3ZSBjYW4ndCBldmVyIHR1cm4gb24gb3B0aW1pemF0aW9uLgordmFy
IGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlOworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1uby1vcHQg
bW9kZSBpcyBvbi4KK3ZhciBpc05ldmVyT3B0aW1pemU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAt
LWFsd2F5cy1vcHQgbW9kZSBpcyBvbi4KK3ZhciBpc0Fsd2F5c09wdGltaXplOworCisvLyBSZXR1
cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaW4gaW50ZXJwcmV0ZWQuCit2YXIgaXNJbnRlcnBy
ZXRlZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlzIG9wdGltaXplZC4K
K3ZhciBpc09wdGltaXplZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlz
IGNvbXBpbGVkIGJ5IFR1cmJvRmFuLgordmFyIGlzVHVyYm9GYW5uZWQ7CisKKy8vIE1vbmtleS1w
YXRjaGFibGUgYWxsLXB1cnBvc2UgZmFpbHVyZSBoYW5kbGVyLgordmFyIGZhaWxXaXRoTWVzc2Fn
ZTsKKworLy8gUmV0dXJucyB0aGUgZm9ybWF0dGVkIGZhaWx1cmUgdGV4dC4gIFVzZWQgYnkgdGVz
dC1hc3luYy5qcy4KK3ZhciBmb3JtYXRGYWlsdXJlVGV4dDsKKworLy8gUmV0dXJucyBhIHByZXR0
eS1wcmludGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGFzc2VkIHZhbHVlLgordmFy
IHByZXR0eVByaW50ZWQ7CisKKyhmdW5jdGlvbiAoKSB7ICAvLyBTY29wZSBmb3IgdXRpbGl0eSBm
dW5jdGlvbnMuCisKKyAgdmFyIE9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZzsKKyAgdmFyIE51bWJlclByb3RvdHlwZVZhbHVlT2YgPSBOdW1iZXIucHJv
dG90eXBlLnZhbHVlT2Y7CisgIHZhciBCb29sZWFuUHJvdG90eXBlVmFsdWVPZiA9IEJvb2xlYW4u
cHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mID0gU3RyaW5n
LnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgRGF0ZVByb3RvdHlwZVZhbHVlT2YgPSBEYXRlLnBy
b3RvdHlwZS52YWx1ZU9mOworICB2YXIgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcgPSBSZWdFeHAu
cHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgQXJyYXlQcm90b3R5cGVGb3JFYWNoID0gQXJyYXku
cHJvdG90eXBlLmZvckVhY2g7CisgIHZhciBBcnJheVByb3RvdHlwZUpvaW4gPSBBcnJheS5wcm90
b3R5cGUuam9pbjsKKyAgdmFyIEFycmF5UHJvdG90eXBlTWFwID0gQXJyYXkucHJvdG90eXBlLm1h
cDsKKyAgdmFyIEFycmF5UHJvdG90eXBlUHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOworCisg
IHZhciBCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOworICAvLyBUT0RPKG5laXMpOiBSZW1vdmUgdHJ5
LWNhdGNoIG9uY2UgQmlnSW50cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICB0cnkgeworICAg
IEJpZ0ludFByb3RvdHlwZVZhbHVlT2YgPSBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2Y7CisgIH0g
Y2F0Y2ggKGUpIHt9CisKKyAgZnVuY3Rpb24gY2xhc3NPZihvYmplY3QpIHsKKyAgICAvLyBBcmd1
bWVudCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgc3RyaW5nID0gT2Jq
ZWN0UHJvdG90eXBlVG9TdHJpbmcuY2FsbChvYmplY3QpOworICAgIC8vIFN0cmluZyBoYXMgZm9y
bWF0IFtvYmplY3QgPENsYXNzTmFtZT5dLgorICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDgs
IHN0cmluZy5sZW5ndGggLSAxKTsKKyAgfQorCisKKyAgZnVuY3Rpb24gVmFsdWVPZih2YWx1ZSkg
eworICAgIHN3aXRjaCAoY2xhc3NPZih2YWx1ZSkpIHsKKyAgICAgIGNhc2UgIk51bWJlciI6Cisg
ICAgICAgIHJldHVybiBOdW1iZXJQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAg
Y2FzZSAiQmlnSW50IjoKKyAgICAgICAgcmV0dXJuIEJpZ0ludFByb3RvdHlwZVZhbHVlT2YuY2Fs
bCh2YWx1ZSk7CisgICAgICBjYXNlICJTdHJpbmciOgorICAgICAgICByZXR1cm4gU3RyaW5nUHJv
dG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkJvb2xlYW4iOgorICAgICAg
ICByZXR1cm4gQm9vbGVhblByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBjYXNl
ICJEYXRlIjoKKyAgICAgICAgcmV0dXJuIERhdGVQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUp
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgfQorCisK
KyAgcHJldHR5UHJpbnRlZCA9IGZ1bmN0aW9uIHByZXR0eVByaW50ZWQodmFsdWUpIHsKKyAgICBz
d2l0Y2ggKHR5cGVvZiB2YWx1ZSkgeworICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgcmV0
dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKKyAgICAgIGNhc2UgImJpZ2ludCI6CisgICAgICAg
IHJldHVybiBTdHJpbmcodmFsdWUpICsgIm4iOworICAgICAgY2FzZSAibnVtYmVyIjoKKyAgICAg
ICAgaWYgKHZhbHVlID09PSAwICYmICgxIC8gdmFsdWUpIDwgMCkgcmV0dXJuICItMCI7CisgICAg
ICAgIC8vIEZBTExUSFJPVUdILgorICAgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgICBjYXNlICJ1
bmRlZmluZWQiOgorICAgICAgY2FzZSAiZnVuY3Rpb24iOgorICAgICAgY2FzZSAic3ltYm9sIjoK
KyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7CisgICAgICBjYXNlICJvYmplY3QiOgorICAg
ICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAibnVsbCI7CisgICAgICAgIHZhciBvYmpl
Y3RDbGFzcyA9IGNsYXNzT2YodmFsdWUpOworICAgICAgICBzd2l0Y2ggKG9iamVjdENsYXNzKSB7
CisgICAgICAgICAgY2FzZSAiTnVtYmVyIjoKKyAgICAgICAgICBjYXNlICJCaWdJbnQiOgorICAg
ICAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAgICAg
ICAgY2FzZSAiRGF0ZSI6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKCIgKyBw
cmV0dHlQcmludGVkKFZhbHVlT2YodmFsdWUpKSArICIpIjsKKyAgICAgICAgICBjYXNlICJSZWdF
eHAiOgorICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwodmFs
dWUpOworICAgICAgICAgIGNhc2UgIkFycmF5IjoKKyAgICAgICAgICAgIHZhciBtYXBwZWQgPSBB
cnJheVByb3RvdHlwZU1hcC5jYWxsKAorICAgICAgICAgICAgICAgIHZhbHVlLCBwcmV0dHlQcmlu
dGVkQXJyYXlFbGVtZW50KTsKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVByb3RvdHlw
ZUpvaW4uY2FsbChtYXBwZWQsICIsIik7CisgICAgICAgICAgICByZXR1cm4gIlsiICsgam9pbmVk
ICsgIl0iOworICAgICAgICAgIGNhc2UgIlVpbnQ4QXJyYXkiOgorICAgICAgICAgIGNhc2UgIklu
dDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAi
VWludDE2QXJyYXkiOgorICAgICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKKyAgICAgICAgICBj
YXNlICJJbnQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgorICAgICAg
ICAgIGNhc2UgIkZsb2F0NjRBcnJheSI6CisgICAgICAgICAgICB2YXIgam9pbmVkID0gQXJyYXlQ
cm90b3R5cGVKb2luLmNhbGwodmFsdWUsICIsIik7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0
Q2xhc3MgKyAiKFsiICsgam9pbmVkICsgIl0pIjsKKyAgICAgICAgICBjYXNlICJPYmplY3QiOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3RDbGFzcyArICIoIiArIFN0cmluZyh2YWx1ZSkgKyAiKSI7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gY2xhc3NPZigpIHJldHVybmVkICJPYmplY3QiLgorICAgICAgICB2YXIgbmFtZSA9
IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7CisgICAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZSAr
ICIoKSI7CisgICAgICAgIHJldHVybiAiT2JqZWN0KCkiOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuICItLSB1bmtub3duIHZhbHVlIC0tIjsKKyAgICB9CisgIH0KKworCisgIGZ1bmN0
aW9uIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQodmFsdWUsIGluZGV4LCBhcnJheSkgeworICAg
IGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoaW5kZXggaW4gYXJyYXkpKSByZXR1cm4gIiI7
CisgICAgcmV0dXJuIHByZXR0eVByaW50ZWQodmFsdWUpOworICB9CisKKworICBmYWlsV2l0aE1l
c3NhZ2UgPSBmdW5jdGlvbiBmYWlsV2l0aE1lc3NhZ2UobWVzc2FnZSkgeworICAgIHRocm93IG5l
dyBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSk7CisgIH0KKworICBmb3JtYXRGYWlsdXJl
VGV4dCA9IGZ1bmN0aW9uKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgdmFy
IG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAgIC8v
IEZpeCB0aGlzIHdoZW4gd2UgZGl0Y2ggdGhlIG9sZCB0ZXN0IHJ1bm5lci4KKyAgICAgIG1lc3Nh
Z2UgKz0gIiAoIiArIG5hbWVfb3B0ICsgIikiOworICAgIH0KKworICAgIHZhciBmb3VuZFRleHQg
PSBwcmV0dHlQcmludGVkKGZvdW5kKTsKKyAgICBpZiAoZXhwZWN0ZWRUZXh0Lmxlbmd0aCA8PSA0
MCAmJiBmb3VuZFRleHQubGVuZ3RoIDw9IDQwKSB7CisgICAgICBtZXNzYWdlICs9ICI6IGV4cGVj
dGVkIDwiICsgZXhwZWN0ZWRUZXh0ICsgIj4gZm91bmQgPCIgKyBmb3VuZFRleHQgKyAiPiI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjpcbmV4cGVjdGVkOlxuIiArIGV4cGVjdGVk
VGV4dCArICJcbmZvdW5kOlxuIiArIGZvdW5kVGV4dDsKKyAgICB9CisgICAgcmV0dXJuIG1lc3Nh
Z2U7CisgIH0KKworICBmdW5jdGlvbiBmYWlsKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0
KSB7CisgICAgcmV0dXJuIGZhaWxXaXRoTWVzc2FnZShmb3JtYXRGYWlsdXJlVGV4dChleHBlY3Rl
ZFRleHQsIGZvdW5kLCBuYW1lX29wdCkpOworICB9CisKKworICBmdW5jdGlvbiBkZWVwT2JqZWN0
RXF1YWxzKGEsIGIpIHsKKyAgICB2YXIgYVByb3BzID0gT2JqZWN0LmtleXMoYSk7CisgICAgYVBy
b3BzLnNvcnQoKTsKKyAgICB2YXIgYlByb3BzID0gT2JqZWN0LmtleXMoYik7CisgICAgYlByb3Bz
LnNvcnQoKTsKKyAgICBpZiAoIWRlZXBFcXVhbHMoYVByb3BzLCBiUHJvcHMpKSB7CisgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0
aDsgaSsrKSB7CisgICAgICBpZiAoIWRlZXBFcXVhbHMoYVthUHJvcHNbaV1dLCBiW2FQcm9wc1tp
XV0pKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKworCisgIGRlZXBFcXVhbHMgPSBmdW5jdGlvbiBkZWVwRXF1YWxzKGEsIGIp
IHsKKyAgICBpZiAoYSA9PT0gYikgeworICAgICAgLy8gQ2hlY2sgZm9yIC0wLgorICAgICAgaWYg
KGEgPT09IDApIHJldHVybiAoMSAvIGEpID09PSAoMSAvIGIpOworICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAodHlwZW9mIGEgPT09ICJudW1iZXIiKSByZXR1cm4gaXNOYU4oYSkgJiYgaXNOYU4oYik7
CisgICAgaWYgKHR5cGVvZiBhICE9PSAib2JqZWN0IiAmJiB0eXBlb2YgYSAhPT0gImZ1bmN0aW9u
IikgcmV0dXJuIGZhbHNlOworICAgIC8vIE5laXRoZXIgYSBub3IgYiBpcyBwcmltaXRpdmUuCisg
ICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NPZihhKTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgIT09
IGNsYXNzT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09ICJSZWdF
eHAiKSB7CisgICAgICAvLyBGb3IgUmVnRXhwLCBqdXN0IGNvbXBhcmUgcGF0dGVybiBhbmQgZmxh
Z3MgdXNpbmcgaXRzIHRvU3RyaW5nLgorICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3Ry
aW5nLmNhbGwoYSkgPT09CisgICAgICAgICAgICAgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2Fs
bChiKTsKKyAgICB9CisgICAgLy8gRnVuY3Rpb25zIGFyZSBvbmx5IGlkZW50aWNhbCB0byB0aGVt
c2VsdmVzLgorICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkZ1bmN0aW9uIikgcmV0dXJuIGZhbHNl
OworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkFycmF5IikgeworICAgICAgdmFyIGVsZW1lbnRD
b3VudCA9IDA7CisgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7
IGkrKykgeworICAgICAgICBpZiAoIWRlZXBFcXVhbHMoYVtpXSwgYltpXSkpIHJldHVybiBmYWxz
ZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAob2JqZWN0Q2xh
c3MgPT09ICJTdHJpbmciIHx8IG9iamVjdENsYXNzID09PSAiTnVtYmVyIiB8fAorICAgICAgb2Jq
ZWN0Q2xhc3MgPT09ICJCaWdJbnQiIHx8IG9iamVjdENsYXNzID09PSAiQm9vbGVhbiIgfHwKKyAg
ICAgIG9iamVjdENsYXNzID09PSAiRGF0ZSIpIHsKKyAgICAgIGlmIChWYWx1ZU9mKGEpICE9PSBW
YWx1ZU9mKGIpKSByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBkZWVwT2JqZWN0RXF1
YWxzKGEsIGIpOworICB9CisKKyAgYXNzZXJ0U2FtZSA9IGZ1bmN0aW9uIGFzc2VydFNhbWUoZXhw
ZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmIChPYmplY3QuaXMoZXhwZWN0ZWQsIGZv
dW5kKSkgcmV0dXJuOworICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBu
YW1lX29wdCk7CisgIH07CisKKyAgYXNzZXJ0Tm90U2FtZSA9IGZ1bmN0aW9uIGFzc2VydE5vdFNh
bWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmICghT2JqZWN0LmlzKGV4cGVj
dGVkLCBmb3VuZCkpIHJldHVybjsKKyAgICBmYWlsKCJub3Qgc2FtZSBhcyAiICsgcHJldHR5UHJp
bnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRFcXVhbHMg
PSBmdW5jdGlvbiBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAg
IGlmICghZGVlcEVxdWFscyhmb3VuZCwgZXhwZWN0ZWQpKSB7CisgICAgICBmYWlsKHByZXR0eVBy
aW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBhc3Nl
cnROb3RFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBu
YW1lX29wdCkgeworICAgIGlmIChkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAg
IGZhaWwoIm5vdCBlcXVhbHMgdG8gIiArIHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwg
bmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEVxdWFsc0RlbHRhID0KKyAgICAg
IGZ1bmN0aW9uIGFzc2VydEVxdWFsc0RlbHRhKGV4cGVjdGVkLCBmb3VuZCwgZGVsdGEsIG5hbWVf
b3B0KSB7CisgICAgaWYgKE1hdGguYWJzKGV4cGVjdGVkIC0gZm91bmQpID4gZGVsdGEpIHsKKyAg
ICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCkgKyAiICstICIgKyBwcmV0dHlQcmludGVk
KGRlbHRhKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRBcnJh
eUVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydEFycmF5RXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwgbmFt
ZV9vcHQpIHsKKyAgICB2YXIgc3RhcnQgPSAiIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAg
IHN0YXJ0ID0gbmFtZV9vcHQgKyAiIC0gIjsKKyAgICB9CisgICAgYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkLmxlbmd0aCwgZm91bmQubGVuZ3RoLCBzdGFydCArICJhcnJheSBsZW5ndGgiKTsKKyAgICBp
ZiAoZXhwZWN0ZWQubGVuZ3RoID09PSBmb3VuZC5sZW5ndGgpIHsKKyAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4
cGVjdGVkW2ldLCBmb3VuZFtpXSwKKyAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgImFycmF5
IGVsZW1lbnQgYXQgaW5kZXggIiArIGkpOworICAgICAgfQorICAgIH0KKyAgfTsKKworCisgIGFz
c2VydFByb3BlcnRpZXNFcXVhbCA9IGZ1bmN0aW9uIGFzc2VydFByb3BlcnRpZXNFcXVhbChleHBl
Y3RlZCwgZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lX29wdCkgeworICAgIC8vIENoZWNrIHByb3BlcnRpZXMgb25seS4K
KyAgICBpZiAoIWRlZXBPYmplY3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kKSkgeworICAgICAgZmFp
bChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRU
b1N0cmluZ0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRvU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBm
b3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lX29wdCkgeworICAgIGlmIChleHBlY3RlZCAhPT0gU3RyaW5nKGZvdW5kKSkgewor
ICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKwor
ICBhc3NlcnRUcnVlID0gZnVuY3Rpb24gYXNzZXJ0VHJ1ZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAg
ICBhc3NlcnRFcXVhbHModHJ1ZSwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgfTsKKworCisgIGFzc2Vy
dEZhbHNlID0gZnVuY3Rpb24gYXNzZXJ0RmFsc2UodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgYXNz
ZXJ0RXF1YWxzKGZhbHNlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0TnVs
bCA9IGZ1bmN0aW9uIGFzc2VydE51bGwodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVl
ICE9PSBudWxsKSB7CisgICAgICBmYWlsKCJudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9
CisgIH07CisKKworICBhc3NlcnROb3ROdWxsID0gZnVuY3Rpb24gYXNzZXJ0Tm90TnVsbCh2YWx1
ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgPT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm5v
dCBudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gZXhl
Y3V0ZUNvZGUoY29kZSkgeworICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ2Z1bmN0aW9uJykgIHJl
dHVybiBjb2RlKCk7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJykgcmV0dXJuIGV2
YWwoY29kZSk7CisgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAnR2l2ZW4gY29kZSBpcyBu
ZWl0aGVyIGZ1bmN0aW9uIG5vciBzdHJpbmcsIGJ1dCAnICsgKHR5cGVvZiBjb2RlKSArCisgICAg
ICAgICc6IDwnICsgcHJldHR5UHJpbnRlZChjb2RlKSArICc+Jyk7CisgIH0KKworICBmdW5jdGlv
biBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKHR5cGVf
b3B0ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIGFzc2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBl
b2YgdHlwZV9vcHQpOworICAgICAgYXNzZXJ0SW5zdGFuY2VvZihlLCB0eXBlX29wdCk7CisgICAg
fQorICAgIC8vIGlnbm9yZSBjYXVzZV9vcHQgYmVjYXVzZSBvdXIgZXJyb3IgbWVzc2FnZXMgYXJl
IG5vdCB0aGUgc2FtZSBhcyBWOCdzCisgICAgcmV0dXJuOworICAgIGlmIChSZWdFeHAgIT09IHVu
ZGVmaW5lZCAmJiBjYXVzZV9vcHQgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgIGFzc2VydE1h
dGNoZXMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfSBlbHNl
IGlmIChjYXVzZV9vcHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKGNhdXNl
X29wdCwgZS5tZXNzYWdlLCAnRXJyb3IgbWVzc2FnZScpOworICAgIH0KKyAgfQorCisgIGFzc2Vy
dFRocm93cyA9IGZ1bmN0aW9uIGFzc2VydFRocm93cyhjb2RlLCB0eXBlX29wdCwgY2F1c2Vfb3B0
KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVfb3B0ID09PSB1bmRlZmlu
ZWQpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dz
LCB1bmtub3duIHR5cGVfb3B0IGdpdmVuJyk7CisgICAgfQorICAgIGlmICh0eXBlX29wdCAhPT0g
dW5kZWZpbmVkICYmIHR5cGVvZiB0eXBlX29wdCAhPT0gJ2Z1bmN0aW9uJykgeworICAgICAgZmFp
bFdpdGhNZXNzYWdlKAorICAgICAgICAgICdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIG1h
eWJlIHlvdSB3YW50IGFzc2VydFRocm93c0VxdWFscycpOworICAgIH0KKyAgICB0cnkgeworICAg
ICAgZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgY2hlY2tFeGNl
cHRpb24oZSwgdHlwZV9vcHQsIGNhdXNlX29wdCk7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IGxldCBtc2cgPSAnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24nOworICAgIGlmICh0eXBlX29wdCAh
PT0gdW5kZWZpbmVkICYmIHR5cGVfb3B0Lm5hbWUgIT09IHVuZGVmaW5lZCkKKyAgICAgIG1zZyAr
PSAnLCBleHBlY3RlZCAnICsgdHlwZV9vcHQubmFtZTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UobXNn
KTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRUaHJvd3NF
cXVhbHMoZnVuLCB2YWwpIHsKKyAgICB0cnkgeworICAgICAgZnVuKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgYXNzZXJ0U2FtZSh2YWwsIGUpOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBmYWlsV2l0aE1lc3NhZ2UoJ0RpZCBub3QgdGhyb3cgZXhjZXB0aW9uLCBleHBlY3RlZCAnICsg
cHJldHR5UHJpbnRlZCh2YWwpKTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NBc3luYyA9IGZ1bmN0
aW9uIGFzc2VydFRocm93c0FzeW5jKHByb21pc2UsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5lZCkgewor
ICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIHVua25v
d24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmlu
ZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWlsV2l0aE1l
c3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5YmUgeW91
IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIGxldCBtc2cgPSAnUHJvbWlz
ZSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmlu
ZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9ICcsIGV4cGVj
dGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIHJldHVybiBhc3NlcnRQcm9taXNlUmVzdWx0KAor
ICAgICAgICBwcm9taXNlLAorICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0aGUg
ZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAvLyBjaGFpbi4K
KyAgICAgICAgcmVzID0+IHNldFRpbWVvdXQoXyA9PiBmYWlsKCc8dGhyb3c+JywgcmVzLCBtc2cp
LCAwKSwKKyAgICAgICAgZSA9PiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0
KSk7CisgIH07CisKKyAgYXNzZXJ0SW5zdGFuY2VvZiA9IGZ1bmN0aW9uIGFzc2VydEluc3RhbmNl
b2Yob2JqLCB0eXBlKSB7CisgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgdHlwZSkpIHsKKyAgICAg
IHZhciBhY3R1YWxUeXBlTmFtZSA9IG51bGw7CisgICAgICB2YXIgYWN0dWFsQ29uc3RydWN0b3Ig
PSBvYmogJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikuY29uc3RydWN0b3I7CisgICAgICBp
ZiAodHlwZW9mIGFjdHVhbENvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgIGFj
dHVhbFR5cGVOYW1lID0gYWN0dWFsQ29uc3RydWN0b3IubmFtZSB8fCBTdHJpbmcoYWN0dWFsQ29u
c3RydWN0b3IpOworICAgICAgfQorICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdP
YmplY3QgPCcgKyBwcmV0dHlQcmludGVkKG9iaikgKyAnPiBpcyBub3QgYW4gaW5zdGFuY2Ugb2Yg
PCcgKworICAgICAgICAgICh0eXBlLm5hbWUgfHwgdHlwZSkgKyAnPicgKworICAgICAgICAgIChh
Y3R1YWxUeXBlTmFtZSA/ICcgYnV0IG9mIDwnICsgYWN0dWFsVHlwZU5hbWUgKyAnPicgOiAnJykp
OworICAgIH0KKyAgfTsKKworICBhc3NlcnREb2VzTm90VGhyb3cgPSBmdW5jdGlvbiBhc3NlcnRE
b2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAgICB0cnkgeworICAgICAgZXhlY3V0ZUNv
ZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKGUgaW5zdGFuY2VvZiBNanNV
bml0QXNzZXJ0aW9uRXJyb3IpIHRocm93IGU7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoInRocmV3
IGFuIGV4Y2VwdGlvbjogIiArIChlLm1lc3NhZ2UgfHwgZSkpOworICAgIH0KKyAgfTsKKworICBh
c3NlcnRVbnJlYWNoYWJsZSA9IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKG5hbWVfb3B0KSB7
CisgICAgLy8gRml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgorICAg
IHZhciBtZXNzYWdlID0gIkZhaWwiICsgInVyZTogdW5yZWFjaGFibGUiOworICAgIGlmIChuYW1l
X29wdCkgeworICAgICAgbWVzc2FnZSArPSAiIC0gIiArIG5hbWVfb3B0OworICAgIH0KKyAgICBm
YWlsV2l0aE1lc3NhZ2UobWVzc2FnZSk7CisgIH07CisKKyAgYXNzZXJ0Q29udGFpbnMgPSBmdW5j
dGlvbihzdWIsIHZhbHVlLCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PSBudWxsID8gKHN1
YiAhPSBudWxsKSA6IHZhbHVlLmluZGV4T2Yoc3ViKSA9PSAtMSkgeworICAgICAgZmFpbCgiY29u
dGFpbnMgJyIgKyBTdHJpbmcoc3ViKSArICInIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9Cisg
IH07CisKKyAgYXNzZXJ0TWF0Y2hlcyA9IGZ1bmN0aW9uKHJlZ2V4cCwgc3RyLCBuYW1lX29wdCkg
eworICAgIGlmICghKHJlZ2V4cCBpbnN0YW5jZW9mIFJlZ0V4cCkpIHsKKyAgICAgIHJlZ2V4cCA9
IG5ldyBSZWdFeHAocmVnZXhwKTsKKyAgICB9CisgICAgaWYgKCFzdHIubWF0Y2gocmVnZXhwKSkg
eworICAgICAgZmFpbCgic2hvdWxkIG1hdGNoICciICsgcmVnZXhwICsgIiciLCBzdHIsIG5hbWVf
b3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ss
IGV4Y2VwdGlvbikgeworICAgIC8vIElmIHRoZSBleGNlcHRpb24gZG9lcyBub3QgY29udGFpbiBh
IHN0YWNrIHRyYWNlLCB3cmFwIGl0IGluIGEgbmV3IEVycm9yLgorICAgIGlmICghZXhjZXB0aW9u
LnN0YWNrKSBleGNlcHRpb24gPSBuZXcgRXJyb3IoZXhjZXB0aW9uKTsKKworICAgIC8vIElmIHRo
ZSBleGNlcHRpb24gYWxyZWFkeSBwcm92aWRlcyBhIHNwZWNpYWwgc3RhY2sgdHJhY2UsIHdlIGRv
IG5vdCBtb2RpZnkKKyAgICAvLyBpdC4KKyAgICBpZiAodHlwZW9mIGV4Y2VwdGlvbi5zdGFjayAh
PT0gJ3N0cmluZycpIHsKKyAgICAgIHJldHVybiBleGNlcHRpb247CisgICAgfQorICAgIGV4Y2Vw
dGlvbi5zdGFjayA9IHN0YWNrICsgJ1xuXG4nICsgZXhjZXB0aW9uLnN0YWNrOworICAgIHJldHVy
biBleGNlcHRpb247CisgIH0KKworICBhc3NlcnRQcm9taXNlUmVzdWx0ID0gZnVuY3Rpb24ocHJv
bWlzZSwgc3VjY2VzcywgZmFpbCkgeworICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIGFz
c2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBlb2Ygc3VjY2Vzcyk7CisgICAgaWYgKGZhaWwgIT09
IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBmYWlsKTsKKyAgICBh
c3NlcnRJbnN0YW5jZW9mKHByb21pc2UsIFByb21pc2UpOworICAgIGNvbnN0IHN0YWNrID0gKG5l
dyBFcnJvcigpKS5zdGFjazsKKworICAgIHZhciB0ZXN0X3Byb21pc2UgPSBwcm9taXNlLnRoZW4o
CisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICgt
LXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICBpZiAoc3VjY2VzcyAhPT0gdW5kZWZpbmVkKSBzdWNjZXNzKHJlc3VsdCk7CisgICAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cg
dGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAgIC8v
IGNoYWluLgorICAgICAgICAgICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAgdGhy
b3cgY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7CisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICByZXN1bHQgPT4geworICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBpZiAoLS1wcm9taXNlVGVzdENvdW50ID09IDApIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKGZhaWwgPT09IHVuZGVmaW5lZCkgdGhyb3cgcmVz
dWx0OworICAgICAgICAgICAgZmFpbChyZXN1bHQpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0
byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgICAgICAvLyBjaGFpbi4KKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoXyA9PiB7CisgICAgICAgICAgICAgIHRocm93IGNvbmNhdGVuYXRlRXJy
b3JzKHN0YWNrLCBlKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0KKyAgICAgICAg
fSk7CisKKyAgICBpZiAoIXByb21pc2VUZXN0Q2hhaW4pIHByb21pc2VUZXN0Q2hhaW4gPSBQcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAvLyB3YWl0VW50aWxEb25lIGlzIGlkZW1wb3RlbnQuCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgKytwcm9taXNlVGVzdENvdW50OworICAg
IHJldHVybiBwcm9taXNlVGVzdENoYWluLnRoZW4odGVzdF9wcm9taXNlKTsKKyAgfTsKKworICB2
YXIgT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9IHVuZGVmaW5lZDsKKworICB2YXIgT3B0aW1pemF0
aW9uU3RhdHVzID0gZnVuY3Rpb24oZnVuLCBzeW5jX29wdCkgeworICAgIGlmIChPcHRpbWl6YXRp
b25TdGF0dXNJbXBsID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIE9wdGlt
aXphdGlvblN0YXR1c0ltcGwgPSBuZXcgRnVuY3Rpb24oCisgICAgICAgICAgICAiZnVuIiwgInN5
bmMiLCAicmV0dXJuICVHZXRPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jKTsiKTsKKyAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJuYXRpdmVzIHN5bnRheCBu
b3QgYWxsb3dlZCIpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gT3B0aW1pemF0aW9uU3Rh
dHVzSW1wbChmdW4sIHN5bmNfb3B0KTsKKyAgfQorCisgIGFzc2VydFVub3B0aW1pemVkID0gZnVu
Y3Rpb24gYXNzZXJ0VW5vcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29wdCwg
c2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0gdW5k
ZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9u
U3RhdHVzKGZ1biwgc3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydFVub3B0
aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1hbHdheXMtb3B0CisgICAgLy8gb3B0aW9u
IGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11c3QgYWRkIC0tbm8tYWx3YXlzLW9wdCB0byBmbGFn
cyBjb21tZW50LgorICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25T
dGF0dXMua0Fsd2F5c09wdGltaXplKSAhPT0gMCwKKyAgICAgICAgICAgICAgICAidGVzdCBkb2Vz
IG5vdCBtYWtlIHNlbnNlIHdpdGggLS1hbHdheXMtb3B0Iik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0
X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwgbmFtZV9v
cHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAgICAg
Ly8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBubyBs
b25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHN0
aWxsIGRlb3B0aW1pemVkLCBzbyBrZWVwIHJ1bm5pbmcgdGhlIHRlc3QKKyAgICAgIC8vIHRvIHN0
cmVzcyB0ZXN0IHRoZSBkZW9wdGltaXplci4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNz
ZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rT3B0aW1pemVkKSAh
PT0gMCwgbmFtZV9vcHQpOworICB9CisKKyAgYXNzZXJ0T3B0aW1pemVkID0gZnVuY3Rpb24gYXNz
ZXJ0T3B0aW1pemVkKAorICAgICAgZnVuLCBzeW5jX29wdCwgbmFtZV9vcHQsIHNraXBfaWZfbWF5
YmVfZGVvcHRlZCA9IHRydWUpIHsKKyAgICBpZiAoc3luY19vcHQgPT09IHVuZGVmaW5lZCkgc3lu
Y19vcHQgPSAiIjsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4s
IHN5bmNfb3B0KTsKKyAgICAvLyBUZXN0cyB0aGF0IHVzZSBhc3NlcnRPcHRpbWl6ZWQoKSBkbyBu
b3QgbWFrZSBzZW5zZSBmb3IgTGl0ZSBtb2RlIHdoZXJlCisgICAgLy8gb3B0aW1pemF0aW9uIGlz
IGFsd2F5cyBkaXNhYmxlZCwgZXhwbGljaXRseSBleGl0IHRoZSB0ZXN0IHdpdGggYSB3YXJuaW5n
LgorICAgIGlmIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0xpdGVNb2RlKSB7
CisgICAgICBwcmludCgiV2FybmluZzogVGVzdCB1c2VzIGFzc2VydE9wdGltaXplZCBpbiBMaXRl
IG1vZGUsIHNraXBwaW5nIHRlc3QuIik7CisgICAgICB0ZXN0UnVubmVyLnF1aXQoMCk7CisgICAg
fQorICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5vdCBtYWtlIHNl
bnNlIGlmIC0tbm8tb3B0CisgICAgLy8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11
c3QgYWRkIC0tb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDAsCisgICAgICAg
ICAgICAgICAgInRlc3QgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIC0tbm8tb3B0Iik7CisgICAg
YXNzZXJ0VHJ1ZSgKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5r
SXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgYSBmdW5jdGlvbjogJyArIG5h
bWVfb3B0KTsKKyAgICBpZiAoc2tpcF9pZl9tYXliZV9kZW9wdGVkICYmCisgICAgICAgIChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua01heWJlRGVvcHRlZCkgIT09IDApIHsKKyAg
ICAgIC8vIFdoZW4gLS1kZW9wdC1ldmVyeS1uLXRpbWVzIGZsYWcgaXMgc3BlY2lmaWVkIGl0J3Mg
bm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICAgIC8vIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBp
cyBzdGlsbCBvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8gdG8g
c3RyZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
c3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtP
cHRpbWl6ZWQpICE9PSAwLAorICAgICAgICAnc2hvdWxkIGJlIG9wdGltaXplZDogJyArIG5hbWVf
b3B0KTsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlID0gZnVuY3Rpb24gaXNOZXZl
ck9wdGltaXplTGl0ZU1vZGUoKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25T
dGF0dXModW5kZWZpbmVkLCAiIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua0xpdGVNb2RlKSAhPT0gMDsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZSA9
IGZ1bmN0aW9uIGlzTmV2ZXJPcHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGlt
aXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBW
OE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDA7CisgIH0KKworICBpc0Fs
d2F5c09wdGltaXplID0gZnVuY3Rpb24gaXNBbHdheXNPcHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0
X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4g
KG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAw
OworICB9CisKKyAgaXNJbnRlcnByZXRlZCA9IGZ1bmN0aW9uIGlzSW50ZXJwcmV0ZWQoZnVuKSB7
CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAg
YXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9u
KSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpID09PSAwICYmCisg
ICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0ludGVycHJldGVk
KSAhPT0gMDsKKyAgfQorCisgIGlzT3B0aW1pemVkID0gZnVuY3Rpb24gaXNPcHRpbWl6ZWQoZnVu
KSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7Cisg
ICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0
aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVy
biAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwOwor
ICB9CisKKyAgaXNUdXJib0Zhbm5lZCA9IGZ1bmN0aW9uIGlzVHVyYm9GYW5uZWQoZnVuKSB7Cisg
ICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAgYXNz
ZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAh
PT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAob3B0
X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwICYmCisgICAg
ICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua1R1cmJvRmFubmVkKSAh
PT0gMDsKKyAgfQorCisgIC8vIEN1c3RvbSBWOC1zcGVjaWZpYyBzdGFjayB0cmFjZSBmb3JtYXR0
ZXIgdGhhdCBpcyB0ZW1wb3JhcmlseSBpbnN0YWxsZWQgb24KKyAgLy8gdGhlIEVycm9yIG9iamVj
dC4KKyAgTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnVuY3Rpb24o
ZXJyb3IsIHN0YWNrKSB7CisgICAgLy8gVHJpZ2dlciBkZWZhdWx0IGZvcm1hdHRpbmcgd2l0aCBy
ZWN1cnNpb24uCisgICAgdHJ5IHsKKyAgICAgIC8vIEZpbHRlci1vdXQgYWxsIGJ1dCB0aGUgZmly
c3QgbWpzdW5pdCBmcmFtZS4KKyAgICAgIGxldCBmaWx0ZXJlZFN0YWNrID0gW107CisgICAgICBs
ZXQgaW5NanN1bml0ID0gdHJ1ZTsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhY2subGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgbGV0IGZyYW1lID0gc3RhY2tbaV07CisgICAgICAgIGlmIChp
bk1qc3VuaXQpIHsKKyAgICAgICAgICBsZXQgZmlsZSA9IGZyYW1lLmdldEZpbGVOYW1lKCk7Cisg
ICAgICAgICAgaWYgKCFmaWxlIHx8ICFmaWxlLmVuZHNXaXRoKCJtanN1bml0LmpzIikpIHsKKyAg
ICAgICAgICAgIGluTWpzdW5pdCA9IGZhbHNlOworICAgICAgICAgICAgLy8gUHVzaCB0aGUgbGFz
dCBtanN1bml0IGZyYW1lLCB0eXBpY2FsbHkgY29udGFpbmluZyB0aGUgYXNzZXJ0aW9uCisgICAg
ICAgICAgICAvLyBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmIChpID4gMCkgQXJyYXlQcm90b3R5
cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgc3RhY2tbaS0xXSk7CisgICAgICAgICAgICBBcnJh
eVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpXSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEFycmF5UHJvdG90eXBl
UHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIGZyYW1lKTsKKyAgICAgIH0KKyAgICAgIHN0YWNrID0g
ZmlsdGVyZWRTdGFjazsKKworICAgICAgLy8gSW5mZXIgZnVuY3Rpb24gbmFtZXMgYW5kIGNhbGN1
bGF0ZSB7bWF4X25hbWVfbGVuZ3RofQorICAgICAgbGV0IG1heF9uYW1lX2xlbmd0aCA9IDA7Cisg
ICAgICBBcnJheVByb3RvdHlwZUZvckVhY2guY2FsbChzdGFjaywgZWFjaCA9PiB7CisgICAgICAg
IGxldCBuYW1lID0gZWFjaC5nZXRGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgaWYgKG5hbWUgPT0g
bnVsbCkgbmFtZSA9ICIiOworICAgICAgICBpZiAoZWFjaC5pc0V2YWwoKSkgeworICAgICAgICAg
IG5hbWUgPSBuYW1lOworICAgICAgICB9IGVsc2UgaWYgKGVhY2guaXNDb25zdHJ1Y3RvcigpKSB7
CisgICAgICAgICAgbmFtZSA9ICJuZXcgIiArIG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoZWFj
aC5pc05hdGl2ZSgpKSB7CisgICAgICAgICAgbmFtZSA9ICJuYXRpdmUgIiArIG5hbWU7CisgICAg
ICAgIH0gZWxzZSBpZiAoIWVhY2guaXNUb3BsZXZlbCgpKSB7CisgICAgICAgICAgbmFtZSA9IGVh
Y2guZ2V0VHlwZU5hbWUoKSArICIuIiArIG5hbWU7CisgICAgICAgIH0KKyAgICAgICAgZWFjaC5u
YW1lID0gbmFtZTsKKyAgICAgICAgbWF4X25hbWVfbGVuZ3RoID0gTWF0aC5tYXgobmFtZS5sZW5n
dGgsIG1heF9uYW1lX2xlbmd0aCkKKyAgICAgIH0pOworCisgICAgICAvLyBGb3JtYXQgc3RhY2sg
ZnJhbWVzLgorICAgICAgc3RhY2sgPSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKHN0YWNrLCBlYWNo
ID0+IHsKKyAgICAgICAgbGV0IGZyYW1lID0gIiAgICBhdCAiICsgZWFjaC5uYW1lLnBhZEVuZCht
YXhfbmFtZV9sZW5ndGgpOworICAgICAgICBsZXQgZmlsZU5hbWUgPSBlYWNoLmdldEZpbGVOYW1l
KCk7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSByZXR1cm4gZnJhbWUgKyAiICIgKyBlYWNo
LmdldEV2YWxPcmlnaW4oKTsKKyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGZpbGVOYW1lID8gZmls
ZU5hbWUgOiAiIik7CisgICAgICAgIGxldCBsaW5lPSBlYWNoLmdldExpbmVOdW1iZXIoKTsKKyAg
ICAgICAgZnJhbWUgKz0gIiAiICsgKGxpbmUgPyBsaW5lIDogIiIpOworICAgICAgICBsZXQgY29s
dW1uID0gZWFjaC5nZXRDb2x1bW5OdW1iZXIoKTsKKyAgICAgICAgZnJhbWUgKz0gKGNvbHVtbiA/
ICI6IiArIGNvbHVtbiA6ICIiKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgfSk7Cisg
ICAgICByZXR1cm4gIiIgKyBlcnJvci5tZXNzYWdlICsgIlxuIiArIEFycmF5UHJvdG90eXBlSm9p
bi5jYWxsKHN0YWNrLCAiXG4iKTsKKyAgICB9IGNhdGNoIChlKSB7fTsKKyAgICByZXR1cm4gZXJy
b3Iuc3RhY2s7CisgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1jbGVh
bnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1m
cm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODc1MDAxODU3NTljNzJlNmFjYjMy
ZGIyNjZjNjc1ZWEzNDVlNTQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
Y2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBW
OCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdl
YWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jl
c291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworbGV0IFJlYWxtID0g
eyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChyLCBzKSA9PiAkLmV2YWxTY3JpcHQuY2Fs
bChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVhdGUoKTsKKworbGV0IGNsZWFudXAgPSBS
ZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsgZnVuY3Rpb24gY2xlYW51cCgpIHsgc3Rv
cmVkX2dsb2JhbCA9IGdsb2JhbFRoaXM7IH0gY2xlYW51cDsiKTsKK2xldCByZWFsbV9nbG9iYWxf
dGhpcyA9IFJlYWxtLmV2YWwociwgImdsb2JhbFRoaXMiKTsKKworbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCBhIHJl
Z2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcwor
Ly8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRo
ZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkg
eworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCk7
CisgICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVu
Y3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rp
b24oKSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2dsb2Jh
bDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOworICBh
c3NlcnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitzZXRU
aW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
Y2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRkMDI0
N2UyNzEwZGE0ODVjOTI1NzJhYmE5YzI3NmNkZWYzNWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpAQCAt
MCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworbGV0IFJlYWxtID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChyLCBz
KSA9PiAkLmV2YWxTY3JpcHQuY2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVhdGUo
KTsKKworbGV0IGNsZWFudXAgPSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsgbGV0
IGNsZWFudXAgPSBuZXcgUHJveHkoZnVuY3Rpb24oKSB7IHN0b3JlZF9nbG9iYWwgPSBnbG9iYWxU
aGlzO30sIHt9KTsgY2xlYW51cCIpOworbGV0IHJlYWxtX2dsb2JhbF90aGlzID0gUmVhbG0uZXZh
bChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnko
Y2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBG
aW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEg
Y2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigp
IHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2Jq
ZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIik7CisgICAg
fQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24g
d2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7
CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2dsb2JhbDsiKTsK
KyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOworICBhc3NlcnRF
cXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6
YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9u
LXJlZ2lzdHJ5LWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTYxNmE1MDIxYWNhNzU1MWM4MTE5ZWI2
MWVmZTk0N2I1MTJjM2MxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmlu
YWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpAQCAtMCwwICsxLDE1MiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFr
LXJlZnMKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRp
dmUiKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSgpIHsK
KyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgYXNzZXJ0
RXF1YWxzKGZnLnRvU3RyaW5nKCksICJbb2JqZWN0IEZpbmFsaXphdGlvblJlZ2lzdHJ5XSIpOwor
ICBhc3NlcnROb3RTYW1lKGZnLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7CisgIGFzc2Vy
dFNhbWUoZmcuX19wcm90b19fLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7Cit9KSgpOwor
CisoZnVuY3Rpb24gVGVzdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JDYWxsQXNGdW5j
dGlvbigpIHsKKyAgbGV0IGNhdWdodCA9IGZhbHNlOworICBsZXQgbWVzc2FnZSA9ICIiOworICB0
cnkgeworICAgIGxldCBmID0gRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICB9IGNh
dGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOwor
ICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1
bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeUNsZWFudXBOb3RDYWxsYWJs
ZSgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVz
dCBiZSBjYWxsYWJsZSI7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJv
d3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoMSk7IH0sIFR5cGVF
cnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeShudWxsKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisK
KyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoQ2FsbGFibGVQ
cm94eUFzQ2xlYW51cCgpIHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9ICgpID0+
IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IGZnID0g
bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0
Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoTm9uQ2FsbGFibGVQcm94eUFzQ2xlYW51
cCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVz
dCBiZSBjYWxsYWJsZSI7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsKKyAg
bGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGFzc2VydFRocm93cygoKSA9
PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShwcm94eSk7IH0sIFR5cGVFcnJv
ciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aE5vbk9iamVj
dFRhcmdldCgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9
KTsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lz
dGVyOiB0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
cmVnaXN0ZXIoMSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy5yZWdpc3RlcihmYWxzZSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVz
c2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcigiZm9vIiwgImhvbGRpbmdz
IiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3Rl
cihTeW1ib2woKSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy5yZWdpc3RlcihudWxsLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNz
YWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKHVuZGVmaW5lZCwgImhvbGRp
bmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lz
dGVyV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307Cisg
IGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBmZy5yZWdpc3Rlcihwcm94eSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUoKSB7
CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBv
YmogPSB7YTogMX07CisgIC8vIFNhbWVWYWx1ZSh0YXJnZXQsIGhvbGRpbmdzKSBub3Qgb2sKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKG9iaiwgb2JqKSwgVHlwZUVycm9yLAorICAg
ICAgICAgICAgICAgIkZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3RlcjogdGFy
Z2V0IGFuZCBob2xkaW5ncyBtdXN0IG5vdCBiZSBzYW1lIik7CisgIGxldCBob2xkaW5ncyA9IHth
OiAxfTsKKyAgZmcucmVnaXN0ZXIob2JqLCBob2xkaW5ncyk7Cit9KSgpOworCisoZnVuY3Rpb24g
VGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJv
d3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwoe30s
IHt9LCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yKTsKKyAgLy8gRG9lcyBub3QgdGhyb3c6CisgIGxl
dCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIEZpbmFsaXphdGlv
blJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKGZnLCB7fSwgImhvbGRpbmdzIik7Cit9
KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRXhpc3RlbnRLZXkoKSB7Cisg
IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBzdWNj
ZXNzID0gZmcudW5yZWdpc3Rlcih7ImsiOiAid2hhdGV2ZXIifSk7CisgIGFzc2VydEZhbHNlKHN1
Y2Nlc3MpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXph
dGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0
cnkucHJvdG90eXBlLnVucmVnaXN0ZXIuY2FsbCh7fSwge30pLAorICAgICAgICAgICAgICAgVHlw
ZUVycm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25PYmplY3RV
bnJlZ2lzdGVyVG9rZW4oKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgo
KSA9PiB7fSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKDEpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihCaWdJbnQoMSkpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcignb25lJyksIFR5cGVF
cnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKFN5bWJvbCgpKSwgVHlw
ZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodHJ1ZSksIFR5cGVF
cnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKGZhbHNlKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodW5kZWZpbmVkKSwgVHlw
ZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIobnVsbCksIFR5cGVF
cnJvcik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvcigpIHsKKyAg
bGV0IHdyID0gbmV3IFdlYWtSZWYoe30pOworICBhc3NlcnRFcXVhbHMod3IudG9TdHJpbmcoKSwg
IltvYmplY3QgV2Vha1JlZl0iKTsKKyAgYXNzZXJ0Tm90U2FtZSh3ci5fX3Byb3RvX18sIE9iamVj
dC5wcm90b3R5cGUpOworCisgIGxldCBkZXJlZl9kZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3ci5fX3Byb3RvX18sICJkZXJlZiIpOworICBhc3NlcnRFcXVhbHModHJ1ZSwg
ZGVyZWZfZGVzYy5jb25maWd1cmFibGUpOworICBhc3NlcnRFcXVhbHMoZmFsc2UsIGRlcmVmX2Rl
c2MuZW51bWVyYWJsZSk7CisgIGFzc2VydEVxdWFscygiZnVuY3Rpb24iLCB0eXBlb2YgZGVyZWZf
ZGVzYy52YWx1ZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3Rvcldp
dGhOb25PYmplY3QoKSB7CisgIGxldCBtZXNzYWdlID0gIldlYWtSZWY6IHRhcmdldCBtdXN0IGJl
IGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigpLCBUeXBlRXJy
b3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoMSksIFR5cGVF
cnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihmYWxzZSks
IFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigi
Zm9vIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vh
a1JlZihTeW1ib2woKSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9
PiBuZXcgV2Vha1JlZihudWxsKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dz
KCgpID0+IG5ldyBXZWFrUmVmKHVuZGVmaW5lZCksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0aW9uKCkgewor
ICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRyeSB7CisgICAg
bGV0IGYgPSBXZWFrUmVmKHt9KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIG1lc3NhZ2UgPSBlLm1l
c3NhZ2U7CisgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgfSBmaW5hbGx5IHsKKyAgICBhc3NlcnRUcnVl
KGNhdWdodCk7CisgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZldpdGhQcm94eSgp
IHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBu
ZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IHdyID0gbmV3IFdlYWtSZWYocHJveHkpOwor
fSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5
LWFuZC13ZWFrcmVmLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
YW5kLXdlYWtyZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkYThhMGM5ZmVmYzlkMWRlMjY5NWIyM2Q1MjAx
NDI4ZmIyNmIyMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1y
ZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3Vy
Y2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2Nh
bGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBsZXQg
aG9sZGluZ3NfbGlzdCA9IFtdOworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOworICBh
c3NlcnRFcXVhbHMoMSwgaG9sZGluZ3NfbGlzdC5sZW5ndGgpOworICBhc3NlcnRFcXVhbHMoImhv
bGRpbmdzIiwgaG9sZGluZ3NfbGlzdFswXSk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1ZTsKK30K
KworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IHdlYWtf
cmVmcyA9IFtdOworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGxldCBvID0ge307CisgICAgICAgIHdlYWtfcmVmcy5wdXNoKG5ldyBX
ZWFrUmVmKG8pKTsKKyAgICAgICAgZmcucmVnaXN0ZXIobywgImhvbGRpbmdzIik7CisgICAgfQor
fSkoKTsKKworLy8gU2luY2UgdGhlIFdlYWtSZWYgd2FzIGNyZWF0ZWQgZHVyaW5nIHRoaXMgdHVy
biwgaXQgaXMgbm90IGNsZWFyZWQgYnkgR0MuIFRoZQorLy8gcG9pbnRlciBpbnNpZGUgdGhlIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IGlzIG5vdCBjbGVhcmVkIGVpdGhlciwgc2luY2UgdGhlIFdlYWtS
ZWYKKy8vIGtlZXBzIHRoZSB0YXJnZXQgb2JqZWN0IGFsaXZlLgorZ2MoKTsKKyhmdW5jdGlvbigp
IHsKKyAgICB3ZWFrX3JlZnMuZm9yRWFjaCgod2Vha19yZWYpID0+IGFzc2VydEVxdWFscygib2Jq
ZWN0IiwgdHlwZW9mKHdlYWtfcmVmLmRlcmVmKCkpKSk7Cit9KSgpOworCisvLyBUcmlnZ2VyIGdj
IGluIG5leHQgdGFzaworc2V0VGltZW91dCgoKSA9PiB7CisgICAgZ2MoKTsKKworICAgIC8vIENo
ZWNrIHRoYXQgY2xlYW51cCBjYWxsYmFjayB3YXMgY2FsbGVkIGluIGEgZm9sbG93IHVwIHRhc2sK
KyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxl
ZCk7CisgICAgICAgIGFzc2VydFRydWUod2Vha19yZWZzLnNvbWUoKHdlYWtfcmVmKSA9PiB3ZWFr
X3JlZi5kZXJlZigpID09PSBudWxsKSk7CisgICAgfSwgMCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFs
aXZlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9s
ZGluZ3MtYWxpdmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAyYzRiYjhlZTg0ZTAxMGI3NGQ2ZGViMzVhMGNm
YWNmMTZkNDkzZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTgg
dGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1v
bnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQo
Ii4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBj
bGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0IGhvbGRpbmdzX2xpc3QgPSBbXTsKK2xldCBjbGVh
bnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQp
OworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOworICBjbGVhbnVwX2NhbGxlZCA9IHRy
dWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xl
dCBvMSA9IHt9OworbGV0IGhvbGRpbmdzID0geydhJzogJ3RoaXMgaXMgdGhlIGhvbGRpbmdzIG9i
amVjdCd9OworCisvLyBJZ25pdGlvbiBob2xkcyByZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4gdGVt
cG9yYXJ5IHJlZ2lzdGVycy4gVGhlc2Ugd2lsbCBiZQorLy8gcmVsZWFzZWQgd2hlbiB0aGUgZnVu
Y3Rpb24gZXhpdHMuIFNvIG9ubHkgYWNjZXNzIG8gaW5zaWRlIGEgZnVuY3Rpb24gdG8KKy8vIHBy
ZXZlbnQgYW55IHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVnaXN0ZXJzIHdo
ZW4gYSBnYyBpcworLy8gdHJpZ2dlcmVkLgorKCgpID0+IHtmZy5yZWdpc3RlcihvMSwgaG9sZGlu
Z3MpO30pKCkKKworZ2MoKTsKK2Fzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKworLy8gRHJv
cCB0aGUgbGFzdCByZWZlcmVuY2VzIHRvIG8xLgorKCgpID0+IHtvMSA9IG51bGw7fSkoKQorCisv
LyBEcm9wIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgaG9sZGluZ3MuIFRoZSBGaW5hbGl6YXRp
b25SZWdpc3RyeSBrZWVwcyBpdAorLy8gYWxpdmUsIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkIGFzIG5vcm1hbC4KK2hvbGRpbmdzID0gbnVsbDsKK2djKCk7Cithc3NlcnRG
YWxzZShjbGVhbnVwX2NhbGxlZCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxlZCk7CisgIGFzc2VydEVxdWFscyhob2xkaW5nc19s
aXN0Lmxlbmd0aCwgMSk7CisgIGFzc2VydEVxdWFscyhob2xkaW5nc19saXN0WzBdLmEsICJ0aGlz
IGlzIHRoZSBob2xkaW5ncyBvYmplY3QiKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMs
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
c2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRp
bWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkOGM5NjM5NzVkMmVjZmI4Nzc2NTkyY2RiNTVmZTg1MzcyNzlj
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdp
c3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMKQEAgLTAsMCArMSw4
NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmln
aHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6
IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcK
Ky8vIEZsYWdzOiAtLW5vLXN0cmVzcy1mbHVzaC1ieXRlY29kZQorCitsb2FkKCIuL3Jlc291cmNl
cy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cDBfY2Fs
bF9jb3VudCA9IDA7CitsZXQgY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xl
YW51cDBfMV9ob2xkaW5nc19jb3VudCA9IDA7CisKK2xldCBjbGVhbnVwMV9jYWxsX2NvdW50ID0g
MDsKK2xldCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMV8xX2hv
bGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsK
KyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFdID09ICIwIikKKyAgICArK2NsZWFu
dXAwXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICArK2NsZWFudXAwXzFfaG9sZGluZ3Nf
Y291bnQ7CisgICsrY2xlYW51cDBfY2FsbF9jb3VudDsKK30KKworbGV0IGNsZWFudXAxID0gZnVu
Y3Rpb24oaG9sZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFdID09
ICIwIikKKyAgICArK2NsZWFudXAxXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICArK2Ns
ZWFudXAxXzFfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cDFfY2FsbF9jb3VudDsKK30KKwor
bGV0IGZnMCA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwMCk7CitsZXQgZmcxID0g
bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAxKTsKKworLy8gUmVnaXN0ZXIgMSB3ZWFr
IHJlZmVyZW5jZSBmb3IgZWFjaCBGaW5hbGl6YXRpb25SZWdpc3RyeSBhbmQga2lsbCB0aGUgb2Jq
ZWN0cyB0aGV5IHBvaW50IHRvLgorKGZ1bmN0aW9uKCkgeworICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgIC8vIFRoZSBvYmplY3RzIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xv
c3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0uCisgICAgbGV0IG9iamVjdHMg
PSBbXTsKKyAgICBvYmplY3RzWzBdID0ge307CisgICAgb2JqZWN0c1sxXSA9IHt9OworCisgICAg
ZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMCIpOworICAgIGZnMS5yZWdpc3Rl
cihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTAiKTsKKworICAgIC8vIERyb3AgdGhlIHJlZmVyZW5j
ZXMgdG8gdGhlIG9iamVjdHMuCisgICAgb2JqZWN0cyA9IFtdOworICB9Cit9KSgpOworCisvLyBX
aWxsIHNjaGVkdWxlIGJvdGggZmcwIGFuZCBmZzEgZm9yIGNsZWFudXAuCitnYygpOworCisvLyBC
ZWZvcmUgdGhlIGNsZWFudXAgdGFzayBoYXMgYSBjaGFuY2UgdG8gcnVuLCBkbyB0aGUgc2FtZSB0
aGluZyBhZ2Fpbiwgc28gYm90aAorLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBhcmUgKGFnYWlu
KSBzY2hlZHVsZWQgZm9yIGNsZWFudXAuIFRoaXMgaGFzIHRvIGJlIGEgSUlGRSBmdW5jdGlvbgor
Ly8gKHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlIG9iamVjdHMpIHNvIHdlIGNhbm5v
dCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24KKy8vIGFzIGJlZm9yZS4KKyhmdW5jdGlvbigpIHsKKyAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBsZXQgb2JqZWN0cyA9IFtdOwor
ICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisgICAgZmcwLnJlZ2lz
dGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMSIpOworICAgIGZnMS5yZWdpc3RlcihvYmplY3Rz
WzFdLCAiaG9sZGluZ3MxLTEiKTsKKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisKK2dj
KCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0Tm90RXF1YWxz
KDAsIGNsZWFudXAwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDBf
MF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8xX2hvbGRp
bmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxX2NhbGxfY291bnQpOwor
ICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2Vy
dE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKK30KKworLy8gR2l2ZSB0
aGUgY2xlYW51cCB0YXNrIGEgY2hhbmNlIHRvIHJ1bi4KK3NldFRpbWVvdXQodGltZW91dF9mdW5j
LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFs
aXphdGlvbi1yZWdpc3RyaWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHkt
ZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwNzNhMDMxZGIwNmNjZDMw
MjZkOGYyNGYxMjdmYWRkYjg5OGFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzCkBAIC0wLDAgKzEs
NTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJp
Z2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdz
OiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQxID0gMDsKK2xldCBjbGVhbnVwX2NhbGxfY291bnQy
ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBpZiAoaG9sZGlu
Z3MgPT09ICJob2xkaW5nczEiKQorICAgICAgICArK2NsZWFudXBfY2FsbF9jb3VudDE7CisgICAg
ZWxzZSBpZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczIiKQorICAgICAgICArK2NsZWFudXBfY2Fs
bF9jb3VudDI7CisgICAgZWxzZQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KKworbGV0
IGZnMSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBmZzIgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSB0d28gb2JqZWN0cyBh
bmQgcmVnaXN0ZXIgdGhlbSBpbiBGaW5hbGl6YXRpb25SZWdpc3RyaWVzLiBUaGUgb2JqZWN0cyBu
ZWVkCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtp
bGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGxldCBvYmplY3QxID0ge307CisgICAgICAgIGZnMS5yZWdpc3Rlcihv
YmplY3QxLCAiaG9sZGluZ3MxIik7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAg
ICAgZmcyLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5nczIiKTsKKyAgICB9CisgICAgLy8gb2Jq
ZWN0MSBhbmQgb2JqZWN0MiBnbyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdp
bGwgZGlzY292ZXIgZGlydHkgV2Vha0NlbGxzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsK
K2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKK2Fzc2VydEVxdWFscygwLCBj
bGVhbnVwX2NhbGxfY291bnQyKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rp
b24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3Nl
cnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50MSk7CisgICAgYXNzZXJ0Tm90RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudDIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywg
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVh
bnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYTk3ZGFhNGQxZDI2NTI0ODIyMDJkMTFiNWIyY2JjNDVjYjI3MjEwCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51
cC5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9
MSIpCisKKy8vIENvcHlyaWdodCAyMDIwIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5j
cmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNh
bGxlciByZWxhdGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgcmVlbnRyYW50X2dj
ID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBnYygpOworICAgIGNhbGxlZCA9IHRydWU7Cit9
CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShyZWVudHJhbnRfZ2MpOworCiso
ZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBm
Zy5yZWdpc3Rlcih7fSwgNDIpOworfSkoKTsKKworZ2MoKTsKKworc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICBhc3NlcnRUcnVlKGNhbGxlZCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpz
IGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVu
cXVldWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyNGUyY2QzZWM3NmQ1Yzg5NTFjZDJmYTBhNTFhODVmZDA4
MDk4MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6
YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLXN0cmVzcy1jb21w
YWN0aW9uIC0tZXhwb3NlLWdjCisKKy8vIFRlc3QgdGhhdCB0aGUgZGlydHkgRmluYWxpemF0aW9u
UmVnaXN0cmllcyB0aGF0IGFyZSBlbnF1ZXVlZCBkdXJpbmcgR0MgaGF2ZQorLy8gdGhlaXIgc2xv
dHMgY29ycmVjdGx5IHJlY29yZGVkIGJ5IHRoZSBHQy4KKworLy8gMSkgQ3JlYXRlIG1hbnkgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3RzIHNvIHRoYXQgdGhleSBzcGFuIHNldmVyYWwgcGFn
ZXMKKy8vIChwYWdlIHNpemUgaXMgMjU2a2IpLgorbGV0IHJlZ2lzdHJpZXMgPSBbXTsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAyNCAqIDg7IGkrKykgeworICByZWdpc3RyaWVzLnB1c2gobmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KSk7Cit9CisKKy8vIDIpIEZvcmNlIHR3byBHQ3Mg
dG8gZW5zdXJlIHRoYXQgSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVjdHMgYXJlIHRlbnVyZWQu
CitnYygpOworZ2MoKTsKKworLy8gMykgSW4gYSBmdW5jdGlvbjogY3JlYXRlIGEgZHVtbXkgdGFy
Z2V0IGFuZCByZWdpc3RlciBpdCBpbiBhbGwKKy8vIEpTRmluYWxpemF0b25SZWdpc3RyeSBvYmpl
Y3RzLgorKGZ1bmN0aW9uKCkgeworICBsZXQgZ2FyYmFnZSA9IHt9OworICByZWdpc3RyaWVzLmZv
ckVhY2goKGZyKSA9PiB7CisgICAgZnIucmVnaXN0ZXIoZ2FyYmFnZSwgNDIpOworICB9KTsKKyAg
Z2FyYmFnZSA9IG51bGw7Cit9KSgpOworCisvLyA0KSBPdXRzaWRlIHRoZSBmdW5jdGlvbiB3aGVy
ZSB0aGUgdGFyZ2V0IGlzIHVucmVhY2hhYmxlOiBmb3JjZSBHQyB0byBjb2xsZWN0CisvLyB0aGUg
b2JqZWN0LgorZ2MoKTsKKworLy8gNSkgRm9yY2UgYW5vdGhlciBHQyB0byB0ZXN0IHRoYXQgdGhl
IHNsb3Qgd2FzIGNvcnJlY3RseSB1cGRhdGVkLgorZ2MoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVm
aW5lZC1ob2xkaW5ncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM2MGNmZGE3N2YwYWZjYTFiNWNiOWZkZGFm
ZWFjMGQ5MDc1MGJiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZp
bmVkLWhvbGRpbmdzLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGFzc2VydEVxdWFscyho
b2xkaW5ncywgdW5kZWZpbmVkKTsKKyAgICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4g
b2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBv
YmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVs
aWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdp
c3RlcihvYmplY3QpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRo
ZSB0YXJnZXQgb2JqZWN0IGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFs
cygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBm
dW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWFmdGVyLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVy
LWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ3MmIwZjhiM2JiOGViYTY5MGExNjBkMTYzOGQzOWU0
M2Y0NzJkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXIt
YWZ0ZXItY2xlYW51cC5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9z
ZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1
bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0g
MDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxzKCJo
b2xkaW5ncyIsIGhvbGRpbmdzKTsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBm
ZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAi
dGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBp
biB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGlu
c2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVu
Y3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAg
bGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIs
IGtleSk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdl
dCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNs
ZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9u
IHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0
Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisgICAgbGV0IG9sZF9jbGVhbnVwX2Nh
bGxfY291bnQgPSBjbGVhbnVwX2NhbGxfY291bnQ7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFuIGFs
cmVhZHkgY2xlYW5lZC11cCB3ZWFrIHJlZmVyZW5jZS4KKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVu
cmVnaXN0ZXIoa2V5KTsKKyAgICAvLyBTaW5jZSB3ZSBtYXkgbm90IGNvbGxlY3QgZXZlcnl0aGlu
ZyB3ZSBkb24ndCBrbm93IHdoYXQgc3VjY2VzcyB3aWxsIGJlIHVubGlrZSB2OC4KKyAgICAvLyBh
c3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAgIC8vIEFzc2VydCB0aGF0IGl0IGRpZG4ndCBkbyBh
bnl0aGluZy4KKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgYXNzZXJ0RXF1YWxzKG9sZF9jbGVhbnVw
X2NhbGxfY291bnQsIGNsZWFudXBfY2FsbF9jb3VudCk7IH0sIDApOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWJlZm9yZS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZv
cmUtY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2QxZTNlYzZhM2FlYmZjNzg3NmM3ZGRhZjdkN2Ri
OGMxNTNmZWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rl
ci1iZWZvcmUtY2xlYW51cC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4
cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZyAtLW5vaW5jcmVtZW50YWwtbWFya2luZwor
Citsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwor
CitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9s
ZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUg
a2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxp
emF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1
cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7Cisg
IGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAibXkgaG9sZGluZ3MiLCBr
ZXkpOworCisgIC8vIENsZWFyIHRoZSBXZWFrQ2VsbCBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5j
ZSB0byBkaXNjb3ZlciBpdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7Cisg
IGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgor
fSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygp
OworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0
IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgc2luY2Ugd2UgY2FsbGVkIHVu
cmVnaXN0ZXIuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFs
cygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywg
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2lj
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4ZWZlODI0YjZjNzRhMDU4Y2IxZDFlYjM4NzFlY2U1YmFmOGJhNzMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qcwpA
QCAtMCwwICsxLDQ2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0g
ZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBm
ZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAi
dGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBp
biB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGlu
c2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVu
Y3Rpb24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9s
ZGluZ3MiLCBrZXkpOworCisgIC8vIFVucmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFu
Y2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVy
KGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gQ2FsbCB1bnJlZ2lzdGVyIGFn
YWluIChqdXN0IHRvIGFzc2VydCB3ZSBoYW5kbGUgdGhpcyBncmFjZWZ1bGx5KS4KKyAgc3VjY2Vz
cyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7CisKKyAgLy8g
b2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xh
aW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2Fs
bF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJl
IGNhbGxlZCwgc2luY2UgdGhlIHdlYWsgcmVmZXJlbmNlCisvLyB3YXMgdW5yZWdpc3RlcmVkLgor
bGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMCwgY2xlYW51
cF9jYWxsX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMgYi9K
U1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYjIxMjI4NjYzYWQyY2VkNTk2OTVhNTNjNWIzYjBlNWY3Y2IwMGJjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMKQEAg
LTAsMCArMSw0OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisv
LyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
Ly8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFs
LW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVs
YXRpdmUiKTsKKworbGV0IGNhbGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbiho
b2xkaW5ncykgeworICAvLyBTZWUgd2hpY2ggdGFyZ2V0IHdlJ3JlIGNsZWFuaW5nIHVwIGFuZCB1
bnJlZ2lzdGVyIHRoZSBvdGhlciBvbmUuCisgIGlmIChob2xkaW5ncyA9PSAxKSB7CisgICAgbGV0
IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTIpOworICAgIGFzc2VydFRydWUoc3VjY2VzcyB8
fCBjYWxsZWQpOworICB9IGVsc2UgeworICAgIGFzc2VydFNhbWUoaG9sZGluZ3MsIDIpOworICAg
IGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICBhc3NlcnRUcnVlKHN1Y2Nl
c3MgfHwgY2FsbGVkKTsKKyAgfQorICBjYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsiayI6ICJmaXJzdCBr
ZXkifTsKK2xldCBrZXkyID0geyJrIjogInNlY29uZCBrZXkifTsKKy8vIENyZWF0ZSB0d28gb2Jq
ZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBv
YmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVs
aWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcucmVn
aXN0ZXIob2JqZWN0MSwgMSwga2V5MSk7CisgICAgICAgIGxldCBvYmplY3QyID0ge307CisgICAg
ICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsIDIsIGtleTIpOworICAgIH0KK30pKCk7CisKKy8vIFRo
aXMgR0Mgd2lsbCByZWNsYWltIHRhcmdldCBvYmplY3RzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgor
Z2MoKTsKK2Fzc2VydEZhbHNlKGNhbGxlZCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVw
IGZ1bmN0aW9uIHdhcyBjYWxsZWQgYW5kIGNsZWFuZWQgdXAgb25lIGhvbGRpbmdzIChidXQgbm90
IHRoZSBvdGhlciBvbmUpLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydFRydWUoY2FsbGVkKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iN2ZhYTdiNmUzYzQzYmYyYjEyODY2ZjI0MGNjNmVhYzE4N2QyMWI5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanMK
QEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQor
CisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVu
dGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIg
cmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cF9o
b2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7Cisg
IGFzc2VydEVxdWFscyhob2xkaW5ncywgImhvbGRpbmdzIik7CisKKyAgLy8gVGhlcmUncyBtb3Jl
cyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXkgdGhhdCB3ZSBoYXZlbid0CisgIC8vIGNsZWFuZWQg
dXAgeWV0IHNvIHdlIHNob3VsZCBiZSBhYmxlIHRvIHVucmVnaXN0ZXIgdGhlCisgIC8vIGNhbGxi
YWNrIGZvciB0aGF0IG9uZS4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisK
KyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICArK2NsZWFudXBfaG9sZGluZ3NfY291bnQ7Cisg
ICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVn
aXN0cnkoY2xlYW51cCk7CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0
aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisv
LyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorbGV0IGtleSA9
IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAg
ICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGlu
Z3MiLCBrZXkpOworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGluZ3MiLCBrZXkp
OworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2Vs
bHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBf
Y2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBj
YWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygx
LCBjbGVhbnVwX2NhbGxfY291bnQpOworICBhc3NlcnRFcXVhbHMoMSwgY2xlYW51cF9ob2xkaW5n
c19jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4
LXVucmVnaXN0ZXItbWFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODMzOTllNjVmMGQyNzQyNjA4YjEzODQ2
ZDVhNWQ5MTdhYjM3ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5y
ZWdpc3Rlci1tYW55LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlv
bihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzMiIsIGhvbGRpbmdzKTsKKyAg
KytjbGVhbnVwX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKwor
bGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleTEgPSB7
ImsiOiAia2V5MSJ9OworbGV0IGtleTIgPSB7ImsiOiAia2V5MiJ9OworLy8gQ3JlYXRlIHRocmVl
IG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBU
aGUgb2JqZWN0cworLy8gbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2Fu
IHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QxYSA9IHt9OworICAgICAgICBm
Zy5yZWdpc3RlcihvYmplY3QxYSwgImhvbGRpbmdzMWEiLCBrZXkxKTsKKworICAgICAgICBsZXQg
b2JqZWN0MWIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MWIsICJob2xkaW5nczFi
Iiwga2V5MSk7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0
ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIsIGtleTIpOworCisgICAgICAgIC8vIFVucmVnaXN0ZXIg
YmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdHMuCisgICAg
ICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICAgICAgYXNzZXJ0VHJ1
ZShzdWNjZXNzKTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUg
dGFyZ2V0IG9iamVjdHMuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3Vu
dCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVk
IG9ubHkgZm9yIHRoZSByZWZlcmVuY2Ugd2hpY2gKKy8vIHdhcyBub3QgdW5yZWdpc3RlcmVkLgor
bGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfaG9sZGluZ3Nf
Y291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWU4MDBhYTJhY2UwOWY2
ZjI5NTJlNGU5N2NiNTY5ODFlYTJlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE5IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcy13aXRoLWNsZWFudXAtc29tZSAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2lu
ZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIp
OworCit2YXIgRlIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkgKGZ1bmN0aW9uIChob2xkaW5n
cykgeyBnbG9iYWxUaGlzLkZSUmFuID0gdHJ1ZTsgfSk7Cit7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9OworICAgICAgICAvLyBvYmog
aXMgaXRzIG93biB1bnJlZ2lzdGVyIHRva2VuIGFuZCBiZWNvbWVzIHVucmVhY2hhYmxlIGFmdGVy
IHRoaXMKKyAgICAgICAgLy8gYmxvY2suIElmIHRoZSB1bnJlZ2lzdGVyIHRva2VuIGlzIGhlbGQg
c3Ryb25nbHkgdGhpcyB0ZXN0IHdpbGwgbm90CisgICAgICAgIC8vIHRlcm1pbmF0ZS4KKyAgICAg
ICAgRlIucmVnaXN0ZXIob2JqLCA0Miwgb2JqKTsKKyAgICB9Cit9CisKK2xldCB0cnlBZ2FpbkNv
dW50ID0gMTA7CitmdW5jdGlvbiB0cnlBZ2FpbigpIHsKKyAgICBnYygpOworICAgIGlmIChnbG9i
YWxUaGlzLkZSUmFuKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCEtLXRyeUFnYWluQ291bnQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIHNldFRpbWVvdXQodHJ5QWdhaW4sIDAp
OworfQordHJ5QWdhaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404735</attachid>
            <date>2020-07-20 11:47:20 -0700</date>
            <delta_ts>2020-07-20 11:49:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199888-20200720114719.patch</filename>
            <type>text/plain</type>
            <size>193305</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGJhMmZhZGUwNDJkODZmOWVkYzExNTZkMGQ4NjQyY2JmYzUwZTk3Li5jZjRlMzU3YmQ1MjgzMGQy
YWUxNDNmMjliMWU4OWQzN2ZjOTE3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZXJlIGFyZSB0d28K
KyAgICAgICAgbWFpbiBwYXJ0cyB0byB0aGlzIHBhdGNoLCB0aGUgZmlyc3QgaXMgcmVmYWN0b3Jp
bmcgUHJvbWlzZVRpbWVyIGEKKyAgICAgICAgbW9yZSBnZW5lcmFsIGludG8gRGVmZXJyZWRXb3Jr
VGltZXIuIFRoaXMgYWxsb3dzIHVzIHRvIGZpbmFsbHkKKyAgICAgICAgaGF2ZSBhICJyZWFsIiBz
ZXRUaW1lb3V0IG9uIHRoZSBqc2MgY29tbWFuZCBsaW5lLiBUaGUgc2Vjb25kIHBhcnQKKyAgICAg
ICAgaXMgYWRkaW5nIGFsbCB0aGUgbmV3IGNsYXNzZXMgbmVlZGVkIGZvciBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBpcyBtb3N0bHkgYSByZW5hbWUg
YnV0IGRvZXMgdHdvIG1haW4gbmV3CisgICAgICAgIHRoaW5ncy4gVGhlIGZpcnN0IGlzIHRoYXQg
aXQgbm93IG5vdGlmaWVzIHRoZSBWTSB3ZSBoYXZlIGZpbmlzaGVkCisgICAgICAgIGEgc3luY2hy
b251b3VzIEpTIGV4ZWN1dGlvbiwgc28gdGhhdCBXZWFrUmVmcyBjYW4gYmUKKyAgICAgICAgY29s
bGVjdGVkLiBUaGUgc2Vjb25kIGlzIHRoYXQgaXQgbm93IGNhdGNoZXMgYW55IGV4Y2VwdGlvbnMg
YW5kCisgICAgICAgIGZvcndhcmRzIHRoZSB0byBhIG5ldyBtZXRob2Qgb24gdGhlIGdsb2JhbCBv
YmplY3QgbWV0aG9kCisgICAgICAgIHRhYmxlLiBGb3IgV2ViQ29yZSwgdGhpcyByZXBvcnRzIHRo
ZSBleGNlcHRpb24gdG8gdGhlIGNvbnNvbGUuIEZvcgorICAgICAgICBBUEkgdXNlcnMsIHRoaXMg
Y2FsbHMgdGhlaXIgZXhjZXB0aW9uSGFuZGxlciBibG9jay4gRm9yIHRoZSBDTEksCisgICAgICAg
IGl0IGV4aXRzIHdpdGggZXhpdCBzdGF0dXMgMyAob3VyIGdlbmVyYWwgZXhjZXB0aW9uIGV4aXQK
KyAgICAgICAgc3RhdHVzKS4gVW5mb3J0dW5hdGVseSwgdGhlcmUncyBub3QgY3VycmVudGx5IGFu
IGVyZ29ub21pYyB3YXkgdG8KKyAgICAgICAgcGFzcyB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uIGZy
b20gdGhlIENMSSBhcmd1bWVudHMgdG8gdGhpcyBoYW5kbGVyCisgICAgICAgIHNvIHRoYXQncyBu
b3Qgc3VwcG9ydGVkIGhlcmUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBGaW5hbGl6
YXRpb25SZWdpc3RyeSB0aGlzIHBhdGNoIGFkZHMgYSAibmV3IgorICAgICAgICBjbGFzcyBKU0Rl
c3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsLCB3aGljaCBhbGxvd3MgdXMgdG8KKyAg
ICAgICAgaGF2ZSBhIGRlc3RydWN0aWJsZSBvYmplY3Qgd2l0aCBpbnRlcm5hbCBmaWVsZHMuIFNp
bmNlIHRoZSBvcmRlcgorICAgICAgICBvZiBjb2xsZWN0aW9uIGRvZXNuJ3QgbWF0dGVyIHdlIGN1
cnJlbnRseSB1c2UgQysrIEhhc2hUYWJsZXMgb24KKyAgICAgICAgdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBTaW5jZSB1c2VycyBjYW4gdW5yZWdpc3RlciBvYmplY3RzIHdoaWxlCisgICAgICAg
IHRoZSBjYWxsYmFjayBpcyBwZW5kaW5nIHdlIGhhdmUgYSBoYXNoIHRhYmxlIGZvciB0aGUgbGl2
ZSBlbnRyaWVzCisgICAgICAgIGFuZCBhIHNlY29uZCBoYXNoIHRhYmxlIGZvciB0aGUgZGVhZCBv
bmVzLiBMYXN0bHksIGJlY2F1c2UgdXNlcnMKKyAgICAgICAgYXJlIG5vdCByZXF1cmVkIHRvIHBy
b3ZpZGUgYSB0b2tlbiBmb3IgdW5yZWdpc3RyYXRpb24gd2UgaGF2ZSB0d28KKyAgICAgICAgZXh0
cmEgVmVjdG9ycyBjb250YWluaW5nIHRoZSBsaXZlL2RlYWQgb2JqZWN0cyB0aGF0IGFyZSBub3QK
KyAgICAgICAgdW5yZWdpc3RlcmlibGUuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvblNldFRpbWVvdXQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6YXRpb25S
ZWdpc3RyeUxpdmVDb3VudCk6CisgICAgICAgIChmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY2hlY2tVbmNhdWdodEV4Y2Vw
dGlvbik6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3ApOgorICAgICAgICAocnVuSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5jcHAuCisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsp
OgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVy
cmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRl
ZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKToKKyAgICAgICAgKiBydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpGaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAqIHJ1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jRmlu
YWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OnByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpydW5GaW5hbGl6YXRpb25DbGVhbnVwKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZGVhZENvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdGFja092ZXJmbG93RnJhbWVDYWxsZWUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjptYXBTZXRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnNldEFkZFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphcnJheUpvaW5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg6CisgICAgICAgICogcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCYXNlPjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNv
bHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6
OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRl
SUQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlN
b2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMC0wNy0xNyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIENsZWFuIHVwIHJlc29sdmVMb2Nh
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwODBlYzkxZWM2ZGNlZDFlZGNlNjg0ZThjNWRlNmIxNjRkZjIzZjI1
Li43NzcxNmEzOTkyYTI3MzM0MzQ1NTFiMDEwYzBkNGRiMDg1OTRjN2Q2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgUmVmYWN0
b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQcm9taXNlRGVmZXJyZWRUaW1lciB0byBEZWZlcnJlZFdv
cmtUaW1lci4KKworICAgICAgICBBbHNvLCBhZGQgZ2xvYmFsT2JqZWN0IGhvb2sgZm9yIHJlcG9y
dGluZyB1bmNhdWdodCBleGNlcHRpb25zIGZyb20gSlNDJ3MKKyAgICAgICAgcnVubG9vcCBjYWxs
YmFja3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRp
b25BdEV2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFtaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlhdGVTdHJlYW1pbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24p
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgICogd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorCiAyMDIwLTA3LTE3ICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJHTDJdIFJlYWRQaXhlbHMg
dXBkYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBkNzVjNThkNDk5YWM0NzI1NmVjOGRlN2RhMTI2MDFkM2M2MGE2MzM4Li40YWI1
NDdlOWRlMGRmOGVhNDcxNDVmMmFmZDU5ZmY1NjUzY2IzOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3Vh
Z2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5z
dGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9i
YWxPYmplY3QuaAppbmRleCA3Mzk3YzZiNGE2MGM2MmMzOGY0MGM2ODEwNzYxYzg1YzhmYzNjYzc0
Li44MTY3YzVjYzBiYzRhZmQ5N2M5ODU2NDk1M2RkZWQ0MzBjNzMzZTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCkBAIC01OSw2ICs1OSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9p
ZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhj
ZXB0aW9uKik7CisKICAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlcklt
cG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqIG1v
ZHVsZU5hbWVWYWx1ZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBTb3VyY2VPcmlnaW4mKTsK
ICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0
KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleVZhbHVlLCBKU1ZhbHVlIHJlZmVycmVyVmFs
dWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVy
RmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW0KaW5kZXggZDYxYWFjN2U0NWM1MzcyMDVhOGFjYTdlMDhlZmQ2OTRjYmVkYzQyMy4uZGRl
MmJkMzIzYmM3YjY1YjRmMDkwMjNiODdhZWEyN2IwNDIzNjM5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC02MiwxMyArNjIsMjAgQEAg
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlclJlc29sdmUsIC8vIG1vZHVs
ZUxvYWRlclJlc29sdmUKICAgICAmbW9kdWxlTG9hZGVyRmV0Y2gsIC8vIG1vZHVsZUxvYWRlckZl
dGNoCiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1
bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwotICAgIG1vZHVsZUxvYWRlckV2YWx1
YXRlLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQorICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwg
Ly8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9u
VHJhY2tlcgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51
bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1p
bmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwogfTsKIAordm9pZCBKU0FQ
SUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVm
OnRvR2xvYmFsUmVmKGdsb2JhbE9iamVjdCldOworICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlv
bjp0b1JlZihnbG9iYWxPYmplY3QtPnZtKCksIGV4Y2VwdGlvbi0+dmFsdWUoKSldOworfQorCiBz
dGF0aWMgRXhwZWN0ZWQ8VVJMLCBTdHJpbmc+IGNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcihj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgc3BlY2lmaWVyKQogewogICAgIFVSTCBhYnNv
bHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAzNmEwODMwZmE1MWU5YjIyOWE0ZWYzMThhOTBjOWU3NTIyYzBhYmU3Li4zNjc2NTkz
NzRlYjJkM2NiMzE0NjRhNWE5MTRlZWU5OGEyYWM5OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC04MzAsNiArODMwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0RhdGFWaWV3LmgKICAgICBydW50aW1l
L0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCisgICAgcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCiAgICAgcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaAogICAgIHJ1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKICAgICBydW50aW1lL0Rp
cmVjdEFyZ3VtZW50c09mZnNldC5oCkBAIC05NjgsNyArOTY5LDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL1BhcnNlSW50LmgKICAg
ICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgK
LSAgICBydW50aW1lL1Byb21pc2VUaW1lci5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAogICAgIHJ1bnRpbWUvUHJv
cGVydHlOYW1lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNkNzRjMjUyMmVh
MmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1Zi4uYTI2YTk5NzUyNTJkMDY1NDY2YmZhNjFhNWI1
YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkzMSwxNiAr
OTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIwMDYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEZERTczMjFG
QUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSAqLzsgfTsKIAkJNTMxMUJENEIxRUE1ODFF
NTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4u
aCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2
MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsgfTsKLQkJNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQy
IC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAq
LzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4
ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9
OworICAgICAgICAgICAgICAgIDUzMTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMx
ODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi87IH07CisgICAgICAg
ICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyog
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUzMzNCQkRDMjExMEY3RDkwMDc2MThFQyAvKiBERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3Bw
ICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0UxMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4
MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi87IH07Ci0J
CTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYy
Mzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1
MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5
NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzMzhFQkEzMjNBQjA0Qjgw
MDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZU
TFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87IH07Ci0JCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRE
NyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJG
RTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0
NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQy
RkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1
MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQz
QzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzEx
RTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNS
dW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVD
MDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NTFF
NzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBE
ZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisgICAgICAgICAgICAgICAgNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpT
VHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAw
MTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJh
eUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNz
Q2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCAqLzsgfTsKQEAgLTM1OTcsNiAr
MzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkFsbG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFF
QjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9
IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MDFGQTNFMzFDMDAyNkE1NDUgLyogU291
cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VzQ29jb2EudHh0OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MTFGQTNFMzFEMDAyNkE1NDUgLyog
U291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlcy50eHQ7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2NkFEMUZBM0U3NzcwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZp
ZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3ICszNjI2LDIyIEBACiAJCTUzMTgwNDVCMjJFQUFD
NEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0V4dHJhY3RW
YWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFjdFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzRXh0cmFj
dFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0RE
MjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7
IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyog
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3QjgxOTEgLyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9kdWxlLW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29y
ZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMzhFMkE2MjM5NkVG
RUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RUJBMjIzQUIwNEEzMDAzODI2NjIgLyogRlRMU2Vs
ZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRM
U2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0aCA9IGZ0bC9GVExTZWxlY3RQcmVkaWN0YWJpbGl0
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUw
MEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3Bz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZF
MiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQ2MjJDMkQ5
RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0
MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5j
cHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5M
b29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEy
QUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNlVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9taXNlVGltZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNU
eXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDYzODc0
MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdvcmtUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJyZWRXb3JrVGlt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDg2
QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJy
YXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFy
cmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBl
ZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJh
eUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJheUNUZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYgKzcxNDMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYz
NjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEz
NUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5jcHAgKi8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAw
RjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIw
MUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJCTczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFB
QTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAqLywKQEAgLTcxODQsMTEgKzcx
OTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJDRjI1MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2Uu
Y3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5o
ICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0EwMEFDNDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlubGlu
ZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVy
QWdlbnQuY3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNGQUQzMzIz
NzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAogCQkJCUNFQ0ZB
RDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNF
MjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICov
LAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJh
c2UuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDUyMkMyRDg3
RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovLAorCQkJ
CTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRFNkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJCQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyog
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLywKIAkJCQlBN0E4QUYyOTE3QURCNUYz
MDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAv
KiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxv
YXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgwQzAwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5j
dGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03MzQ1LDcgKzczNjIsMTMgQEAKIAkJCQkwRjdERjEz
OTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3Bw
ICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4
cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0
MzJBcnJheS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzAwNzQwQzIy
REQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5
ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkz
Nzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuaCAqLywKKwkJCQk3OTg5Mzc3NzFE
Q0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmggKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5o
ICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICov
LAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJ
CQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLApAQCAtNzU0NCw5
ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUu
aCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
Y3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3Bw
ICovLAotCQkJCTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLywK
LQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdGQjYwQTMxMDNGN0RDMjAwMTdB
Mjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQw
MDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLAogCQkJCTg2MTU4QUIyMTU1QzhC
M0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKQEAgLTkyODYsNiArOTMwNyw3IEBACiAJ
CQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0IC8qIERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZl
cnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNDYzODc1MUU3MERERUMwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3
NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVC
eUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTI2LDkgKzk1NDgsMTEgQEAKIAkJCQkw
RjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZCMTAwMjJCRjZEIC8qIEZhc3RKSVRQZXJtaXNzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUNGQUQz
NzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1
OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMjBCRDA1
MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJE
Nzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1Nyw3ICs5ODgxLDggQEAKIAkJCQlGRTM4NEVFNjFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2
MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0
QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ3MjJDMkQ5RDIw
MDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3
OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURDNjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9m
aWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8q
IFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQw
MEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4
NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVy
cyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAw
QzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEw
MDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5h
bWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAy
YTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0YzI3MDUuLjJhMjg3YTdmZGRiMDgwNGYzYjYw
MTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc4
Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAogcnVudGltZS9FeGVjdXRh
YmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0Zp
bGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKK3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAKQEAgLTg1MCw2ICs4
NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcuY3BwCiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTkzMiw3ICs5MzUsNyBAQCBydW50aW1lL09wZXJh
dGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3Jl
YXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCi1ydW50
aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcAogcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRl
eCAxODRiYjk0NDQxZDNmYTQzMzQyYWZiZjk2NjVjYzFiZTczOWVlMDEzLi5kODFhZGVmZjVmODQy
NmE4NTMyNDJjNGU3YTE3YjU3YTY1MjFjNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxN
YWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dl
YWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2MTIsOCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2Up
OwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1h
cmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJ
bnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2Up
CisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDJlMGQwYTMwZGY1ZjY1MzA4ZTdhOWZjZWI5
NjQzNGEyOTdmMTgzMTkuLmM5YmVlZDlmYTgyMzRmMWExMDYyMWYzMTM2MjBiYmNhZjU2MjlkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29tcGls
ZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb25m
aWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNh
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTU2LDcgKzU4
LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVy
cm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb21pc2VU
aW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFwQWNjZXNzU2NvcGUuaCIKICNpbmNsdWRlICJT
YW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0xNTUsNiAr
MTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIHsKIAorI2RlZmluZSBF
WElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIHN0YXRpYyB2b2lkIGpzY0V4
aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsK
QEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBXb3JrZXJzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYsIGJvb2wgaXNXb3JrZXIsIGNvbnN0
IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wg
aXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9v
bCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBi
b29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlLCBjb25zdCBDb21tYW5k
TGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBjbGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1YmxpYzoKQEAgLTMwMiw3ICszMDUsMTAgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIo
SlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNG
b3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklz
MzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDggKzU0NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5
cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFp
bk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWluTWljcm90YXNrcywgMCk7Ci0gICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDAp
OworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVv
dXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVu
Y3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFs
aXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50IiwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxp
dmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0
cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50LCAwKTsK
KyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0UmFuZG9tU2VlZCIsIGZ1bmN0
aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0UmFuZG9t
U2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUsIDEpOwpAQCAtNjM4LDYgKzY0OCw4IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9i
amVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAg
c3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVj
dCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3Rh
dGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0ds
b2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBK
U1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KTsKIApAQCAt
NjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVj
dDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRl
SW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVh
dGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5n
dWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBp
bnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIxODcsNiArMjIwMCwyOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFu
eSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBkb24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0
ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sgPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2
bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3Vt
ZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsKKworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBs
b29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBzY2hl
ZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGlu
Z1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hl
ZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2FsbGJhY2tdIHsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywganNVbmRlZmluZWQo
KSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2VlIHRoaXMuLi4iKTsKKyAgICAgICAgdm0uZGVmZXJy
ZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKGNhbGxiYWNrKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVD
b3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkg
PSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5hbGl6YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50
IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lzdHJ5Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxpemF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChs
b2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxp
emF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3Ry
eSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5
LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFs
aXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQobG9ja2VyKSkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjYxNywxMCArMjY3OSwxMCBA
QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICAvLyBXZSBjYW4ndCB1c2Ug
ZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2luZyBjb2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dz
CiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRpb24gSGFuZGxpbmcKLSAgICBpbnQgcmVzID0gMDsK
KyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNTOwogICAgIFRSWQogICAgICAgICByZXMgPSBqc2Nt
YWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQVChyZXMgPSAzKQorICAgIEVYQ0VQVChyZXMgPSBF
WElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6ZVN0YXRzQXRFbmRPZlRlc3RpbmcoKTsKICAgICBp
ZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZPUl9JTlBVVF9UT19FWElUIikpIHsKICAgICAgICAg
V1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigpOwpAQCAtMjY5MSw3ICsyNzUzLDcgQEAgc3RhdGlj
IHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBl
eGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhDRVBUSU9OCiB9CiAKLXN0YXRpYyBib29sIGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5lJiBvcHRpb25zKQorc3RhdGljIGJvb2wgY2hlY2tV
bmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMpCiB7CiAgICAgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5hbWUgPSBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRp
b25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTI3
MjMsNyArMjc4NSw3IEBAIHN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZt
LCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwg
Q29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMs
IGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBA
IC0yNzQyLDYgKzI4MDQsMTUgQEAgc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXMKICAgICAgICAgc3Vj
Y2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDogSlNWYWx1ZSgpLCBvcHRpb25zKTsKIH0KIAordm9p
ZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0
byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgZHVt
cEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7CisgICAgYm9vbCBoaWRlTm9S
ZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRlTm9SZXR1cm4pCisgICAgICAgIGpzY0V4aXQoRVhJ
VF9FWENFUFRJT04pOworfQorCiBzdGF0aWMgdm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7
CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlwdHMgPSBvcHRpb25zLm1fc2NyaXB0czsKQEAgLTMx
NzYsNyArMzI0Nyw3IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJv
b2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIGZ1bmModm0sIGdsb2JhbE9i
amVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIH0KLSAg
ICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxvb3AoKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2
OGVmZWRhMTRkNDYxMDUyNjA3NWFmZGViYWM5YWRiYTI1MjY2YmEuLjUwZDZiYmE1NDk4YzAyYjUy
MjRiYjM3YzY1ZDdhYjJkMTgyZThiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiw2ICszNiw3IEBACiAgICAgbWFjcm8oRGF0ZVRp
bWVGb3JtYXQpIFwKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAor
ICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwK
ICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xOTU2ZGE0MTQwMWIxNmFmZGVkOGUxYWQzOWMyNDZjZDM2YmZiNTBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3Bw
CkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3Jr
VGltZXIuaCIKKworI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCituYW1lc3BhY2UgRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKK0RlZmVycmVkV29ya1RpbWVyOjpE
ZWZlcnJlZFdvcmtUaW1lcihWTSYgdm0pCisgICAgOiBCYXNlKHZtKQoreworfQorCit2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0mIHZtKQoreworICAgIEFTU0VSVCh2bS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBj
YW5jZWxUaW1lcigpOworICAgIGlmICghbV9ydW5UYXNrcykgeworICAgICAgICBtX3Rhc2tMb2Nr
LnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKCFtX3Rhc2tz
LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtl
Rmlyc3QoKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6
dmVyYm9zZSwgIkRvaW5nIHdvcmsgb246ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisKKyAgICAg
ICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KKyAgICAg
ICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSkgeworICAgICAgICAgICAg
Ly8gQWxsb3cgdGFza3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgorICAgICAgICAgICAg
bV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRydWU7CisgICAgICAgICAgICBtX3Rhc2tMb2NrLnVu
bG9jaygpOyAKKworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBydW5sb29w
IHR1cm4sIHdlIGNhbiByZWxlYXNlIGFueSB3ZWFrcmVmcyBoZXJlLgorICAgICAgICAgICAgdm0u
ZmluYWxpemVTeW5jaHJvbm91c0pTRXhlY3V0aW9uKCk7CisKKyAgICAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRhc2soKTsKKyAgICAg
ICAgICAgIGlmIChFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGlja2V0LT5nbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAg
ICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0VW5jYXVn
aHRFeGNlcHRpb25BdEV2ZW50TG9vcChnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOworICAgICAgICAgICAg
QVNTRVJUKCF2bS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkpOworCisgICAgICAgICAgICBtX3Rh
c2tMb2NrLmxvY2soKTsKKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHko
KSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpCisgICAgICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CisKKyAgICBtX3Rhc2tMb2NrLnVubG9jaygpOworfQor
Cit2b2lkIERlZmVycmVkV29ya1RpbWVyOjpydW5SdW5Mb29wKCkKK3sKKyAgICBBU1NFUlQoIW1f
YXBpTG9jay0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgQVNT
RVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsK
KyAgICBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2ggPSB0cnVlOworICAg
IGlmIChtX3BlbmRpbmdUaWNrZXRzLnNpemUoKSkKKyAgICAgICAgUnVuTG9vcDo6cnVuKCk7Cit9
CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmFkZFBlbmRpbmdXb3JrKFZNJiB2bSwgVGlja2V0
IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykKK3sKKyAgICBB
U1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKKyAgICAgICAgQVNTRVJU
KGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOworCisgICAgYXV0byByZXN1bHQgPSBt
X3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVk
V29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgdGlja2V0OiAi
LCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9u
ZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhTG9nTG5J
ZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRl
bmNpZXMgZm9yIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsKKyAgICB9Cit9CisK
K2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc1BlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQpCit7
CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKKyAgICByZXR1cm4gbV9wZW5kaW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpOworfQorCiti
b29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQg
dGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpCit7CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nVGlj
a2V0cy5jb250YWlucyh0aWNrZXQpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5nZXQodGlja2V0KTsKKyAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRlcGVuZGVuY3kp
OworfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayhUaWNrZXQg
dGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7CisgICAgYm9vbCByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLnJlbW92ZSh0
aWNrZXQpOworCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRX
b3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50
ZXIodGlja2V0KSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIERlZmVycmVkV29y
a1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKFRpY2tldCB0aWNrZXQsIFRhc2smJiB0YXNrKQorewor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOworICAgIG1fdGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKKyAgICBpZiAoIWlzU2NoZWR1
bGVkKCkgJiYgIW1fY3VycmVudGx5UnVubmluZ1Rhc2spCisgICAgICAgIHNldFRpbWVVbnRpbEZp
cmUoMF9zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzFhOGFiYzll
YzQyODU2ZTlkZDNhMWNjM2JjNWNlODZkYjRmNjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlOworY2xhc3MgVk07CitjbGFzcyBKU0NlbGw7
CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlZmVycmVkV29ya1RpbWVyIGZpbmFsIDogcHVi
bGljIEpTUnVuTG9vcFRpbWVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNSdW5Mb29w
VGltZXI7CisKKyAgICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOworCisgICAgdXNpbmcgVGlja2V0
ID0gSlNPYmplY3QqOworICAgIHZvaWQgYWRkUGVuZGluZ1dvcmsoVk0mLCBUaWNrZXQsIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOworICAgIGJvb2wgaGFzUGVuZGluZ1dv
cmsoVGlja2V0KTsKKyAgICBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCwg
SlNDZWxsKiBkZXBlbmRlbmN5KTsKKyAgICBib29sIGNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCk7
CisKKyAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB2b2lkIHNjaGVkdWxl
V29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworCisgICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tzKCkg
eyBtX3J1blRhc2tzID0gZmFsc2U7IH0KKworICAgIHZvaWQgcnVuUnVuTG9vcCgpOworCisgICAg
c3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIERlZmVycmVkV29ya1RpbWVyKFZNJik7CisKKyAgICBMb2NrIG1fdGFz
a0xvY2s7CisgICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRT
dG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY3Vy
cmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OworICAgIERlcXVlPHN0ZDo6dHVwbGU8VGlja2V0
LCBUYXNrPj4gbV90YXNrczsKKyAgICBIYXNoTWFwPFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0Nl
bGw+Pj4gbV9wZW5kaW5nVGlja2V0czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDY5OGYwYzkxNDllZTk3MWMz
YTlmY2FmMThkODc2NjYyYzNjMGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTAs
MCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMu
aCIKKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yKSB9OworCit2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHBy
b3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkZpbmFsaXphdGlvblJl
Z2lzdHJ5Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RmluYWxpemF0
aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxs
RmluYWxpemF0aW9uUmVnaXN0cnksIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KQorewor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmluYWxpemF0aW9u
UmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmluYWxpemF0aW9uUmVnaXN0cnkiKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNDYWxsYWJsZSh2bSkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJz
dCBhcmd1bWVudCB0byBGaW5hbGl6YXRpb25SZWdpc3RyeSBzaG91bGQgYmUgYSBmdW5jdGlvbiJf
cyk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSA9
IGNhbGxGcmFtZS0+anNDYWxsZWUoKSA9PSBuZXdUYXJnZXQKKyAgICAgICAgPyBnbG9iYWxPYmpl
Y3QtPmZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkKKyAgICAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG5ld1RhcmdldCwg
Z2V0RnVuY3Rpb25SZWFsbSh2bSwgbmV3VGFyZ2V0KS0+ZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1
Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKHZtLCBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVy
ZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKSkpKTsKK30KKwor
fQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWUxNjhjY2Nj
YTZlNmJkYjEwNTU3NTZkMTA0MTdhZGQ2OTI3NzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOwor
CitjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0
aW9uOworCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAgRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0
aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKik7
Cit9OworCitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxMWY5ZjhmNjkzMDE3ZGRmMzlmOGZiNDc0NTg0
OTNkYzk5MGI4ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXph
dGlvblJlZ2lzdHJ5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSkgfTsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlS
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHByb3Bl
cnR5IG5hbWUgYmVjYXVzZSBpdCdzIGEgcmVzZXZlcmVkIHdvcmQgaW4gQysrLi4uCisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidW5yZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3Ry
eVVucmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
K30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdp
c3RyeSBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgYXV0byogZ3JvdXAgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9u
UmVnaXN0cnkqPih2bSwgYXNPYmplY3QodmFsdWUpKTsKKyAgICBpZiAoTElLRUxZKGdyb3VwKSkK
KyAgICAgICAgcmV0dXJuIGdyb3VwOworCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdpc3RyeSBmdW5jdGlvbiBvbiBhIG5vbi1G
aW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3QiX3MpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lz
dHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGdyb3VwID0gZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUg
dGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB0YXJnZXQiX3MpOworCisgICAg
SlNWYWx1ZSBob2xkaW5ncyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKHNhbWVW
YWx1ZShnbG9iYWxPYmplY3QsIHRhcmdldCwgaG9sZGluZ3MpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgZXhwZWN0cyB0aGUg
dGFyZ2V0IG9iamVjdCBhbmQgdGhlIGhvbGRpbmdzIHBhcmFtZXRlciBhcmUgbm90IHRoZSBzYW1l
LiBPdGhlcndpc2UsIHRoZSB0YXJnZXQgY2FuIG5ldmVyIGJlIGNvbGxlY3RlZCJfcyk7CisKKyAg
ICBKU1ZhbHVlIHVucmVnaXN0ZXJUb2tlbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CisgICAg
aWYgKCF1bnJlZ2lzdGVyVG9rZW4uaXNVbmRlZmluZWQoKSAmJiAhdW5yZWdpc3RlclRva2VuLmlz
T2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJyZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgYXMgdGhlIHVucmVnaXN0cmF0aW9u
IHRva2VuIl9zKTsKKworICAgIGdyb3VwLT5yZWdpc3RlclRhcmdldCh2bSwgdGFyZ2V0LmdldE9i
amVjdCgpLCBob2xkaW5ncywgdW5yZWdpc3RlclRva2VuKTsKKyAgICByZXR1cm4gZW5jb2RlZEpT
VW5kZWZpbmVkKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
RmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAoYXV0byogdG9rZW4gPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gZ3JvdXAt
PnVucmVnaXN0ZXIodm0sIHRva2VuKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgfQorCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGlzIHRo
ZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTVhNTM1MzYxYzk4ZGY2OGY1OWZlNzEzMmM1YzM3NzkwYjA3Yjhh
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNlKTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU+KHZtLmhlYXApKSBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHBy
b3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMzI3YWNl
ZTljOTI3MGU0OTI1YWJkNjY2M2ZjYTVmNDUyYWM2OWIwOC4uMTBjNmZmZDRkNmM3ZTIzN2MxNzFk
ZmQzYTQ3YmFhYWZiYWNmNTM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAKLSNpbmNsdWRl
ICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAppbmRleCAxNTEwYTRmYWI1ODk1ODAxZGM4
N2ZhNjczNjY0NzhmMjhjYmE2OWM5Li4xYTAwZjQ5NmJjN2M2NzgwMTNhZGZkNzQzYThiY2JjMTc2
ZmNiMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFJlbGF0aXZlVGltZUZvcm1hdC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzEsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
ZW51bSBjbGFzcyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CisKIGNsYXNzIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYyODNkNjNkZjI1MDhkNGY1N2U4NGZhZWYxYjFkZDYxMDM2N2QyZTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpzX2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdpc3RyeSIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSkgfTsKKworU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0pTRmluYWxpemF0aW9uUmVnaXN0cnkqIEpTRmluYWxpemF0aW9u
UmVnaXN0cnk6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCog
Y2FsbGJhY2spCit7CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pih2bS5oZWFwKSkg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSh2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24odm0sIGNhbGxiYWNrKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK3Zv
aWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVj
dCogY2FsbGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VS
VChjYWxsYmFjay0+aXNDYWxsYWJsZSh2bSkpOworICAgIGF1dG8gdmFsdWVzID0gaW5pdGlhbFZh
bHVlcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlcy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgIEJhc2U6OmludGVybmFsRmllbGQoaW5kZXgpLnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIodmFsdWVzW2luZGV4XSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6
Q2FsbGJhY2spLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY2FsbGJhY2spOworfQorCit2b2lkIEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3Ip
OworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
Kj4oY2VsbCk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRoaXNPYmplY3QtPmNlbGxM
b2NrKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3QtPm1fbGl2ZVJl
Z2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiBpdGVyLnZh
bHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0aW9uLmhvbGRpbmdzKTsK
KyAgICB9CisgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiB0aGlzT2JqZWN0LT5tX25vVW5y
ZWdpc3RyYXRpb25MaXZlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZChyZWdpc3RyYXRpb24uaG9s
ZGluZ3MpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3QtPm1fZGVhZFJl
Z2lzdHJhdGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBob2xkaW5ncyA6IGl0ZXIudmFsdWUp
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisgICAgfQorICAgIGZvciAo
YXV0byYgaG9sZGluZ3MgOiB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkKQorICAg
ICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisKKyAgICBzaXplX3QgdG90YWxCdWZmZXJT
aXplc0luQnl0ZXMgPSB0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkg
KiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZh
bHVlUGFpclR5cGUpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3Qt
Pm1fbGl2ZVJlZ2lzdHJhdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2Jq
ZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKTo6S2V5VmFsdWVQYWlyVHlwZSk7CisgICAgdG90YWxC
dWZmZXJTaXplc0luQnl0ZXMgKz0gdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5j
YXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlv
bkxpdmUudGFrZUxhc3QoKSkpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNP
YmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlw
ZSh0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB2
aXNpdG9yLnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodG90YWxCdWZmZXJTaXpl
c0luQnl0ZXMpOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlc3Ryb3koSlND
ZWxsKiB0YWJsZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4o
dGFibGUpLT5+SlNGaW5hbGl6YXRpb25SZWdpc3RyeSgpOworfQorCit2b2lkIEpTRmluYWxpemF0
aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworCisgICAgYXV0byByZW1vdmVGcm9tVmVj
dG9yID0gW10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHBvc2l0aW9uKSB7CisgICAgICAgIHN0ZDo6
c3dhcCh2ZWN0b3JbcG9zaXRpb25dLCB2ZWN0b3IubGFzdCgpKTsKKyAgICAgICAgcmV0dXJuIHZl
Y3Rvci50YWtlTGFzdCgpOworICAgIH07CisKKyAgICBib29sIHJlYWRpZWRDZWxsID0gZmFsc2U7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFtX25vVW5yZWdpc3RyYXRpb25MaXZlW2ldLmhv
bGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJrZWQobV9ub1VucmVnaXN0cmF0
aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5hc0NlbGwoKSkpOworICAgICAgICBpZiAoIXZtLmhl
YXAuaXNNYXJrZWQobV9ub1VucmVnaXN0cmF0aW9uTGl2ZVtpXS50YXJnZXQpKSB7CisgICAgICAg
ICAgICBtX25vVW5yZWdpc3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKG1fbm9V
bnJlZ2lzdHJhdGlvbkxpdmUsIGkpLmhvbGRpbmdzKTsKKyAgICAgICAgICAgIHJlYWRpZWRDZWxs
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbGl2ZVJlZ2lzdHJhdGlvbnMucmVt
b3ZlSWYoWyZdIChhdXRvJiBidWNrZXQpIC0+IGJvb2wgeworICAgICAgICBBU1NFUlQoYnVja2V0
LnZhbHVlLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCBrZXlJc0RlYWQgPSAhdm0uaGVhcC5pc01h
cmtlZChidWNrZXQua2V5KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1Y2tl
dC52YWx1ZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKCFidWNrZXQudmFsdWVb
aV0uaG9sZGluZ3MuZ2V0KCkuaXNDZWxsKCkgfHwgdm0uaGVhcC5pc01hcmtlZChidWNrZXQudmFs
dWVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAgICAgICAgIGlmICghdm0uaGVh
cC5pc01hcmtlZChidWNrZXQudmFsdWVbaV0udGFyZ2V0KSkgeworICAgICAgICAgICAgICAgIGlm
IChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQu
YXBwZW5kKHJlbW92ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKS5ob2xkaW5ncyk7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZGVhZExpc3QgPSBt
X2RlYWRSZWdpc3RyYXRpb25zLmFkZChidWNrZXQua2V5LCBEZWFkUmVnaXN0cmF0aW9ucygpKTsK
KyAgICAgICAgICAgICAgICAgICAgZGVhZExpc3QuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChyZW1v
dmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9sZGluZ3MpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGtleUlzRGVhZCkKKyAgICAgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25MaXZl
LmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuICFidWNrZXQudmFsdWUuc2l6ZSgpOworICAgIH0pOworCisgICAgaWYg
KCF2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykgJiYgKHJlYWRpZWRD
ZWxsIHx8IGRlYWRDb3VudChsb2NrZXIpKSkgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+YWRkUGVuZGluZ1dvcmsodm0sIHRoaXMsIHsgfSk7CisgICAgICAgIEFTU0VSVCh2bS5kZWZl
cnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykpOworICAgICAgICB2bS5kZWZlcnJl
ZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbih0aGlzLCBbdGhpc10geworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAg
ICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICAgICAgdGhpcy0+
cnVuRmluYWxpemF0aW9uQ2xlYW51cChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOworICAgICAgICB9KTsKKyAg
ICB9Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xl
YW51cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICB3aGlsZSAoSlNWYWx1ZSB2YWx1ZSA9IHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpKSB7
CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGFyZ3MuYXBwZW5k
KHZhbHVlKTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGNhbGxiYWNrKCksIGFyZ3MsICJU
aGlzIHNob3VsZCBub3QgYmUgdmlzaWJsZTogcGxlYXNlIHJlcG9ydCBhIGJ1ZyB0byBidWdzLndl
YmtpdC5vcmciKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICB9Cit9CisKK0pTVmFsdWUgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xk
aW5nc1ZhbHVlKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0OworICAgIGlmIChtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUo
KSkKKyAgICAgICAgcmVzdWx0ID0gbV9ub1VucmVnaXN0cmF0aW9uRGVhZC50YWtlTGFzdCgpLmdl
dCgpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX2RlYWRSZWdpc3RyYXRpb25z
LmJlZ2luKCk7CisgICAgICAgIGlmIChpdGVyID09IG1fZGVhZFJlZ2lzdHJhdGlvbnMuZW5kKCkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICBBU1NFUlQoaXRlci0+dmFs
dWUuc2l6ZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gaXRlci0+dmFsdWUudGFrZUxhc3QoKS5nZXQo
KTsKKyAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5zaXplKCkpCisgICAgICAgICAgICBtX2RlYWRS
ZWdpc3RyYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBpZiBjb25zdGV4cHIgKEFT
U0VSVF9FTkFCTEVEKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IG1fZGVhZFJl
Z2lzdHJhdGlvbnMpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyLnZhbHVlLnNpemUo
KSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5OjpyZWdpc3RlclRhcmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFs
dWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9rZW4pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhjZWxsTG9jaygpKTsKKyAgICBSZWdpc3RyYXRpb24gcmVnaXN0cmF0aW9uOworICAgIHJlZ2lz
dHJhdGlvbi50YXJnZXQgPSB0YXJnZXQ7CisgICAgcmVnaXN0cmF0aW9uLmhvbGRpbmdzLnNldFdp
dGhvdXRXcml0ZUJhcnJpZXIoaG9sZGluZ3MpOworICAgIGlmICh0b2tlbi5pc1VuZGVmaW5lZCgp
KQorICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25MaXZlLmFwcGVuZChXVEZNb3ZlKHJlZ2lzdHJh
dGlvbikpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbGl2ZVJlZ2lzdHJh
dGlvbnMuYWRkKGpzU2VjdXJlQ2FzdDxKU09iamVjdCo+KHZtLCB0b2tlbiksIExpdmVSZWdpc3Ry
YXRpb25zKCkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3Zl
KHJlZ2lzdHJhdGlvbikpOworICAgIH0KKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsK
K30KKworYm9vbCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKFZNJiwgSlNPYmpl
Y3QqIHRva2VuKQoreworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd3JpdGUgYmFycmllciBvdXJz
ZWx2ZXMgaGVyZSBiZWNhdXNlIHdlIHdpbGwgb25seSBwb2ludCB0byBsZXNzIHRoaW5ncyBhZnRl
ciB0aGlzIGZpbmlzaGVzLgorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7
CisgICAgYm9vbCByZXN1bHQgPSBtX2xpdmVSZWdpc3RyYXRpb25zLnJlbW92ZSh0b2tlbik7Cisg
ICAgcmVzdWx0IHw9IG1fZGVhZFJlZ2lzdHJhdGlvbnMucmVtb3ZlKHRva2VuKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3NpemVfdCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpsaXZlQ291
bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikKK3sKKyAgICBzaXplX3QgY291bnQgPSBtX25v
VW5yZWdpc3RyYXRpb25MaXZlLnNpemUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBt
X2xpdmVSZWdpc3RyYXRpb25zKQorICAgICAgICBjb3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsK
KworICAgIHJldHVybiBjb3VudDsKK30KKworc2l6ZV90IEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OmRlYWRDb3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKQoreworICAgIHNpemVfdCBjb3Vu
dCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuc2l6ZSgpOworICAgIGZvciAoY29uc3QgYXV0byYg
aXRlciA6IG1fZGVhZFJlZ2lzdHJhdGlvbnMpCisgICAgICAgIGNvdW50ICs9IGl0ZXIudmFsdWUu
c2l6ZSgpOworCisgICAgcmV0dXJuIGNvdW50OworfQorCitTdHJpbmcgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopCit7CisgICAgcmV0dXJuICJPYmplY3QiX3M7Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmQ1Y2QzOGNmMGJhN2Q4Mjk5MWNkYjVjMGFhYTFmZjY0NDJhZjYzMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9u
UmVnaXN0cnkuaApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwxPiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT47
CisKKyAgICBlbnVtIGNsYXNzIEZpZWxkIDogdWludDhfdCB7IAorICAgICAgICBDYWxsYmFjaywK
KyAgICB9OworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVf
dD4gaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNh
cGFjaXR5LCBpbmxpbmVDYXBhY2l0eSA9PSAwVSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNG
aW5hbGl6YXRpb25SZWdpc3RyeSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFs
dWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgIH0gfTsKKyAgICB9
CisKKyAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQg
ZmllbGQpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGZpZWxkKSk7IH0KKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmll
bGQoRmllbGQgZmllbGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZpZWxkKSk7IH0KKworICAgIEpTT2JqZWN0KiBjYWxsYmFjaygpIGNvbnN0IHsg
cmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6OkNhbGxiYWNrKS5n
ZXQoKSk7IH0KKworICAgIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogY2FsbGJhY2spOworICAgIHN0YXRpYyBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5KiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9pZCBydW5GaW5hbGl6YXRpb25DbGVhbnVw
KEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9p
ZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKKworICAgIEpTVmFsdWUgdGFrZURlYWRIb2xkaW5nc1ZhbHVlKCk7CisKKyAgICBib29sIHVu
cmVnaXN0ZXIoVk0mLCBKU09iamVjdCogdG9rZW4pOworICAgIC8vIHRva2VuIHNob3VsZCBiZSBh
IEpTT2JqZWN0IG9yIHVuZGVmaW5lZC4KKyAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0KFZNJiwgSlNP
YmplY3QqIHRhcmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbik7CisKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzaXplX3QgbGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2Nr
PiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBkZWFkQ291bnQoY29uc3QgTG9ja2Vy
PEpTQ2VsbExvY2s+Jik7CisKK3ByaXZhdGU6CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTT2JqZWN0KiBjYWxsYmFjayk7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdHJ1Y3Qg
UmVnaXN0cmF0aW9uIHsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldDsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+IGhvbGRpbmdzOworICAgIH07CisKKyAgICB1c2luZyBMaXZlUmVnaXN0
cmF0aW9ucyA9IFZlY3RvcjxSZWdpc3RyYXRpb24+OworICAgIC8vIFdlIGRvbid0IG5lZWQgdGhl
IHRhcmdldCBhbnltb3JlIHNpbmNlIHdlIGtub3cgaXQncyBkZWFkLgorICAgIHVzaW5nIERlYWRS
ZWdpc3RyYXRpb25zID0gVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj47CisKKyAgICAvLyBO
b3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVyIHB1dHRpbmcgYSB3cml0ZSBiYXJyaWVyIG9uIHRoZSBr
ZXkgb3IgdGFyZ2V0IGJlY2F1c2UgdGhleSBhcmUgd2Vha2x5IHJlZmVyZW5jZWQuCisgICAgSGFz
aE1hcDxKU09iamVjdCosIExpdmVSZWdpc3RyYXRpb25zPiBtX2xpdmVSZWdpc3RyYXRpb25zOwor
ICAgIEhhc2hNYXA8SlNPYmplY3QqLCBEZWFkUmVnaXN0cmF0aW9ucz4gbV9kZWFkUmVnaXN0cmF0
aW9uczsKKyAgICAvLyBXZSB1c2UgYSBzZXBhcmF0ZSBsaXN0IGZvciBubyB1bnJlZ2lzdGVyIHZh
bHVlcyBpbnN0ZWFkIG9mIGEgc3BlY2lhbCBrZXkgaW4gdGhlIHRhYmxlcyBhYm92ZSBiZWNhdXNl
IHRoZSBIYXNoTWFwIGhhcyBhIHRlbmRlbmN5IHRvIHJlYWxsb2NhdGUgdW5kZXIgdXMgd2hlbiBp
dGVyYXRpbmcuLi4KKyAgICBMaXZlUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25MaXZl
OworICAgIERlYWRSZWdpc3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5Yjll
NGM5ODIzNzAwNi4uNmQ3MGVmY2U1NjJlMTZjZWVkZjk5MThjZWY5MjIxNDQzNWZmMWM0MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtNjEsNiArNjEsOCBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCIKQEAgLTk5LDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSlNEYXRh
Vmlldy5oIgogI2luY2x1ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0Rv
bGxhclZNLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTM4Nyw2ICszOTAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBj
b21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAg
LTIxOTksNiArMjIwMywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhS
ZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAgdm0oKS5xdWV1ZU1pY3JvdGFzaygqdGhpcywgV1RG
TW92ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhj
ZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikK
K3sKKyAgICBkYXRhTG9nTG4oIlVuY2F1Z2h0IEV4Y2VwdGlvbiBhdCBydW4gbG9vcDogIiwgZXhj
ZXB0aW9uLT52YWx1ZSgpKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0RGVidWdnZXIo
RGVidWdnZXIqIGRlYnVnZ2VyKQogewogICAgIG1fZGVidWdnZXIgPSBkZWJ1Z2dlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRkYzMw
YjgyZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjQ3NGZkZTY0ZmY2Y2FlMjgzZTk5
ZTQ2ZWVjODA1MDgxYmMwZjliYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTM4LDYgKzEzOCw4IEBAIGNvbnN0ZXhwciBib29sIHR5
cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBtYWNybyhKU1Byb21pc2UsIHByb21pc2Us
IHByb21pc2UsIEpTUHJvbWlzZSwgUHJvbWlzZSwgb2JqZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVs
dCkgXAogICAgIG1hY3JvKEJpZ0ludCwgYmlnSW50LCBiaWdJbnRPYmplY3QsIEJpZ0ludE9iamVj
dCwgQmlnSW50LCBvYmplY3QsIE9wdGlvbnM6OnVzZUJpZ0ludCgpKSBcCiAgICAgbWFjcm8oV2Vh
a09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgSlNXZWFrT2JqZWN0UmVm
LCBXZWFrUmVmLCBvYmplY3QsIE9wdGlvbnM6OnVzZVdlYWtSZWZzKCkpIFwKKyAgICBtYWNybyhG
aW5hbGl6YXRpb25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJl
Z2lzdHJ5LCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LCBGaW5hbGl6YXRpb25SZWdpc3RyeSwgb2Jq
ZWN0LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisKIAogI2RlZmluZSBGT1JfRUFDSF9CVUlM
VElOX0RFUklWRURfSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIG1hY3JvKFN0cmluZ0l0ZXJh
dG9yLCBzdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIEpTU3RyaW5nSXRlcmF0b3IsIFN0
cmluZ0l0ZXJhdG9yLCBpdGVyYXRvciwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKQEAgLTIyNyw2
ICsyMjksOSBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYg
dm9pZCAoKlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJv
bWlzZSosIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CiAgICAgUHJvbWlzZVJlamVjdGlv
blRyYWNrZXJQdHIgcHJvbWlzZVJlamVjdGlvblRyYWNrZXI7CiAKKyAgICB0eXBlZGVmIHZvaWQg
KCpSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyKShKU0dsb2JhbE9iamVjdCos
IEV4Y2VwdGlvbiopOworICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIg
cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKKwogICAgIHR5cGVkZWYgU3RyaW5n
ICgqRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAgRGVmYXVsdExhbmd1YWdlRnVu
Y3Rpb25QdHIgZGVmYXVsdExhbmd1YWdlOwogCkBAIC00NTMsMjEgKzQ1OCw2IEBAIHB1YmxpYzoK
ICAgICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKICAgICBSZWdFeHBHbG9iYWxEYXRhIG1fcmVn
RXhwR2xvYmFsRGF0YTsKIAotICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUo
KSBjb25zdCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQotCi0g
ICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAg
IElubGluZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkg
eyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1
cm4gbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNo
cG9pbnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNo
cG9pbnRTZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9p
bnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkg
eyByZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNl
dCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0
Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQotICAgIHsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1cm4gbV9u
dW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7Ci0gICAgfQogICAgIC8vIElmIHRoaXMgaGFzbid0
IGJlZW4gaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2NvbAog
ICAgIC8vIGlzIG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5lV2F0
Y2hwb2ludFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7CkBAIC00OTQs
NiArNDg0LDIzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90
eXBlQWRkV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90
eXBlVG9TdHJpbmdXYXRjaHBvaW50OwogCitwdWJsaWM6CisgICAgSlNDYWxsZWUqIHN0YWNrT3Zl
cmZsb3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2Fs
bGVlLmdldCgpOyB9CisKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9
CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQoKSB7IHJldHVybiBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9
CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwU2V0V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJu
IG1fbWFwU2V0V2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEFk
ZFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEFkZFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4g
bV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYg
YXJyYXlKb2luV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNl
dDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNl
dCgpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7Cisg
ICAgICAgIHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsKKyAgICB9CisKICAg
ICBib29sIGlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFi
bGUoKTsKICAgICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25P
YnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0
QW5kTm9uT2JzZXJ2YWJsZSgpOwpAQCAtODI0LDYgKzgzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKFZNJiB2bSwgSlNPYmplY3QqIGZ1bmN0aW9u
KSB7IG1fdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suc2V0KHZtLCBmdW5jdGlvbik7IH0KICAg
ICBKU09iamVjdCogdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBt
X3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLmdldCgpOyB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0
aW9uKik7CisKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KIAogICAg
IEpTT2JqZWN0KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNo
YXJpbmdNb2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZS5jcHAKaW5kZXggODgzMDgzZWNiNzY3ZDA4ODNmOWE0OTIxZjM5OWY1OTA4ODEzY2ZkZi4uNGYz
NGI2YjQ5Y2E4OWU2NjhjYjlhMjY3MTAzMjNjYWUxNzg2NGI0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNs
dWRlICJKU1Byb21pc2UuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUg
IkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNl
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKLSNpbmNsdWRlICJQcm9taXNl
VGltZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEpT
UHJvbWlzZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnBy
b21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6
cmVqZWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZWplY3QoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5j
dGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlamVjdFByb21pc2VGdW5j
dGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21p
c2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRo
aXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0QXNIYW5kbGVkKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYWRmYjc5ZmRkYTgxODNjYTkxMzE1YzUy
MDY0NzBkMTQyMzEyOTQ1NC4uOWJlODNjZThiMTg0YTVkZDBmYzNmMWQ1Nzg3ZDVhYTQ2ZmRlYzU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00
ODYsNiArNDg2LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNoaW5n
LCBmYWxzZSwgTm9ybWFsLCAiVW5uYW1lZCBXZWJBc3NlbWJseSBtb2R1bGVzIGFyZSBpZGVudGlm
aWVkIGluIGJhY2t0cmFjZXMgdGhyb3VnaCB0aGVpciBoYXNoLCBpZiBhdmFpbGFibGUuIikgXAog
ICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxs
b3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAogICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJv
bSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCisgICAgLyogRklYTUU6IFdlIHNob3Vs
ZCBtYWtlIHN1cmUgZmluYWxpemVycyBkb24ndCBydW4gZm9yIGRldGFjaGVkIHdpbmRvd3MgYmVm
b3JlIGVuYWJsaW5nIFdlYWtSZWZzIGJ5IGRlZmF1bHQuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTQ1MDggKi8gXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYo
Qm9vbCwgdXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBC
aWdJbnQgc3VwcG9ydC4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxp
bmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkg
YWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdp
bGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGVmZDJiMDA4NDMwMjYyNjE4NTk4MTk1ODlmNzg0Y2JiZDM2M2QwNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKLQotI2luY2x1ZGUg
IkpTUHJvbWlzZS5oIgotI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJWTS5o
IgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3Bh
Y2UgUHJvbWlzZVRpbWVySW50ZXJuYWwgewotc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKLX0KLQotUHJvbWlzZVRpbWVyOjpQcm9taXNlVGltZXIoVk0mIHZtKQotICAgIDog
QmFzZSh2bSkKLXsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OmRvV29yayhWTSYgdm0pCi17Ci0g
ICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIG1fdGFz
a0xvY2subG9jaygpOwotICAgIGNhbmNlbFRpbWVyKCk7Ci0gICAgaWYgKCFtX3J1blRhc2tzKSB7
Ci0gICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3RpY2tldCwg
dGFza10gPSBtX3Rhc2tzLnRha2VMYXN0KCk7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VU
aW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2lu
dGVyKHRpY2tldCkpOwotCi0gICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQg
dGhlc2UgcHJvbWlzZXMuCi0gICAgICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0
aWNrZXQpKSB7Ci0gICAgICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBydW4gbm93IHRvIHNjaGVk
dWxlIHdvcmsuCi0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKLSAg
ICAgICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7IAotCi0gICAgICAgICAgICB0YXNrKCk7Ci0g
ICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKLQotICAgICAgICAgICAgbV90YXNrTG9j
ay5sb2NrKCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpICYm
IG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2gpCi0gICAgICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5zdG9wKCk7Ci0KLSAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotfQotCi12
b2lkIFByb21pc2VUaW1lcjo6cnVuUnVuTG9vcCgpCi17Ci0gICAgQVNTRVJUKCFtX2FwaUxvY2st
PnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIEFTU0VSVCgmUnVu
TG9vcDo6Y3VycmVudCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7Ci0gICAgbV9z
aG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCA9IHRydWU7Ci0gICAgaWYgKG1f
cGVuZGluZ1Byb21pc2VzLnNpemUoKSkKLSAgICAgICAgUnVuTG9vcDo6cnVuKCk7Ci19Ci0KLXZv
aWQgUHJvbWlzZVRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShWTSYgdm0sIEpTUHJvbWlzZSogdGlj
a2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKQotewotICAgIEFTU0VS
VCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQotICAgICAgICBBU1NFUlQoZGVw
ZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tldCk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVu
ZGluZ1Byb21pc2VzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Ci0gICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1l
ckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7Ci0gICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2Vs
bD4odm0sIHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92
ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21p
c2VUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHBy
b21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7Ci0gICAgfQotfQotCi1ib29sIFByb21p
c2VUaW1lcjo6aGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNT
RVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBy
ZXR1cm4gbV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlja2V0KTsKLX0KLQotYm9vbCBQcm9t
aXNlVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0
LCBKU0NlbGwqIGRlcGVuZGVuY3kpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nUHJvbWlzZXMu
Y29udGFpbnModGlja2V0KSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2Vz
LmdldCh0aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7Ci19
Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRp
Y2tldCkKLXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMucmVtb3ZlKHRp
Y2tldCk7Ci0KLSAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGlt
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRp
Y2tldCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnNj
aGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiB0aWNrZXQsIFRhc2smJiB0YXNrKQotewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOwotICAgIG1fdGFza3MuYXBwZW5kKHN0ZDo6bWFr
ZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKLSAgICBpZiAoIWlzU2NoZWR1bGVkKCkg
JiYgIW1fY3VycmVudGx5UnVubmluZ1Rhc2spCi0gICAgICAgIHNldFRpbWVVbnRpbEZpcmUoMF9z
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VUaW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTRkMGYy
OWFlMmQyOGNmM2U0MDRiZWZiNTQ2ZjUzY2QwYmJhZTliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b21pc2VUaW1lci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiSlNSdW5Mb29wVGltZXIuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKLQotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1Byb21pc2U7Ci1jbGFzcyBWTTsKLWNs
YXNzIEpTQ2VsbDsKLQotY2xhc3MgUHJvbWlzZVRpbWVyIGZpbmFsIDogcHVibGljIEpTUnVuTG9v
cFRpbWVyIHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNSdW5Mb29wVGltZXI7Ci0KLSAg
ICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOwotCi0gICAgdm9pZCBhZGRQZW5kaW5nUHJvbWlzZShW
TSYsIEpTUHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0
aWNrZXQpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzRGVwZW5kYW5jeUluUGVuZGlu
Z1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7Ci0gICAgLy8g
SlNQcm9taXNlIHNob3VsZCBoYW5kbGUgY2FuY2VsaW5nIHdoZW4gdGhlIHByb21pc2UgaXMgcmVz
b2x2ZWQgb3IgcmVqZWN0ZWQuCi0gICAgYm9vbCBjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21p
c2UqKTsKLQotICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHZvaWQgc2No
ZWR1bGVXb3JrU29vbihKU1Byb21pc2UqLCBUYXNrJiYpOwotCi0gICAgdm9pZCBzdG9wUnVubmlu
Z1Rhc2tzKCkgeyBtX3J1blRhc2tzID0gZmFsc2U7IH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcnVuUnVuTG9vcCgpOwotCi0gICAgc3RhdGljIFJlZjxQcm9taXNlVGltZXI+IGNyZWF0
ZShWTSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9taXNlVGlt
ZXIodm0pKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUHJvbWlzZVRpbWVyKFZNJik7Ci0KLSAg
ICBIYXNoTWFwPEpTUHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1By
b21pc2VzOwotICAgIExvY2sgbV90YXNrTG9jazsKLSAgICBib29sIG1fcnVuVGFza3MgeyB0cnVl
IH07Ci0gICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OwotICAg
IFZlY3RvcjxzdGQ6OnR1cGxlPEpTUHJvbWlzZSosIFRhc2s+PiBtX3Rhc2tzOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwCmluZGV4IGFjYjM0YzlkM2RiMjZlNThhNjFmZmRiMzE3MTdhNTFl
NjgzMWZjNWQuLmUyMTEzOTc4YTMyNGVkN2I0YTVmMTBkMWIzZDA1YmY5ZTRjZmIzZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3Bw
CkBAIC0zMiw2ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAKK25hbWVzcGFjZSBTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKwogU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJl
SURUYWJsZSgpCiAgICAgOiBtX3RhYmxlKG1ha2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNl
dD4oc19pbml0aWFsU2l6ZSkpCiAgICAgLCBtX3NpemUoMSkKQEAgLTE2MSwxMSArMTY1LDE0IEBA
IFN0cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgdGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMg
PSBlbmNvZGUoc3RydWN0dXJlLCByZXN1bHQpOwogICAgIG1fc2l6ZSsrOwogICAgIEFTU0VSVCgh
aXNOdWtlZChyZXN1bHQpKTsKKworICAgIGRhdGFMb2dMbklmKFN0cnVjdHVyZUlEVGFibGVJbnRl
cm5hbDo6dmVyYm9zZSwgIkFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCByZXN1bHQsICIgZm9yIFN0
cnVjdHVyZSAiLCBSYXdQb2ludGVyKHN0cnVjdHVyZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHZvaWQgU3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKIHsKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1
cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2UsICJEZWFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCBz
dHJ1Y3R1cmVJRCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZUlEICE9IHNfdW51c2VkSUQpOwogICAg
IHVpbnQzMl90IHN0cnVjdHVyZUluZGV4ID0gc3RydWN0dXJlSUQgPj4gc19udW1iZXJPZkVudHJv
cHlCaXRzOwogICAgIEFTU0VSVChzdHJ1Y3R1cmVJbmRleCAmJiBzdHJ1Y3R1cmVJbmRleCA8IHNf
bWF4aW11bU51bWJlck9mU3RydWN0dXJlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggOGNhYTQ4YzFiZTMxMWI1ZDg3ZTg2MDM4YmEwZjQwNDE4Mzg4OGMyYS4uYmNmNjA5
YWQ0NmY0ODQyN2U5NmU2YTQyYTBhYjE4YjQ3OTE0ZWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkRlYnVn
Z2VyU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRp
c2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgog
I2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKQEAgLTg4LDYgKzg5LDcgQEAKICNpbmNsdWRlICJK
U0NhbGxlZS5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgpAQCAtMTMzLDcgKzEzNSw2IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJs
ZS5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFz
aFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemlu
Z0Z1enplckFnZW50LmgiCkBAIC0yODIsNiArMjgzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3Mp
CiAgICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQogICAgICwgZGF0ZUluc3Rh
bmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPERhdGVJbnN0YW5jZT4oKSkK
ICAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
RXJyb3JJbnN0YW5jZT4oKSkKKyAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKICAgICAsIGds
b2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKICAgICAsIGdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0dsb2JhbE9iamVjdD4oKSkKICAgICAs
IGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+KCkpCkBAIC0zNjUsNyArMzY3LDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3Aq
IHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAg
LCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpu
b0NhbGxlcigpKQotICAgICwgcHJvbWlzZVRpbWVyKFByb21pc2VUaW1lcjo6Y3JlYXRlKCp0aGlz
KSkKKyAgICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVhdGUoKnRo
aXMpKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAg
LCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCkBA
IC01NzUsNyArNTc3LDcgQEAgVk06On5WTSgpCiAgICAgYXV0byBkZXN0cnVjdGlvbkxvY2tlciA9
IGhvbGRMb2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQoKSk7CiAgICAgCiAgICAgR2lnYWNhZ2U6
OnJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2FnZURpc2FibGVk
Q2FsbGJhY2ssIHRoaXMpOwotICAgIHByb21pc2VUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygpOwor
ICAgIGRlZmVycmVkV29ya1RpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIGlmIChXYXNtOjpXb3JrbGlzdCogd29ya2xpc3QgPSBXYXNtOjpleGlz
dGluZ1dvcmtsaXN0T3JOdWxsKCkpCiAgICAgICAgIHdvcmtsaXN0LT5zdG9wQWxsUGxhbnNGb3JD
b250ZXh0KHdhc21Db250ZXh0KTsKQEAgLTE0ODcsNiArMTQ4OSw3IEBAIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5
cGUuZ2V0KCksCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1Nl
dFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0
Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmpl
Y3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBI
YXNoOjB4OGVjNjhmMWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3
aXRoU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXaXRoU2NvcGUpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZSwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZS5nZXQoKSwgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2UsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBPYmpD
Q2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCA2MGY1OTcyOWZlYzJlMDJlNjk3NmMzMWVkNTFiMTQ4YTVjNmVhYTA1Li5m
NGYyZWZlMDNiZTY2Mzk2NDg1OWI2NGI3Yjc4MjgwNGQ0ZTY3YjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5VGFi
bGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxl
OwogY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247Ci1jbGFzcyBQcm9taXNlVGltZXI7CitjbGFz
cyBEZWZlcnJlZFdvcmtUaW1lcjsKIGNsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwog
Y2xhc3MgUmVnaXN0ZXI7CkBAIC0zNzcsNiArMzc3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlw
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBlcnJvckluc3RhbmNlSGVh
cENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGZpbmFsaXph
dGlvblJlZ2lzdHJ5Q2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBD
ZWxsVHlwZTsKQEAgLTU1MCw2ICs1NTEsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKQEAgLTcwOSw4ICs3MTEsOCBAQCBw
dWJsaWM6CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dCb3VuZEV4ZWN1dGFibGU7
CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dDYW5Db25zdHJ1Y3RCb3VuZEV4ZWN1
dGFibGU7CiAKLSAgICBSZWY8UHJvbWlzZVRpbWVyPiBwcm9taXNlVGltZXI7Ci0gICAgCisgICAg
UmVmPERlZmVycmVkV29ya1RpbWVyPiBkZWZlcnJlZFdvcmtUaW1lcjsKKwogICAgIEpTQ2VsbCog
Y3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdDsKICAgICBjb25zdCBDbGFzc0luZm8q
IGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8geyBudWxscHRyIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAK
aW5kZXggNWRhNjk2ZDY5N2RkNDc1MDVkN2RjNTJiNjA2ZTMxNzc0YTRlMjY1ZC4uYWY0MmQ4ZDU3
MDlmMjA2YTdhNzg3MDhmNjVkN2U1MGI1NThlNjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5o
IgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGlu
ZXMuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgi
CiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0j
aW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCkBAIC0x
MzQsMTAgKzEzNCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5
bmNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZlY3RvcjxTdHJv
bmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25n
PEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogCi0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQ
ZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUo
ZGVwZW5kZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndh
c21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxl
OjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVs
ZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21p
c2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0
LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBn
bG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAg
ICAgICAgIEpTVmFsdWUgbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2
bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJl
KCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlz
ZQogICAgIC8vIFRoZSBpbnN0YW5jZSBrZWVwcyB0aGUgbW9kdWxlIGFsaXZlLgogICAgIGRlcGVu
ZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGluc3RhbmNlKSk7CiAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7Ci0gICAgdm0u
cHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBl
bmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0s
IHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAgICAgLy8gTm90ZTogVGhpcyBjb21w
bGV0aW9uIHRhc2sgbWF5IG9yIG1heSBub3QgZ2V0IGNhbGxlZCBpbW1lZGlhdGVseS4KICAgICBt
b2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5t
ZW1vcnlNb2RlKCksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFja1R5
cGU+KFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5k
LCBjcmVhdGlvbk1vZGUsICZ2bV0gKFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgcmVmQ29kZUJsb2Nr
KSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPFdhc206OkNvZGVCbG9jaz4gY29kZUJsb2NrID0g
V1RGTW92ZShyZWZDb2RlQmxvY2spOwotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxl
V29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVj
dCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3ZlKGNv
ZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2No
ZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0
T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1v
dmUoY29kZUJsb2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgcmVz
b2x2ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRP
YmplY3QsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNvbHZlS2luZCwgY3JlYXRpb25N
b2RlKTsKICAgICAgICAgfSk7CkBAIC0yMzMsMTMgKzIzMywxMyBAQCBzdGF0aWMgdm9pZCBjb21w
aWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1Byb21pcwogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRl
cGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwogICAg
IGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIG1vZHVsZUtleUNlbGwpKTsK
LSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZN
b3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5n
V29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGdsb2JhbE9i
amVjdCwgYnVmZmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0
ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNr
PFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1
bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0g
KFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHZtLnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
aW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwg
W3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2Vt
Ymx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBz
dGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5k
ZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9y
dE9iamVjdCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGds
b2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0s
IHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGlt
ZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwog
CiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92
ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihb
cHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVsZTo6
VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VU
aW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBn
bG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwg
W3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUgPSBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQp
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0zMzks
NyArMzM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBp
bGVTdHJlYW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCoKIAogICAgIFZlY3RvcjxTdHJvbmc8
SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpT
Q2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGlu
Z1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVu
ZGVuY2llcykpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+Y29tcGlsZVN0cmVhbWluZykKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwo
SlNHbG9iYWxPYmoKICAgICAgICAgICAgICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVu
ZGVuY2llczsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0Nl
bGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICAgICAgICAgICAgICB2
bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRl
cGVuZGVuY2llcykpOworICAgICAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQ
ZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xODQ4ODg+IGlmIHRoZXJl
J3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBjb250YWlucyBhIE1lbW9yeSwgdGhlbiB3ZSBjYW4g
Y29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhlIHJpZ2h0IG1lbW9yeSB0eXBlIChmYXN0IG9yIG5v
dCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5J3MgdHlwZS4KICAgICAgICAgICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5n
KGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgaW1wb3J0T2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaAppbmRleCA0ODk0OWJmNmVjMjgwZmVmMjczZjA0MDZlZDFjZDEwN2Q5
YzU1Y2YyLi4yZTU2YjRkM2JhZjdmMDBmZWFkZDMwMDRiNGJmZTJjOTY1ZDUzNjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVC
bG9jay5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2lu
Y2x1ZGUgIkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAj
aW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgogI2luY2x1ZGUgIldhc21Gb3Jt
YXQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBkMjhlNTA5ZGIwMWM3MDEwZGQ3N2UyZmViYzM1Yzc5ODlhZGQ3YTMyLi4wMzll
ZjgyMzBhODZiNjEzNWNlZWJkZTQzYzNhMTM3MDVkY2Y5N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yMzQsNiArMjM0LDEx
IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnByb21pc2VSZWplY3Rpb25UcmFja2VyKEpTR2xv
YmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwKICAgICB9CiB9CiAKK3ZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3Qq
IGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHJlcG9y
dEV4Y2VwdGlvbihqc0dsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKK30KKwogSlNET01HbG9iYWxP
YmplY3QmIGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgY2xhc3MgR2V0Q2FsbGVyR2xvYmFs
T2JqZWN0RnVuY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuaAppbmRleCBkMjk4NThjZmE0YjBiZTBkNjIxMzkwYTgzZDc2ZDVhODUwYjlkMjgw
Li43Mzg2N2Q2YWIyZTViNGRiYjcwYjcwYTlhMzYwOTQ4NDlmMGNlZTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTc5LDYgKzc5LDcg
QEAgcHVibGljOgogCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMmIGJ1aWx0aW5JbnRl
cm5hbEZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zOyB9CiAK
KyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAogcHVibGljOgogICAgIH5KU0RPTUdsb2Jh
bE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKaW5kZXggODgzMjEzZTkwNjFmMzhiOGJiNDMzNTc5YjI5ODYwOTg3Nzg0ZTc4Mi4uYWNl
YTc2NmFmMWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
SW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3NlbWJs
eS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01pY3JvdGFzay5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgpAQCAtNzgsNiArNzgsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
Jm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgICZtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZSwKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVu
Y2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgJmNvbXBpbGVTdHJlYW1pbmcsCkBAIC00NDMsOCArNDQ0
LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkoKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNl
KHByb21pc2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5Q
ZW5kaW5nUHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVm
ZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0u
ZGVmZXJyZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGds
b2JhbE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNw
b25zZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25T
dHJlYW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJv
bWlzZV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CkBAIC00NjEsOSArNDYyLDkgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFtaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNlKHByb21p
c2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5n
UHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRp
bWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBpbXBvcnRlZE9iamVj
dCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsocHJv
bWlzZSkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUlu
UGVuZGluZ1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBpbXBvcnRl
ZE9iamVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNwb25z
ZTo6dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25TdHJl
YW1pbmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJvbWlz
ZSwgaW1wb3J0ZWRPYmplY3RdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11dGFibGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAK
aW5kZXggNDlkZjQzOTA1N2RmNTlkMjk0ZDQ4NGE5NGYyOWI1MjQwZjg4NjE4MS4uZGNlNzM4MjBi
YmJmZDliOTVjNTg3OWQxM2VmNjVlYWI5OGE5MDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCkBAIC00Nyw2ICs0Nyw3
IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTUmVtb3RlRE9NV2luZG93QmFzZTo6
c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
Q3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJF
dmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgbnVs
bHB0ciwgLy8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAogICAgIG51bGxwdHIs
IC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAg
ICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDUzNzZl
ODBkMDAwNTM3NzYyNTgyYWEyNWJlOTFkMTJhOGY1OTdlYzQuLmM0NGYyZmIzYTBiMDVkYWFiMWE4
YTllMmY4OWI1MmQ4NTFlYjQzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAgY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8g
Y29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAppbmRleCAwOTY1YTg2YzQxOGJlNjFlNjJlMWZmZGFjNmNmZThiYWY2YjRkNmVl
Li5iMTRiODE1NDJkYjg4OWVjNmQyNTliYzViNzBlZjJhNTA5OWM5NmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAKQEAgLTU3LDYgKzU3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmwKICAgICBudWxscHRy
LCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIs
IC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAor
ICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFu
Z3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8v
IGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkzMWNlZTc3NzliZjk2MTQzOGU4
MjAxNTBjN2E3ZjhhYjQ2NzU1NDcuLjcxNmIxYTY5YjhlZWMxZGE2NDcyMDFhNDMyNjkyYjMzODk3
ZWI3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKICNpbmNsdWRlICJXb3JrZXJD
b25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24u
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXRO
b3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOCiAKICAgICBwcm9jZXNzVGlt
ZXIobV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIo
bV92bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92
bS0+cHJvbWlzZVRpbWVyLnB0cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRX
b3JrVGltZXIucHRyKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJlbW92
ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0
aW9uQ2FsbGJhY2sgY2FsbGJhY2spCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRp
bWVyOjpUaW0KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxi
YWNrKCkpOwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNr
KCkpOwotICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIucHRyKCkpOworICAgIHBy
b2Nlc3NUaW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7CiB9CiAKIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdn
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlYzA3YWM0
NjM1MGQyYTM0MjllYTA5ODc0ZTNmZGYyZGZkYTllNDUxLi42NmVjZDUzNmY4MTNkMDI5YzQ5N2Yx
YWVhN2YyMTllZGZjNzViMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KIAogI2lmIFVTRShHTElCKQog
I2luY2x1ZGUgPGdsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2YTg4Y2FhMTQ0YWUyN2ZjN2MxZjJkNWYzM2Jj
ZDEwOGNjMTIwYTllLi4yMGE2Zjg1NjE4NThhZGZiZTJlMmJjMThlYmY3MTUwYjk3YWQxNGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0zNywxMSArMzcsMTEgQEAKICNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVu
dC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVs
cGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2ZTdiYzE3YTM3MDE5ODM1MTY1
OTRjNThmNDQ3YWZhOTQ5Y2UyYzYuLjIxN2UzZjhiMWY3N2RiNjk1ZjdhYjc3ZTcxNDJhOTZkOTFj
ZDBiNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxp
emF0aW9uUmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKG1ha2VXZWFrUmVmKToKKyAgICAgICAgKHR1cm5FdmVudExvb3Ap
OgorICAgICAgICAoYXN5bmMgdGVzdCk6CisgICAgICAgICoganMvdW50aXRsZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRt
bDogQWRkZWQuCisKIDIwMjAtMDctMTcgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1dlYkdMMl0gUmVhZFBpeGVscyB1cGRhdGVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5q
cyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiMjJkYzM5ZGU4MGI0ZGQ5ZDFkZTRmYmQwNGQzMWQzMzE2MTRl
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3Jl
Zi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcwpAQCAtMCwwICsxLDU1IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlV2Vha1JlZnM9dHJ1ZSIpCisKK2FzeW5jVGVzdFN0YXJ0KDEpOwordmFyIG9i
amVjdHMgPSBbXTsKK3ZhciB3ZWFrUmVmcyA9IFtdOwordmFyIGZpbmFsaXplckNhbGxlZCA9IGZh
bHNlOwordmFyIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KCgpID0+IGZpbmFsaXplckNhbGxlZCA9IHRydWUpOworZnVuY3Rpb24gbWFrZVdlYWtSZWYoKSB7
IHJldHVybiBuZXcgV2Vha1JlZih7IGZvbzogMSB9KTsgfQorbm9JbmxpbmUobWFrZVdlYWtSZWYp
OworCisvLyBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMgdGVzdCBzdGFuZGFsb25lLXByZS5q
cyBwcmludHMgbmV3bGluZXMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZnJvbSBqcy10ZXN0LXByZS5q
cyBmb3IgYXN5bmMgdGVzdHMgc28gd2UgZG9uJ3QgdXNlIHRoZSBzaG91bGRCZSBoZWxwZXJzLi4u
CitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCBtc2cgPSAiIikgeworICAgIGlmICghY29uZGl0
aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30KKworbGV0IGxvb3BDb3VudCA9
IDEwMDA7CitmdW5jdGlvbiB0dXJuRXZlbnRMb29wKCkgeworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg
ICAgICAgZ2MoKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSwgMCk7CisgICAg
fSk7Cit9CisKK3ZhciBpOworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKSB7CisgICAgICAgIGxldCB3ZWFrID0gbWFrZVdlYWtS
ZWYoKTsKKyAgICAgICAgd2Vha1JlZnMucHVzaCh3ZWFrKTsKKyAgICAgICAgb2JqZWN0cy5wdXNo
KHdlYWsuZGVyZWYoKSk7CisgICAgICAgIGZpbmFsaXphdGlvblJlZ2lzdHJ5LnJlZ2lzdGVyKHdl
YWsuZGVyZWYoKSk7CisgICAgfQorCisgICAgYXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAg
YXNzZXJ0KGZpbmFsaXplckNhbGxlZCA9PT0gZmFsc2UpOworICAgIGZvciAoaSA9IDA7IGkgPCBs
b29wQ291bnQ7IGkrKykKKyAgICAgICAgYXNzZXJ0KHdlYWtSZWZzW2ldLmRlcmVmKCkgPT09IG9i
amVjdHNbaV0sICJmYWlsZWQgb24gaXRlcmF0aW9uOiAiICsgaSk7CisKKyAgICBvYmplY3RzLmxl
bmd0aCA9IDA7CisgICAgb2JqZWN0cyA9IG51bGw7CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29w
KCk7CisgICAgLy8gV2UgbmVlZCB0byB0dXJuIHRoZSBldmVudCBsb29wIGFnYWluIHNpbmNlIEZS
IG1heSBub3QgaGF2ZSBjYWxsZWQgdGhlIGNhbGxiYWNrIGluIHRoZSBsYXN0IHR1cm4uCisgICAg
YXdhaXQgdHVybkV2ZW50TG9vcCgpOworCisgICAgYXNzZXJ0KGZpbmFsaXplckNhbGxlZCA9PT0g
dHJ1ZSk7CisgICAgYXNzZXJ0KHdlYWtSZWZzLnNvbWUoKHdlYWtSZWYpID0+IHdlYWtSZWYuZGVy
ZWYoKSA9PT0gbnVsbCkgPT09IHRydWUpOworCisgICAgYXN5bmNUZXN0UGFzc2VkKCk7Cit9CisK
K3Rlc3QoKS5jYXRjaChlID0+IGRlYnVnKGUpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3VudGl0bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy91bnRpdGxlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNjMGUxY2I3MDVhOWQ3NzkwODA0YzY5ODUyN2M4NDMyMTNkNGFkNmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy91bnRpdGxlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj48IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5h
bGl6YXRpb24tcmVnaXN0cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40M2U1ZWVlZGJmMWI0MzVmOTZjM2EyMGJmODE0MDFhZWU0MzMxOTgx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25y
ZWdpc3RyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvd2Vh
a3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxZDdjZjQ3ZDRhMzQx
Njk4YmQwZDU1ZWQ2YTg4OTBiZmU0MTI3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFrcmVm
LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTljODVi
NjJjYmMxYzAxNjBjYzc5NzFmNzIzNzZjMzk1Yzc0ZjRkNS4uMjYwMDZmNzJjMzk4NDNiYjVkNzcx
ODJkMzdmY2IxMDg1ZTFkMjM3MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IEZpbmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1
a2kuCisKKyAgICAgICAgU2hhbWVsZXNzbHkgY29weSB2OCdzIHRlc3RzIGFuZCByZWZhY3RvciB0
aGVtIHRvIHdvcmsgd2l0aCBjb25zZXJ2YXRpdmUgR0MuCisKKyAgICAgICAgKiBzdHJlc3MvcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanM6IEFkZGVkLgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVy
cm9yKToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcm90b3R5cGUudG9TdHJpbmcp
OgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoY2xhc3NPZik6CisgICAgICAgIChWYWx1ZU9m
KToKKyAgICAgICAgKHByZXR0eVByaW50ZWQpOgorICAgICAgICAocHJldHR5UHJpbnRlZEFycmF5
RWxlbWVudCk6CisgICAgICAgIChmYWlsV2l0aE1lc3NhZ2UpOgorICAgICAgICAoZm9ybWF0RmFp
bHVyZVRleHQpOgorICAgICAgICAoZmFpbCk6CisgICAgICAgIChkZWVwT2JqZWN0RXF1YWxzKToK
KyAgICAgICAgKGRlZXBFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0U2FtZSk6CisgICAgICAgIChh
c3NlcnROb3RTYW1lKToKKyAgICAgICAgKGFzc2VydEVxdWFscyk6CisgICAgICAgIChhc3NlcnRO
b3RFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0RXF1YWxzRGVsdGEpOgorICAgICAgICAoYXNzZXJ0
QXJyYXlFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0UHJvcGVydGllc0VxdWFsKToKKyAgICAgICAg
KGFzc2VydFRvU3RyaW5nRXF1YWxzKToKKyAgICAgICAgKGFzc2VydFRydWUpOgorICAgICAgICAo
YXNzZXJ0RmFsc2UpOgorICAgICAgICAoYXNzZXJ0TnVsbCk6CisgICAgICAgIChhc3NlcnROb3RO
dWxsKToKKyAgICAgICAgKGV4ZWN1dGVDb2RlKToKKyAgICAgICAgKGNoZWNrRXhjZXB0aW9uKToK
KyAgICAgICAgKGFzc2VydFRocm93cyk6CisgICAgICAgIChhc3NlcnRUaHJvd3NFcXVhbHMpOgor
ICAgICAgICAoYXNzZXJ0VGhyb3dzQXN5bmMpOgorICAgICAgICAoYXNzZXJ0SW5zdGFuY2VvZik6
CisgICAgICAgIChhc3NlcnREb2VzTm90VGhyb3cpOgorICAgICAgICAoYXNzZXJ0VW5yZWFjaGFi
bGUpOgorICAgICAgICAoYXNzZXJ0Q29udGFpbnMpOgorICAgICAgICAoYXNzZXJ0TWF0Y2hlcyk6
CisgICAgICAgIChjb25jYXRlbmF0ZUVycm9ycyk6CisgICAgICAgIChhc3NlcnRQcm9taXNlUmVz
dWx0KToKKyAgICAgICAgKE9wdGltaXphdGlvblN0YXR1cyk6CisgICAgICAgIChhc3NlcnRVbm9w
dGltaXplZCk6CisgICAgICAgIChhc3NlcnRPcHRpbWl6ZWQpOgorICAgICAgICAoaXNOZXZlck9w
dGltaXplTGl0ZU1vZGUpOgorICAgICAgICAoaXNOZXZlck9wdGltaXplKToKKyAgICAgICAgKGlz
QWx3YXlzT3B0aW1pemUpOgorICAgICAgICAoaXNJbnRlcnByZXRlZCk6CisgICAgICAgIChpc09w
dGltaXplZCk6CisgICAgICAgIChpc1R1cmJvRmFubmVkKToKKyAgICAgICAgKE1qc1VuaXRBc3Nl
cnRpb25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFu
dXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRf
ZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQt
cmVhbG0uanM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICog
c3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanM6IEFkZGVkLgorICAgICAg
ICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoVGVz
dENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxlKToKKyAgICAg
ICAgKFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5
QXNDbGVhbnVwKToKKyAgICAgICAgKFRlc3RSZWdpc3RlclRhcmdldEFuZEhvbGRpbmdzU2FtZVZh
bHVlKToKKyAgICAgICAgKFRlc3RSZWdpc3RlcldpdGhvdXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6
CisgICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSk6CisgICAgICAgIChU
ZXN0VW5yZWdpc3RlcldpdGhOb25GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0
V2Vha1JlZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCk6CisgICAgICAgIChUZXN0V2Vha1JlZldp
dGhQcm94eSk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13
ZWFrcmVmLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKHNldFRp
bWVvdXQpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1o
b2xkaW5ncy1hbGl2ZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAg
IChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVn
aXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC5jbGVhbnVwMCk6CisgICAgICAgIChsZXQuY2xlYW51cDEpOgorICAgICAgICAo
bGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZp
bmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToK
KyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1yZWVudHJh
bnQtZ2MtZnJvbS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5yZWVudHJhbnRfZ2Mp
OgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4LXN0cmVzcy1maW5h
bGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzOiBBZGRlZC4KKyAgICAgICAgKGkucmVn
aXN0cmllcy5wdXNoLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChyZWdpc3Ry
aWVzLmZvckVhY2gpOgorICAgICAgICAqIHN0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanM6
IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVu
Yyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qczogQWRk
ZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToK
KyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qczogQWRkZWQu
CisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAg
ICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanM6IEFkZGVkLgorICAg
ICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAg
ICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAq
IHN0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qczogQWRkZWQuCisgICAgICAg
IChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBz
dHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVw
KToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC13ZWFr
LXVucmVnaXN0ZXJ0b2tlbi5qczogQWRkZWQuCisgICAgICAgIChGUi5uZXcuRmluYWxpemF0aW9u
UmVnaXN0cnkpOgorICAgICAgICAodHJ5QWdhaW4pOgorCiAyMDIwLTA3LTE3ICBYYW4gTG9wZXog
IDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVsZCB0aGUgd3Jv
bmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNzc0NjFmNzRjOTAyMjMyMWZjNjBlNjg2Zjc5NWQ1MGUzOTI5ODE2
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQu
anMKQEAgLTAsMCArMSw4MDkgQEAKKy8vIENvcHlyaWdodCAyMDA4IHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gTWpzVW5pdEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpIHsKKyAgdGhpcy5tZXNzYWdlID0gbWVz
c2FnZTsKKyAgLy8gVGVtcG9yYXJpbHkgaW5zdGFsbCBhIGN1c3RvbSBzdGFjayB0cmFjZSBmb3Jt
YXR0ZXIgYW5kIHJlc3RvcmUgdGhlCisgIC8vIHByZXZpb3VzIHZhbHVlLgorICBsZXQgcHJldlBy
ZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CisgIHRyeSB7CisgICAg
RXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0
YWNrVHJhY2U7CisgICAgLy8gVGhpcyBhbGxvd3MgZmV0Y2hpbmcgdGhlIHN0YWNrIHRyYWNlIHVz
aW5nIFRyeUNhdGNoOjpTdGFja1RyYWNlLgorICAgIHRoaXMuc3RhY2sgPSBuZXcgRXJyb3IoIk1q
c1VuaXRBc3NlcnRpb25FcnJvciIpLnN0YWNrOworICB9IGZpbmFsbHkgeworICAgIEVycm9yLnBy
ZXBhcmVTdGFja1RyYWNlID0gcHJldlByZXBhcmVTdGFja1RyYWNlOworICB9Cit9CisKKy8qCisg
KiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgaW4gYWxsIG1pbmkganN1bml0IHRlc3QgY2FzZXMuICBU
aGUgdGVzdAorICogZnJhbWV3b3JrIGV4cGVjdHMgbGluZXMgdGhhdCBzaWduYWwgZmFpbGVkIHRl
c3RzIHRvIHN0YXJ0IHdpdGgKKyAqIHRoZSBmLXdvcmQgYW5kIGlnbm9yZSBhbGwgb3RoZXIgbGlu
ZXMuCisgKi8KKworTWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1
bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubWVzc2FnZSArICJcblxuU3RhY2s6ICIgKyB0aGlz
LnN0YWNrOworfTsKKworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIHRoZSBzYW1lIG9i
amVjdHMsIG9yIHRoZSBzYW1lIHByaW1pdGl2ZQorLy8gdmFsdWVzLgorLy8gRm9yIGtub3duIHBy
aW1pdGl2ZSB2YWx1ZXMsIHBsZWFzZSB1c2UgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFNhbWU7
CisKKy8vIEludmVyc2Ugb2YgYXNzZXJ0U2FtZS4KK3ZhciBhc3NlcnROb3RTYW1lOworCisvLyBF
eHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIGFyZSBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVlcyBv
ciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5n
IGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0
cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1B
cnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnRFcXVhbHM7CisKKy8vIERlZXAgZXF1YWxpdHkgcHJl
ZGljYXRlIHVzZWQgYnkgYXNzZXJ0RXF1YWxzLgordmFyIGRlZXBFcXVhbHM7CisKKy8vIEV4cGVj
dGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIG5vdCBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVlcyBv
ciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNraW5n
IGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2JqZWN0
cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5vbi1B
cnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnROb3RFcXVhbHM7CisKKy8vIFRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlIGlzIHdpdGhpbiBjZXJ0YWluIHRvbGVy
YW5jZS4KK3ZhciBhc3NlcnRFcXVhbHNEZWx0YTsKKworLy8gVGhlIGZvdW5kIG9iamVjdCBpcyBh
biBBcnJheSB3aXRoIHRoZSBzYW1lIGxlbmd0aCBhbmQgZWxlbWVudHMKKy8vIGFzIHRoZSBleHBl
Y3RlZCBvYmplY3QuIFRoZSBleHBlY3RlZCBvYmplY3QgZG9lc24ndCBuZWVkIHRvIGJlIGFuIEFy
cmF5LAorLy8gYXMgbG9uZyBhcyBpdCdzICJhcnJheS1pc2giLgordmFyIGFzc2VydEFycmF5RXF1
YWxzOworCisvLyBUaGUgZm91bmQgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc2FtZSBlbnVtZXJhYmxl
IHByb3BlcnRpZXMgYXMgdGhlCisvLyBleHBlY3RlZCBvYmplY3QuIFRoZSB0eXBlIG9mIG9iamVj
dCBpc24ndCBjaGVja2VkLgordmFyIGFzc2VydFByb3BlcnRpZXNFcXVhbDsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIHN0cmluZyBjb252ZXJzaW9uIG9mIHRoZSBmb3VuZCB2YWx1ZSBpcyBlcXVhbCB0
bworLy8gdGhlIGV4cGVjdGVkIHN0cmluZy4gT25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSwgcGxlYXNlCisvLyBjaGVjayB0aGUgcmVhbCBzdHJ1Y3R1cmUgb2YgdGhlIGZvdW5k
IHZhbHVlLgordmFyIGFzc2VydFRvU3RyaW5nRXF1YWxzOworCisvLyBDaGVja3MgdGhhdCB0aGUg
Zm91bmQgdmFsdWUgaXMgdHJ1ZS4gVXNlIHdpdGggYm9vbGVhbiBleHByZXNzaW9ucworLy8gZm9y
IHRlc3RzIHRoYXQgZG9lc24ndCBoYXZlIHRoZWlyIG93biBhc3NlcnRYWFggZnVuY3Rpb24uCit2
YXIgYXNzZXJ0VHJ1ZTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIGZhbHNl
LgordmFyIGFzc2VydEZhbHNlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMg
bnVsbC4gS2VwdCBmb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LAorLy8gcGxlYXNlIGp1c3Qg
dXNlIGFzc2VydEVxdWFscyhudWxsLCBleHBlY3RlZCkuCit2YXIgYXNzZXJ0TnVsbDsKKworLy8g
Q2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzICpub3QqIG51bGwuCit2YXIgYXNzZXJ0Tm90
TnVsbDsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNvZGUg
dGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgaXMg
YW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhjZXB0aW9uIGlz
IGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRpb25hbCB0aGly
ZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9iamVjdCB0aGF0
IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4K
K3ZhciBhc3NlcnRUaHJvd3M7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24g
dGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBleGNlcHRpb24gaXMgY2hlY2tlZCBhZ2FpbnN0
IHRoZSBzZWNvbmQgYXJndW1lbnQgdXNpbmcgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFRocm93
c0VxdWFsczsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBwcm9taXNlIGRvZXMgbm90IHJl
c29sdmUsIGJ1dCBldmVudHVhbGx5IHRocm93cyBhbgorLy8gZXhjZXB0aW9uLiBUaGUgb3B0aW9u
YWwgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlvbiBjb25zdHJ1Y3RvciB0aGF0IHRoZQor
Ly8gdGhyb3duIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qgd2l0aCAiaW5zdGFuY2VvZiIu
CisvLyBUaGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBtZXNzYWdlIHR5cGUgc3RyaW5n
IG9yIFJlZ0V4cCBvYmplY3QgdGhhdCBpcworLy8gY29tcGFyZWQgdG8gdGhlIG1lc3NhZ2Ugb2Yg
dGhlIHRocm93biBleGNlcHRpb24uCit2YXIgYXNzZXJ0VGhyb3dzQXN5bmM7CisKKy8vIEFzc2Vy
dCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gb3IgZXZhbCBjb2RlIGRvZXMgbm90IHRocm93IGFu
IGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnREb2VzTm90VGhyb3c7CisKKy8vIEFzc2VydHMgdGhhdCB0
aGUgZm91bmQgdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvbnN0cnVjdG9yIHBhc3NlZAor
Ly8gYXMgdGhlIHNlY29uZCBhcmd1bWVudC4KK3ZhciBhc3NlcnRJbnN0YW5jZW9mOworCisvLyBB
c3NlcnQgdGhhdCB0aGlzIGNvZGUgaXMgbmV2ZXIgZXhlY3V0ZWQgKGkuZS4sIGFsd2F5cyBmYWls
cyBpZiBleGVjdXRlZCkuCit2YXIgYXNzZXJ0VW5yZWFjaGFibGU7CisKKy8vIEFzc2VydCB0aGF0
IHRoZSBmdW5jdGlvbiBjb2RlIGlzIChub3QpIG9wdGltaXplZC4gIElmICJubyBzeW5jIiBpcyBw
YXNzZWQKKy8vIGFzIHNlY29uZCBhcmd1bWVudCwgd2UgZG8gbm90IHdhaXQgZm9yIHRoZSBjb25j
dXJyZW50IG9wdGltaXphdGlvbiB0aHJlYWQgdG8KKy8vIGZpbmlzaCB3aGVuIHBvbGxpbmcgZm9y
IG9wdGltaXphdGlvbiBzdGF0dXMuCisvLyBPbmx5IHdvcmtzIHdpdGggLS1hbGxvdy1uYXRpdmVz
LXN5bnRheC4KK3ZhciBhc3NlcnRPcHRpbWl6ZWQ7Cit2YXIgYXNzZXJ0VW5vcHRpbWl6ZWQ7CisK
Ky8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIGNvbnRhaW5zIGFub3RoZXIgZXhwZWN0ZWQgc3Vic3Ry
aW5nLgordmFyIGFzc2VydENvbnRhaW5zOworCisvLyBBc3NlcnQgdGhhdCBhIHN0cmluZyBtYXRj
aGVzIGEgZ2l2ZW4gcmVnZXguCit2YXIgYXNzZXJ0TWF0Y2hlczsKKworLy8gQXNzZXJ0IHRoYXQg
YSBwcm9taXNlIHJlc29sdmVzIG9yIHJlamVjdHMuCisvLyBQYXJhbWV0ZXJzOgorLy8ge3Byb21p
c2V9IC0gdGhlIHByb21pc2UKKy8vIHtzdWNjZXNzfSAtIG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3
aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAgcmVz
b2x2aW5nIHByb21pc2UuCisvLyAge2ZhaWx9IC0gICBvcHRpb25hbCAtIGEgY2FsbGJhY2sgd2hp
Y2ggaXMgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUKKy8vICAgICAgICAgICAgIHJlamVj
dGluZyBwcm9taXNlLiBJZiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCBidXQgbm8ge2ZhaWx9Cisv
LyAgICAgICAgICAgICBjYWxsYmFjayBpcyBzZXQsIHRoZSBlcnJvciBpcyBwcm9wYWdhdGVkIG91
dCBvZiB0aGUgcHJvbWlzZQorLy8gICAgICAgICAgICAgY2hhaW4uCit2YXIgYXNzZXJ0UHJvbWlz
ZVJlc3VsdDsKKwordmFyIHByb21pc2VUZXN0Q2hhaW47Cit2YXIgcHJvbWlzZVRlc3RDb3VudCA9
IDA7CisKKy8vIFRoZXNlIGJpdHMgbXVzdCBiZSBpbiBzeW5jIHdpdGggYml0cyBkZWZpbmVkIGlu
IFJ1bnRpbWVfR2V0T3B0aW1pemF0aW9uU3RhdHVzCit2YXIgVjhPcHRpbWl6YXRpb25TdGF0dXMg
PSB7CisgIGtJc0Z1bmN0aW9uOiAxIDw8IDAsCisgIGtOZXZlck9wdGltaXplOiAxIDw8IDEsCisg
IGtBbHdheXNPcHRpbWl6ZTogMSA8PCAyLAorICBrTWF5YmVEZW9wdGVkOiAxIDw8IDMsCisgIGtP
cHRpbWl6ZWQ6IDEgPDwgNCwKKyAga1R1cmJvRmFubmVkOiAxIDw8IDUsCisgIGtJbnRlcnByZXRl
ZDogMSA8PCA2LAorICBrTWFya2VkRm9yT3B0aW1pemF0aW9uOiAxIDw8IDcsCisgIGtNYXJrZWRG
b3JDb25jdXJyZW50T3B0aW1pemF0aW9uOiAxIDw8IDgsCisgIGtPcHRpbWl6aW5nQ29uY3VycmVu
dGx5OiAxIDw8IDksCisgIGtJc0V4ZWN1dGluZzogMSA8PCAxMCwKKyAga1RvcG1vc3RGcmFtZUlz
VHVyYm9GYW5uZWQ6IDEgPDwgMTEsCisgIGtMaXRlTW9kZTogMSA8PCAxMiwKKyAga01hcmtlZEZv
ckRlb3B0aW1pemF0aW9uOiAxIDw8IDEzLAorfTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0tbGl0
ZS1tb2RlIGlzIG9uIGFuZCB3ZSBjYW4ndCBldmVyIHR1cm4gb24gb3B0aW1pemF0aW9uLgordmFy
IGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlOworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1uby1vcHQg
bW9kZSBpcyBvbi4KK3ZhciBpc05ldmVyT3B0aW1pemU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAt
LWFsd2F5cy1vcHQgbW9kZSBpcyBvbi4KK3ZhciBpc0Fsd2F5c09wdGltaXplOworCisvLyBSZXR1
cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaW4gaW50ZXJwcmV0ZWQuCit2YXIgaXNJbnRlcnBy
ZXRlZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlzIG9wdGltaXplZC4K
K3ZhciBpc09wdGltaXplZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlz
IGNvbXBpbGVkIGJ5IFR1cmJvRmFuLgordmFyIGlzVHVyYm9GYW5uZWQ7CisKKy8vIE1vbmtleS1w
YXRjaGFibGUgYWxsLXB1cnBvc2UgZmFpbHVyZSBoYW5kbGVyLgordmFyIGZhaWxXaXRoTWVzc2Fn
ZTsKKworLy8gUmV0dXJucyB0aGUgZm9ybWF0dGVkIGZhaWx1cmUgdGV4dC4gIFVzZWQgYnkgdGVz
dC1hc3luYy5qcy4KK3ZhciBmb3JtYXRGYWlsdXJlVGV4dDsKKworLy8gUmV0dXJucyBhIHByZXR0
eS1wcmludGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGFzc2VkIHZhbHVlLgordmFy
IHByZXR0eVByaW50ZWQ7CisKKyhmdW5jdGlvbiAoKSB7ICAvLyBTY29wZSBmb3IgdXRpbGl0eSBm
dW5jdGlvbnMuCisKKyAgdmFyIE9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZzsKKyAgdmFyIE51bWJlclByb3RvdHlwZVZhbHVlT2YgPSBOdW1iZXIucHJv
dG90eXBlLnZhbHVlT2Y7CisgIHZhciBCb29sZWFuUHJvdG90eXBlVmFsdWVPZiA9IEJvb2xlYW4u
cHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mID0gU3RyaW5n
LnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgRGF0ZVByb3RvdHlwZVZhbHVlT2YgPSBEYXRlLnBy
b3RvdHlwZS52YWx1ZU9mOworICB2YXIgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcgPSBSZWdFeHAu
cHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgQXJyYXlQcm90b3R5cGVGb3JFYWNoID0gQXJyYXku
cHJvdG90eXBlLmZvckVhY2g7CisgIHZhciBBcnJheVByb3RvdHlwZUpvaW4gPSBBcnJheS5wcm90
b3R5cGUuam9pbjsKKyAgdmFyIEFycmF5UHJvdG90eXBlTWFwID0gQXJyYXkucHJvdG90eXBlLm1h
cDsKKyAgdmFyIEFycmF5UHJvdG90eXBlUHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOworCisg
IHZhciBCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOworICAvLyBUT0RPKG5laXMpOiBSZW1vdmUgdHJ5
LWNhdGNoIG9uY2UgQmlnSW50cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICB0cnkgeworICAg
IEJpZ0ludFByb3RvdHlwZVZhbHVlT2YgPSBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2Y7CisgIH0g
Y2F0Y2ggKGUpIHt9CisKKyAgZnVuY3Rpb24gY2xhc3NPZihvYmplY3QpIHsKKyAgICAvLyBBcmd1
bWVudCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgc3RyaW5nID0gT2Jq
ZWN0UHJvdG90eXBlVG9TdHJpbmcuY2FsbChvYmplY3QpOworICAgIC8vIFN0cmluZyBoYXMgZm9y
bWF0IFtvYmplY3QgPENsYXNzTmFtZT5dLgorICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDgs
IHN0cmluZy5sZW5ndGggLSAxKTsKKyAgfQorCisKKyAgZnVuY3Rpb24gVmFsdWVPZih2YWx1ZSkg
eworICAgIHN3aXRjaCAoY2xhc3NPZih2YWx1ZSkpIHsKKyAgICAgIGNhc2UgIk51bWJlciI6Cisg
ICAgICAgIHJldHVybiBOdW1iZXJQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAg
Y2FzZSAiQmlnSW50IjoKKyAgICAgICAgcmV0dXJuIEJpZ0ludFByb3RvdHlwZVZhbHVlT2YuY2Fs
bCh2YWx1ZSk7CisgICAgICBjYXNlICJTdHJpbmciOgorICAgICAgICByZXR1cm4gU3RyaW5nUHJv
dG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkJvb2xlYW4iOgorICAgICAg
ICByZXR1cm4gQm9vbGVhblByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBjYXNl
ICJEYXRlIjoKKyAgICAgICAgcmV0dXJuIERhdGVQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUp
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgfQorCisK
KyAgcHJldHR5UHJpbnRlZCA9IGZ1bmN0aW9uIHByZXR0eVByaW50ZWQodmFsdWUpIHsKKyAgICBz
d2l0Y2ggKHR5cGVvZiB2YWx1ZSkgeworICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgcmV0
dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKKyAgICAgIGNhc2UgImJpZ2ludCI6CisgICAgICAg
IHJldHVybiBTdHJpbmcodmFsdWUpICsgIm4iOworICAgICAgY2FzZSAibnVtYmVyIjoKKyAgICAg
ICAgaWYgKHZhbHVlID09PSAwICYmICgxIC8gdmFsdWUpIDwgMCkgcmV0dXJuICItMCI7CisgICAg
ICAgIC8vIEZBTExUSFJPVUdILgorICAgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgICBjYXNlICJ1
bmRlZmluZWQiOgorICAgICAgY2FzZSAiZnVuY3Rpb24iOgorICAgICAgY2FzZSAic3ltYm9sIjoK
KyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7CisgICAgICBjYXNlICJvYmplY3QiOgorICAg
ICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAibnVsbCI7CisgICAgICAgIHZhciBvYmpl
Y3RDbGFzcyA9IGNsYXNzT2YodmFsdWUpOworICAgICAgICBzd2l0Y2ggKG9iamVjdENsYXNzKSB7
CisgICAgICAgICAgY2FzZSAiTnVtYmVyIjoKKyAgICAgICAgICBjYXNlICJCaWdJbnQiOgorICAg
ICAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAgICAg
ICAgY2FzZSAiRGF0ZSI6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKCIgKyBw
cmV0dHlQcmludGVkKFZhbHVlT2YodmFsdWUpKSArICIpIjsKKyAgICAgICAgICBjYXNlICJSZWdF
eHAiOgorICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwodmFs
dWUpOworICAgICAgICAgIGNhc2UgIkFycmF5IjoKKyAgICAgICAgICAgIHZhciBtYXBwZWQgPSBB
cnJheVByb3RvdHlwZU1hcC5jYWxsKAorICAgICAgICAgICAgICAgIHZhbHVlLCBwcmV0dHlQcmlu
dGVkQXJyYXlFbGVtZW50KTsKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVByb3RvdHlw
ZUpvaW4uY2FsbChtYXBwZWQsICIsIik7CisgICAgICAgICAgICByZXR1cm4gIlsiICsgam9pbmVk
ICsgIl0iOworICAgICAgICAgIGNhc2UgIlVpbnQ4QXJyYXkiOgorICAgICAgICAgIGNhc2UgIklu
dDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAi
VWludDE2QXJyYXkiOgorICAgICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKKyAgICAgICAgICBj
YXNlICJJbnQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgorICAgICAg
ICAgIGNhc2UgIkZsb2F0NjRBcnJheSI6CisgICAgICAgICAgICB2YXIgam9pbmVkID0gQXJyYXlQ
cm90b3R5cGVKb2luLmNhbGwodmFsdWUsICIsIik7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0
Q2xhc3MgKyAiKFsiICsgam9pbmVkICsgIl0pIjsKKyAgICAgICAgICBjYXNlICJPYmplY3QiOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3RDbGFzcyArICIoIiArIFN0cmluZyh2YWx1ZSkgKyAiKSI7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gY2xhc3NPZigpIHJldHVybmVkICJPYmplY3QiLgorICAgICAgICB2YXIgbmFtZSA9
IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7CisgICAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZSAr
ICIoKSI7CisgICAgICAgIHJldHVybiAiT2JqZWN0KCkiOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuICItLSB1bmtub3duIHZhbHVlIC0tIjsKKyAgICB9CisgIH0KKworCisgIGZ1bmN0
aW9uIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQodmFsdWUsIGluZGV4LCBhcnJheSkgeworICAg
IGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoaW5kZXggaW4gYXJyYXkpKSByZXR1cm4gIiI7
CisgICAgcmV0dXJuIHByZXR0eVByaW50ZWQodmFsdWUpOworICB9CisKKworICBmYWlsV2l0aE1l
c3NhZ2UgPSBmdW5jdGlvbiBmYWlsV2l0aE1lc3NhZ2UobWVzc2FnZSkgeworICAgIHRocm93IG5l
dyBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSk7CisgIH0KKworICBmb3JtYXRGYWlsdXJl
VGV4dCA9IGZ1bmN0aW9uKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgdmFy
IG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAgIC8v
IEZpeCB0aGlzIHdoZW4gd2UgZGl0Y2ggdGhlIG9sZCB0ZXN0IHJ1bm5lci4KKyAgICAgIG1lc3Nh
Z2UgKz0gIiAoIiArIG5hbWVfb3B0ICsgIikiOworICAgIH0KKworICAgIHZhciBmb3VuZFRleHQg
PSBwcmV0dHlQcmludGVkKGZvdW5kKTsKKyAgICBpZiAoZXhwZWN0ZWRUZXh0Lmxlbmd0aCA8PSA0
MCAmJiBmb3VuZFRleHQubGVuZ3RoIDw9IDQwKSB7CisgICAgICBtZXNzYWdlICs9ICI6IGV4cGVj
dGVkIDwiICsgZXhwZWN0ZWRUZXh0ICsgIj4gZm91bmQgPCIgKyBmb3VuZFRleHQgKyAiPiI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjpcbmV4cGVjdGVkOlxuIiArIGV4cGVjdGVk
VGV4dCArICJcbmZvdW5kOlxuIiArIGZvdW5kVGV4dDsKKyAgICB9CisgICAgcmV0dXJuIG1lc3Nh
Z2U7CisgIH0KKworICBmdW5jdGlvbiBmYWlsKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0
KSB7CisgICAgcmV0dXJuIGZhaWxXaXRoTWVzc2FnZShmb3JtYXRGYWlsdXJlVGV4dChleHBlY3Rl
ZFRleHQsIGZvdW5kLCBuYW1lX29wdCkpOworICB9CisKKworICBmdW5jdGlvbiBkZWVwT2JqZWN0
RXF1YWxzKGEsIGIpIHsKKyAgICB2YXIgYVByb3BzID0gT2JqZWN0LmtleXMoYSk7CisgICAgYVBy
b3BzLnNvcnQoKTsKKyAgICB2YXIgYlByb3BzID0gT2JqZWN0LmtleXMoYik7CisgICAgYlByb3Bz
LnNvcnQoKTsKKyAgICBpZiAoIWRlZXBFcXVhbHMoYVByb3BzLCBiUHJvcHMpKSB7CisgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0
aDsgaSsrKSB7CisgICAgICBpZiAoIWRlZXBFcXVhbHMoYVthUHJvcHNbaV1dLCBiW2FQcm9wc1tp
XV0pKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IHRydWU7CisgIH0KKworCisgIGRlZXBFcXVhbHMgPSBmdW5jdGlvbiBkZWVwRXF1YWxzKGEsIGIp
IHsKKyAgICBpZiAoYSA9PT0gYikgeworICAgICAgLy8gQ2hlY2sgZm9yIC0wLgorICAgICAgaWYg
KGEgPT09IDApIHJldHVybiAoMSAvIGEpID09PSAoMSAvIGIpOworICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAodHlwZW9mIGEgPT09ICJudW1iZXIiKSByZXR1cm4gaXNOYU4oYSkgJiYgaXNOYU4oYik7
CisgICAgaWYgKHR5cGVvZiBhICE9PSAib2JqZWN0IiAmJiB0eXBlb2YgYSAhPT0gImZ1bmN0aW9u
IikgcmV0dXJuIGZhbHNlOworICAgIC8vIE5laXRoZXIgYSBub3IgYiBpcyBwcmltaXRpdmUuCisg
ICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NPZihhKTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgIT09
IGNsYXNzT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09ICJSZWdF
eHAiKSB7CisgICAgICAvLyBGb3IgUmVnRXhwLCBqdXN0IGNvbXBhcmUgcGF0dGVybiBhbmQgZmxh
Z3MgdXNpbmcgaXRzIHRvU3RyaW5nLgorICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3Ry
aW5nLmNhbGwoYSkgPT09CisgICAgICAgICAgICAgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2Fs
bChiKTsKKyAgICB9CisgICAgLy8gRnVuY3Rpb25zIGFyZSBvbmx5IGlkZW50aWNhbCB0byB0aGVt
c2VsdmVzLgorICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkZ1bmN0aW9uIikgcmV0dXJuIGZhbHNl
OworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkFycmF5IikgeworICAgICAgdmFyIGVsZW1lbnRD
b3VudCA9IDA7CisgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7
IGkrKykgeworICAgICAgICBpZiAoIWRlZXBFcXVhbHMoYVtpXSwgYltpXSkpIHJldHVybiBmYWxz
ZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAob2JqZWN0Q2xh
c3MgPT09ICJTdHJpbmciIHx8IG9iamVjdENsYXNzID09PSAiTnVtYmVyIiB8fAorICAgICAgb2Jq
ZWN0Q2xhc3MgPT09ICJCaWdJbnQiIHx8IG9iamVjdENsYXNzID09PSAiQm9vbGVhbiIgfHwKKyAg
ICAgIG9iamVjdENsYXNzID09PSAiRGF0ZSIpIHsKKyAgICAgIGlmIChWYWx1ZU9mKGEpICE9PSBW
YWx1ZU9mKGIpKSByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBkZWVwT2JqZWN0RXF1
YWxzKGEsIGIpOworICB9CisKKyAgYXNzZXJ0U2FtZSA9IGZ1bmN0aW9uIGFzc2VydFNhbWUoZXhw
ZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmIChPYmplY3QuaXMoZXhwZWN0ZWQsIGZv
dW5kKSkgcmV0dXJuOworICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBu
YW1lX29wdCk7CisgIH07CisKKyAgYXNzZXJ0Tm90U2FtZSA9IGZ1bmN0aW9uIGFzc2VydE5vdFNh
bWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmICghT2JqZWN0LmlzKGV4cGVj
dGVkLCBmb3VuZCkpIHJldHVybjsKKyAgICBmYWlsKCJub3Qgc2FtZSBhcyAiICsgcHJldHR5UHJp
bnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRFcXVhbHMg
PSBmdW5jdGlvbiBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAg
IGlmICghZGVlcEVxdWFscyhmb3VuZCwgZXhwZWN0ZWQpKSB7CisgICAgICBmYWlsKHByZXR0eVBy
aW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBhc3Nl
cnROb3RFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBu
YW1lX29wdCkgeworICAgIGlmIChkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAg
IGZhaWwoIm5vdCBlcXVhbHMgdG8gIiArIHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwg
bmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEVxdWFsc0RlbHRhID0KKyAgICAg
IGZ1bmN0aW9uIGFzc2VydEVxdWFsc0RlbHRhKGV4cGVjdGVkLCBmb3VuZCwgZGVsdGEsIG5hbWVf
b3B0KSB7CisgICAgaWYgKE1hdGguYWJzKGV4cGVjdGVkIC0gZm91bmQpID4gZGVsdGEpIHsKKyAg
ICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCkgKyAiICstICIgKyBwcmV0dHlQcmludGVk
KGRlbHRhKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRBcnJh
eUVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydEFycmF5RXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwgbmFt
ZV9vcHQpIHsKKyAgICB2YXIgc3RhcnQgPSAiIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAg
IHN0YXJ0ID0gbmFtZV9vcHQgKyAiIC0gIjsKKyAgICB9CisgICAgYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkLmxlbmd0aCwgZm91bmQubGVuZ3RoLCBzdGFydCArICJhcnJheSBsZW5ndGgiKTsKKyAgICBp
ZiAoZXhwZWN0ZWQubGVuZ3RoID09PSBmb3VuZC5sZW5ndGgpIHsKKyAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4
cGVjdGVkW2ldLCBmb3VuZFtpXSwKKyAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgImFycmF5
IGVsZW1lbnQgYXQgaW5kZXggIiArIGkpOworICAgICAgfQorICAgIH0KKyAgfTsKKworCisgIGFz
c2VydFByb3BlcnRpZXNFcXVhbCA9IGZ1bmN0aW9uIGFzc2VydFByb3BlcnRpZXNFcXVhbChleHBl
Y3RlZCwgZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lX29wdCkgeworICAgIC8vIENoZWNrIHByb3BlcnRpZXMgb25seS4K
KyAgICBpZiAoIWRlZXBPYmplY3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kKSkgeworICAgICAgZmFp
bChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRU
b1N0cmluZ0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRvU3RyaW5nRXF1YWxzKGV4cGVjdGVkLCBm
b3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lX29wdCkgeworICAgIGlmIChleHBlY3RlZCAhPT0gU3RyaW5nKGZvdW5kKSkgewor
ICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKwor
ICBhc3NlcnRUcnVlID0gZnVuY3Rpb24gYXNzZXJ0VHJ1ZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAg
ICBhc3NlcnRFcXVhbHModHJ1ZSwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgfTsKKworCisgIGFzc2Vy
dEZhbHNlID0gZnVuY3Rpb24gYXNzZXJ0RmFsc2UodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgYXNz
ZXJ0RXF1YWxzKGZhbHNlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0TnVs
bCA9IGZ1bmN0aW9uIGFzc2VydE51bGwodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVl
ICE9PSBudWxsKSB7CisgICAgICBmYWlsKCJudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9
CisgIH07CisKKworICBhc3NlcnROb3ROdWxsID0gZnVuY3Rpb24gYXNzZXJ0Tm90TnVsbCh2YWx1
ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgPT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm5v
dCBudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gZXhl
Y3V0ZUNvZGUoY29kZSkgeworICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ2Z1bmN0aW9uJykgIHJl
dHVybiBjb2RlKCk7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJykgcmV0dXJuIGV2
YWwoY29kZSk7CisgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAnR2l2ZW4gY29kZSBpcyBu
ZWl0aGVyIGZ1bmN0aW9uIG5vciBzdHJpbmcsIGJ1dCAnICsgKHR5cGVvZiBjb2RlKSArCisgICAg
ICAgICc6IDwnICsgcHJldHR5UHJpbnRlZChjb2RlKSArICc+Jyk7CisgIH0KKworICBmdW5jdGlv
biBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKHR5cGVf
b3B0ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIGFzc2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBl
b2YgdHlwZV9vcHQpOworICAgICAgYXNzZXJ0SW5zdGFuY2VvZihlLCB0eXBlX29wdCk7CisgICAg
fQorICAgIC8vIGlnbm9yZSBjYXVzZV9vcHQgYmVjYXVzZSBvdXIgZXJyb3IgbWVzc2FnZXMgYXJl
IG5vdCB0aGUgc2FtZSBhcyBWOCdzCisgICAgcmV0dXJuOworICAgIGlmIChSZWdFeHAgIT09IHVu
ZGVmaW5lZCAmJiBjYXVzZV9vcHQgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgIGFzc2VydE1h
dGNoZXMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfSBlbHNl
IGlmIChjYXVzZV9vcHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKGNhdXNl
X29wdCwgZS5tZXNzYWdlLCAnRXJyb3IgbWVzc2FnZScpOworICAgIH0KKyAgfQorCisgIGFzc2Vy
dFRocm93cyA9IGZ1bmN0aW9uIGFzc2VydFRocm93cyhjb2RlLCB0eXBlX29wdCwgY2F1c2Vfb3B0
KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVfb3B0ID09PSB1bmRlZmlu
ZWQpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dz
LCB1bmtub3duIHR5cGVfb3B0IGdpdmVuJyk7CisgICAgfQorICAgIGlmICh0eXBlX29wdCAhPT0g
dW5kZWZpbmVkICYmIHR5cGVvZiB0eXBlX29wdCAhPT0gJ2Z1bmN0aW9uJykgeworICAgICAgZmFp
bFdpdGhNZXNzYWdlKAorICAgICAgICAgICdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIG1h
eWJlIHlvdSB3YW50IGFzc2VydFRocm93c0VxdWFscycpOworICAgIH0KKyAgICB0cnkgeworICAg
ICAgZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgY2hlY2tFeGNl
cHRpb24oZSwgdHlwZV9vcHQsIGNhdXNlX29wdCk7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IGxldCBtc2cgPSAnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24nOworICAgIGlmICh0eXBlX29wdCAh
PT0gdW5kZWZpbmVkICYmIHR5cGVfb3B0Lm5hbWUgIT09IHVuZGVmaW5lZCkKKyAgICAgIG1zZyAr
PSAnLCBleHBlY3RlZCAnICsgdHlwZV9vcHQubmFtZTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UobXNn
KTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRUaHJvd3NF
cXVhbHMoZnVuLCB2YWwpIHsKKyAgICB0cnkgeworICAgICAgZnVuKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgYXNzZXJ0U2FtZSh2YWwsIGUpOworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBmYWlsV2l0aE1lc3NhZ2UoJ0RpZCBub3QgdGhyb3cgZXhjZXB0aW9uLCBleHBlY3RlZCAnICsg
cHJldHR5UHJpbnRlZCh2YWwpKTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NBc3luYyA9IGZ1bmN0
aW9uIGFzc2VydFRocm93c0FzeW5jKHByb21pc2UsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5lZCkgewor
ICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIHVua25v
d24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmlu
ZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWlsV2l0aE1l
c3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5YmUgeW91
IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIGxldCBtc2cgPSAnUHJvbWlz
ZSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRlZmlu
ZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9ICcsIGV4cGVj
dGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIHJldHVybiBhc3NlcnRQcm9taXNlUmVzdWx0KAor
ICAgICAgICBwcm9taXNlLAorICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0aGUg
ZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAvLyBjaGFpbi4K
KyAgICAgICAgcmVzID0+IHNldFRpbWVvdXQoXyA9PiBmYWlsKCc8dGhyb3c+JywgcmVzLCBtc2cp
LCAwKSwKKyAgICAgICAgZSA9PiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0
KSk7CisgIH07CisKKyAgYXNzZXJ0SW5zdGFuY2VvZiA9IGZ1bmN0aW9uIGFzc2VydEluc3RhbmNl
b2Yob2JqLCB0eXBlKSB7CisgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgdHlwZSkpIHsKKyAgICAg
IHZhciBhY3R1YWxUeXBlTmFtZSA9IG51bGw7CisgICAgICB2YXIgYWN0dWFsQ29uc3RydWN0b3Ig
PSBvYmogJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikuY29uc3RydWN0b3I7CisgICAgICBp
ZiAodHlwZW9mIGFjdHVhbENvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgIGFj
dHVhbFR5cGVOYW1lID0gYWN0dWFsQ29uc3RydWN0b3IubmFtZSB8fCBTdHJpbmcoYWN0dWFsQ29u
c3RydWN0b3IpOworICAgICAgfQorICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdP
YmplY3QgPCcgKyBwcmV0dHlQcmludGVkKG9iaikgKyAnPiBpcyBub3QgYW4gaW5zdGFuY2Ugb2Yg
PCcgKworICAgICAgICAgICh0eXBlLm5hbWUgfHwgdHlwZSkgKyAnPicgKworICAgICAgICAgIChh
Y3R1YWxUeXBlTmFtZSA/ICcgYnV0IG9mIDwnICsgYWN0dWFsVHlwZU5hbWUgKyAnPicgOiAnJykp
OworICAgIH0KKyAgfTsKKworICBhc3NlcnREb2VzTm90VGhyb3cgPSBmdW5jdGlvbiBhc3NlcnRE
b2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAgICB0cnkgeworICAgICAgZXhlY3V0ZUNv
ZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKGUgaW5zdGFuY2VvZiBNanNV
bml0QXNzZXJ0aW9uRXJyb3IpIHRocm93IGU7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoInRocmV3
IGFuIGV4Y2VwdGlvbjogIiArIChlLm1lc3NhZ2UgfHwgZSkpOworICAgIH0KKyAgfTsKKworICBh
c3NlcnRVbnJlYWNoYWJsZSA9IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKG5hbWVfb3B0KSB7
CisgICAgLy8gRml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgorICAg
IHZhciBtZXNzYWdlID0gIkZhaWwiICsgInVyZTogdW5yZWFjaGFibGUiOworICAgIGlmIChuYW1l
X29wdCkgeworICAgICAgbWVzc2FnZSArPSAiIC0gIiArIG5hbWVfb3B0OworICAgIH0KKyAgICBm
YWlsV2l0aE1lc3NhZ2UobWVzc2FnZSk7CisgIH07CisKKyAgYXNzZXJ0Q29udGFpbnMgPSBmdW5j
dGlvbihzdWIsIHZhbHVlLCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PSBudWxsID8gKHN1
YiAhPSBudWxsKSA6IHZhbHVlLmluZGV4T2Yoc3ViKSA9PSAtMSkgeworICAgICAgZmFpbCgiY29u
dGFpbnMgJyIgKyBTdHJpbmcoc3ViKSArICInIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9Cisg
IH07CisKKyAgYXNzZXJ0TWF0Y2hlcyA9IGZ1bmN0aW9uKHJlZ2V4cCwgc3RyLCBuYW1lX29wdCkg
eworICAgIGlmICghKHJlZ2V4cCBpbnN0YW5jZW9mIFJlZ0V4cCkpIHsKKyAgICAgIHJlZ2V4cCA9
IG5ldyBSZWdFeHAocmVnZXhwKTsKKyAgICB9CisgICAgaWYgKCFzdHIubWF0Y2gocmVnZXhwKSkg
eworICAgICAgZmFpbCgic2hvdWxkIG1hdGNoICciICsgcmVnZXhwICsgIiciLCBzdHIsIG5hbWVf
b3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ss
IGV4Y2VwdGlvbikgeworICAgIC8vIElmIHRoZSBleGNlcHRpb24gZG9lcyBub3QgY29udGFpbiBh
IHN0YWNrIHRyYWNlLCB3cmFwIGl0IGluIGEgbmV3IEVycm9yLgorICAgIGlmICghZXhjZXB0aW9u
LnN0YWNrKSBleGNlcHRpb24gPSBuZXcgRXJyb3IoZXhjZXB0aW9uKTsKKworICAgIC8vIElmIHRo
ZSBleGNlcHRpb24gYWxyZWFkeSBwcm92aWRlcyBhIHNwZWNpYWwgc3RhY2sgdHJhY2UsIHdlIGRv
IG5vdCBtb2RpZnkKKyAgICAvLyBpdC4KKyAgICBpZiAodHlwZW9mIGV4Y2VwdGlvbi5zdGFjayAh
PT0gJ3N0cmluZycpIHsKKyAgICAgIHJldHVybiBleGNlcHRpb247CisgICAgfQorICAgIGV4Y2Vw
dGlvbi5zdGFjayA9IHN0YWNrICsgJ1xuXG4nICsgZXhjZXB0aW9uLnN0YWNrOworICAgIHJldHVy
biBleGNlcHRpb247CisgIH0KKworICBhc3NlcnRQcm9taXNlUmVzdWx0ID0gZnVuY3Rpb24ocHJv
bWlzZSwgc3VjY2VzcywgZmFpbCkgeworICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIGFz
c2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBlb2Ygc3VjY2Vzcyk7CisgICAgaWYgKGZhaWwgIT09
IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBmYWlsKTsKKyAgICBh
c3NlcnRJbnN0YW5jZW9mKHByb21pc2UsIFByb21pc2UpOworICAgIGNvbnN0IHN0YWNrID0gKG5l
dyBFcnJvcigpKS5zdGFjazsKKworICAgIHZhciB0ZXN0X3Byb21pc2UgPSBwcm9taXNlLnRoZW4o
CisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICgt
LXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICBpZiAoc3VjY2VzcyAhPT0gdW5kZWZpbmVkKSBzdWNjZXNzKHJlc3VsdCk7CisgICAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cg
dGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAgIC8v
IGNoYWluLgorICAgICAgICAgICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAgdGhy
b3cgY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7CisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICByZXN1bHQgPT4geworICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBpZiAoLS1wcm9taXNlVGVzdENvdW50ID09IDApIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKGZhaWwgPT09IHVuZGVmaW5lZCkgdGhyb3cgcmVz
dWx0OworICAgICAgICAgICAgZmFpbChyZXN1bHQpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0
byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgICAgICAvLyBjaGFpbi4KKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoXyA9PiB7CisgICAgICAgICAgICAgIHRocm93IGNvbmNhdGVuYXRlRXJy
b3JzKHN0YWNrLCBlKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0KKyAgICAgICAg
fSk7CisKKyAgICBpZiAoIXByb21pc2VUZXN0Q2hhaW4pIHByb21pc2VUZXN0Q2hhaW4gPSBQcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAvLyB3YWl0VW50aWxEb25lIGlzIGlkZW1wb3RlbnQuCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgKytwcm9taXNlVGVzdENvdW50OworICAg
IHJldHVybiBwcm9taXNlVGVzdENoYWluLnRoZW4odGVzdF9wcm9taXNlKTsKKyAgfTsKKworICB2
YXIgT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9IHVuZGVmaW5lZDsKKworICB2YXIgT3B0aW1pemF0
aW9uU3RhdHVzID0gZnVuY3Rpb24oZnVuLCBzeW5jX29wdCkgeworICAgIGlmIChPcHRpbWl6YXRp
b25TdGF0dXNJbXBsID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIE9wdGlt
aXphdGlvblN0YXR1c0ltcGwgPSBuZXcgRnVuY3Rpb24oCisgICAgICAgICAgICAiZnVuIiwgInN5
bmMiLCAicmV0dXJuICVHZXRPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jKTsiKTsKKyAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJuYXRpdmVzIHN5bnRheCBu
b3QgYWxsb3dlZCIpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gT3B0aW1pemF0aW9uU3Rh
dHVzSW1wbChmdW4sIHN5bmNfb3B0KTsKKyAgfQorCisgIGFzc2VydFVub3B0aW1pemVkID0gZnVu
Y3Rpb24gYXNzZXJ0VW5vcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29wdCwg
c2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0gdW5k
ZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9u
U3RhdHVzKGZ1biwgc3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydFVub3B0
aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1hbHdheXMtb3B0CisgICAgLy8gb3B0aW9u
IGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11c3QgYWRkIC0tbm8tYWx3YXlzLW9wdCB0byBmbGFn
cyBjb21tZW50LgorICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25T
dGF0dXMua0Fsd2F5c09wdGltaXplKSAhPT0gMCwKKyAgICAgICAgICAgICAgICAidGVzdCBkb2Vz
IG5vdCBtYWtlIHNlbnNlIHdpdGggLS1hbHdheXMtb3B0Iik7CisgICAgYXNzZXJ0VHJ1ZSgob3B0
X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwgbmFtZV9v
cHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAgICAg
Ly8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBubyBs
b25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHN0
aWxsIGRlb3B0aW1pemVkLCBzbyBrZWVwIHJ1bm5pbmcgdGhlIHRlc3QKKyAgICAgIC8vIHRvIHN0
cmVzcyB0ZXN0IHRoZSBkZW9wdGltaXplci4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNz
ZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rT3B0aW1pemVkKSAh
PT0gMCwgbmFtZV9vcHQpOworICB9CisKKyAgYXNzZXJ0T3B0aW1pemVkID0gZnVuY3Rpb24gYXNz
ZXJ0T3B0aW1pemVkKAorICAgICAgZnVuLCBzeW5jX29wdCwgbmFtZV9vcHQsIHNraXBfaWZfbWF5
YmVfZGVvcHRlZCA9IHRydWUpIHsKKyAgICBpZiAoc3luY19vcHQgPT09IHVuZGVmaW5lZCkgc3lu
Y19vcHQgPSAiIjsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4s
IHN5bmNfb3B0KTsKKyAgICAvLyBUZXN0cyB0aGF0IHVzZSBhc3NlcnRPcHRpbWl6ZWQoKSBkbyBu
b3QgbWFrZSBzZW5zZSBmb3IgTGl0ZSBtb2RlIHdoZXJlCisgICAgLy8gb3B0aW1pemF0aW9uIGlz
IGFsd2F5cyBkaXNhYmxlZCwgZXhwbGljaXRseSBleGl0IHRoZSB0ZXN0IHdpdGggYSB3YXJuaW5n
LgorICAgIGlmIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0xpdGVNb2RlKSB7
CisgICAgICBwcmludCgiV2FybmluZzogVGVzdCB1c2VzIGFzc2VydE9wdGltaXplZCBpbiBMaXRl
IG1vZGUsIHNraXBwaW5nIHRlc3QuIik7CisgICAgICB0ZXN0UnVubmVyLnF1aXQoMCk7CisgICAg
fQorICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5vdCBtYWtlIHNl
bnNlIGlmIC0tbm8tb3B0CisgICAgLy8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11
c3QgYWRkIC0tb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDAsCisgICAgICAg
ICAgICAgICAgInRlc3QgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIC0tbm8tb3B0Iik7CisgICAg
YXNzZXJ0VHJ1ZSgKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5r
SXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgYSBmdW5jdGlvbjogJyArIG5h
bWVfb3B0KTsKKyAgICBpZiAoc2tpcF9pZl9tYXliZV9kZW9wdGVkICYmCisgICAgICAgIChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua01heWJlRGVvcHRlZCkgIT09IDApIHsKKyAg
ICAgIC8vIFdoZW4gLS1kZW9wdC1ldmVyeS1uLXRpbWVzIGZsYWcgaXMgc3BlY2lmaWVkIGl0J3Mg
bm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICAgIC8vIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBp
cyBzdGlsbCBvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8gdG8g
c3RyZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
c3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtP
cHRpbWl6ZWQpICE9PSAwLAorICAgICAgICAnc2hvdWxkIGJlIG9wdGltaXplZDogJyArIG5hbWVf
b3B0KTsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlID0gZnVuY3Rpb24gaXNOZXZl
ck9wdGltaXplTGl0ZU1vZGUoKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25T
dGF0dXModW5kZWZpbmVkLCAiIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua0xpdGVNb2RlKSAhPT0gMDsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZSA9
IGZ1bmN0aW9uIGlzTmV2ZXJPcHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGlt
aXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBW
OE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDA7CisgIH0KKworICBpc0Fs
d2F5c09wdGltaXplID0gZnVuY3Rpb24gaXNBbHdheXNPcHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0
X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4g
KG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAw
OworICB9CisKKyAgaXNJbnRlcnByZXRlZCA9IGZ1bmN0aW9uIGlzSW50ZXJwcmV0ZWQoZnVuKSB7
CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAg
YXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9u
KSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpID09PSAwICYmCisg
ICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0ludGVycHJldGVk
KSAhPT0gMDsKKyAgfQorCisgIGlzT3B0aW1pemVkID0gZnVuY3Rpb24gaXNPcHRpbWl6ZWQoZnVu
KSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7Cisg
ICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0
aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVy
biAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwOwor
ICB9CisKKyAgaXNUdXJib0Zhbm5lZCA9IGZ1bmN0aW9uIGlzVHVyYm9GYW5uZWQoZnVuKSB7Cisg
ICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAgYXNz
ZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAh
PT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAob3B0
X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwICYmCisgICAg
ICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua1R1cmJvRmFubmVkKSAh
PT0gMDsKKyAgfQorCisgIC8vIEN1c3RvbSBWOC1zcGVjaWZpYyBzdGFjayB0cmFjZSBmb3JtYXR0
ZXIgdGhhdCBpcyB0ZW1wb3JhcmlseSBpbnN0YWxsZWQgb24KKyAgLy8gdGhlIEVycm9yIG9iamVj
dC4KKyAgTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnVuY3Rpb24o
ZXJyb3IsIHN0YWNrKSB7CisgICAgLy8gVHJpZ2dlciBkZWZhdWx0IGZvcm1hdHRpbmcgd2l0aCBy
ZWN1cnNpb24uCisgICAgdHJ5IHsKKyAgICAgIC8vIEZpbHRlci1vdXQgYWxsIGJ1dCB0aGUgZmly
c3QgbWpzdW5pdCBmcmFtZS4KKyAgICAgIGxldCBmaWx0ZXJlZFN0YWNrID0gW107CisgICAgICBs
ZXQgaW5NanN1bml0ID0gdHJ1ZTsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhY2subGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgbGV0IGZyYW1lID0gc3RhY2tbaV07CisgICAgICAgIGlmIChp
bk1qc3VuaXQpIHsKKyAgICAgICAgICBsZXQgZmlsZSA9IGZyYW1lLmdldEZpbGVOYW1lKCk7Cisg
ICAgICAgICAgaWYgKCFmaWxlIHx8ICFmaWxlLmVuZHNXaXRoKCJtanN1bml0LmpzIikpIHsKKyAg
ICAgICAgICAgIGluTWpzdW5pdCA9IGZhbHNlOworICAgICAgICAgICAgLy8gUHVzaCB0aGUgbGFz
dCBtanN1bml0IGZyYW1lLCB0eXBpY2FsbHkgY29udGFpbmluZyB0aGUgYXNzZXJ0aW9uCisgICAg
ICAgICAgICAvLyBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmIChpID4gMCkgQXJyYXlQcm90b3R5
cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgc3RhY2tbaS0xXSk7CisgICAgICAgICAgICBBcnJh
eVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpXSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEFycmF5UHJvdG90eXBl
UHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIGZyYW1lKTsKKyAgICAgIH0KKyAgICAgIHN0YWNrID0g
ZmlsdGVyZWRTdGFjazsKKworICAgICAgLy8gSW5mZXIgZnVuY3Rpb24gbmFtZXMgYW5kIGNhbGN1
bGF0ZSB7bWF4X25hbWVfbGVuZ3RofQorICAgICAgbGV0IG1heF9uYW1lX2xlbmd0aCA9IDA7Cisg
ICAgICBBcnJheVByb3RvdHlwZUZvckVhY2guY2FsbChzdGFjaywgZWFjaCA9PiB7CisgICAgICAg
IGxldCBuYW1lID0gZWFjaC5nZXRGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgaWYgKG5hbWUgPT0g
bnVsbCkgbmFtZSA9ICIiOworICAgICAgICBpZiAoZWFjaC5pc0V2YWwoKSkgeworICAgICAgICAg
IG5hbWUgPSBuYW1lOworICAgICAgICB9IGVsc2UgaWYgKGVhY2guaXNDb25zdHJ1Y3RvcigpKSB7
CisgICAgICAgICAgbmFtZSA9ICJuZXcgIiArIG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoZWFj
aC5pc05hdGl2ZSgpKSB7CisgICAgICAgICAgbmFtZSA9ICJuYXRpdmUgIiArIG5hbWU7CisgICAg
ICAgIH0gZWxzZSBpZiAoIWVhY2guaXNUb3BsZXZlbCgpKSB7CisgICAgICAgICAgbmFtZSA9IGVh
Y2guZ2V0VHlwZU5hbWUoKSArICIuIiArIG5hbWU7CisgICAgICAgIH0KKyAgICAgICAgZWFjaC5u
YW1lID0gbmFtZTsKKyAgICAgICAgbWF4X25hbWVfbGVuZ3RoID0gTWF0aC5tYXgobmFtZS5sZW5n
dGgsIG1heF9uYW1lX2xlbmd0aCkKKyAgICAgIH0pOworCisgICAgICAvLyBGb3JtYXQgc3RhY2sg
ZnJhbWVzLgorICAgICAgc3RhY2sgPSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKHN0YWNrLCBlYWNo
ID0+IHsKKyAgICAgICAgbGV0IGZyYW1lID0gIiAgICBhdCAiICsgZWFjaC5uYW1lLnBhZEVuZCht
YXhfbmFtZV9sZW5ndGgpOworICAgICAgICBsZXQgZmlsZU5hbWUgPSBlYWNoLmdldEZpbGVOYW1l
KCk7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSByZXR1cm4gZnJhbWUgKyAiICIgKyBlYWNo
LmdldEV2YWxPcmlnaW4oKTsKKyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGZpbGVOYW1lID8gZmls
ZU5hbWUgOiAiIik7CisgICAgICAgIGxldCBsaW5lPSBlYWNoLmdldExpbmVOdW1iZXIoKTsKKyAg
ICAgICAgZnJhbWUgKz0gIiAiICsgKGxpbmUgPyBsaW5lIDogIiIpOworICAgICAgICBsZXQgY29s
dW1uID0gZWFjaC5nZXRDb2x1bW5OdW1iZXIoKTsKKyAgICAgICAgZnJhbWUgKz0gKGNvbHVtbiA/
ICI6IiArIGNvbHVtbiA6ICIiKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgfSk7Cisg
ICAgICByZXR1cm4gIiIgKyBlcnJvci5tZXNzYWdlICsgIlxuIiArIEFycmF5UHJvdG90eXBlSm9p
bi5jYWxsKHN0YWNrLCAiXG4iKTsKKyAgICB9IGNhdGNoIChlKSB7fTsKKyAgICByZXR1cm4gZXJy
b3Iuc3RhY2s7CisgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1jbGVh
bnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1m
cm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODc1MDAxODU3NTljNzJlNmFjYjMy
ZGIyNjZjNjc1ZWEzNDVlNTQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
Y2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBW
OCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdl
YWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jl
c291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworbGV0IFJlYWxtID0g
eyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChyLCBzKSA9PiAkLmV2YWxTY3JpcHQuY2Fs
bChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVhdGUoKTsKKworbGV0IGNsZWFudXAgPSBS
ZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsgZnVuY3Rpb24gY2xlYW51cCgpIHsgc3Rv
cmVkX2dsb2JhbCA9IGdsb2JhbFRoaXM7IH0gY2xlYW51cDsiKTsKK2xldCByZWFsbV9nbG9iYWxf
dGhpcyA9IFJlYWxtLmV2YWwociwgImdsb2JhbFRoaXMiKTsKKworbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCBhIHJl
Z2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcwor
Ly8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRo
ZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkg
eworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCk7
CisgICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVu
Y3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rp
b24oKSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2dsb2Jh
bDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOworICBh
c3NlcnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitzZXRU
aW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
Y2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRkMDI0
N2UyNzEwZGE0ODVjOTI1NzJhYmE5YzI3NmNkZWYzNWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpAQCAt
MCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworbGV0IFJlYWxtID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChyLCBz
KSA9PiAkLmV2YWxTY3JpcHQuY2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVhdGUo
KTsKKworbGV0IGNsZWFudXAgPSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsgbGV0
IGNsZWFudXAgPSBuZXcgUHJveHkoZnVuY3Rpb24oKSB7IHN0b3JlZF9nbG9iYWwgPSBnbG9iYWxU
aGlzO30sIHt9KTsgY2xlYW51cCIpOworbGV0IHJlYWxtX2dsb2JhbF90aGlzID0gUmVhbG0uZXZh
bChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnko
Y2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBG
aW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEg
Y2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigp
IHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2Jq
ZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIik7CisgICAg
fQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24g
d2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7
CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2dsb2JhbDsiKTsK
KyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOworICBhc3NlcnRF
cXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6
YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9u
LXJlZ2lzdHJ5LWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTYxNmE1MDIxYWNhNzU1MWM4MTE5ZWI2
MWVmZTk0N2I1MTJjM2MxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmlu
YWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpAQCAtMCwwICsxLDE1MiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFr
LXJlZnMKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRp
dmUiKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSgpIHsK
KyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgYXNzZXJ0
RXF1YWxzKGZnLnRvU3RyaW5nKCksICJbb2JqZWN0IEZpbmFsaXphdGlvblJlZ2lzdHJ5XSIpOwor
ICBhc3NlcnROb3RTYW1lKGZnLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7CisgIGFzc2Vy
dFNhbWUoZmcuX19wcm90b19fLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7Cit9KSgpOwor
CisoZnVuY3Rpb24gVGVzdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JDYWxsQXNGdW5j
dGlvbigpIHsKKyAgbGV0IGNhdWdodCA9IGZhbHNlOworICBsZXQgbWVzc2FnZSA9ICIiOworICB0
cnkgeworICAgIGxldCBmID0gRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICB9IGNh
dGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOwor
ICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1
bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeUNsZWFudXBOb3RDYWxsYWJs
ZSgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVz
dCBiZSBjYWxsYWJsZSI7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJv
d3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoMSk7IH0sIFR5cGVF
cnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeShudWxsKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisK
KyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoQ2FsbGFibGVQ
cm94eUFzQ2xlYW51cCgpIHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9ICgpID0+
IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IGZnID0g
bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0
Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoTm9uQ2FsbGFibGVQcm94eUFzQ2xlYW51
cCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAgbXVz
dCBiZSBjYWxsYWJsZSI7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsKKyAg
bGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGFzc2VydFRocm93cygoKSA9
PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShwcm94eSk7IH0sIFR5cGVFcnJv
ciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aE5vbk9iamVj
dFRhcmdldCgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9
KTsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lz
dGVyOiB0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcu
cmVnaXN0ZXIoMSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy5yZWdpc3RlcihmYWxzZSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVz
c2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcigiZm9vIiwgImhvbGRpbmdz
IiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3Rl
cihTeW1ib2woKSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy5yZWdpc3RlcihudWxsLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNz
YWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKHVuZGVmaW5lZCwgImhvbGRp
bmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lz
dGVyV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307Cisg
IGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBmZy5yZWdpc3Rlcihwcm94eSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUoKSB7
CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBv
YmogPSB7YTogMX07CisgIC8vIFNhbWVWYWx1ZSh0YXJnZXQsIGhvbGRpbmdzKSBub3Qgb2sKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKG9iaiwgb2JqKSwgVHlwZUVycm9yLAorICAg
ICAgICAgICAgICAgIkZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3RlcjogdGFy
Z2V0IGFuZCBob2xkaW5ncyBtdXN0IG5vdCBiZSBzYW1lIik7CisgIGxldCBob2xkaW5ncyA9IHth
OiAxfTsKKyAgZmcucmVnaXN0ZXIob2JqLCBob2xkaW5ncyk7Cit9KSgpOworCisoZnVuY3Rpb24g
VGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJv
d3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwoe30s
IHt9LCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yKTsKKyAgLy8gRG9lcyBub3QgdGhyb3c6CisgIGxl
dCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIEZpbmFsaXphdGlv
blJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKGZnLCB7fSwgImhvbGRpbmdzIik7Cit9
KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRXhpc3RlbnRLZXkoKSB7Cisg
IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBzdWNj
ZXNzID0gZmcudW5yZWdpc3Rlcih7ImsiOiAid2hhdGV2ZXIifSk7CisgIGFzc2VydEZhbHNlKHN1
Y2Nlc3MpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXph
dGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0
cnkucHJvdG90eXBlLnVucmVnaXN0ZXIuY2FsbCh7fSwge30pLAorICAgICAgICAgICAgICAgVHlw
ZUVycm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25PYmplY3RV
bnJlZ2lzdGVyVG9rZW4oKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgo
KSA9PiB7fSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKDEpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihCaWdJbnQoMSkpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcignb25lJyksIFR5cGVF
cnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKFN5bWJvbCgpKSwgVHlw
ZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodHJ1ZSksIFR5cGVF
cnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKGZhbHNlKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodW5kZWZpbmVkKSwgVHlw
ZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIobnVsbCksIFR5cGVF
cnJvcik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvcigpIHsKKyAg
bGV0IHdyID0gbmV3IFdlYWtSZWYoe30pOworICBhc3NlcnRFcXVhbHMod3IudG9TdHJpbmcoKSwg
IltvYmplY3QgV2Vha1JlZl0iKTsKKyAgYXNzZXJ0Tm90U2FtZSh3ci5fX3Byb3RvX18sIE9iamVj
dC5wcm90b3R5cGUpOworCisgIGxldCBkZXJlZl9kZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3ci5fX3Byb3RvX18sICJkZXJlZiIpOworICBhc3NlcnRFcXVhbHModHJ1ZSwg
ZGVyZWZfZGVzYy5jb25maWd1cmFibGUpOworICBhc3NlcnRFcXVhbHMoZmFsc2UsIGRlcmVmX2Rl
c2MuZW51bWVyYWJsZSk7CisgIGFzc2VydEVxdWFscygiZnVuY3Rpb24iLCB0eXBlb2YgZGVyZWZf
ZGVzYy52YWx1ZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3Rvcldp
dGhOb25PYmplY3QoKSB7CisgIGxldCBtZXNzYWdlID0gIldlYWtSZWY6IHRhcmdldCBtdXN0IGJl
IGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigpLCBUeXBlRXJy
b3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoMSksIFR5cGVF
cnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihmYWxzZSks
IFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigi
Zm9vIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vh
a1JlZihTeW1ib2woKSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9
PiBuZXcgV2Vha1JlZihudWxsKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dz
KCgpID0+IG5ldyBXZWFrUmVmKHVuZGVmaW5lZCksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0aW9uKCkgewor
ICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRyeSB7CisgICAg
bGV0IGYgPSBXZWFrUmVmKHt9KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIG1lc3NhZ2UgPSBlLm1l
c3NhZ2U7CisgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgfSBmaW5hbGx5IHsKKyAgICBhc3NlcnRUcnVl
KGNhdWdodCk7CisgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZldpdGhQcm94eSgp
IHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBu
ZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IHdyID0gbmV3IFdlYWtSZWYocHJveHkpOwor
fSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5
LWFuZC13ZWFrcmVmLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
YW5kLXdlYWtyZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkYThhMGM5ZmVmYzlkMWRlMjY5NWIyM2Q1MjAx
NDI4ZmIyNmIyMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1y
ZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3Vy
Y2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2Nh
bGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBsZXQg
aG9sZGluZ3NfbGlzdCA9IFtdOworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOworICBh
c3NlcnRFcXVhbHMoMSwgaG9sZGluZ3NfbGlzdC5sZW5ndGgpOworICBhc3NlcnRFcXVhbHMoImhv
bGRpbmdzIiwgaG9sZGluZ3NfbGlzdFswXSk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1ZTsKK30K
KworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IHdlYWtf
cmVmcyA9IFtdOworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGxldCBvID0ge307CisgICAgICAgIHdlYWtfcmVmcy5wdXNoKG5ldyBX
ZWFrUmVmKG8pKTsKKyAgICAgICAgZmcucmVnaXN0ZXIobywgImhvbGRpbmdzIik7CisgICAgfQor
fSkoKTsKKworLy8gU2luY2UgdGhlIFdlYWtSZWYgd2FzIGNyZWF0ZWQgZHVyaW5nIHRoaXMgdHVy
biwgaXQgaXMgbm90IGNsZWFyZWQgYnkgR0MuIFRoZQorLy8gcG9pbnRlciBpbnNpZGUgdGhlIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IGlzIG5vdCBjbGVhcmVkIGVpdGhlciwgc2luY2UgdGhlIFdlYWtS
ZWYKKy8vIGtlZXBzIHRoZSB0YXJnZXQgb2JqZWN0IGFsaXZlLgorZ2MoKTsKKyhmdW5jdGlvbigp
IHsKKyAgICB3ZWFrX3JlZnMuZm9yRWFjaCgod2Vha19yZWYpID0+IGFzc2VydEVxdWFscygib2Jq
ZWN0IiwgdHlwZW9mKHdlYWtfcmVmLmRlcmVmKCkpKSk7Cit9KSgpOworCisvLyBUcmlnZ2VyIGdj
IGluIG5leHQgdGFzaworc2V0VGltZW91dCgoKSA9PiB7CisgICAgZ2MoKTsKKworICAgIC8vIENo
ZWNrIHRoYXQgY2xlYW51cCBjYWxsYmFjayB3YXMgY2FsbGVkIGluIGEgZm9sbG93IHVwIHRhc2sK
KyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxl
ZCk7CisgICAgICAgIGFzc2VydFRydWUod2Vha19yZWZzLnNvbWUoKHdlYWtfcmVmKSA9PiB3ZWFr
X3JlZi5kZXJlZigpID09PSBudWxsKSk7CisgICAgfSwgMCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFs
aXZlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9s
ZGluZ3MtYWxpdmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAyYzRiYjhlZTg0ZTAxMGI3NGQ2ZGViMzVhMGNm
YWNmMTZkNDkzZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTgg
dGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1v
bnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQo
Ii4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBj
bGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0IGhvbGRpbmdzX2xpc3QgPSBbXTsKK2xldCBjbGVh
bnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQp
OworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOworICBjbGVhbnVwX2NhbGxlZCA9IHRy
dWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xl
dCBvMSA9IHt9OworbGV0IGhvbGRpbmdzID0geydhJzogJ3RoaXMgaXMgdGhlIGhvbGRpbmdzIG9i
amVjdCd9OworCisvLyBJZ25pdGlvbiBob2xkcyByZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4gdGVt
cG9yYXJ5IHJlZ2lzdGVycy4gVGhlc2Ugd2lsbCBiZQorLy8gcmVsZWFzZWQgd2hlbiB0aGUgZnVu
Y3Rpb24gZXhpdHMuIFNvIG9ubHkgYWNjZXNzIG8gaW5zaWRlIGEgZnVuY3Rpb24gdG8KKy8vIHBy
ZXZlbnQgYW55IHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVnaXN0ZXJzIHdo
ZW4gYSBnYyBpcworLy8gdHJpZ2dlcmVkLgorKCgpID0+IHtmZy5yZWdpc3RlcihvMSwgaG9sZGlu
Z3MpO30pKCkKKworZ2MoKTsKK2Fzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKworLy8gRHJv
cCB0aGUgbGFzdCByZWZlcmVuY2VzIHRvIG8xLgorKCgpID0+IHtvMSA9IG51bGw7fSkoKQorCisv
LyBEcm9wIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgaG9sZGluZ3MuIFRoZSBGaW5hbGl6YXRp
b25SZWdpc3RyeSBrZWVwcyBpdAorLy8gYWxpdmUsIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkIGFzIG5vcm1hbC4KK2hvbGRpbmdzID0gbnVsbDsKK2djKCk7Cithc3NlcnRG
YWxzZShjbGVhbnVwX2NhbGxlZCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxlZCk7CisgIGFzc2VydEVxdWFscyhob2xkaW5nc19s
aXN0Lmxlbmd0aCwgMSk7CisgIGFzc2VydEVxdWFscyhob2xkaW5nc19saXN0WzBdLmEsICJ0aGlz
IGlzIHRoZSBob2xkaW5ncyBvYmplY3QiKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMs
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
c2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRp
bWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkOGM5NjM5NzVkMmVjZmI4Nzc2NTkyY2RiNTVmZTg1MzcyNzlj
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdp
c3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMKQEAgLTAsMCArMSw4
NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmln
aHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6
IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcK
Ky8vIEZsYWdzOiAtLW5vLXN0cmVzcy1mbHVzaC1ieXRlY29kZQorCitsb2FkKCIuL3Jlc291cmNl
cy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cDBfY2Fs
bF9jb3VudCA9IDA7CitsZXQgY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xl
YW51cDBfMV9ob2xkaW5nc19jb3VudCA9IDA7CisKK2xldCBjbGVhbnVwMV9jYWxsX2NvdW50ID0g
MDsKK2xldCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMV8xX2hv
bGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsK
KyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFdID09ICIwIikKKyAgICArK2NsZWFu
dXAwXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICArK2NsZWFudXAwXzFfaG9sZGluZ3Nf
Y291bnQ7CisgICsrY2xlYW51cDBfY2FsbF9jb3VudDsKK30KKworbGV0IGNsZWFudXAxID0gZnVu
Y3Rpb24oaG9sZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFdID09
ICIwIikKKyAgICArK2NsZWFudXAxXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICArK2Ns
ZWFudXAxXzFfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cDFfY2FsbF9jb3VudDsKK30KKwor
bGV0IGZnMCA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwMCk7CitsZXQgZmcxID0g
bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAxKTsKKworLy8gUmVnaXN0ZXIgMSB3ZWFr
IHJlZmVyZW5jZSBmb3IgZWFjaCBGaW5hbGl6YXRpb25SZWdpc3RyeSBhbmQga2lsbCB0aGUgb2Jq
ZWN0cyB0aGV5IHBvaW50IHRvLgorKGZ1bmN0aW9uKCkgeworICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgIC8vIFRoZSBvYmplY3RzIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xv
c3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0uCisgICAgbGV0IG9iamVjdHMg
PSBbXTsKKyAgICBvYmplY3RzWzBdID0ge307CisgICAgb2JqZWN0c1sxXSA9IHt9OworCisgICAg
ZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMCIpOworICAgIGZnMS5yZWdpc3Rl
cihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTAiKTsKKworICAgIC8vIERyb3AgdGhlIHJlZmVyZW5j
ZXMgdG8gdGhlIG9iamVjdHMuCisgICAgb2JqZWN0cyA9IFtdOworICB9Cit9KSgpOworCisvLyBX
aWxsIHNjaGVkdWxlIGJvdGggZmcwIGFuZCBmZzEgZm9yIGNsZWFudXAuCitnYygpOworCisvLyBC
ZWZvcmUgdGhlIGNsZWFudXAgdGFzayBoYXMgYSBjaGFuY2UgdG8gcnVuLCBkbyB0aGUgc2FtZSB0
aGluZyBhZ2Fpbiwgc28gYm90aAorLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBhcmUgKGFnYWlu
KSBzY2hlZHVsZWQgZm9yIGNsZWFudXAuIFRoaXMgaGFzIHRvIGJlIGEgSUlGRSBmdW5jdGlvbgor
Ly8gKHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlIG9iamVjdHMpIHNvIHdlIGNhbm5v
dCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24KKy8vIGFzIGJlZm9yZS4KKyhmdW5jdGlvbigpIHsKKyAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBsZXQgb2JqZWN0cyA9IFtdOwor
ICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisgICAgZmcwLnJlZ2lz
dGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMSIpOworICAgIGZnMS5yZWdpc3RlcihvYmplY3Rz
WzFdLCAiaG9sZGluZ3MxLTEiKTsKKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisKK2dj
KCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0Tm90RXF1YWxz
KDAsIGNsZWFudXAwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDBf
MF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8xX2hvbGRp
bmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxX2NhbGxfY291bnQpOwor
ICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2Vy
dE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKK30KKworLy8gR2l2ZSB0
aGUgY2xlYW51cCB0YXNrIGEgY2hhbmNlIHRvIHJ1bi4KK3NldFRpbWVvdXQodGltZW91dF9mdW5j
LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFs
aXphdGlvbi1yZWdpc3RyaWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHkt
ZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwNzNhMDMxZGIwNmNjZDMw
MjZkOGYyNGYxMjdmYWRkYjg5OGFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzCkBAIC0wLDAgKzEs
NTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJp
Z2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdz
OiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQxID0gMDsKK2xldCBjbGVhbnVwX2NhbGxfY291bnQy
ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBpZiAoaG9sZGlu
Z3MgPT09ICJob2xkaW5nczEiKQorICAgICAgICArK2NsZWFudXBfY2FsbF9jb3VudDE7CisgICAg
ZWxzZSBpZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczIiKQorICAgICAgICArK2NsZWFudXBfY2Fs
bF9jb3VudDI7CisgICAgZWxzZQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KKworbGV0
IGZnMSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBmZzIgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSB0d28gb2JqZWN0cyBh
bmQgcmVnaXN0ZXIgdGhlbSBpbiBGaW5hbGl6YXRpb25SZWdpc3RyaWVzLiBUaGUgb2JqZWN0cyBu
ZWVkCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtp
bGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGxldCBvYmplY3QxID0ge307CisgICAgICAgIGZnMS5yZWdpc3Rlcihv
YmplY3QxLCAiaG9sZGluZ3MxIik7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAg
ICAgZmcyLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5nczIiKTsKKyAgICB9CisgICAgLy8gb2Jq
ZWN0MSBhbmQgb2JqZWN0MiBnbyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdp
bGwgZGlzY292ZXIgZGlydHkgV2Vha0NlbGxzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsK
K2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKK2Fzc2VydEVxdWFscygwLCBj
bGVhbnVwX2NhbGxfY291bnQyKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rp
b24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3Nl
cnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50MSk7CisgICAgYXNzZXJ0Tm90RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudDIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywg
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVh
bnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYTk3ZGFhNGQxZDI2NTI0ODIyMDJkMTFiNWIyY2JjNDVjYjI3MjEwCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51
cC5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9
MSIpCisKKy8vIENvcHlyaWdodCAyMDIwIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5j
cmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNh
bGxlciByZWxhdGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgcmVlbnRyYW50X2dj
ID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBnYygpOworICAgIGNhbGxlZCA9IHRydWU7Cit9
CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShyZWVudHJhbnRfZ2MpOworCiso
ZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBm
Zy5yZWdpc3Rlcih7fSwgNDIpOworfSkoKTsKKworZ2MoKTsKKworc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICBhc3NlcnRUcnVlKGNhbGxlZCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpz
IGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVu
cXVldWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyNGUyY2QzZWM3NmQ1Yzg5NTFjZDJmYTBhNTFhODVmZDA4
MDk4MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6
YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLXN0cmVzcy1jb21w
YWN0aW9uIC0tZXhwb3NlLWdjCisKKy8vIFRlc3QgdGhhdCB0aGUgZGlydHkgRmluYWxpemF0aW9u
UmVnaXN0cmllcyB0aGF0IGFyZSBlbnF1ZXVlZCBkdXJpbmcgR0MgaGF2ZQorLy8gdGhlaXIgc2xv
dHMgY29ycmVjdGx5IHJlY29yZGVkIGJ5IHRoZSBHQy4KKworLy8gMSkgQ3JlYXRlIG1hbnkgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3RzIHNvIHRoYXQgdGhleSBzcGFuIHNldmVyYWwgcGFn
ZXMKKy8vIChwYWdlIHNpemUgaXMgMjU2a2IpLgorbGV0IHJlZ2lzdHJpZXMgPSBbXTsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAyNCAqIDg7IGkrKykgeworICByZWdpc3RyaWVzLnB1c2gobmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KSk7Cit9CisKKy8vIDIpIEZvcmNlIHR3byBHQ3Mg
dG8gZW5zdXJlIHRoYXQgSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVjdHMgYXJlIHRlbnVyZWQu
CitnYygpOworZ2MoKTsKKworLy8gMykgSW4gYSBmdW5jdGlvbjogY3JlYXRlIGEgZHVtbXkgdGFy
Z2V0IGFuZCByZWdpc3RlciBpdCBpbiBhbGwKKy8vIEpTRmluYWxpemF0b25SZWdpc3RyeSBvYmpl
Y3RzLgorKGZ1bmN0aW9uKCkgeworICBsZXQgZ2FyYmFnZSA9IHt9OworICByZWdpc3RyaWVzLmZv
ckVhY2goKGZyKSA9PiB7CisgICAgZnIucmVnaXN0ZXIoZ2FyYmFnZSwgNDIpOworICB9KTsKKyAg
Z2FyYmFnZSA9IG51bGw7Cit9KSgpOworCisvLyA0KSBPdXRzaWRlIHRoZSBmdW5jdGlvbiB3aGVy
ZSB0aGUgdGFyZ2V0IGlzIHVucmVhY2hhYmxlOiBmb3JjZSBHQyB0byBjb2xsZWN0CisvLyB0aGUg
b2JqZWN0LgorZ2MoKTsKKworLy8gNSkgRm9yY2UgYW5vdGhlciBHQyB0byB0ZXN0IHRoYXQgdGhl
IHNsb3Qgd2FzIGNvcnJlY3RseSB1cGRhdGVkLgorZ2MoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVm
aW5lZC1ob2xkaW5ncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM2MGNmZGE3N2YwYWZjYTFiNWNiOWZkZGFm
ZWFjMGQ5MDc1MGJiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZp
bmVkLWhvbGRpbmdzLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGFzc2VydEVxdWFscyho
b2xkaW5ncywgdW5kZWZpbmVkKTsKKyAgICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4g
b2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBv
YmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVs
aWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdp
c3RlcihvYmplY3QpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRo
ZSB0YXJnZXQgb2JqZWN0IGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFs
cygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBm
dW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWFmdGVyLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVy
LWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ3MmIwZjhiM2JiOGViYTY5MGExNjBkMTYzOGQzOWU0
M2Y0NzJkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXIt
YWZ0ZXItY2xlYW51cC5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9z
ZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1
bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0g
MDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxzKCJo
b2xkaW5ncyIsIGhvbGRpbmdzKTsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBm
ZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAi
dGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBp
biB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGlu
c2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVu
Y3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAg
bGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIs
IGtleSk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdl
dCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNs
ZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9u
IHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0
Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisgICAgbGV0IG9sZF9jbGVhbnVwX2Nh
bGxfY291bnQgPSBjbGVhbnVwX2NhbGxfY291bnQ7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFuIGFs
cmVhZHkgY2xlYW5lZC11cCB3ZWFrIHJlZmVyZW5jZS4KKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVu
cmVnaXN0ZXIoa2V5KTsKKyAgICAvLyBTaW5jZSB3ZSBtYXkgbm90IGNvbGxlY3QgZXZlcnl0aGlu
ZyB3ZSBkb24ndCBrbm93IHdoYXQgc3VjY2VzcyB3aWxsIGJlIHVubGlrZSB2OC4KKyAgICAvLyBh
c3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAgIC8vIEFzc2VydCB0aGF0IGl0IGRpZG4ndCBkbyBh
bnl0aGluZy4KKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgYXNzZXJ0RXF1YWxzKG9sZF9jbGVhbnVw
X2NhbGxfY291bnQsIGNsZWFudXBfY2FsbF9jb3VudCk7IH0sIDApOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lz
dGVyLWJlZm9yZS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZv
cmUtY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2QxZTNlYzZhM2FlYmZjNzg3NmM3ZGRhZjdkN2Ri
OGMxNTNmZWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rl
ci1iZWZvcmUtY2xlYW51cC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4
cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZyAtLW5vaW5jcmVtZW50YWwtbWFya2luZwor
Citsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwor
CitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9s
ZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUg
a2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxp
emF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1
cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7Cisg
IGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAibXkgaG9sZGluZ3MiLCBr
ZXkpOworCisgIC8vIENsZWFyIHRoZSBXZWFrQ2VsbCBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5j
ZSB0byBkaXNjb3ZlciBpdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7Cisg
IGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgor
fSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygp
OworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0
IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgc2luY2Ugd2UgY2FsbGVkIHVu
cmVnaXN0ZXIuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFs
cygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywg
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2lj
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4ZWZlODI0YjZjNzRhMDU4Y2IxZDFlYjM4NzFlY2U1YmFmOGJhNzMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qcwpA
QCAtMCwwICsxLDQ2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0g
ZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBm
ZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAi
dGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBp
biB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGlu
c2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVu
Y3Rpb24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9s
ZGluZ3MiLCBrZXkpOworCisgIC8vIFVucmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFu
Y2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVy
KGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gQ2FsbCB1bnJlZ2lzdGVyIGFn
YWluIChqdXN0IHRvIGFzc2VydCB3ZSBoYW5kbGUgdGhpcyBncmFjZWZ1bGx5KS4KKyAgc3VjY2Vz
cyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7CisKKyAgLy8g
b2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xh
aW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2Fs
bF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJl
IGNhbGxlZCwgc2luY2UgdGhlIHdlYWsgcmVmZXJlbmNlCisvLyB3YXMgdW5yZWdpc3RlcmVkLgor
bGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMCwgY2xlYW51
cF9jYWxsX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMgYi9K
U1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYjIxMjI4NjYzYWQyY2VkNTk2OTVhNTNjNWIzYjBlNWY3Y2IwMGJjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMKQEAg
LTAsMCArMSw0OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisv
LyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
Ly8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFs
LW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVs
YXRpdmUiKTsKKworbGV0IGNhbGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbiho
b2xkaW5ncykgeworICAvLyBTZWUgd2hpY2ggdGFyZ2V0IHdlJ3JlIGNsZWFuaW5nIHVwIGFuZCB1
bnJlZ2lzdGVyIHRoZSBvdGhlciBvbmUuCisgIGlmIChob2xkaW5ncyA9PSAxKSB7CisgICAgbGV0
IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTIpOworICAgIGFzc2VydFRydWUoc3VjY2VzcyB8
fCBjYWxsZWQpOworICB9IGVsc2UgeworICAgIGFzc2VydFNhbWUoaG9sZGluZ3MsIDIpOworICAg
IGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICBhc3NlcnRUcnVlKHN1Y2Nl
c3MgfHwgY2FsbGVkKTsKKyAgfQorICBjYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsiayI6ICJmaXJzdCBr
ZXkifTsKK2xldCBrZXkyID0geyJrIjogInNlY29uZCBrZXkifTsKKy8vIENyZWF0ZSB0d28gb2Jq
ZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBv
YmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVs
aWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcucmVn
aXN0ZXIob2JqZWN0MSwgMSwga2V5MSk7CisgICAgICAgIGxldCBvYmplY3QyID0ge307CisgICAg
ICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsIDIsIGtleTIpOworICAgIH0KK30pKCk7CisKKy8vIFRo
aXMgR0Mgd2lsbCByZWNsYWltIHRhcmdldCBvYmplY3RzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgor
Z2MoKTsKK2Fzc2VydEZhbHNlKGNhbGxlZCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVw
IGZ1bmN0aW9uIHdhcyBjYWxsZWQgYW5kIGNsZWFuZWQgdXAgb25lIGhvbGRpbmdzIChidXQgbm90
IHRoZSBvdGhlciBvbmUpLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydFRydWUoY2FsbGVkKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iN2ZhYTdiNmUzYzQzYmYyYjEyODY2ZjI0MGNjNmVhYzE4N2QyMWI5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanMK
QEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQor
CisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVu
dGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIg
cmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cF9o
b2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7Cisg
IGFzc2VydEVxdWFscyhob2xkaW5ncywgImhvbGRpbmdzIik7CisKKyAgLy8gVGhlcmUncyBtb3Jl
cyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXkgdGhhdCB3ZSBoYXZlbid0CisgIC8vIGNsZWFuZWQg
dXAgeWV0IHNvIHdlIHNob3VsZCBiZSBhYmxlIHRvIHVucmVnaXN0ZXIgdGhlCisgIC8vIGNhbGxi
YWNrIGZvciB0aGF0IG9uZS4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisK
KyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICArK2NsZWFudXBfaG9sZGluZ3NfY291bnQ7Cisg
ICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVn
aXN0cnkoY2xlYW51cCk7CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0
aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisv
LyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorbGV0IGtleSA9
IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAg
ICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGlu
Z3MiLCBrZXkpOworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGluZ3MiLCBrZXkp
OworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2Vs
bHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBf
Y2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBj
YWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygx
LCBjbGVhbnVwX2NhbGxfY291bnQpOworICBhc3NlcnRFcXVhbHMoMSwgY2xlYW51cF9ob2xkaW5n
c19jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4
LXVucmVnaXN0ZXItbWFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODMzOTllNjVmMGQyNzQyNjA4YjEzODQ2
ZDVhNWQ5MTdhYjM3ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5y
ZWdpc3Rlci1tYW55LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlv
bihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzMiIsIGhvbGRpbmdzKTsKKyAg
KytjbGVhbnVwX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKwor
bGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleTEgPSB7
ImsiOiAia2V5MSJ9OworbGV0IGtleTIgPSB7ImsiOiAia2V5MiJ9OworLy8gQ3JlYXRlIHRocmVl
IG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBU
aGUgb2JqZWN0cworLy8gbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2Fu
IHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QxYSA9IHt9OworICAgICAgICBm
Zy5yZWdpc3RlcihvYmplY3QxYSwgImhvbGRpbmdzMWEiLCBrZXkxKTsKKworICAgICAgICBsZXQg
b2JqZWN0MWIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MWIsICJob2xkaW5nczFi
Iiwga2V5MSk7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0
ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIsIGtleTIpOworCisgICAgICAgIC8vIFVucmVnaXN0ZXIg
YmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdHMuCisgICAg
ICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICAgICAgYXNzZXJ0VHJ1
ZShzdWNjZXNzKTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUg
dGFyZ2V0IG9iamVjdHMuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3Vu
dCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVk
IG9ubHkgZm9yIHRoZSByZWZlcmVuY2Ugd2hpY2gKKy8vIHdhcyBub3QgdW5yZWdpc3RlcmVkLgor
bGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfaG9sZGluZ3Nf
Y291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWU4MDBhYTJhY2UwOWY2
ZjI5NTJlNGU5N2NiNTY5ODFlYTJlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE5IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcy13aXRoLWNsZWFudXAtc29tZSAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2lu
ZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIp
OworCit2YXIgRlIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkgKGZ1bmN0aW9uIChob2xkaW5n
cykgeyBnbG9iYWxUaGlzLkZSUmFuID0gdHJ1ZTsgfSk7Cit7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9OworICAgICAgICAvLyBvYmog
aXMgaXRzIG93biB1bnJlZ2lzdGVyIHRva2VuIGFuZCBiZWNvbWVzIHVucmVhY2hhYmxlIGFmdGVy
IHRoaXMKKyAgICAgICAgLy8gYmxvY2suIElmIHRoZSB1bnJlZ2lzdGVyIHRva2VuIGlzIGhlbGQg
c3Ryb25nbHkgdGhpcyB0ZXN0IHdpbGwgbm90CisgICAgICAgIC8vIHRlcm1pbmF0ZS4KKyAgICAg
ICAgRlIucmVnaXN0ZXIob2JqLCA0Miwgb2JqKTsKKyAgICB9Cit9CisKK2xldCB0cnlBZ2FpbkNv
dW50ID0gMTA7CitmdW5jdGlvbiB0cnlBZ2FpbigpIHsKKyAgICBnYygpOworICAgIGlmIChnbG9i
YWxUaGlzLkZSUmFuKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCEtLXRyeUFnYWluQ291bnQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIHNldFRpbWVvdXQodHJ5QWdhaW4sIDAp
OworfQordHJ5QWdhaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404736</attachid>
            <date>2020-07-20 11:49:18 -0700</date>
            <delta_ts>2020-07-20 12:01:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199888-20200720114917.patch</filename>
            <type>text/plain</type>
            <size>192806</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzRmOTg2OWEwOTc5MGJmNWM2ODM4ZGIyNTc4NDIxNjE4MzhlYmY3Li5jNzUxYTVkZDY0OTY1ZWJh
YThlOWJjMjU3ZDk3MzhjZGUzYjlkYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZXJlIGFyZSB0d28K
KyAgICAgICAgbWFpbiBwYXJ0cyB0byB0aGlzIHBhdGNoLCB0aGUgZmlyc3QgaXMgcmVmYWN0b3Jp
bmcgUHJvbWlzZVRpbWVyIGEKKyAgICAgICAgbW9yZSBnZW5lcmFsIGludG8gRGVmZXJyZWRXb3Jr
VGltZXIuIFRoaXMgYWxsb3dzIHVzIHRvIGZpbmFsbHkKKyAgICAgICAgaGF2ZSBhICJyZWFsIiBz
ZXRUaW1lb3V0IG9uIHRoZSBqc2MgY29tbWFuZCBsaW5lLiBUaGUgc2Vjb25kIHBhcnQKKyAgICAg
ICAgaXMgYWRkaW5nIGFsbCB0aGUgbmV3IGNsYXNzZXMgbmVlZGVkIGZvciBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBpcyBtb3N0bHkgYSByZW5hbWUg
YnV0IGRvZXMgdHdvIG1haW4gbmV3CisgICAgICAgIHRoaW5ncy4gVGhlIGZpcnN0IGlzIHRoYXQg
aXQgbm93IG5vdGlmaWVzIHRoZSBWTSB3ZSBoYXZlIGZpbmlzaGVkCisgICAgICAgIGEgc3luY2hy
b251b3VzIEpTIGV4ZWN1dGlvbiwgc28gdGhhdCBXZWFrUmVmcyBjYW4gYmUKKyAgICAgICAgY29s
bGVjdGVkLiBUaGUgc2Vjb25kIGlzIHRoYXQgaXQgbm93IGNhdGNoZXMgYW55IGV4Y2VwdGlvbnMg
YW5kCisgICAgICAgIGZvcndhcmRzIHRoZSB0byBhIG5ldyBtZXRob2Qgb24gdGhlIGdsb2JhbCBv
YmplY3QgbWV0aG9kCisgICAgICAgIHRhYmxlLiBGb3IgV2ViQ29yZSwgdGhpcyByZXBvcnRzIHRo
ZSBleGNlcHRpb24gdG8gdGhlIGNvbnNvbGUuIEZvcgorICAgICAgICBBUEkgdXNlcnMsIHRoaXMg
Y2FsbHMgdGhlaXIgZXhjZXB0aW9uSGFuZGxlciBibG9jay4gRm9yIHRoZSBDTEksCisgICAgICAg
IGl0IGV4aXRzIHdpdGggZXhpdCBzdGF0dXMgMyAob3VyIGdlbmVyYWwgZXhjZXB0aW9uIGV4aXQK
KyAgICAgICAgc3RhdHVzKS4gVW5mb3J0dW5hdGVseSwgdGhlcmUncyBub3QgY3VycmVudGx5IGFu
IGVyZ29ub21pYyB3YXkgdG8KKyAgICAgICAgcGFzcyB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uIGZy
b20gdGhlIENMSSBhcmd1bWVudHMgdG8gdGhpcyBoYW5kbGVyCisgICAgICAgIHNvIHRoYXQncyBu
b3Qgc3VwcG9ydGVkIGhlcmUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBGaW5hbGl6
YXRpb25SZWdpc3RyeSB0aGlzIHBhdGNoIGFkZHMgYSAibmV3IgorICAgICAgICBjbGFzcyBKU0Rl
c3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsLCB3aGljaCBhbGxvd3MgdXMgdG8KKyAg
ICAgICAgaGF2ZSBhIGRlc3RydWN0aWJsZSBvYmplY3Qgd2l0aCBpbnRlcm5hbCBmaWVsZHMuIFNp
bmNlIHRoZSBvcmRlcgorICAgICAgICBvZiBjb2xsZWN0aW9uIGRvZXNuJ3QgbWF0dGVyIHdlIGN1
cnJlbnRseSB1c2UgQysrIEhhc2hUYWJsZXMgb24KKyAgICAgICAgdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBTaW5jZSB1c2VycyBjYW4gdW5yZWdpc3RlciBvYmplY3RzIHdoaWxlCisgICAgICAg
IHRoZSBjYWxsYmFjayBpcyBwZW5kaW5nIHdlIGhhdmUgYSBoYXNoIHRhYmxlIGZvciB0aGUgbGl2
ZSBlbnRyaWVzCisgICAgICAgIGFuZCBhIHNlY29uZCBoYXNoIHRhYmxlIGZvciB0aGUgZGVhZCBv
bmVzLiBMYXN0bHksIGJlY2F1c2UgdXNlcnMKKyAgICAgICAgYXJlIG5vdCByZXF1cmVkIHRvIHBy
b3ZpZGUgYSB0b2tlbiBmb3IgdW5yZWdpc3RyYXRpb24gd2UgaGF2ZSB0d28KKyAgICAgICAgZXh0
cmEgVmVjdG9ycyBjb250YWluaW5nIHRoZSBsaXZlL2RlYWQgb2JqZWN0cyB0aGF0IGFyZSBub3QK
KyAgICAgICAgdW5yZWdpc3RlcmlibGUuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvblNldFRpbWVvdXQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6YXRpb25S
ZWdpc3RyeUxpdmVDb3VudCk6CisgICAgICAgIChmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY2hlY2tVbmNhdWdodEV4Y2Vw
dGlvbik6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3ApOgorICAgICAgICAocnVuSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5jcHAuCisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsp
OgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVy
cmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRl
ZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKToKKyAgICAgICAgKiBydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpGaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAqIHJ1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jRmlu
YWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OnByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpydW5GaW5hbGl6YXRpb25DbGVhbnVwKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZGVhZENvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdGFja092ZXJmbG93RnJhbWVDYWxsZWUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjptYXBTZXRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnNldEFkZFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphcnJheUpvaW5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg6CisgICAgICAgICogcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCYXNlPjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNv
bHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6
OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRl
SUQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlN
b2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMC0wNy0xOSAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIG5vbi11bmlm
aWVkIHNvdXJjZSBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDY0MDNlODBhZGI4MTdmNjQwYTU5
NTE5N2RhZDFlMTI1ZGRjMjJiLi5lNTgxNDU5MGE2MDQ0OGRmN2YxYmQ5MDU4ZTc0MzM4NWIxNTRl
OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZp
bmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQcm9taXNlRGVmZXJyZWRU
aW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNvLCBhZGQgZ2xvYmFsT2Jq
ZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25zIGZyb20gSlNDJ3MKKyAg
ICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6cmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFt
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlhdGVTdHJl
YW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6
CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorCiAyMDIw
LTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgY2FudmFzIGNhcHR1cmVTdHJlYW0sIHRlc3Rz
IGZhaWxpbmcgc2luY2UgdGhleSB3ZXJlIGFkZGVkIGluIHIyMTM1OTgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFj
NDcyNTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uNGFiNTQ3ZTlkZTBkZjhlYTQ3MTQ1ZjJhZmQ1
OWZmNTY1M2NiMzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAg
ICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAg
ICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21p
c2VSZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExv
b3AsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29t
cGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKaW5kZXggNzM5N2M2
YjRhNjBjNjJjMzhmNDBjNjgxMDc2MWM4NWM4ZmMzY2M3NC4uODE2N2M1Y2MwYmM0YWZkOTdjOTg1
NjQ5NTNkZGVkNDMwYzczM2U1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QuaApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRp
b25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworCiAgICAgc3RhdGlj
IEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUxvYWRlciosIEpTU3RyaW5nKiBtb2R1bGVOYW1lVmFsdWUsIEpTVmFsdWUg
cGFyYW1ldGVycywgY29uc3QgU291cmNlT3JpZ2luJik7CiAgICAgc3RhdGljIElkZW50aWZpZXIg
bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNW
YWx1ZSBrZXlWYWx1ZSwgSlNWYWx1ZSByZWZlcnJlclZhbHVlLCBKU1ZhbHVlKTsKICAgICBzdGF0
aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0Kiwg
SlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4IGQ2MWFhYzdlNDVj
NTM3MjA1YThhY2E3ZTA4ZWZkNjk0Y2JlZGM0MjMuLmRkZTJiZDMyM2JjN2I2NWI0ZjA5MDIzYjg3
YWVhMjdiMDQyMzYzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5tbQpAQCAtNjIsMTMgKzYyLDIwIEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIEpTQVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewog
ICAgICZtb2R1bGVMb2FkZXJSZXNvbHZlLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCiAgICAgJm1v
ZHVsZUxvYWRlckZldGNoLCAvLyBtb2R1bGVMb2FkZXJGZXRjaAogICAgICZtb2R1bGVMb2FkZXJD
cmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcywgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0
YVByb3BlcnRpZXMKLSAgICBtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVyRXZh
bHVhdGUKKyAgICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3Vh
Z2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5z
dGFudGlhdGVTdHJlYW1pbmcKIH07CiAKK3ZvaWQgSlNBUElHbG9iYWxPYmplY3Q6OnJlcG9ydFVu
Y2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29u
dGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihnbG9iYWxPYmpl
Y3QpXTsKKyAgICBbY29udGV4dCBub3RpZnlFeGNlcHRpb246dG9SZWYoZ2xvYmFsT2JqZWN0LT52
bSgpLCBleGNlcHRpb24tPnZhbHVlKCkpXTsKK30KKwogc3RhdGljIEV4cGVjdGVkPFVSTCwgU3Ry
aW5nPiBjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBT
dHJpbmcmIHNwZWNpZmllcikKIHsKICAgICBVUkwgYWJzb2x1dGVVUkwoVVJMKCksIHNwZWNpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzZhMDgzMGZhNTFlOWIy
MjlhNGVmMzE4YTkwYzllNzUyMmMwYWJlNy4uMzY3NjU5Mzc0ZWIyZDNjYjMxNDY0YTVhOTE0ZWVl
OThhMmFjOTljNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODMwLDYg
KzgzMCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcnVudGltZS9EYXRhVmlldy5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1
bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAorICAgIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
aAogICAgIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKICAgICBydW50aW1lL0Rl
bGV0ZVByb3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaApA
QCAtOTY4LDcgKzk2OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcnVudGltZS9QYXJzZUludC5oCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5o
CiAgICAgcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCi0gICAgcnVudGltZS9Qcm9taXNlVGlt
ZXIuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKICAgICBydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKICAgICBydW50aW1lL1Byb3BlcnR5TmFtZS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDRjZDc0YzI1MjJlYTJiZTlkMTI2Yzg4ZmRiMjA5ODM3ZDlh
NTJiNWYuLmEyNmE5OTc1MjUyZDA2NTQ2NmJmYTYxYTViNWMyZWYzMGYyNGY2NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzEsMTYgKzkzMSwxOSBAQAogCQk1MzBGREU3NTIx
RkFCMDA2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBGREU3MzIxRkFBRkM2MDAwNTlENjUgLyogdGVzdElu
Y2x1ZGVzLm0gKi87IH07CiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxh
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJE
NDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUzMTM3NEJEMUQ1
Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmgg
Ki87IH07Ci0JCTUzMTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxODA0NUIyMkVB
QUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi87IH07Ci0JCTUzMzNCQkRCMjExMEY3
RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAv
KiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzE4
MDQ1QzIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAv
KiBCM0V4dHJhY3RWYWx1ZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUzMUVFN0JBMjJERTZC
QkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxRUU3QjkyMkRFNkJCQjAwMzBE
QTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggKi87IH07CisgICAgICAgICAg
ICAgICAgNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBG
MUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9Owog
CQk1MzMzQkJEQzIxMTBGN0Q5MDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQzIxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAqLzsgfTsKIAkJNTMzM0JCREQyMTEw
RjdFMTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8q
IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovOyB9OwotCQk1MzM4RTJBNzIzOTZFRkZCMDBDNjFC
QUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVj
a3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisgICAgICAgICAgICAgICAgNTMzOEUyQTcyMzk2RUZGQjAwQzYxQkFE
IC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RTJBNjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MzM4RUJBMzIzQUIwNEI4MDAzODI2NjIgLyogRlRMU2VsZWN0UHJl
ZGljdGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5o
ICovOyB9OwotCQk1MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsK
KyAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNTMzRDA3NDcyMkMyRDlEMjAwNEQyRkUyIC8qIEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmggKi87IH07CisgICAgICAgICAgICAgICAgNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3
IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmggKi87IH07CiAJCTUzNDYzODcxMUU3MENGM0QwMEYxMkFDMSAvKiBKU1J1
bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0NjM4NzUxRTcwRERF
QzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1l
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUz
NDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAv
KiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CisgICAgICAgICAgICAgICAgNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVy
cmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworICAgICAgICAgICAg
ICAgIDUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2
RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CiAJCTUzNDkwMjg1MUM3Mjc2QjcwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi87IH07CiAJCTUz
NEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNEM0NTdCMUJD
NzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJ
NTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNEUwMzREMUU0RDRCMTYwMDIxM0Y2NCAv
KiBBY2Nlc3NDYXNlLmggKi87IH07CkBAIC0zNTk3LDYgKzM2MDAsNyBAQAogCQk1MkVFRDc5MzI0
OTJCODY4MDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVu
Y3Rpb25BbGxvd2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNkMzNUIx
RTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
LmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNkMzNUMxRTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzAwNzQwQzIyREQ2RjY2
MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTMwQTYzNDAxRkEzRTMxQzAwMjZBNTQ1IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU291cmNlc0NvY29hLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTMwQTYzNDExRkEzRTMxRDAwMjZBNTQ1IC8qIFNvdXJjZXMudHh0ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNvdXJjZXMudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MzBBNjZBRDFGQTNFNzc3MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0NC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTQ0LmNwcDsgcGF0aCA9
ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNv
dXJjZTE0NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzYy
MiwxNyArMzYyNiwyMiBAQAogCQk1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNFeHRyYWN0VmFsdWUuaDsgcGF0aCA9IGIzL0IzRXh0
cmFjdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTgwNDVEMjJFQUFG
MEYwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0V4
dHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0V4dHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3Rh
cGkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFFRTdCOTIyREU2QkJCMDAz
MERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTMxRUU3QkMyMkRFNkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyNjMxQjMyMTg3NzdBNTAw
N0I4MTkxIC8qIEphdmFTY3JpcHRDb3JlLm1vZHVsZW1hcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2Rl
Lm1vZHVsZS1tYXAiOyBwYXRoID0gSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzM4RTJBNjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hl
Y2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5Lmg7
IHBhdGggPSBmdGwvRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0
cnlDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQ1MjJDMkQ4N0Yw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MzNEMDc0NjIyQzJEOUQxMDA0RDJGRTIgLyogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAv
KiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzcx
MURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgcGF0aCA9IGIz
L0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzNDYzODcyMUU3MEQwMTUwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1J1bkxvb3BUaW1lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzNDYzODc0MUU3MERERUMwMEYxMkFD
MSAvKiBQcm9taXNlVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJv
bWlzZVRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzNDYzODc2MUU3MUUw
NkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvbWlzZVRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVm
ZXJyZWRXb3JrVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJy
ZWRXb3JrVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0NjM4NzYxRTcx
RTA2RTAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVycmVkV29ya1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKyAgICAgICAgICAgICAgICA1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyog
SlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRB
cnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThFODQ1MDBG
NkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0aCA9IEFQ
SS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzQ5MDI4MzFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVkQXJyYXlDVGVzdC5oOyBwYXRoID0gQVBJL3Rl
c3RzL1R5cGVkQXJyYXlDVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEz
NCw2ICs3MTQzLDggQEAKIAkJCQkxNEExNTYzMDEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3Rh
bmNlQ2FjaGUuaCAqLywKIAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3Rv
dHlwZS5jcHAgKi8sCiAJCQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5
cGUuaCAqLywKKwkJCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGlt
ZXIuY3BwICovLAorCQkJCTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtU
aW1lci5oICovLAogCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaCAqLywKIAkJCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRl
UHJvcGVydHlTbG90LmggKi8sCiAJCQkJMEZFMDUwMEYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVj
dEFyZ3VtZW50cy5jcHAgKi8sCkBAIC03MTg0LDExICs3MTk1LDE3IEBACiAJCQkJMTQ3MzQxRTkx
REMyQ0YyNTAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmNwcCAqLywKIAkJCQkxNDczNDFDQjFE
QzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCAqLywKIAkJCQlFMzVBMEI5QzIyMEFE
ODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggKi8sCi0JCQkJQ0VDRkFEMzMy
MzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVC
YXNlZEZ1enplckFnZW50LmNwcCAqLywKIAkJCQlDRUNGQUQzMjIzNzJEQUE3MDAyOTE1OTkgLyog
RmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRTIwQkQwNDIzN0QzQUQ0MDA0NkU1MjAg
LyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCAqLywKIAkJCQlDRTIwQkQwMzIzN0QzQUQ0
MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmggKi8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ1MjJDMkQ4N0YwMDREMkZFMiAvKiBGaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1MzNEMDc0MzIyQzJENzk3MDA0RDJG
RTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovLAorCQkJCTUzMUVFN0JD
MjJERTZFQzYwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAgKi8s
CisJCQkJNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlLmggKi8sCiAJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oICovLAorCQkJCUE3QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAq
LywKKwkJCQlBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJ
CQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUJD
MjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJ
CQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLApA
QCAtNzM0NSw3ICs3MzYyLDEzIEBACiAJCQkJMEY3REYxMzkxRTI5NzEwRTAwOTU5NTFCIC8qIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcCAqLywKIAkJCQkwRjdERjEzQTFFMjk3
MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLywKIAkJ
CQlBN0I0QUNBRTE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLywKLQkJCQkw
RjJCNjZDMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCAqLywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnkuY3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1MzNEMDc0NjIyQzJEOUQxMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oICov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0
RkIgLyogSlNGaXhlZEFycmF5LmNwcCAqLywKKwkJCQk3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIg
LyogSlNGaXhlZEFycmF5LmNwcCAqLywKKwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyog
SlNGaXhlZEFycmF5LmggKi8sCisJCQkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4
ZWRBcnJheS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRjJCNjZDMTE3
QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCAqLywKIAkJCQkwRjJCNjZDMjE3QjZC
NUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlGNjkyQTg1RTAyNTU1OTdE
MDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCiAJCQkJRjY5MkE4NUYwMjU1NTk3RDAxRkY2
MEY3IC8qIEpTRnVuY3Rpb24uaCAqLywKQEAgLTc1NDQsOSArNzU2Nyw3IEBACiAJCQkJODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYxREMy
Q0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFEMzFE
QzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKLQkJCQk1MzQ2Mzg3NjFF
NzFFMDZFMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmNwcCAqLywKLQkJCQk1MzQ2Mzg3NDFFNzBE
REVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi8sCi0JCQkJQTdGQjYwQTMxMDNGN0RDMjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0
b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2Ny
aXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBI
YXNoVGFibGUuaCAqLywKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlO
YW1lLmggKi8sCkBAIC05Mjg2LDYgKzkzMDcsNyBAQAogCQkJCTBGMTM2RDREMTc0QUQ2OUUwMDc1
QjM1NCAvKiBEZWZlckdDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MTJERjE3Q0Q4NzdDMDA4
Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGlt
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0JCMURFRjg2
NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTUyNiw5ICs5NTQ4LDExIEBACiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRG
IC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjdDRjgyMjQ5
MzE2QjEwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUMzQzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZp
bGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTIwQkQwNTIzN0QzRTIzMDA0NkU1MjAgLyogRmls
ZUJhc2VkRnV6emVyQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBN0E4QUYzODE3QURC
NUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDQyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzMUVFN0JBMjJE
RTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3QThBRjM4MTdBREI1RjMw
MDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdB
REI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRF
NTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRF
REJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKQEAg
LTk4NTcsNyArOTg4MSw4IEBACiAJCQkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9s
bGFyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBK
U0V4cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8q
IEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjJCNjZFRjE3QjZCNUFCMDBB
N0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRp
b25SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTQ3LDggKzEwMTcyLDcgQEAKIAkJ
CQlEQzYwNUI2MDFDRTI2RUE3MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0QUQ5MTEwMURDQTkyOTQwMDE0RjlGRSAvKiBQcm9ncmFtQ29kZUJsb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDczNDFENDFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1
dGFibGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBQ
cm9taXNlVGltZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRDNFNDBFMUI2MThCNjYwMEM4MEUx
RSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDBGRDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRp
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8qIFBy
b3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NTQzN0QwRUJBNzBGRDAw
NzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1
OEFCMzE1NUM4QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEzNGE2NjVhODUwY2FkNmFmZjljYWY1
YzRjOGQ3NGMyNzA1Li4yYTI4N2E3ZmRkYjA4MDRmM2I2MDEyMGRjYTBiZTc1Yjc1NWU3OTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03ODYsNiArNzg2LDggQEAgcnVudGltZS9F
eGNlcHRpb25TY29wZS5jcHAKIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCiBydW50aW1lL0Zp
bGVCYXNlZEZ1enplckFnZW50LmNwcAogcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2Uu
Y3BwCitydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCitydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAogcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZUR1bXAuY3BwCkBAIC04NTAsNiArODUyLDcgQEAgcnVudGltZS9KU0RhdGFW
aWV3LmNwcAogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogcnVudGltZS9KU0RhdGVN
YXRoLmNwcAogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKK3J1
bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
IHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3Bw
CkBAIC05MzIsNyArOTM1LDcgQEAgcnVudGltZS9PcGVyYXRpb25zLmNwcAogcnVudGltZS9PcHRp
b25zLmNwcAogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwCiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAotcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCity
dW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
Y3BwCiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMTg0YmI5NDQ0MWQzZmE0MzM0MmFm
YmY5NjY1Y2MxYmU3MzllZTAxMy4uZDgxYWRlZmY1Zjg0MjZhODUzMjQyYzRlN2ExN2I1N2E2NTIx
YzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5l
U2V0LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5j
bHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCkBAIC02MTEs
NiArNjEyLDggQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkK
ICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmpl
Y3RSZWY+KCp2bSgpLm1fd2Vha09iamVjdFJlZlNwYWNlKTsKICAgICBpZiAodm0oKS5tX2Vycm9y
SW5zdGFuY2VTcGFjZSkKICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxp
emVyczxFcnJvckluc3RhbmNlPigqdm0oKS5tX2Vycm9ySW5zdGFuY2VTcGFjZSk7CisgICAgaWYg
KHZtKCkubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCp2bSgpLm1f
ZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgaWYgKHZtKCkubV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCAyZTBkMGEzMGRmNWY2NTMwOGU3YTlmY2ViOTY0MzRhMjk3ZjE4MzE5Li5jOWJlZWQ5
ZmE4MjM0ZjFhMTA2MjFmMzEzNjIwYmJjYWY1NjI5ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbXBpbGVyVGltaW5nU2NvcGUuaCIKICNpbmNs
dWRlICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29uZmlnRmlsZS5oIgorI2luY2x1ZGUgIkRl
ZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNDEsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAj
aW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgi
CiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC01Niw3ICs1OCw2IEBACiAjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb2Zp
bGVyRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJSZWxl
YXNlSGVhcEFjY2Vzc1Njb3BlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2lu
Y2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpAQCAtMTU1LDYgKzE1Niw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSB7CiAKKyNkZWZpbmUgRVhJVF9FWENFUFRJT04gMworCiBOT19S
RVRVUk5fV0lUSF9WQUxVRSBzdGF0aWMgdm9pZCBqc2NFeGl0KGludCBzdGF0dXMpCiB7CiAgICAg
d2FpdEZvckFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5KCk7CkBAIC0xODgsNyArMTkxLDcgQEAgY2xh
c3MgV29ya2VyczsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIGludCBydW5KU0MoY29uc3Qg
Q29tbWFuZExpbmUmLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJik7Ci1zdGF0aWMgdm9pZCBj
aGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhj
ZXB0aW9uLCBKU1ZhbHVlLCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOworc3RhdGljIHZv
aWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhh
c0V4Y2VwdGlvbiwgSlNWYWx1ZSwgY29uc3QgQ29tbWFuZExpbmUmLCBib29sJiBzdWNjZXNzKTsK
IAogY2xhc3MgTWVzc2FnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZXNzYWdlPiB7
CiBwdWJsaWM6CkBAIC0zMDIsNyArMzA1LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbE1hc3F1ZXJhZGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3Bl
cnRpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6
YXRpb25SZWdpc3RyeUxpdmVDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdp
c3RyeURlYWRDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxhdGZvcm0oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxhdGZvcm1TdXBw
b3J0c1NhbXBsaW5nUHJvZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKQEAgLTUz
OCw4ICs1NDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkdW1wVHlw
ZXNGb3JBbGxWYXJpYWJsZXMiLCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyAsIDAp
OwogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHJhaW5NaWNyb3Rhc2tzIiwgZnVuY3Rpb25E
cmFpbk1pY3JvdGFza3MsIDApOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlbGVhc2VXZWFr
UmVmcyIsIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzLCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJzZXRUaW1lb3V0IiwgZnVuY3Rpb25TZXRUaW1lb3V0LCAyKTsKIAorICAgICAgICBhZGRG
dW5jdGlvbih2bSwgInJlbGVhc2VXZWFrUmVmcyIsIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzLCAw
KTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJmaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3Vu
dCIsIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQsIDApOworICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50IiwgZnVuY3Rpb25G
aW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudCwgMCk7CisgICAgICAgIAogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgImdldFJhbmRvbVNlZWQiLCBmdW5jdGlvbkdldFJhbmRvbVNlZWQsIDApOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFJhbmRvbVNlZWQiLCBmdW5jdGlvblNldFJhbmRv
bVNlZWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImlzUm9wZSIsIGZ1bmN0aW9uSXNS
b3BlLCAxKTsKQEAgLTYzOCw2ICs2NDgsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJZGVudGlm
aWVyIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlcios
IEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlz
ZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpT
VmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU09iamVjdCogbW9kdWxlTG9h
ZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxv
YWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMg
dm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0Kiwg
RXhjZXB0aW9uKik7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2xv
YmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCk7CiAKQEAgLTY2MCw2ICs2NzIsNyBAQCBjb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBj
b21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGluYXRlU3RyZWFtaW5nCkBA
IC0yMTg3LDYgKzIyMDAsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRyYWluTWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU2V0VGltZW91dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8g
RklYTUU6IFRoaXMgbWVhbnMgd2UgY2FuJ3QgcGFzcyBhbnkgaW50ZXJuYWwgZnVuY3Rpb24gYnV0
IEkgZG9uJ3QgdGhpbmsgdGhhdCdzIGNvbW1vbiBmb3IgdGVzdGluZy4KKyAgICBhdXRvIGNhbGxi
YWNrID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVudCBpcyBub3QgYSBKUyBmdW5jdGlv
biJfcyk7CisKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbG9vayBhdCB0aGUgdGltZW91dCBwYXJh
bWV0ZXIgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgc2NoZWR1bGUgd29yayBsYXRlciBBUEkuCisg
ICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBjYWxsYmFjaywgeyB9
KTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihjYWxsYmFjaywg
W2NhbGxiYWNrXSB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxs
YmFjay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBjYWxsKGds
b2JhbE9iamVjdCwgY2FsbGJhY2ssIGpzVW5kZWZpbmVkKCksIGFyZ3MsICJZb3Ugc2hvdWxkbid0
IHNlZSB0aGlzLi4uIik7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5k
aW5nV29yayhjYWxsYmFjayk7CisgICAgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIxOTQsNiArMjIzMCwz
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICgh
ZmluYWxpemF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25S
ZWdpc3RyeSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJl
Z2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5saXZlQ291bnQobG9ja2VyKSkpOworfQorCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBmaW5hbGl6YXRpb25SZWdp
c3RyeSA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHZtLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIWZpbmFsaXphdGlvblJlZ2lzdHJ5KQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmlyc3QgYXJn
dW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3MpOworCisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhmaW5hbGl6YXRpb25SZWdpc3RyeS0+Y2VsbExvY2soKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmaW5hbGl6YXRpb25SZWdpc3RyeS0+ZGVhZENv
dW50KGxvY2tlcikpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bklzMzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKQEAgLTI2MTcsMTAgKzI2NzksMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogCiAgICAgLy8gV2UgY2FuJ3QgdXNlIGRlc3RydWN0b3JzIGluIHRoZSBmb2xs
b3dpbmcgY29kZSBiZWNhdXNlIGl0IHVzZXMgV2luZG93cwogICAgIC8vIFN0cnVjdHVyZWQgRXhj
ZXB0aW9uIEhhbmRsaW5nCi0gICAgaW50IHJlcyA9IDA7CisgICAgaW50IHJlcyA9IEVYSVRfU1VD
Q0VTUzsKICAgICBUUlkKICAgICAgICAgcmVzID0ganNjbWFpbihhcmdjLCBhcmd2KTsKLSAgICBF
WENFUFQocmVzID0gMykKKyAgICBFWENFUFQocmVzID0gRVhJVF9FWENFUFRJT04pCiAgICAgZmlu
YWxpemVTdGF0c0F0RW5kT2ZUZXN0aW5nKCk7CiAgICAgaWYgKGdldGVudigiSlNfU0hFTExfV0FJ
VF9GT1JfSU5QVVRfVE9fRVhJVCIpKSB7CiAgICAgICAgIFdURjo6ZmFzdERpc2FibGVTY2F2ZW5n
ZXIoKTsKQEAgLTI2OTEsNyArMjc1Myw3IEBAIHN0YXRpYyB2b2lkIGR1bXBFeGNlcHRpb24oR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXhjZXB0aW9uKQogI3VuZGVmIENIRUNL
X0VYQ0VQVElPTgogfQogCi1zdGF0aWMgYm9vbCBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2
bSwgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXhjZXB0aW9uLCBDb21tYW5k
TGluZSYgb3B0aW9ucykKK3N0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZt
LCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIGNvbnN0IENv
bW1hbmRMaW5lJiBvcHRpb25zKQogewogICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRFeGNlcHRp
b25OYW1lID0gb3B0aW9ucy5tX3VuY2F1Z2h0RXhjZXB0aW9uTmFtZTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkBAIC0yNzIzLDcgKzI3ODUsNyBAQCBzdGF0aWMg
Ym9vbCBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgY2hl
Y2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwg
Ym9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBi
b29sJiBzdWNjZXNzKQorc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUg
dmFsdWUsIGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAtMjc0Miw2ICsyODA0LDE1IEBAIHN0
YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29s
IGlzTGFzdEZpbGUsIGJvb2wgaGFzCiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24odm0sIGdsb2JhbE9iamVjdCwgKGhhc0V4Y2VwdGlvbikgPyB2YWx1
ZSA6IEpTVmFsdWUoKSwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQgR2xvYmFsT2JqZWN0OjpyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGF1dG8qIGdsb2JhbCA9IGpzQ2FzdDxHbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpOworICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsLCBleGNl
cHRpb24tPnZhbHVlKCkpOworICAgIGJvb2wgaGlkZU5vUmV0dXJuID0gdHJ1ZTsKKyAgICBpZiAo
aGlkZU5vUmV0dXJuKQorICAgICAgICBqc2NFeGl0KEVYSVRfRVhDRVBUSU9OKTsKK30KKwogc3Rh
dGljIHZvaWQgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvbW1h
bmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQogewogICAgIFZlY3RvcjxTY3JpcHQ+JiBz
Y3JpcHRzID0gb3B0aW9ucy5tX3NjcmlwdHM7CkBAIC0zMTc2LDcgKzMyNDcsNyBAQCBpbnQgcnVu
SlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5j
JiBmdW5jKQogICAgICAgICBmdW5jKHZtLCBnbG9iYWxPYmplY3QsIHN1Y2Nlc3MpOwogICAgICAg
ICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5ydW5S
dW5Mb29wKCk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnJ1blJ1bkxvb3AoKTsKICAgICB7
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICBpZiAob3B0aW9ucy5t
X2ludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1MjYwNzVhZmRl
YmFjOWFkYmEyNTI2NmJhLi41MGQ2YmJhNTQ5OGMwMmI1MjI0YmIzN2M2NWQ3YWIyZDE4MmU4YjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMzYsNiArMzYsNyBAQAogICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8o
RXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKKyAgICBtYWNybyhGaW5hbGl6YXRpb25S
ZWdpc3RyeSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwK
ICAgICBtYWNybyhJbnRsKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk1NmRhNDE0MDFiMTZhZmRlZDhl
MWFkMzljMjQ2Y2QzNmJmYjUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisKKyNpbmNsdWRlICJK
U1Byb21pc2UuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIK
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNl
IERlZmVycmVkV29ya1RpbWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworfQorCitEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIoVk0mIHZt
KQorICAgIDogQmFzZSh2bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3Jr
KFZNJiB2bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2so
KSk7CisgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIoKTsKKyAgICBpZiAo
IW1fcnVuVGFza3MpIHsKKyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
YXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGRhdGFM
b2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9u
OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVh
ZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3BlbmRpbmdUaWNrZXRz
LmNvbnRhaW5zKHRpY2tldCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBu
b3cgdG8gc2NoZWR1bGUgd29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sg
PSB0cnVlOworICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBjYW4gcmVsZWFzZSBh
bnkgd2Vha3JlZnMgaGVyZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3luY2hyb25vdXNKU0V4
ZWN1dGlvbigpOworCisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CisgICAgICAgICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAoRXhjZXB0aW9uKiBl
eGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgc2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3Ao
Z2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
bS5kcmFpbk1pY3JvdGFza3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uRm9y
SW5zcGVjdGlvbigpKTsKKworICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgICAg
ICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9v
cFdoZW5BbGxUaWNrZXRzRmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgp
OworCisgICAgbV90YXNrTG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1l
cjo6cnVuUnVuTG9vcCgpCit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgp
ID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91bGRTdG9wUnVuTG9v
cFdoZW5BbGxUaWNrZXRzRmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5z
aXplKCkpCisgICAgICAgIFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERlZmVycmVkV29ya1Rp
bWVyOjphZGRQZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8
SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJ
c0hvbGRpbmdBUElMb2NrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXBlbmRl
bmNpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkg
IT0gdGlja2V0KTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5hZGQodGlj
a2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkgeworICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJi
b3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsK
KyAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7
CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRl
cm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJh
d1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5k
VmVjdG9yKGRlcGVuZGVuY2llcyk7CisgICAgfQorfQorCitib29sIERlZmVycmVkV29ya1RpbWVy
OjpoYXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZt
KCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0dXJuIG1fcGVuZGlu
Z1RpY2tldHMuY29udGFpbnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6
aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlNDZWxsKiBkZXBlbmRl
bmN5KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQ
SUxvY2soKSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSk7
CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRpY2tldCk7CisgICAg
cmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9vbCBEZWZlcnJlZFdv
cmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQo
dGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGJvb2wg
cmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKworICAgIGlmIChyZXN1
bHQpCisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJv
c2UsICJDYW5jZWxpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29v
bihUaWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3Rhc2tMb2NrKTsKKyAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBX
VEZNb3ZlKHRhc2spKSk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1
bm5pbmdUYXNrKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVm
ZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxYThhYmM5ZWM0Mjg1NmU5ZGQzYTFjYzNiYzVjZTg2
ZGI0ZjY5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJKU1J1bkxvb3BUaW1lci5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgorCisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpT
UHJvbWlzZTsKK2NsYXNzIFZNOworY2xhc3MgSlNDZWxsOworCitjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBEZWZlcnJlZFdvcmtUaW1lciBmaW5hbCA6IHB1YmxpYyBKU1J1bkxvb3BUaW1lciB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOworCisgICAgdm9pZCBkb1dv
cmsoVk0mKSBmaW5hbDsKKworICAgIHVzaW5nIFRpY2tldCA9IEpTT2JqZWN0KjsKKyAgICB2b2lk
IGFkZFBlbmRpbmdXb3JrKFZNJiwgVGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVw
ZW5kZW5jaWVzKTsKKyAgICBib29sIGhhc1BlbmRpbmdXb3JrKFRpY2tldCk7CisgICAgYm9vbCBo
YXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7Cisg
ICAgYm9vbCBjYW5jZWxQZW5kaW5nV29yayhUaWNrZXQpOworCisgICAgdXNpbmcgVGFzayA9IEZ1
bmN0aW9uPHZvaWQoKT47CisgICAgdm9pZCBzY2hlZHVsZVdvcmtTb29uKFRpY2tldCwgVGFzayYm
KTsKKworICAgIHZvaWQgc3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9
CisKKyAgICB2b2lkIHJ1blJ1bkxvb3AoKTsKKworICAgIHN0YXRpYyBSZWY8RGVmZXJyZWRXb3Jr
VGltZXI+IGNyZWF0ZShWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEZWZlcnJlZFdvcmtUaW1lcih2bSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEZWZlcnJl
ZFdvcmtUaW1lcihWTSYpOworCisgICAgTG9jayBtX3Rhc2tMb2NrOworICAgIGJvb2wgbV9ydW5U
YXNrcyB7IHRydWUgfTsKKyAgICBib29sIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0
c0ZpbmlzaCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsgZmFs
c2UgfTsKKyAgICBEZXF1ZTxzdGQ6OnR1cGxlPFRpY2tldCwgVGFzaz4+IG1fdGFza3M7CisgICAg
SGFzaE1hcDxUaWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1RpY2tldHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTA2OThmMGM5MTQ5ZWU5NzFjM2E5ZmNhZjE4ZDg3NjY2MmMzYzBkMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCisKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcikgfTsKKwordm9p
ZCBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSJfcywgTmFtZUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmluYWxpemF0aW9uUmVn
aXN0cnkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CisKK0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5LCBj
b25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSkKK3sKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVu
Y3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpbmFsaXphdGlvblJlZ2lzdHJ5
IikpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RG
aW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLmlzQ2FsbGFibGUodm0pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gRmluYWxpemF0
aW9uUmVnaXN0cnkgc2hvdWxkIGJlIGEgZnVuY3Rpb24iX3MpOworCisgICAgSlNPYmplY3QqIG5l
d1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVy
ZSogZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1cmUgPSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkg
PT0gbmV3VGFyZ2V0CisgICAgICAgID8gZ2xvYmFsT2JqZWN0LT5maW5hbGl6YXRpb25SZWdpc3Ry
eVN0cnVjdHVyZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5l
d1RhcmdldCktPmZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0
ZSh2bSwgZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpKSk7Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFlMTY4Y2NjY2E2ZTZiZGIxMDU1NzU2ZDEwNDE3YWRk
NjkyNzc2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTsKKworY2xhc3MgRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKworICAgIHN0YXRpYyBGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVy
U2V0dGVyKikKKyAgICB7CisgICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgcHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSopOworfTsKKworU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciwgSW50
ZXJuYWxGdW5jdGlvbik7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MTFmOWY4ZjY5MzAxN2RkZjM5ZjhmYjQ3NDU4NDkzZGM5OTBiODgwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdpc3RyeSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworCit2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisK
KyAgICAvLyBXZSBjYW4ndCBtYWtlIHRoaXMgYSBwcm9wZXJ0eSBuYW1lIGJlY2F1c2UgaXQncyBh
IHJlc2V2ZXJlZCB3b3JkIGluIEMrKy4uLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZWdpc3RlciIpLCBwcm90
b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVnaXN0
ZXIiKSwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3Rh
dGljIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFko
IXZhbHVlLmlzT2JqZWN0KCkpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8qIGdy
b3VwID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGFzT2JqZWN0
KHZhbHVlKSk7CisgICAgaWYgKExJS0VMWShncm91cCkpCisgICAgICAgIHJldHVybiBncm91cDsK
KworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgRmluYWxp
emF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uUmVnaXN0cnkgb2Jq
ZWN0Il9zKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3RyeVJlZ2lzdGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CisgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJlcXVpcmVzIGFu
IG9iamVjdCBhcyB0aGUgdGFyZ2V0Il9zKTsKKworICAgIEpTVmFsdWUgaG9sZGluZ3MgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOworICAgIGlmIChzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCB0YXJn
ZXQsIGhvbGRpbmdzKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgInJlZ2lzdGVyIGV4cGVjdHMgdGhlIHRhcmdldCBvYmplY3QgYW5kIHRoZSBo
b2xkaW5ncyBwYXJhbWV0ZXIgYXJlIG5vdCB0aGUgc2FtZS4gT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0
IGNhbiBuZXZlciBiZSBjb2xsZWN0ZWQiX3MpOworCisgICAgSlNWYWx1ZSB1bnJlZ2lzdGVyVG9r
ZW4gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOworICAgIGlmICghdW5yZWdpc3RlclRva2VuLmlz
VW5kZWZpbmVkKCkgJiYgIXVucmVnaXN0ZXJUb2tlbi5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWly
ZXMgYW4gb2JqZWN0IGFzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7CisKKyAgICBncm91
cC0+cmVnaXN0ZXJUYXJnZXQodm0sIHRhcmdldC5nZXRPYmplY3QoKSwgaG9sZGluZ3MsIHVucmVn
aXN0ZXJUb2tlbik7CisgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5y
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6
YXRpb25SZWdpc3RyeSh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGF1dG8qIHRv
a2VuID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KSkgeworICAgICAgICBib29sIHJlc3VsdCA9IGdyb3VwLT51bnJlZ2lzdGVyKHZtLCB0b2tlbik7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworICAg
IH0KKworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1
bnJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBpcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4i
X3MpOworfQorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1YTUz
NTM2MWM5OGRmNjhmNTlmZTcxMzJjNWMzNzc5MGIwN2I4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpT
Tm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXphdGlv
blJlZ2lzdHJ5UHJvdG90eXBlPih2bS5oZWFwKSkgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQorICAgIHsgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
Kik7Cit9OworCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAppbmRleCA5MzE3NTgzYTFiNjM5ZDNhNDdlMGQ1ZjA0
NjQ2NTY5ZDc2NGVjNDVhLi4xYTAwZjQ5NmJjN2M2NzgwMTNhZGZkNzQzYThiY2JjMTc2ZmNiMjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjgzZDYzZGYyNTA4ZDRmNTdl
ODRmYWVmMWIxZGQ2MTAzNjdkMmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwyMzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKworI2lu
Y2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6c19pbmZvID0g
eyAiRmluYWxpemF0aW9uUmVnaXN0cnkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpIH07CisKK1N0cnVj
dHVyZSogSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5KiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5h
bGl6YXRpb25SZWdpc3RyeT4odm0uaGVhcCkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0
cnVjdHVyZSk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsYmFjayk7Cisg
ICAgcmV0dXJuIGluc3RhbmNlOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoY2FsbGJhY2stPmlzQ2FsbGFibGUodm0pKTsK
KyAgICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjpp
bnRlcm5hbEZpZWxkKGluZGV4KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlc1tpbmRleF0p
OworICAgIGludGVybmFsRmllbGQoRmllbGQ6OkNhbGxiYWNrKS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKGNhbGxiYWNrKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KGNlbGwpOworCisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxsTG9jaygpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGl0ZXIgOiB0aGlzT2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAo
YXV0byYgcmVnaXN0cmF0aW9uIDogaXRlci52YWx1ZSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHJlZ2lzdHJhdGlvbi5ob2xkaW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0
cmF0aW9uIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZSkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQocmVnaXN0cmF0aW9uLmhvbGRpbmdzKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGl0ZXIgOiB0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAo
YXV0byYgaG9sZGluZ3MgOiBpdGVyLnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
aG9sZGluZ3MpOworICAgIH0KKyAgICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogdGhpc09iamVjdC0+
bV9ub1VucmVnaXN0cmF0aW9uRGVhZCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3Mp
OworCisgICAgc2l6ZV90IHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzID0gdGhpc09iamVjdC0+bV9k
ZWFkUmVnaXN0cmF0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3Qt
Pm1fZGVhZFJlZ2lzdHJhdGlvbnMpOjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1ZmZl
clNpemVzSW5CeXRlcyArPSB0aGlzT2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zLmNhcGFjaXR5
KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6Oktl
eVZhbHVlUGFpclR5cGUpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmpl
Y3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0
aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB0b3Rh
bEJ1ZmZlclNpemVzSW5CeXRlcyArPSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFk
LmNhcGFjaXR5KCkgKiBzaXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0
aW9uTGl2ZS50YWtlTGFzdCgpKSk7CisgICAgdmlzaXRvci52bSgpLmhlYXAucmVwb3J0RXh0cmFN
ZW1vcnlWaXNpdGVkKHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzKTsKK30KKwordm9pZCBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KEpTQ2VsbCogdGFibGUpCit7CisgICAgc3RhdGljX2Nh
c3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHRhYmxlKS0+fkpTRmluYWxpemF0aW9uUmVnaXN0
cnkoKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseShWTSYgdm0pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygp
KTsKKworICAgIGF1dG8gcmVtb3ZlRnJvbVZlY3RvciA9IFtdIChhdXRvJiB2ZWN0b3IsIHNpemVf
dCBwb3NpdGlvbikgeworICAgICAgICBzdGQ6OnN3YXAodmVjdG9yW3Bvc2l0aW9uXSwgdmVjdG9y
Lmxhc3QoKSk7CisgICAgICAgIHJldHVybiB2ZWN0b3IudGFrZUxhc3QoKTsKKyAgICB9OworCisg
ICAgYm9vbCByZWFkaWVkQ2VsbCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX25vVW5yZWdpc3RyYXRpb25MaXZlLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCgh
bV9ub1VucmVnaXN0cmF0aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5o
ZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0uaG9sZGluZ3MuZ2V0KCkuYXND
ZWxsKCkpKTsKKyAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlv
bkxpdmVbaV0udGFyZ2V0KSkgeworICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5h
cHBlbmQocmVtb3ZlRnJvbVZlY3RvcihtX25vVW5yZWdpc3RyYXRpb25MaXZlLCBpKS5ob2xkaW5n
cyk7CisgICAgICAgICAgICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBtX2xpdmVSZWdpc3RyYXRpb25zLnJlbW92ZUlmKFsmXSAoYXV0byYgYnVja2V0KSAtPiBi
b29sIHsKKyAgICAgICAgQVNTRVJUKGJ1Y2tldC52YWx1ZS5zaXplKCkpOworCisgICAgICAgIGJv
b2wga2V5SXNEZWFkID0gIXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LmtleSk7CisKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBidWNrZXQudmFsdWUuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgIEFTU0VSVCghYnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8
IHZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgp
KSk7CisgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLnRh
cmdldCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAg
ICAgICBtX25vVW5yZWdpc3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tl
dC52YWx1ZSwgaSkuaG9sZGluZ3MpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGRlYWRMaXN0ID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5hZGQoYnVja2V0
LmtleSwgRGVhZFJlZ2lzdHJhdGlvbnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlYWRMaXN0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkp
LmhvbGRpbmdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVhZGllZENl
bGwgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAg
ICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNr
ZXQudmFsdWUsIGkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAhYnVja2V0LnZhbHVl
LnNpemUoKTsKKyAgICB9KTsKKworICAgIGlmICghdm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1Bl
bmRpbmdXb3JrKHRoaXMpICYmIChyZWFkaWVkQ2VsbCB8fCBkZWFkQ291bnQobG9ja2VyKSkpIHsK
KyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCB0aGlzLCB7
IH0pOworICAgICAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3Jr
KHRoaXMpKTsKKyAgICAgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24o
dGhpcywgW3RoaXNdIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICAgICAgICAgIHRoaXMtPnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5n
V29yayh0aGlzKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9u
UmVnaXN0cnk6OnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgd2hpbGUgKEpTVmFsdWUgdmFsdWUg
PSB0YWtlRGVhZEhvbGRpbmdzVmFsdWUoKSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOworICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjaygpLCBhcmdzLCAiVGhpcyBzaG91bGQgbm90IGJlIHZpc2libGU6IHBs
ZWFzZSByZXBvcnQgYSBidWcgdG8gYnVncy53ZWJraXQub3JnIik7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTRmluYWxp
emF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpCit7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAo
bV9ub1VucmVnaXN0cmF0aW9uRGVhZC5zaXplKCkpCisgICAgICAgIHJlc3VsdCA9IG1fbm9VbnJl
Z2lzdHJhdGlvbkRlYWQudGFrZUxhc3QoKS5nZXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0
byBpdGVyID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5iZWdpbigpOworICAgICAgICBpZiAoaXRlciA9
PSBtX2RlYWRSZWdpc3RyYXRpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPnZhbHVlLnNpemUoKSk7CisgICAgICAgIHJlc3VsdCA9
IGl0ZXItPnZhbHVlLnRha2VMYXN0KCkuZ2V0KCk7CisgICAgICAgIGlmICghaXRlci0+dmFsdWUu
c2l6ZSgpKQorICAgICAgICAgICAgbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcik7Cisg
ICAgfQorCisgICAgaWYgY29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXRlci52YWx1ZS5zaXplKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQoVk0m
IHZtLCBKU09iamVjdCogdGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKQor
eworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgUmVnaXN0cmF0
aW9uIHJlZ2lzdHJhdGlvbjsKKyAgICByZWdpc3RyYXRpb24udGFyZ2V0ID0gdGFyZ2V0OworICAg
IHJlZ2lzdHJhdGlvbi5ob2xkaW5ncy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGhvbGRpbmdzKTsK
KyAgICBpZiAodG9rZW4uaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9u
TGl2ZS5hcHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBtX2xpdmVSZWdpc3RyYXRpb25zLmFkZChqc1NlY3VyZUNhc3Q8SlNPYmpl
Y3QqPih2bSwgdG9rZW4pLCBMaXZlUmVnaXN0cmF0aW9ucygpKTsKKyAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICB9CisgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcyk7Cit9CisKK2Jvb2wgSlNGaW5hbGl6YXRpb25SZWdp
c3RyeTo6dW5yZWdpc3RlcihWTSYsIEpTT2JqZWN0KiB0b2tlbikKK3sKKyAgICAvLyBXZSBkb24n
dCBuZWVkIHRvIHdyaXRlIGJhcnJpZXIgb3Vyc2VsdmVzIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIG9u
bHkgcG9pbnQgdG8gbGVzcyB0aGluZ3MgYWZ0ZXIgdGhpcyBmaW5pc2hlcy4KKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9saXZlUmVn
aXN0cmF0aW9ucy5yZW1vdmUodG9rZW4pOworICAgIHJlc3VsdCB8PSBtX2RlYWRSZWdpc3RyYXRp
b25zLnJlbW92ZSh0b2tlbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYp
Cit7CisgICAgc2l6ZV90IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXplKCk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBpdGVyIDogbV9saXZlUmVnaXN0cmF0aW9ucykKKyAgICAgICAg
Y291bnQgKz0gaXRlci52YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3Np
emVfdCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2Vs
bExvY2s+JikKK3sKKyAgICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNp
emUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQor
ICAgICAgICBjb3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsK
K30KKworU3RyaW5nIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBK
U0M6OkpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9z
OworfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkNWNkMzhjZjBiYTdkODI5OTFj
ZGI1YzBhYWExZmY2NDQyYWY2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsPDE+OworCisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVp
bnQ4X3QgeyAKKyAgICAgICAgQ2FsbGJhY2ssCisgICAgfTsKKworICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5lQ2FwYWNpdHkgPT0gMFUp
OworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHZtLmZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2U8bW9kZT4oKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBp
bml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpz
TnVsbCgpLAorICAgICAgICB9IH07CisgICAgfQorCisgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVu
a25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjpp
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNl
OjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisKKyAgICBK
U09iamVjdCogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRl
cm5hbEZpZWxkKEZpZWxkOjpDYWxsYmFjaykuZ2V0KCkpOyB9CisKKyAgICBzdGF0aWMgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGNhbGxi
YWNrKTsKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogY3JlYXRlV2l0aEluaXRp
YWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAg
IHZvaWQgcnVuRmluYWxpemF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVjdCopOworCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0m
KTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBKU1ZhbHVlIHRha2VEZWFkSG9s
ZGluZ3NWYWx1ZSgpOworCisgICAgYm9vbCB1bnJlZ2lzdGVyKFZNJiwgSlNPYmplY3QqIHRva2Vu
KTsKKyAgICAvLyB0b2tlbiBzaG91bGQgYmUgYSBKU09iamVjdCBvciB1bmRlZmluZWQuCisgICAg
dm9pZCByZWdpc3RlclRhcmdldChWTSYsIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG9sZGlu
Z3MsIEpTVmFsdWUgdG9rZW4pOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGxpdmVD
b3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
aXplX3QgZGVhZENvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOworCitwcml2YXRlOgor
ICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCogY2FsbGJhY2sp
OworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopOworCisgICAgc3RydWN0IFJlZ2lzdHJhdGlvbiB7CisgICAgICAgIEpTT2Jq
ZWN0KiB0YXJnZXQ7CisgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBob2xkaW5nczsKKyAg
ICB9OworCisgICAgdXNpbmcgTGl2ZVJlZ2lzdHJhdGlvbnMgPSBWZWN0b3I8UmVnaXN0cmF0aW9u
PjsKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRoZSB0YXJnZXQgYW55bW9yZSBzaW5jZSB3ZSBrbm93
IGl0J3MgZGVhZC4KKyAgICB1c2luZyBEZWFkUmVnaXN0cmF0aW9ucyA9IFZlY3RvcjxXcml0ZUJh
cnJpZXI8VW5rbm93bj4+OworCisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IGJvdGhlciBwdXR0
aW5nIGEgd3JpdGUgYmFycmllciBvbiB0aGUga2V5IG9yIHRhcmdldCBiZWNhdXNlIHRoZXkgYXJl
IHdlYWtseSByZWZlcmVuY2VkLgorICAgIEhhc2hNYXA8SlNPYmplY3QqLCBMaXZlUmVnaXN0cmF0
aW9ucz4gbV9saXZlUmVnaXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPEpTT2JqZWN0KiwgRGVhZFJl
Z2lzdHJhdGlvbnM+IG1fZGVhZFJlZ2lzdHJhdGlvbnM7CisgICAgLy8gV2UgdXNlIGEgc2VwYXJh
dGUgbGlzdCBmb3Igbm8gdW5yZWdpc3RlciB2YWx1ZXMgaW5zdGVhZCBvZiBhIHNwZWNpYWwga2V5
IGluIHRoZSB0YWJsZXMgYWJvdmUgYmVjYXVzZSB0aGUgSGFzaE1hcCBoYXMgYSB0ZW5kZW5jeSB0
byByZWFsbG9jYXRlIHVuZGVyIHVzIHdoZW4gaXRlcmF0aW5nLi4uCisgICAgTGl2ZVJlZ2lzdHJh
dGlvbnMgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZTsKKyAgICBEZWFkUmVnaXN0cmF0aW9ucyBtX25v
VW5yZWdpc3RyYXRpb25EZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDNl
YTMwZGI5ZTJlNGQ1MzhkYThmMjMyY2Y4OWI5ZTRjOTgyMzcwMDYuLjZkNzBlZmNlNTYyZTE2Y2Vl
ZGY5OTE4Y2VmOTIyMTQ0MzVmZjFjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTYxLDYgKzYxLDggQEAKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiRXJyb3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5
cGUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCkBAIC05OSw2
ICsxMDEsNyBAQAogI2luY2x1ZGUgIkpTRGF0YVZpZXcuaCIKICNpbmNsdWRlICJKU0RhdGFWaWV3
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgorI2luY2x1ZGUgIkpTRmluYWxp
emF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0zODcsNiAr
MzkwLDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVy
Q3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJF
dmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgJnJl
cG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVs
dExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIs
IC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0yMTk5LDYgKzIyMDMsMTEgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cXVldWVNaWNyb3Rhc2soUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogICAgIHZt
KCkucXVldWVNaWNyb3Rhc2soKnRoaXMsIFdURk1vdmUodGFzaykpOwogfQogCit2b2lkIEpTR2xv
YmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2Jq
ZWN0KiwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgZGF0YUxvZ0xuKCJVbmNhdWdodCBF
eGNlcHRpb24gYXQgcnVuIGxvb3A6ICIsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7Cit9CisKIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnNldERlYnVnZ2VyKERlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBt
X2RlYnVnZ2VyID0gZGVidWdnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIy
MDMxNGMxLi40NzRmZGU2NGZmNmNhZTI4M2U5OWU0NmVlYzgwNTA4MWJjMGY5YmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEzOCw2
ICsxMzgsOCBAQCBjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9IHRydWU7CiAg
ICAgbWFjcm8oSlNQcm9taXNlLCBwcm9taXNlLCBwcm9taXNlLCBKU1Byb21pc2UsIFByb21pc2Us
IG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhCaWdJbnQsIGJpZ0lu
dCwgYmlnSW50T2JqZWN0LCBCaWdJbnRPYmplY3QsIEJpZ0ludCwgb2JqZWN0LCBPcHRpb25zOjp1
c2VCaWdJbnQoKSkgXAogICAgIG1hY3JvKFdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RSZWYsIHdl
YWtPYmplY3RSZWYsIEpTV2Vha09iamVjdFJlZiwgV2Vha1JlZiwgb2JqZWN0LCBPcHRpb25zOjp1
c2VXZWFrUmVmcygpKSBcCisgICAgbWFjcm8oRmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXph
dGlvblJlZ2lzdHJ5LCBmaW5hbGl6YXRpb25SZWdpc3RyeSwgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSwgRmluYWxpemF0aW9uUmVnaXN0cnksIG9iamVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkg
XAorCiAKICNkZWZpbmUgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUobWFj
cm8pIFwKICAgICBtYWNybyhTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0
ZXJhdG9yLCBKU1N0cmluZ0l0ZXJhdG9yLCBTdHJpbmdJdGVyYXRvciwgaXRlcmF0b3IsIHR5cGVF
eHBvc2VkQnlEZWZhdWx0KSBcCkBAIC0yMjcsNiArMjI5LDkgQEAgc3RydWN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIHZvaWQgKCpQcm9taXNlUmVqZWN0aW9uVHJhY2tl
clB0cikoSlNHbG9iYWxPYmplY3QqLCBKU1Byb21pc2UqLCBKU1Byb21pc2VSZWplY3Rpb25PcGVy
YXRpb24pOwogICAgIFByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyIHByb21pc2VSZWplY3Rpb25U
cmFja2VyOwogCisgICAgdHlwZWRlZiB2b2lkICgqUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2
ZW50TG9vcFB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKyAgICBSZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3A7CisKICAgICB0eXBlZGVmIFN0cmluZyAoKkRlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRy
KSgpOwogICAgIERlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRMYW5ndWFnZTsKIApA
QCAtNDUzLDIxICs0NTgsNiBAQCBwdWJsaWM6CiAgICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207
CiAgICAgUmVnRXhwR2xvYmFsRGF0YSBtX3JlZ0V4cEdsb2JhbERhdGE7CiAKLSAgICBKU0NhbGxl
ZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9zdGFja092ZXJm
bG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0KLQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzdHJpbmdJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBTZXRXYXRjaHBvaW50U2V0
KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2lu
dFNldCYgc2V0QWRkV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0Y2hwb2ludFNl
dDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQo
KSB7IHJldHVybiBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBhcnJheUpvaW5XYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUpvaW5X
YXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbnVtYmVyVG9TdHJpbmdX
YXRjaHBvaW50U2V0KCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVz
ZUpJVCgpKTsKLSAgICAgICAgcmV0dXJuIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0Owot
ICAgIH0KICAgICAvLyBJZiB0aGlzIGhhc24ndCBiZWVuIGludmFsaWRhdGVkLCBpdCBtZWFucyB0
aGUgYXJyYXkgaXRlcmF0b3IgcHJvdG9jb2wKICAgICAvLyBpcyBub3Qgb2JzZXJ2YWJsZSB0byB1
c2VyIGNvZGUgeWV0LgogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0OwpAQCAtNDk0LDYgKzQ4NCwyMyBAQCBwdWJsaWM6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+PiBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludDsKIAorcHVi
bGljOgorICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQorCisgICAgSW5saW5lV2F0
Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJu
IG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNo
cG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9t
YXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRT
ZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHN0
cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zdHJpbmdJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1h
cFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnRTZXQ7IH0KKyAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9z
ZXRBZGRXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlTcGVj
aWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldDsg
fQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9pbnRTZXQoKSB7IHJl
dHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0
JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOworICAgICAgICByZXR1cm4gbV9udW1iZXJUb1N0cmlu
Z1dhdGNocG9pbnRTZXQ7CisgICAgfQorCiAgICAgYm9vbCBpc0FycmF5UHJvdG90eXBlSXRlcmF0
b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc01hcFByb3RvdHlw
ZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAgIGJvb2wgaXNTZXRQ
cm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKQEAgLTgyNCw2
ICs4MzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFj
ayhWTSYgdm0sIEpTT2JqZWN0KiBmdW5jdGlvbikgeyBtX3VuaGFuZGxlZFJlamVjdGlvbkNhbGxi
YWNrLnNldCh2bSwgZnVuY3Rpb24pOyB9CiAgICAgSlNPYmplY3QqIHVuaGFuZGxlZFJlamVjdGlv
bkNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV91bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjay5n
ZXQoKTsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworCiAgICAgSlNPYmplY3QqIGFycmF5
QnVmZmVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJl
LmNvbnN0cnVjdG9yKHRoaXMpOyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJQcm90b3R5
cGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCmluZGV4IDg4MzA4M2VjYjc2N2QwODgz
ZjlhNDkyMWYzOTlmNTkwODgxM2NmZGYuLjRmMzRiNmI0OWNhODllNjY4Y2I5YTI2NzEwMzIzY2Fl
MTc4NjRiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNw
cApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAKICNpbmNsdWRl
ICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWlj
cm90YXNrLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5j
dGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlc29sdmVQcm9taXNlRnVu
Y3Rpb24oKSwgdGhpcywgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNhbmNlbFBlbmRpbmdQcm9t
aXNlKHRoaXMpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0
aGlzKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnJlamVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEpT
UHJvbWlzZTo6cmVqZWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQogICAgICAgICBjYWxsRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5yZWplY3RQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywgdmFsdWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIH0KLSAgICB2bS5wcm9t
aXNlVGltZXItPmNhbmNlbFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAgIHZtLmRlZmVycmVkV29y
a1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnJl
amVjdEFzSGFuZGxlZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmlu
ZGV4IGFkZmI3OWZkZGE4MTgzY2E5MTMxNWM1MjA2NDcwZDE0MjMxMjk0NTQuLjliZTgzY2U4YjE4
NGE1ZGQwZmMzZjFkNTc4N2Q1YWE0NmZkZWM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDg2LDYgKzQ4Niw3IEBAIGNvbnN0ZXhwciBib29s
IGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCB1c2VF
YWdlcldlYkFzc2VtYmx5TW9kdWxlSGFzaGluZywgZmFsc2UsIE5vcm1hbCwgIlVubmFtZWQgV2Vi
QXNzZW1ibHkgbW9kdWxlcyBhcmUgaWRlbnRpZmllZCBpbiBiYWNrdHJhY2VzIHRocm91Z2ggdGhl
aXIgaGFzaCwgaWYgYXZhaWxhYmxlLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVm
ZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVmZXJl
bmNlcyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMu
IikgXAorICAgIC8qIEZJWE1FOiBXZSBzaG91bGQgbWFrZSBzdXJlIGZpbmFsaXplcnMgZG9uJ3Qg
cnVuIGZvciBkZXRhY2hlZCB3aW5kb3dzIGJlZm9yZSBlbmFibGluZyBXZWFrUmVmcyBieSBkZWZh
dWx0LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4ICovIFwK
ICAgICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFr
UmVmIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9ybWFs
LCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoQm9v
bCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3
ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxz
ZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lk
ZWQuIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlz
ZVRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZmQyYjAwODQzMDI2MjYxODU5ODE5
NTg5Zjc4NGNiYmQzNjNkMDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
UHJvbWlzZVRpbWVyLmgiCi0KLSNpbmNsdWRlICJKU1Byb21pc2UuaCIKLSNpbmNsdWRlICJTdHJv
bmdJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotbmFtZXNwYWNlIFByb21pc2VUaW1lckludGVybmFsIHsKLXN0
YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci19Ci0KLVByb21pc2VUaW1lcjo6
UHJvbWlzZVRpbWVyKFZNJiB2bSkKLSAgICA6IEJhc2Uodm0pCi17Ci19Ci0KLXZvaWQgUHJvbWlz
ZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQotewotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNI
b2xkaW5nQVBJTG9jaygpKTsKLSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAgICBjYW5jZWxUaW1l
cigpOwotICAgIGlmICghbV9ydW5UYXNrcykgewotICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHko
KSkgewotICAgICAgICBhdXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtlTGFzdCgpOwot
ICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5n
IHdvcmsgb24gcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgICAgICAvLyBX
ZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgotICAgICAgICBpZiAo
bV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxs
b3cgdGFza3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJy
ZW50bHlSdW5uaW5nVGFzayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygp
OyAKLQotICAgICAgICAgICAgdGFzaygpOwotICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tz
KCk7Ci0KLSAgICAgICAgICAgIG1fdGFza0xvY2subG9jaygpOwotICAgICAgICAgICAgbV9jdXJy
ZW50bHlSdW5uaW5nVGFzayA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1f
cGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFBy
b21pc2VzRmluaXNoKQotICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwotCi0gICAg
bV90YXNrTG9jay51bmxvY2soKTsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3Ao
KQotewotICAgIEFTU0VSVCghbV9hcGlMb2NrLT52bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5n
QVBJTG9jaygpKTsKLSAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2Nr
LT52bSgpLT5ydW5Mb29wKCkpOwotICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlz
ZXNGaW5pc2ggPSB0cnVlOwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpCi0gICAg
ICAgIFJ1bkxvb3A6OnJ1bigpOwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1By
b21pc2UoVk0mIHZtLCBKU1Byb21pc2UqIHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYm
IGRlcGVuZGVuY2llcykKLXsKLSAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQ
SUxvY2soKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQp
OwotCi0gICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0
b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAg
ICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBu
ZXcgcGVuZGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICBkZXBl
bmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFk
ZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkp
OwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNp
ZXMpOwotICAgIH0KLX0KLQotYm9vbCBQcm9taXNlVGltZXI6Omhhc1BlbmRpbmdQcm9taXNlKEpT
UHJvbWlzZSogdGlja2V0KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1Byb21pc2VzLmNvbnRh
aW5zKHRpY2tldCk7Ci19Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5k
aW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQotewotICAg
IEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0g
ICAgQVNTRVJUKG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpOwotCi0gICAgYXV0
byByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5nZXQodGlja2V0KTsKLSAgICByZXR1cm4gcmVz
dWx0LmNvbnRhaW5zKGRlcGVuZGVuY3kpOwotfQotCi1ib29sIFByb21pc2VUaW1lcjo6Y2FuY2Vs
UGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+
dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBib29sIHJlc3VsdCA9
IG1fcGVuZGluZ1Byb21pc2VzLnJlbW92ZSh0aWNrZXQpOwotCi0gICAgaWYgKHJlc3VsdCkKLSAg
ICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxp
bmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpzY2hlZHVsZVdvcmtTb29uKEpTUHJvbWlzZSogdGlj
a2V0LCBUYXNrJiYgdGFzaykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsK
LSAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2sp
KSk7Ci0gICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQot
ICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2E0ZDBmMjlhZTJkMjhjZjNlNDA0YmVmYjU0NmY1M2NkMGJi
YWU5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCi0jaW5jbHVk
ZSAiU3Ryb25nLmgiCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xh
c3MgSlNQcm9taXNlOwotY2xhc3MgVk07Ci1jbGFzcyBKU0NlbGw7Ci0KLWNsYXNzIFByb21pc2VU
aW1lciBmaW5hbCA6IHB1YmxpYyBKU1J1bkxvb3BUaW1lciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcg
QmFzZSA9IEpTUnVuTG9vcFRpbWVyOwotCi0gICAgdm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsKLQot
ICAgIHZvaWQgYWRkUGVuZGluZ1Byb21pc2UoVk0mLCBKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25n
PEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhh
c1BlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBK
U0NlbGwqIGRlcGVuZGVuY3kpOwotICAgIC8vIEpTUHJvbWlzZSBzaG91bGQgaGFuZGxlIGNhbmNl
bGluZyB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIG9yIHJlamVjdGVkLgotICAgIGJvb2wg
Y2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKik7Ci0KLSAgICB1c2luZyBUYXNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKLSAgICB2b2lkIHNjaGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiwgVGFz
ayYmKTsKLQotICAgIHZvaWQgc3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNl
OyB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJ1blJ1bkxvb3AoKTsKLQotICAgIHN0
YXRpYyBSZWY8UHJvbWlzZVRpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUHJvbWlzZVRpbWVyKHZtKSk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIFByb21pc2VUaW1lcihWTSYpOwotCi0gICAgSGFzaE1hcDxKU1Byb21pc2UqLCBWZWN0b3I8
U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdQcm9taXNlczsKLSAgICBMb2NrIG1fdGFza0xvY2s7
Ci0gICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9zaG91bGRTdG9wUnVu
TG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2N1cnJlbnRs
eVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8c3RkOjp0dXBsZTxKU1Byb21pc2Uq
LCBUYXNrPj4gbV90YXNrczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhY2Iz
NGM5ZDNkYjI2ZTU4YTYxZmZkYjMxNzE3YTUxZTY4MzFmYzVkLi5lMjExMzk3OGEzMjRlZDdiNGE1
ZjEwZDFiM2QwNWJmOWU0Y2ZiM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcApAQCAtMzIsNiArMzIsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCituYW1lc3BhY2UgU3RydWN0dXJlSURUYWJs
ZUludGVybmFsIHsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisK
IFN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUoKQogICAgIDogbV90YWJsZShtYWtl
VW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+KHNfaW5pdGlhbFNpemUpKQogICAgICwgbV9z
aXplKDEpCkBAIC0xNjEsMTEgKzE2NSwxNCBAQCBTdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRFRhYmxl
OjphbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHRhYmxlKClbc3RydWN0dXJl
SW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzID0gZW5jb2RlKHN0cnVjdHVyZSwgcmVzdWx0KTsK
ICAgICBtX3NpemUrKzsKICAgICBBU1NFUlQoIWlzTnVrZWQocmVzdWx0KSk7CisKKyAgICBkYXRh
TG9nTG5JZihTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2UsICJBbGxvY2F0ZWQgU3Ry
dWN0dXJlSUQgIiwgcmVzdWx0LCAiIGZvciBTdHJ1Y3R1cmUgIiwgUmF3UG9pbnRlcihzdHJ1Y3R1
cmUpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRl
YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQp
CiB7CisgICAgZGF0YUxvZ0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVybmFsOjp2ZXJib3NlLCAi
RGVhbGxvY2F0ZWQgU3RydWN0dXJlSUQgIiwgc3RydWN0dXJlSUQpOwogICAgIEFTU0VSVChzdHJ1
Y3R1cmVJRCAhPSBzX3VudXNlZElEKTsKICAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJbmRleCA9IHN0
cnVjdHVyZUlEID4+IHNfbnVtYmVyT2ZFbnRyb3B5Qml0czsKICAgICBBU1NFUlQoc3RydWN0dXJl
SW5kZXggJiYgc3RydWN0dXJlSW5kZXggPCBzX21heGltdW1OdW1iZXJPZlN0cnVjdHVyZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDhjYWE0OGMxYmUzMTFiNWQ4N2U4
NjAzOGJhMGY0MDQxODM4ODhjMmEuLmJjZjYwOWFkNDZmNDg0MjdlOTZlNmE0MmEwYWIxOGI0Nzkx
NGVmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJEYXRl
SW5zdGFuY2UuaCIKICNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCisjaW5jbHVkZSAiRGVmZXJy
ZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJEb3Vi
bGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCkBA
IC04OCw2ICs4OSw3IEBACiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRlICJKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTEzMyw3ICsxMzUsNiBAQAogI2lu
Y2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3h5UmV2
b2tlLmgiCiAjaW5jbHVkZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgpAQCAtMjgyLDYgKzI4
Myw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5M
b29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFs
T2JqZWN0Pj4oKSkKICAgICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxEYXRlSW5zdGFuY2U+KCkpCiAgICAgLCBlcnJvckluc3RhbmNlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEVycm9ySW5zdGFuY2U+KCkpCisgICAgLCBmaW5h
bGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRmluYWxp
emF0aW9uUmVnaXN0cnk+KCkpCiAgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+
KCkpCiAgICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNHbG9iYWxPYmplY3Q+KCkpCiAgICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0PigpKQpAQCAtMzY1LDcgKzM2Nyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAg
ICwgY2xpZW50RGF0YShudWxscHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRyKQogICAg
ICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKLSAgICAsIHByb21pc2VUaW1l
cihQcm9taXNlVGltZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBkZWZlcnJlZFdvcmtUaW1lcihE
ZWZlcnJlZFdvcmtUaW1lcjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fYXRvbVN0cmluZ1RhYmxl
KHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkg
OiBuZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAg
ICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQpAQCAtNTc1LDcgKzU3Nyw3IEBAIFZNOjp+Vk0oKQog
ICAgIGF1dG8gZGVzdHJ1Y3Rpb25Mb2NrZXIgPSBob2xkTG9jayhzX2Rlc3RydWN0aW9uTG9jay5y
ZWFkKCkpOwogICAgIAogICAgIEdpZ2FjYWdlOjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJh
Y2socHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrLCB0aGlzKTsKLSAgICBwcm9taXNl
VGltZXItPnN0b3BSdW5uaW5nVGFza3MoKTsKKyAgICBkZWZlcnJlZFdvcmtUaW1lci0+c3RvcFJ1
bm5pbmdUYXNrcygpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAoV2FzbTo6V29y
a2xpc3QqIHdvcmtsaXN0ID0gV2FzbTo6ZXhpc3RpbmdXb3JrbGlzdE9yTnVsbCgpKQogICAgICAg
ICB3b3JrbGlzdC0+c3RvcEFsbFBsYW5zRm9yQ29udGV4dCh3YXNtQ29udGV4dCk7CkBAIC0xNDg3
LDYgKzE0ODksNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vh
a01hcFNwYWNlLCB3ZWFrTWFwSGVhcENlbGxUeXBlLmdldCgpLAogRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2Vha09iamVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTV2l0aFNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2Vs
bFR5cGUuZ2V0KCksIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCiAjaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVy
T2JqZWN0U3BhY2UsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0PikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5j
dGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgx
MGY2MTBiOApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNjBmNTk3MjlmZWMyZTAy
ZTY5NzZjMzFlZDUxYjE0OGE1YzZlYWEwNS4uZjRmMmVmZTAzYmU2NjM5NjQ4NTliNjRiN2I3ODI4
MDRkNGU2N2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNTksNyArMTU5
LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKIGNsYXNzIE9iakNDYWxsYmFja0Z1bmN0aW9u
OwotY2xhc3MgUHJvbWlzZVRpbWVyOworY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBS
ZWdFeHA7CiBjbGFzcyBSZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwpAQCAtMzc3LDYgKzM3
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxs
YmFja09iamVjdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhl
YXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxP
YmplY3RIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CkBAIC01NTAsNiArNTUxLDcgQEAg
cHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9ja1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFsaXphdGlvblJlZ2lz
dHJ5U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2Jq
ZWN0UmVmU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFr
U2V0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrTWFw
U3BhY2UpCkBAIC03MDksOCArNzExLDggQEAgcHVibGljOgogICAgIFdlYWs8TmF0aXZlRXhlY3V0
YWJsZT4gbV9zbG93Qm91bmRFeGVjdXRhYmxlOwogICAgIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4g
bV9zbG93Q2FuQ29uc3RydWN0Qm91bmRFeGVjdXRhYmxlOwogCi0gICAgUmVmPFByb21pc2VUaW1l
cj4gcHJvbWlzZVRpbWVyOwotICAgIAorICAgIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gZGVmZXJy
ZWRXb3JrVGltZXI7CisKICAgICBKU0NlbGwqIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tP
YmplY3Q7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNr
T2JqZWN0Q2xhc3NJbmZvIHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCmluZGV4IDVkYTY5NmQ2OTdkZDQ3NTA1ZDdkYzUy
YjYwNmUzMTc3NGE0ZTI2NWQuLmFmNDJkOGQ1NzA5ZjIwNmE3YTc4NzA4ZjY1ZDdlNTBiNTU4ZTYz
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHku
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1l
ci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgiCkBAIC00MSw3ICs0Miw2IEBACiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVGhyb3dTY29wZS5oIgpAQCAtMTM0LDEwICsxMzQsMTAgQEAgc3RhdGljIHZvaWQg
d2ViQXNzZW1ibHlNb2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAg
ICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsK
IAotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdU
Rk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRp
bmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgV2FzbTo6
TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBj
cmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgZ2xv
YmFsT2JqZWN0LCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgewotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJv
bWlzZSwgW3Byb21pc2UsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAm
dm1dICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVX
b3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2Vi
QXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewpAQCAtMjE0LDExICsyMTQs
MTEgQEAgc3RhdGljIHZvaWQgaW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Byb21pc2UqIHByb21pc2UKICAgICAvLyBUaGUgaW5zdGFuY2Uga2VlcHMg
dGhlIG1vZHVsZSBhbGl2ZS4KICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+
KHZtLCBpbnN0YW5jZSkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4o
dm0sIGltcG9ydE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21p
c2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2ll
cykpOwogICAgIC8vIE5vdGU6IFRoaXMgY29tcGxldGlvbiB0YXNrIG1heSBvciBtYXkgbm90IGdl
dCBjYWxsZWQgaW1tZWRpYXRlbHkuCiAgICAgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlQXN5bmMo
JnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCBjcmVhdGVTaGFyZWRUYXNr
PFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVs
ZSwgaW1wb3J0T2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChSZWY8V2Fz
bTo6Q29kZUJsb2NrPiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CiAgICAgICAgIFJlZlB0cjxX
YXNtOjpDb2RlQmxvY2s+IGNvZGVCbG9jayA9IFdURk1vdmUocmVmQ29kZUJsb2NrKTsKLSAgICAg
ICAgdm0ucHJvbWlzZVRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBp
bnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUs
ICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShjb2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21p
c2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9u
TW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgewog
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9i
YWxPYmplY3QoKTsKICAgICAgICAgICAgIHJlc29sdmUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlz
ZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBjb2RlQmxvY2sucmVsZWFzZU5vbk51
bGwoKSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSk7CiAgICAgICAgIH0pOwpAQCAtMjMzLDEz
ICsyMzMsMTMgQEAgc3RhdGljIHZvaWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXMKICAgICBWZWN0b3I8U3Ryb25nPEpT
Q2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0Nl
bGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxK
U0NlbGw+KHZtLCBtb2R1bGVLZXlDZWxsKSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5k
aW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5k
ZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVw
ZW5kZW5jaWVzKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNl
QnVmZmVyRnJvbVZhbHVlKHZtLCBnbG9iYWxPYmplY3QsIGJ1ZmZlcik7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGUsIHByb21pc2UpKTsK
IAogICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1v
dmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4o
W3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNv
bHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxl
V29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwg
Z2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVh
dGlvbk1vZGUsICZ2bV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVy
LT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVs
ZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCByZXNvbHZl
S2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJs
eU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKQpAQCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1bGVJ
bnN0YW50aW5hdGVBc3luY0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICBkZXBlbmRlbmNpZXMu
YXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKLSAgICB2bS5wcm9taXNl
VGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2ll
cykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlz
ZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVB
c3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxX
YXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFs
T2JqZWN0LCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11
dGFibGUgewotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlz
ZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVy
LT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAg
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAg
ICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3Jl
YXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxl
U3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQpAQCAtMzM5LDcgKzMzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxP
YmplY3QqCiAKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBk
ZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKLSAg
ICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3Zl
KGRlcGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29y
ayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIGlmIChnbG9iYWxP
YmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcpCiAgICAg
ICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVh
bWluZyhnbG9iYWxPYmplY3QsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwpAQCAt
MzcyLDcgKzM3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJ
bnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAg
VmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgICAgICAgICAgICAgZGVw
ZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAg
ICAgICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0
T2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJv
bWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICAgICAgICAgICAg
ICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1v
dmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTg0ODg4PiBpZiB0aGVyZSdzIGFuIGltcG9ydE9iamVjdCBhbmQgaXQgY29u
dGFpbnMgYSBNZW1vcnksIHRoZW4gd2UgY2FuIGNvbXBpbGUgdGhlIG1vZHVsZSB3aXRoIHRoZSBy
aWdodCBtZW1vcnkgdHlwZSAoZmFzdCBvciBub3QpIGJ5IGxvb2tpbmcgYXQgdGhlIG1lbW9yeSdz
IHR5cGUuCiAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIHByb21pc2UsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGltcG9ydE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKaW5kZXggNDg5NDli
ZjZlYzI4MGZlZjI3M2YwNDA2ZWQxY2QxMDdkOWM1NWNmMi4uMmU1NmI0ZDNiYWY3ZjAwZmVhZGQz
MDA0YjRiZmUyYzk2NWQ1MzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDggKzI4LDggQEAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNs
dWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUg
IlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIldhc21D
YWxsZWUuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDI4ZTUwOWRiMDFjNzAxMGRk
NzdlMmZlYmMzNWM3OTg5YWRkN2EzMi4uMDM5ZWY4MjMwYTg2YjYxMzVjZWViZGU0M2MzYTEzNzA1
ZGNmOTdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcApAQCAtMjM0LDYgKzIzNCwxMSBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojpw
cm9taXNlUmVqZWN0aW9uVHJhY2tlcihKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsCiAg
ICAgfQogfQogCit2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwgSlNDOjpFeGNlcHRp
b24qIGV4Y2VwdGlvbikKK3sKKyAgICByZXBvcnRFeGNlcHRpb24oanNHbG9iYWxPYmplY3QsIGV4
Y2VwdGlvbik7Cit9CisKIEpTRE9NR2xvYmFsT2JqZWN0JiBjYWxsZXJHbG9iYWxPYmplY3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQog
ewogICAgIGNsYXNzIEdldENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3IgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggZDI5ODU4Y2ZhNGIw
YmUwZDYyMTM5MGE4M2Q3NmQ1YTg1MGI5ZDI4MC4uNzM4NjdkNmFiMmU1YjRkYmI3MGI3MGE5YTM2
MDk0ODQ5ZjBjZWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIEpTQnVpbHRpbklu
dGVybmFsRnVuY3Rpb25zJiBidWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKSB7IHJldHVybiBtX2J1
aWx0aW5JbnRlcm5hbEZ1bmN0aW9uczsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVn
aHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKik7
CiAKIHB1YmxpYzoKICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDg4MzIxM2U5MDYxZjM4Yjhi
YjQzMzU3OWIyOTg2MDk4Nzc4NGU3ODIuLmFjZWE3NjZhZjFjN2Q1ZmVlYWUxN2E2OWY5ZTNiMzVj
ZGVlOWE4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29k
ZUJsb2NrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTV2ViQXNzZW1ibHkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9NaWNyb3Rhc2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTc4LDYgKzc4LDcg
QEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRh
UHJvcGVydGllcywKICAgICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsCiAgICAgJnByb21pc2VSZWpl
Y3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAog
ICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICZjb21w
aWxlU3RyZWFtaW5nLApAQCAtNDQzLDggKzQ0NCw4IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpj
b21waWxlU3RyZWFtaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBBU1NFUlQodm0ucHJv
bWlzZVRpbWVyLT5oYXNQZW5kaW5nUHJvbWlzZShwcm9taXNlKSk7Ci0gICAgQVNTRVJUKHZtLnBy
b21pc2VUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgZ2xvYmFs
T2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29y
ayhwcm9taXNlKSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNEZXBlbmRh
bmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKIAogICAgIGlmIChhdXRv
IGlucHV0UmVzcG9uc2UgPSBKU0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2bSwgc291cmNlKSkg
ewogICAgICAgICBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKGdsb2JhbE9iamVjdCwg
aW5wdXRSZXNwb25zZSwgcHJvbWlzZSwgW3Byb21pc2VdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11
dGFibGUgewpAQCAtNDYxLDkgKzQ2Miw5IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjppbnN0YW50
aWF0ZVN0cmVhbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRp
bWVyLT5oYXNQZW5kaW5nUHJvbWlzZShwcm9taXNlKSk7Ci0gICAgQVNTRVJUKHZtLnByb21pc2VU
aW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgZ2xvYmFsT2JqZWN0
KSk7Ci0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1By
b21pc2UocHJvbWlzZSwgaW1wb3J0ZWRPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRX
b3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJy
ZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGdsb2JhbE9i
amVjdCkpOworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUlu
UGVuZGluZ1dvcmsocHJvbWlzZSwgaW1wb3J0ZWRPYmplY3QpKTsKIAogICAgIGlmIChhdXRvIGlu
cHV0UmVzcG9uc2UgPSBKU0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2bSwgc291cmNlKSkgewog
ICAgICAgICBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKGdsb2JhbE9iamVjdCwgaW5w
dXRSZXNwb25zZSwgcHJvbWlzZSwgW3Byb21pc2UsIGltcG9ydGVkT2JqZWN0XSAoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGJ5dGVTaXplKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDQ5ZGY0MzkwNTdkZjU5ZDI5NGQ0ODRh
OTRmMjliNTI0MGY4ODYxODEuLmRjZTczODIwYmJiZmQ5Yjk1YzU4NzlkMTNlZjY1ZWFiOThhOTA0
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2lu
ZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01X
aW5kb3dCYXNlLmNwcApAQCAtNDcsNiArNDcsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBKU1JlbW90ZURPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPQog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAg
ICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9t
aXNlUmVqZWN0aW9uVHJhY2tlcgorICAgIG51bGxwdHIsIC8vIHJlcG9ydFVuY2F1Z2h0RXhjZXB0
aW9uQXRFdmVudExvb3AKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxs
cHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJl
YW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAppbmRleCA1Mzc2ZTgwZDAwMDUzNzc2MjU4MmFhMjViZTkxZDEyYThm
NTk3ZWM0Li5jNDRmMmZiM2EwYjA1ZGFhYjFhOGE5ZTJmODliNTJkODUxZWI0MzY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCkBAIC02NSw2ICs2NSw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAgICAgbnVs
bHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxs
cHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tl
ciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICAmZGVmYXVs
dExhbmd1YWdlLAogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRy
LCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggMDk2NWE4NmM0MThi
ZTYxZTYyZTFmZmRhYzZjZmU4YmFmNmI0ZDZlZS4uYjE0YjgxNTQyZGI4ODllYzZkMjU5YmM1Yjcw
ZWYyYTUwOTljOTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIGNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxP
YmplY3RNZXRob2RUYWJsCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAg
ICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25B
dEV2ZW50TG9vcCwKICAgICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxwdHIsIC8vIGNvbXBp
bGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCA5MzFjZWU3Nzc5YmY5NjE0MzhlODIwMTUwYzdhN2Y4YWI0Njc1NTQ3Li43MTZiMWE2
OWI4ZWVjMWRhNjQ3MjAxYTQzMjY5MmIzMzg5N2ViNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzcsMTIg
KzM3LDEyIEBACiAjaW5jbHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlD
YWxsYmFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Q
cm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGlt
ZXI6OlRpbWVyTgogCiAgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2Fs
bGJhY2soKSk7CiAgICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJh
Y2soKSk7Ci0gICAgcHJvY2Vzc1RpbWVyKG1fdm0tPnByb21pc2VUaW1lci5wdHIoKSk7CisgICAg
cHJvY2Vzc1RpbWVyKG1fdm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKIH0KIAogdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpT
UnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrKQpAQCAtMjY1
LDcgKzI2NSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXRO
b3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltCiAKICAgICBwcm9jZXNzVGltZXIo
bV92bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIobV92
bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+
cHJvbWlzZVRpbWVyLnB0cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3Jr
VGltZXIucHRyKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERl
YnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKaW5kZXggZWMwN2FjNDYzNTBkMmEzNDI5ZWEwOTg3NGUzZmRmMmRmZGE5
ZTQ1MS4uNjZlY2Q1MzZmODEzZDAyOWM0OTdmMWFlYTdmMjE5ZWRmYzc1YjM3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5j
bHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlz
ZVRpbWVyLmg+CiAKICNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDxnbGliLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NmE4OGNhYTE0NGFlMjdmYzdjMWYyZDVmMzNiY2QxMDhjYzEyMGE5ZS4uMjBhNmY4NTYxODU4YWRm
YmUyZTJiYzE4ZWJmNzE1MGI5N2FkMTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzcsMTEgKzM3LDExIEBACiAj
aW5jbHVkZSAiV29ya2xldENvbnNvbGVDbGllbnQuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtU
aW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xv
Y2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZDUzYzJhYzNiOWIzNmUzNGNjOThiNDdjMmJhNzliZTcyMGEwOTBmLi5lNjlkYTJm
ZGFiZjA5MGQyNTdjYWMxZjg5MDg3ZjdlZDY5YTA4ZmYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvd2Vh
a3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5qczogQWRkZWQuCisgICAgICAgIChtYWtlV2Vha1Jl
Zik6CisgICAgICAgICh0dXJuRXZlbnRMb29wKToKKyAgICAgICAgKGFzeW5jIHRlc3QpOgorICAg
ICAgICAqIGpzL3VudGl0bGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmlu
YWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy93ZWFr
cmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTA3LTIwICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XSBBZGQgc3VwcG9ydCBmb3IgY2FudmFzIGNhcHR1cmVTdHJlYW0sIHRlc3RzIGZhaWxpbmcgc2lu
Y2UgdGhleSB3ZXJlIGFkZGVkIGluIHIyMTM1OTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2IyMmRjMzlkZTgwYjRkZDlkMWRlNGZiZDA0ZDMxZDMzMTYxNGVlYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlv
bnJlZ2lzdHJ5LmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VX
ZWFrUmVmcz10cnVlIikKKworYXN5bmNUZXN0U3RhcnQoMSk7Cit2YXIgb2JqZWN0cyA9IFtdOwor
dmFyIHdlYWtSZWZzID0gW107Cit2YXIgZmluYWxpemVyQ2FsbGVkID0gZmFsc2U7Cit2YXIgZmlu
YWxpemF0aW9uUmVnaXN0cnkgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4gZmluYWxp
emVyQ2FsbGVkID0gdHJ1ZSk7CitmdW5jdGlvbiBtYWtlV2Vha1JlZigpIHsgcmV0dXJuIG5ldyBX
ZWFrUmVmKHsgZm9vOiAxIH0pOyB9Citub0lubGluZShtYWtlV2Vha1JlZik7CisKKy8vIEF0IHRo
ZSB0aW1lIG9mIHdyaXRpbmcgdGhpcyB0ZXN0IHN0YW5kYWxvbmUtcHJlLmpzIHByaW50cyBuZXds
aW5lcyBzbGlnaHRseSBkaWZmZXJlbnRseSBmcm9tIGpzLXRlc3QtcHJlLmpzIGZvciBhc3luYyB0
ZXN0cyBzbyB3ZSBkb24ndCB1c2UgdGhlIHNob3VsZEJlIGhlbHBlcnMuLi4KK2Z1bmN0aW9uIGFz
c2VydChjb25kaXRpb24sIG1zZyA9ICIiKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihtc2cpOworfQorCitsZXQgbG9vcENvdW50ID0gMTAwMDsKK2Z1bmN0
aW9uIHR1cm5FdmVudExvb3AoKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUpIHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBnYygpOwor
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9LCAwKTsKKyAgICB9KTsKK30KKwordmFy
IGk7Cithc3luYyBmdW5jdGlvbiB0ZXN0KCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9v
cENvdW50OyBpKyspIHsKKyAgICAgICAgbGV0IHdlYWsgPSBtYWtlV2Vha1JlZigpOworICAgICAg
ICB3ZWFrUmVmcy5wdXNoKHdlYWspOworICAgICAgICBvYmplY3RzLnB1c2god2Vhay5kZXJlZigp
KTsKKyAgICAgICAgZmluYWxpemF0aW9uUmVnaXN0cnkucmVnaXN0ZXIod2Vhay5kZXJlZigpKTsK
KyAgICB9CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7CisKKyAgICBhc3NlcnQoZmluYWxp
emVyQ2FsbGVkID09PSBmYWxzZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxvb3BDb3VudDsgaSsr
KQorICAgICAgICBhc3NlcnQod2Vha1JlZnNbaV0uZGVyZWYoKSA9PT0gb2JqZWN0c1tpXSwgImZh
aWxlZCBvbiBpdGVyYXRpb246ICIgKyBpKTsKKworICAgIG9iamVjdHMubGVuZ3RoID0gMDsKKyAg
ICBvYmplY3RzID0gbnVsbDsKKworICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsKKyAgICAvLyBX
ZSBuZWVkIHRvIHR1cm4gdGhlIGV2ZW50IGxvb3AgYWdhaW4gc2luY2UgRlIgbWF5IG5vdCBoYXZl
IGNhbGxlZCB0aGUgY2FsbGJhY2sgaW4gdGhlIGxhc3QgdHVybi4KKyAgICBhd2FpdCB0dXJuRXZl
bnRMb29wKCk7CisKKyAgICBhc3NlcnQoZmluYWxpemVyQ2FsbGVkID09PSB0cnVlKTsKKyAgICBh
c3NlcnQod2Vha1JlZnMuc29tZSgod2Vha1JlZikgPT4gd2Vha1JlZi5kZXJlZigpID09PSBudWxs
KSA9PT0gdHJ1ZSk7CisKKyAgICBhc3luY1Rlc3RQYXNzZWQoKTsKK30KKwordGVzdCgpLmNhdGNo
KGUgPT4gZGVidWcoZSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRt
bCBiL0xheW91dFRlc3RzL2pzL3VudGl0bGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwZTFjYjcwNWE5
ZDc3OTA4MDRjNjk4NTI3Yzg0MzIxM2Q0YWQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3VudGl0bGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNj
T3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbi1yZWdp
c3RyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQzZTVlZWVkYmYxYjQzNWY5NmMzYTIwYmY4MTQwMWFlZTQzMzE5ODEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZp
bmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXph
dGlvbnJlZ2lzdHJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkN2NmNDdkNGEzNDE2OThiZDBkNTVlZDZh
ODg5MGJmZTQxMjc0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYt
ZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9u
cmVnaXN0cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNmMwOTJhODU3NDA2ZDJmYTcy
ZjNlNzdhMTJlNjhiZTkxMzRkNDRlLi5iYzkwM2M5OTQwNjIzOTkxZjMwOWFlNGZlZWJkMTQ1NmRm
MWY0NThhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxpemF0aW9u
UmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAg
ICBTaGFtZWxlc3NseSBjb3B5IHY4J3MgdGVzdHMgYW5kIHJlZmFjdG9yIHRoZW0gdG8gd29yayB3
aXRoIGNvbnNlcnZhdGl2ZSBHQy4KKworICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvdjgtbWpz
dW5pdC5qczogQWRkZWQuCisgICAgICAgIChNanNVbml0QXNzZXJ0aW9uRXJyb3IpOgorICAgICAg
ICAoTWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChj
YXRjaCk6CisgICAgICAgIChjbGFzc09mKToKKyAgICAgICAgKFZhbHVlT2YpOgorICAgICAgICAo
cHJldHR5UHJpbnRlZCk6CisgICAgICAgIChwcmV0dHlQcmludGVkQXJyYXlFbGVtZW50KToKKyAg
ICAgICAgKGZhaWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChmb3JtYXRGYWlsdXJlVGV4dCk6Cisg
ICAgICAgIChmYWlsKToKKyAgICAgICAgKGRlZXBPYmplY3RFcXVhbHMpOgorICAgICAgICAoZGVl
cEVxdWFscyk6CisgICAgICAgIChhc3NlcnRTYW1lKToKKyAgICAgICAgKGFzc2VydE5vdFNhbWUp
OgorICAgICAgICAoYXNzZXJ0RXF1YWxzKToKKyAgICAgICAgKGFzc2VydE5vdEVxdWFscyk6Cisg
ICAgICAgIChhc3NlcnRFcXVhbHNEZWx0YSk6CisgICAgICAgIChhc3NlcnRBcnJheUVxdWFscyk6
CisgICAgICAgIChhc3NlcnRQcm9wZXJ0aWVzRXF1YWwpOgorICAgICAgICAoYXNzZXJ0VG9TdHJp
bmdFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0VHJ1ZSk6CisgICAgICAgIChhc3NlcnRGYWxzZSk6
CisgICAgICAgIChhc3NlcnROdWxsKToKKyAgICAgICAgKGFzc2VydE5vdE51bGwpOgorICAgICAg
ICAoZXhlY3V0ZUNvZGUpOgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAoYXNz
ZXJ0VGhyb3dzKToKKyAgICAgICAgKGFzc2VydFRocm93c0VxdWFscyk6CisgICAgICAgIChhc3Nl
cnRUaHJvd3NBc3luYyk6CisgICAgICAgIChhc3NlcnRJbnN0YW5jZW9mKToKKyAgICAgICAgKGFz
c2VydERvZXNOb3RUaHJvdyk6CisgICAgICAgIChhc3NlcnRVbnJlYWNoYWJsZSk6CisgICAgICAg
IChhc3NlcnRDb250YWlucyk6CisgICAgICAgIChhc3NlcnRNYXRjaGVzKToKKyAgICAgICAgKGNv
bmNhdGVuYXRlRXJyb3JzKToKKyAgICAgICAgKGFzc2VydFByb21pc2VSZXN1bHQpOgorICAgICAg
ICAoT3B0aW1pemF0aW9uU3RhdHVzKToKKyAgICAgICAgKGFzc2VydFVub3B0aW1pemVkKToKKyAg
ICAgICAgKGFzc2VydE9wdGltaXplZCk6CisgICAgICAgIChpc05ldmVyT3B0aW1pemVMaXRlTW9k
ZSk6CisgICAgICAgIChpc05ldmVyT3B0aW1pemUpOgorICAgICAgICAoaXNBbHdheXNPcHRpbWl6
ZSk6CisgICAgICAgIChpc0ludGVycHJldGVkKToKKyAgICAgICAgKGlzT3B0aW1pemVkKToKKyAg
ICAgICAgKGlzVHVyYm9GYW5uZWQpOgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yLnBy
ZXBhcmVTdGFja1RyYWNlKToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZl
cmVudC1yZWFsbS5qczogQWRkZWQuCisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAg
ICAgKiBzdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczogQWRk
ZWQuCisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmlu
YWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qczogQWRkZWQuCisgICAgICAgIChUZXN0Q29uc3Ry
dWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAoVGVzdEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3JDYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChUZXN0Q29uc3RydWN0Rmlu
YWxpemF0aW9uUmVnaXN0cnlDbGVhbnVwTm90Q2FsbGFibGUpOgorICAgICAgICAoVGVzdENvbnN0
cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5V2l0aE5vbkNhbGxhYmxlUHJveHlBc0NsZWFudXApOgor
ICAgICAgICAoVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUpOgorICAgICAg
ICAoVGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRl
c3RVbnJlZ2lzdGVyV2l0aE5vbkV4aXN0ZW50S2V5KToKKyAgICAgICAgKFRlc3RVbnJlZ2lzdGVy
V2l0aE5vbkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RXZWFrUmVmQ29uc3Ry
dWN0b3JXaXRoTm9uT2JqZWN0KToKKyAgICAgICAgKFRlc3RXZWFrUmVmV2l0aFByb3h5KToKKyAg
ICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanM6IEFk
ZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAg
ICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZl
LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0
X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVs
ZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNs
ZWFudXAwKToKKyAgICAgICAgKGxldC5jbGVhbnVwMSk6CisgICAgICAgIChsZXQudGltZW91dF9m
dW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJl
Z2lzdHJpZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0
LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNs
ZWFudXAuanM6IEFkZGVkLgorICAgICAgICAobGV0LnJlZW50cmFudF9nYyk6CisgICAgICAgIChz
ZXRUaW1lb3V0KToKKyAgICAgICAgKiBzdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LWRpcnR5LWVucXVldWUuanM6IEFkZGVkLgorICAgICAgICAoaS5yZWdpc3RyaWVzLnB1c2gu
bmV3LkZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKHJlZ2lzdHJpZXMuZm9yRWFjaCk6
CisgICAgICAgICogc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qczogQWRkZWQuCisgICAg
ICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAg
KiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAg
KGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0
cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxl
dC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVz
cy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xl
YW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3Mvdjgt
dW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFu
dXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVu
cmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVw
KToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJl
Z2lzdGVyLW1hbnkuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAo
bGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRv
a2VuLmpzOiBBZGRlZC4KKyAgICAgICAgKEZSLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6Cisg
ICAgICAgICh0cnlBZ2Fpbik6CisKIDIwMjAtMDctMTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeGVkIHJlZ3Jlc3Npb24gZHVlIHRvIHIyNjQ1MDc6IE1hdGgu
e21pbnxtYXh9IGluZXF1YWxpdHkgdGVzdCBzaG91bGQgdXNlIERvdWJsZU5vdEVxdWFsT3JVbm9y
ZGVyZWQgaW5zdGVhZCBEb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQuCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291
cmNlcy92OC1tanN1bml0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NzQ2MWY3NGM5MDIyMzIxZmM2MGU2ODZm
Nzk1ZDUwZTM5Mjk4MTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJj
ZXMvdjgtbWpzdW5pdC5qcwpAQCAtMCwwICsxLDgwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDggdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitmdW5jdGlvbiBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkgeworICB0aGlz
Lm1lc3NhZ2UgPSBtZXNzYWdlOworICAvLyBUZW1wb3JhcmlseSBpbnN0YWxsIGEgY3VzdG9tIHN0
YWNrIHRyYWNlIGZvcm1hdHRlciBhbmQgcmVzdG9yZSB0aGUKKyAgLy8gcHJldmlvdXMgdmFsdWUu
CisgIGxldCBwcmV2UHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsK
KyAgdHJ5IHsKKyAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IE1qc1VuaXRBc3NlcnRpb25F
cnJvci5wcmVwYXJlU3RhY2tUcmFjZTsKKyAgICAvLyBUaGlzIGFsbG93cyBmZXRjaGluZyB0aGUg
c3RhY2sgdHJhY2UgdXNpbmcgVHJ5Q2F0Y2g6OlN0YWNrVHJhY2UuCisgICAgdGhpcy5zdGFjayA9
IG5ldyBFcnJvcigiTWpzVW5pdEFzc2VydGlvbkVycm9yIikuc3RhY2s7CisgIH0gZmluYWxseSB7
CisgICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2UHJlcGFyZVN0YWNrVHJhY2U7Cisg
IH0KK30KKworLyoKKyAqIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbiBhbGwgbWluaSBqc3VuaXQg
dGVzdCBjYXNlcy4gIFRoZSB0ZXN0CisgKiBmcmFtZXdvcmsgZXhwZWN0cyBsaW5lcyB0aGF0IHNp
Z25hbCBmYWlsZWQgdGVzdHMgdG8gc3RhcnQgd2l0aAorICogdGhlIGYtd29yZCBhbmQgaWdub3Jl
IGFsbCBvdGhlciBsaW5lcy4KKyAqLworCitNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJvdG90eXBl
LnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5tZXNzYWdlICsgIlxuXG5T
dGFjazogIiArIHRoaXMuc3RhY2s7Cit9OworCisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1
ZXMgdGhlIHNhbWUgb2JqZWN0cywgb3IgdGhlIHNhbWUgcHJpbWl0aXZlCisvLyB2YWx1ZXMuCisv
LyBGb3Iga25vd24gcHJpbWl0aXZlIHZhbHVlcywgcGxlYXNlIHVzZSBhc3NlcnRFcXVhbHMuCit2
YXIgYXNzZXJ0U2FtZTsKKworLy8gSW52ZXJzZSBvZiBhc3NlcnRTYW1lLgordmFyIGFzc2VydE5v
dFNhbWU7CisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIGlkZW50aWNhbCBwcmlt
aXRpdmUgdmFsdWVzIG9yIGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2Jq
ZWN0cyAoY2hlY2tpbmcgaW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBh
bmQgRGF0ZSBvYmplY3RzLCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3Bl
cnRpZXMgb2Ygbm9uLUFycmF5IG9iamVjdHMpLgordmFyIGFzc2VydEVxdWFsczsKKworLy8gRGVl
cCBlcXVhbGl0eSBwcmVkaWNhdGUgdXNlZCBieSBhc3NlcnRFcXVhbHMuCit2YXIgZGVlcEVxdWFs
czsKKworLy8gRXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlcyBhcmUgbm90IGlkZW50aWNhbCBwcmlt
aXRpdmUgdmFsdWVzIG9yIGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2Jq
ZWN0cyAoY2hlY2tpbmcgaW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBh
bmQgRGF0ZSBvYmplY3RzLCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3Bl
cnRpZXMgb2Ygbm9uLUFycmF5IG9iamVjdHMpLgordmFyIGFzc2VydE5vdEVxdWFsczsKKworLy8g
VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBleHBlY3RlZCBhbmQgZm91bmQgdmFsdWUgaXMgd2l0aGlu
IGNlcnRhaW4gdG9sZXJhbmNlLgordmFyIGFzc2VydEVxdWFsc0RlbHRhOworCisvLyBUaGUgZm91
bmQgb2JqZWN0IGlzIGFuIEFycmF5IHdpdGggdGhlIHNhbWUgbGVuZ3RoIGFuZCBlbGVtZW50cwor
Ly8gYXMgdGhlIGV4cGVjdGVkIG9iamVjdC4gVGhlIGV4cGVjdGVkIG9iamVjdCBkb2Vzbid0IG5l
ZWQgdG8gYmUgYW4gQXJyYXksCisvLyBhcyBsb25nIGFzIGl0J3MgImFycmF5LWlzaCIuCit2YXIg
YXNzZXJ0QXJyYXlFcXVhbHM7CisKKy8vIFRoZSBmb3VuZCBvYmplY3QgbXVzdCBoYXZlIHRoZSBz
YW1lIGVudW1lcmFibGUgcHJvcGVydGllcyBhcyB0aGUKKy8vIGV4cGVjdGVkIG9iamVjdC4gVGhl
IHR5cGUgb2Ygb2JqZWN0IGlzbid0IGNoZWNrZWQuCit2YXIgYXNzZXJ0UHJvcGVydGllc0VxdWFs
OworCisvLyBBc3NlcnQgdGhhdCB0aGUgc3RyaW5nIGNvbnZlcnNpb24gb2YgdGhlIGZvdW5kIHZh
bHVlIGlzIGVxdWFsIHRvCisvLyB0aGUgZXhwZWN0ZWQgc3RyaW5nLiBPbmx5IGtlcHQgZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5LCBwbGVhc2UKKy8vIGNoZWNrIHRoZSByZWFsIHN0cnVjdHVy
ZSBvZiB0aGUgZm91bmQgdmFsdWUuCit2YXIgYXNzZXJ0VG9TdHJpbmdFcXVhbHM7CisKKy8vIENo
ZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyB0cnVlLiBVc2Ugd2l0aCBib29sZWFuIGV4cHJl
c3Npb25zCisvLyBmb3IgdGVzdHMgdGhhdCBkb2Vzbid0IGhhdmUgdGhlaXIgb3duIGFzc2VydFhY
WCBmdW5jdGlvbi4KK3ZhciBhc3NlcnRUcnVlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQg
dmFsdWUgaXMgZmFsc2UuCit2YXIgYXNzZXJ0RmFsc2U7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBm
b3VuZCB2YWx1ZSBpcyBudWxsLiBLZXB0IGZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksCisv
LyBwbGVhc2UganVzdCB1c2UgYXNzZXJ0RXF1YWxzKG51bGwsIGV4cGVjdGVkKS4KK3ZhciBhc3Nl
cnROdWxsOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgKm5vdCogbnVsbC4K
K3ZhciBhc3NlcnROb3ROdWxsOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9u
IG9yIGV2YWwgY29kZSB0aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIG9wdGlvbmFsIHNlY29u
ZCBhcmd1bWVudCBpcyBhbiBleGNlcHRpb24gY29uc3RydWN0b3IgdGhhdCB0aGUKKy8vIHRocm93
biBleGNlcHRpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IHdpdGggImluc3RhbmNlb2YiLgorLy8gVGhl
IG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlzIGEgbWVzc2FnZSB0eXBlIHN0cmluZyBvciBSZWdF
eHAgb2JqZWN0IHRoYXQgaXMKKy8vIGNvbXBhcmVkIHRvIHRoZSBtZXNzYWdlIG9mIHRoZSB0aHJv
d24gZXhjZXB0aW9uLgordmFyIGFzc2VydFRocm93czsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBh
c3NlZCBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIGV4Y2VwdGlvbiBpcyBj
aGVja2VkIGFnYWluc3QgdGhlIHNlY29uZCBhcmd1bWVudCB1c2luZyBhc3NlcnRFcXVhbHMuCit2
YXIgYXNzZXJ0VGhyb3dzRXF1YWxzOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIHByb21p
c2UgZG9lcyBub3QgcmVzb2x2ZSwgYnV0IGV2ZW50dWFsbHkgdGhyb3dzIGFuCisvLyBleGNlcHRp
b24uIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVj
dG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRo
ICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIG1lc3Nh
Z2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9iamVjdCB0aGF0IGlzCisvLyBjb21wYXJlZCB0byB0
aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnRUaHJvd3NBc3lu
YzsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNvZGUgZG9l
cyBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLgordmFyIGFzc2VydERvZXNOb3RUaHJvdzsKKworLy8g
QXNzZXJ0cyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29uc3Ry
dWN0b3IgcGFzc2VkCisvLyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LgordmFyIGFzc2VydEluc3Rh
bmNlb2Y7CisKKy8vIEFzc2VydCB0aGF0IHRoaXMgY29kZSBpcyBuZXZlciBleGVjdXRlZCAoaS5l
LiwgYWx3YXlzIGZhaWxzIGlmIGV4ZWN1dGVkKS4KK3ZhciBhc3NlcnRVbnJlYWNoYWJsZTsKKwor
Ly8gQXNzZXJ0IHRoYXQgdGhlIGZ1bmN0aW9uIGNvZGUgaXMgKG5vdCkgb3B0aW1pemVkLiAgSWYg
Im5vIHN5bmMiIGlzIHBhc3NlZAorLy8gYXMgc2Vjb25kIGFyZ3VtZW50LCB3ZSBkbyBub3Qgd2Fp
dCBmb3IgdGhlIGNvbmN1cnJlbnQgb3B0aW1pemF0aW9uIHRocmVhZCB0bworLy8gZmluaXNoIHdo
ZW4gcG9sbGluZyBmb3Igb3B0aW1pemF0aW9uIHN0YXR1cy4KKy8vIE9ubHkgd29ya3Mgd2l0aCAt
LWFsbG93LW5hdGl2ZXMtc3ludGF4LgordmFyIGFzc2VydE9wdGltaXplZDsKK3ZhciBhc3NlcnRV
bm9wdGltaXplZDsKKworLy8gQXNzZXJ0IHRoYXQgYSBzdHJpbmcgY29udGFpbnMgYW5vdGhlciBl
eHBlY3RlZCBzdWJzdHJpbmcuCit2YXIgYXNzZXJ0Q29udGFpbnM7CisKKy8vIEFzc2VydCB0aGF0
IGEgc3RyaW5nIG1hdGNoZXMgYSBnaXZlbiByZWdleC4KK3ZhciBhc3NlcnRNYXRjaGVzOworCisv
LyBBc3NlcnQgdGhhdCBhIHByb21pc2UgcmVzb2x2ZXMgb3IgcmVqZWN0cy4KKy8vIFBhcmFtZXRl
cnM6CisvLyB7cHJvbWlzZX0gLSB0aGUgcHJvbWlzZQorLy8ge3N1Y2Nlc3N9IC0gb3B0aW9uYWwg
LSBhIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlCisvLyAg
ICAgICAgICAgICByZXNvbHZpbmcgcHJvbWlzZS4KKy8vICB7ZmFpbH0gLSAgIG9wdGlvbmFsIC0g
YSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAg
ICAgICAgICAgcmVqZWN0aW5nIHByb21pc2UuIElmIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGJ1
dCBubyB7ZmFpbH0KKy8vICAgICAgICAgICAgIGNhbGxiYWNrIGlzIHNldCwgdGhlIGVycm9yIGlz
IHByb3BhZ2F0ZWQgb3V0IG9mIHRoZSBwcm9taXNlCisvLyAgICAgICAgICAgICBjaGFpbi4KK3Zh
ciBhc3NlcnRQcm9taXNlUmVzdWx0OworCit2YXIgcHJvbWlzZVRlc3RDaGFpbjsKK3ZhciBwcm9t
aXNlVGVzdENvdW50ID0gMDsKKworLy8gVGhlc2UgYml0cyBtdXN0IGJlIGluIHN5bmMgd2l0aCBi
aXRzIGRlZmluZWQgaW4gUnVudGltZV9HZXRPcHRpbWl6YXRpb25TdGF0dXMKK3ZhciBWOE9wdGlt
aXphdGlvblN0YXR1cyA9IHsKKyAga0lzRnVuY3Rpb246IDEgPDwgMCwKKyAga05ldmVyT3B0aW1p
emU6IDEgPDwgMSwKKyAga0Fsd2F5c09wdGltaXplOiAxIDw8IDIsCisgIGtNYXliZURlb3B0ZWQ6
IDEgPDwgMywKKyAga09wdGltaXplZDogMSA8PCA0LAorICBrVHVyYm9GYW5uZWQ6IDEgPDwgNSwK
KyAga0ludGVycHJldGVkOiAxIDw8IDYsCisgIGtNYXJrZWRGb3JPcHRpbWl6YXRpb246IDEgPDwg
NywKKyAga01hcmtlZEZvckNvbmN1cnJlbnRPcHRpbWl6YXRpb246IDEgPDwgOCwKKyAga09wdGlt
aXppbmdDb25jdXJyZW50bHk6IDEgPDwgOSwKKyAga0lzRXhlY3V0aW5nOiAxIDw8IDEwLAorICBr
VG9wbW9zdEZyYW1lSXNUdXJib0Zhbm5lZDogMSA8PCAxMSwKKyAga0xpdGVNb2RlOiAxIDw8IDEy
LAorICBrTWFya2VkRm9yRGVvcHRpbWl6YXRpb246IDEgPDwgMTMsCit9OworCisvLyBSZXR1cm5z
IHRydWUgaWYgLS1saXRlLW1vZGUgaXMgb24gYW5kIHdlIGNhbid0IGV2ZXIgdHVybiBvbiBvcHRp
bWl6YXRpb24uCit2YXIgaXNOZXZlck9wdGltaXplTGl0ZU1vZGU7CisKKy8vIFJldHVybnMgdHJ1
ZSBpZiAtLW5vLW9wdCBtb2RlIGlzIG9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZTsKKworLy8gUmV0
dXJucyB0cnVlIGlmIC0tYWx3YXlzLW9wdCBtb2RlIGlzIG9uLgordmFyIGlzQWx3YXlzT3B0aW1p
emU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpbiBpbnRlcnByZXRlZC4K
K3ZhciBpc0ludGVycHJldGVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24g
aXMgb3B0aW1pemVkLgordmFyIGlzT3B0aW1pemVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2
ZW4gZnVuY3Rpb24gaXMgY29tcGlsZWQgYnkgVHVyYm9GYW4uCit2YXIgaXNUdXJib0Zhbm5lZDsK
KworLy8gTW9ua2V5LXBhdGNoYWJsZSBhbGwtcHVycG9zZSBmYWlsdXJlIGhhbmRsZXIuCit2YXIg
ZmFpbFdpdGhNZXNzYWdlOworCisvLyBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgZmFpbHVyZSB0ZXh0
LiAgVXNlZCBieSB0ZXN0LWFzeW5jLmpzLgordmFyIGZvcm1hdEZhaWx1cmVUZXh0OworCisvLyBS
ZXR1cm5zIGEgcHJldHR5LXByaW50ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXNz
ZWQgdmFsdWUuCit2YXIgcHJldHR5UHJpbnRlZDsKKworKGZ1bmN0aW9uICgpIHsgIC8vIFNjb3Bl
IGZvciB1dGlsaXR5IGZ1bmN0aW9ucy4KKworICB2YXIgT2JqZWN0UHJvdG90eXBlVG9TdHJpbmcg
PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgTnVtYmVyUHJvdG90eXBlVmFsdWVP
ZiA9IE51bWJlci5wcm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIEJvb2xlYW5Qcm90b3R5cGVWYWx1
ZU9mID0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIFN0cmluZ1Byb3RvdHlwZVZh
bHVlT2YgPSBTdHJpbmcucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBEYXRlUHJvdG90eXBlVmFs
dWVPZiA9IERhdGUucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBSZWdFeHBQcm90b3R5cGVUb1N0
cmluZyA9IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmc7CisgIHZhciBBcnJheVByb3RvdHlwZUZv
ckVhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKKyAgdmFyIEFycmF5UHJvdG90eXBlSm9p
biA9IEFycmF5LnByb3RvdHlwZS5qb2luOworICB2YXIgQXJyYXlQcm90b3R5cGVNYXAgPSBBcnJh
eS5wcm90b3R5cGUubWFwOworICB2YXIgQXJyYXlQcm90b3R5cGVQdXNoID0gQXJyYXkucHJvdG90
eXBlLnB1c2g7CisKKyAgdmFyIEJpZ0ludFByb3RvdHlwZVZhbHVlT2Y7CisgIC8vIFRPRE8obmVp
cyk6IFJlbW92ZSB0cnktY2F0Y2ggb25jZSBCaWdJbnRzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQu
CisgIHRyeSB7CisgICAgQmlnSW50UHJvdG90eXBlVmFsdWVPZiA9IEJpZ0ludC5wcm90b3R5cGUu
dmFsdWVPZjsKKyAgfSBjYXRjaCAoZSkge30KKworICBmdW5jdGlvbiBjbGFzc09mKG9iamVjdCkg
eworICAgIC8vIEFyZ3VtZW50IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLgorICAgIHZh
ciBzdHJpbmcgPSBPYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iamVjdCk7CisgICAgLy8g
U3RyaW5nIGhhcyBmb3JtYXQgW29iamVjdCA8Q2xhc3NOYW1lPl0uCisgICAgcmV0dXJuIHN0cmlu
Zy5zdWJzdHJpbmcoOCwgc3RyaW5nLmxlbmd0aCAtIDEpOworICB9CisKKworICBmdW5jdGlvbiBW
YWx1ZU9mKHZhbHVlKSB7CisgICAgc3dpdGNoIChjbGFzc09mKHZhbHVlKSkgeworICAgICAgY2Fz
ZSAiTnVtYmVyIjoKKyAgICAgICAgcmV0dXJuIE51bWJlclByb3RvdHlwZVZhbHVlT2YuY2FsbCh2
YWx1ZSk7CisgICAgICBjYXNlICJCaWdJbnQiOgorICAgICAgICByZXR1cm4gQmlnSW50UHJvdG90
eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgIHJl
dHVybiBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiQm9v
bGVhbiI6CisgICAgICAgIHJldHVybiBCb29sZWFuUHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVl
KTsKKyAgICAgIGNhc2UgIkRhdGUiOgorICAgICAgICByZXR1cm4gRGF0ZVByb3RvdHlwZVZhbHVl
T2YuY2FsbCh2YWx1ZSk7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgfQorICB9CisKKworICBwcmV0dHlQcmludGVkID0gZnVuY3Rpb24gcHJldHR5UHJpbnRlZCh2
YWx1ZSkgeworICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgICBjYXNlICJzdHJpbmci
OgorICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpOworICAgICAgY2FzZSAiYmln
aW50IjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSkgKyAibiI7CisgICAgICBjYXNlICJu
dW1iZXIiOgorICAgICAgICBpZiAodmFsdWUgPT09IDAgJiYgKDEgLyB2YWx1ZSkgPCAwKSByZXR1
cm4gIi0wIjsKKyAgICAgICAgLy8gRkFMTFRIUk9VR0guCisgICAgICBjYXNlICJib29sZWFuIjoK
KyAgICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICBjYXNlICJmdW5jdGlvbiI6CisgICAgICBj
YXNlICJzeW1ib2wiOgorICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKKyAgICAgIGNhc2Ug
Im9iamVjdCI6CisgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICJudWxsIjsKKyAg
ICAgICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NPZih2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAo
b2JqZWN0Q2xhc3MpIHsKKyAgICAgICAgICBjYXNlICJOdW1iZXIiOgorICAgICAgICAgIGNhc2Ug
IkJpZ0ludCI6CisgICAgICAgICAgY2FzZSAiU3RyaW5nIjoKKyAgICAgICAgICBjYXNlICJCb29s
ZWFuIjoKKyAgICAgICAgICBjYXNlICJEYXRlIjoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RD
bGFzcyArICIoIiArIHByZXR0eVByaW50ZWQoVmFsdWVPZih2YWx1ZSkpICsgIikiOworICAgICAg
ICAgIGNhc2UgIlJlZ0V4cCI6CisgICAgICAgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9T
dHJpbmcuY2FsbCh2YWx1ZSk7CisgICAgICAgICAgY2FzZSAiQXJyYXkiOgorICAgICAgICAgICAg
dmFyIG1hcHBlZCA9IEFycmF5UHJvdG90eXBlTWFwLmNhbGwoCisgICAgICAgICAgICAgICAgdmFs
dWUsIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGpvaW5lZCA9
IEFycmF5UHJvdG90eXBlSm9pbi5jYWxsKG1hcHBlZCwgIiwiKTsKKyAgICAgICAgICAgIHJldHVy
biAiWyIgKyBqb2luZWQgKyAiXSI7CisgICAgICAgICAgY2FzZSAiVWludDhBcnJheSI6CisgICAg
ICAgICAgY2FzZSAiSW50OEFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQxNkFycmF5IjoKKyAg
ICAgICAgICBjYXNlICJVaW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAiVWludDMyQXJyYXki
OgorICAgICAgICAgIGNhc2UgIkludDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkZsb2F0MzJB
cnJheSI6CisgICAgICAgICAgY2FzZSAiRmxvYXQ2NEFycmF5IjoKKyAgICAgICAgICAgIHZhciBq
b2luZWQgPSBBcnJheVByb3RvdHlwZUpvaW4uY2FsbCh2YWx1ZSwgIiwiKTsKKyAgICAgICAgICAg
IHJldHVybiBvYmplY3RDbGFzcyArICIoWyIgKyBqb2luZWQgKyAiXSkiOworICAgICAgICAgIGNh
c2UgIk9iamVjdCI6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdENsYXNzICsgIigiICsgU3RyaW5nKHZhbHVlKSArICIpIjsK
KyAgICAgICAgfQorICAgICAgICAvLyBjbGFzc09mKCkgcmV0dXJuZWQgIk9iamVjdCIuCisgICAg
ICAgIHZhciBuYW1lID0gdmFsdWUuY29uc3RydWN0b3IubmFtZTsKKyAgICAgICAgaWYgKG5hbWUp
IHJldHVybiBuYW1lICsgIigpIjsKKyAgICAgICAgcmV0dXJuICJPYmplY3QoKSI7CisgICAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gIi0tIHVua25vd24gdmFsdWUgLS0iOworICAgIH0KKyAg
fQorCisKKyAgZnVuY3Rpb24gcHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCh2YWx1ZSwgaW5kZXgs
IGFycmF5KSB7CisgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShpbmRleCBpbiBhcnJh
eSkpIHJldHVybiAiIjsKKyAgICByZXR1cm4gcHJldHR5UHJpbnRlZCh2YWx1ZSk7CisgIH0KKwor
CisgIGZhaWxXaXRoTWVzc2FnZSA9IGZ1bmN0aW9uIGZhaWxXaXRoTWVzc2FnZShtZXNzYWdlKSB7
CisgICAgdGhyb3cgbmV3IE1qc1VuaXRBc3NlcnRpb25FcnJvcihtZXNzYWdlKTsKKyAgfQorCisg
IGZvcm1hdEZhaWx1cmVUZXh0ID0gZnVuY3Rpb24oZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9v
cHQpIHsKKyAgICB2YXIgbWVzc2FnZSA9ICJGYWlsIiArICJ1cmUiOworICAgIGlmIChuYW1lX29w
dCkgeworICAgICAgLy8gRml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVy
LgorICAgICAgbWVzc2FnZSArPSAiICgiICsgbmFtZV9vcHQgKyAiKSI7CisgICAgfQorCisgICAg
dmFyIGZvdW5kVGV4dCA9IHByZXR0eVByaW50ZWQoZm91bmQpOworICAgIGlmIChleHBlY3RlZFRl
eHQubGVuZ3RoIDw9IDQwICYmIGZvdW5kVGV4dC5sZW5ndGggPD0gNDApIHsKKyAgICAgIG1lc3Nh
Z2UgKz0gIjogZXhwZWN0ZWQgPCIgKyBleHBlY3RlZFRleHQgKyAiPiBmb3VuZCA8IiArIGZvdW5k
VGV4dCArICI+IjsKKyAgICB9IGVsc2UgeworICAgICAgbWVzc2FnZSArPSAiOlxuZXhwZWN0ZWQ6
XG4iICsgZXhwZWN0ZWRUZXh0ICsgIlxuZm91bmQ6XG4iICsgZm91bmRUZXh0OworICAgIH0KKyAg
ICByZXR1cm4gbWVzc2FnZTsKKyAgfQorCisgIGZ1bmN0aW9uIGZhaWwoZXhwZWN0ZWRUZXh0LCBm
b3VuZCwgbmFtZV9vcHQpIHsKKyAgICByZXR1cm4gZmFpbFdpdGhNZXNzYWdlKGZvcm1hdEZhaWx1
cmVUZXh0KGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSk7CisgIH0KKworCisgIGZ1bmN0
aW9uIGRlZXBPYmplY3RFcXVhbHMoYSwgYikgeworICAgIHZhciBhUHJvcHMgPSBPYmplY3Qua2V5
cyhhKTsKKyAgICBhUHJvcHMuc29ydCgpOworICAgIHZhciBiUHJvcHMgPSBPYmplY3Qua2V5cyhi
KTsKKyAgICBiUHJvcHMuc29ydCgpOworICAgIGlmICghZGVlcEVxdWFscyhhUHJvcHMsIGJQcm9w
cykpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhUHJvcHMubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmICghZGVlcEVxdWFscyhhW2FQcm9wc1tp
XV0sIGJbYVByb3BzW2ldXSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisKKyAgZGVlcEVxdWFscyA9IGZ1bmN0aW9uIGRl
ZXBFcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiKSB7CisgICAgICAvLyBDaGVjayBmb3Ig
LTAuCisgICAgICBpZiAoYSA9PT0gMCkgcmV0dXJuICgxIC8gYSkgPT09ICgxIC8gYik7CisgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgcmV0
dXJuIGZhbHNlOworICAgIGlmICh0eXBlb2YgYSA9PT0gIm51bWJlciIpIHJldHVybiBpc05hTihh
KSAmJiBpc05hTihiKTsKKyAgICBpZiAodHlwZW9mIGEgIT09ICJvYmplY3QiICYmIHR5cGVvZiBh
ICE9PSAiZnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7CisgICAgLy8gTmVpdGhlciBhIG5vciBiIGlz
IHByaW1pdGl2ZS4KKyAgICB2YXIgb2JqZWN0Q2xhc3MgPSBjbGFzc09mKGEpOworICAgIGlmIChv
YmplY3RDbGFzcyAhPT0gY2xhc3NPZihiKSkgcmV0dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RD
bGFzcyA9PT0gIlJlZ0V4cCIpIHsKKyAgICAgIC8vIEZvciBSZWdFeHAsIGp1c3QgY29tcGFyZSBw
YXR0ZXJuIGFuZCBmbGFncyB1c2luZyBpdHMgdG9TdHJpbmcuCisgICAgICByZXR1cm4gUmVnRXhw
UHJvdG90eXBlVG9TdHJpbmcuY2FsbChhKSA9PT0KKyAgICAgICAgICAgICBSZWdFeHBQcm90b3R5
cGVUb1N0cmluZy5jYWxsKGIpOworICAgIH0KKyAgICAvLyBGdW5jdGlvbnMgYXJlIG9ubHkgaWRl
bnRpY2FsIHRvIHRoZW1zZWx2ZXMuCisgICAgaWYgKG9iamVjdENsYXNzID09PSAiRnVuY3Rpb24i
KSByZXR1cm4gZmFsc2U7CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiQXJyYXkiKSB7CisgICAg
ICB2YXIgZWxlbWVudENvdW50ID0gMDsKKyAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgp
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghZGVlcEVxdWFscyhhW2ldLCBiW2ld
KSkgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGlmIChvYmplY3RDbGFzcyA9PT0gIlN0cmluZyIgfHwgb2JqZWN0Q2xhc3MgPT09ICJOdW1iZXIi
IHx8CisgICAgICBvYmplY3RDbGFzcyA9PT0gIkJpZ0ludCIgfHwgb2JqZWN0Q2xhc3MgPT09ICJC
b29sZWFuIiB8fAorICAgICAgb2JqZWN0Q2xhc3MgPT09ICJEYXRlIikgeworICAgICAgaWYgKFZh
bHVlT2YoYSkgIT09IFZhbHVlT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IGRlZXBPYmplY3RFcXVhbHMoYSwgYik7CisgIH0KKworICBhc3NlcnRTYW1lID0gZnVuY3Rpb24g
YXNzZXJ0U2FtZShleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKE9iamVjdC5p
cyhleHBlY3RlZCwgZm91bmQpKSByZXR1cm47CisgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVj
dGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgfTsKKworICBhc3NlcnROb3RTYW1lID0gZnVuY3Rp
b24gYXNzZXJ0Tm90U2FtZShleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKCFP
YmplY3QuaXMoZXhwZWN0ZWQsIGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwoIm5vdCBzYW1lIGFz
ICIgKyBwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgfQorCisg
IGFzc2VydEVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5h
bWVfb3B0KSB7CisgICAgaWYgKCFkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAg
IGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQor
ICB9OworCisgIGFzc2VydE5vdEVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFscyhleHBl
Y3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKGRlZXBFcXVhbHMoZm91bmQsIGV4cGVj
dGVkKSkgeworICAgICAgZmFpbCgibm90IGVxdWFscyB0byAiICsgcHJldHR5UHJpbnRlZChleHBl
Y3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0RXF1YWxz
RGVsdGEgPQorICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzRGVsdGEoZXhwZWN0ZWQsIGZvdW5k
LCBkZWx0YSwgbmFtZV9vcHQpIHsKKyAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWQgLSBmb3VuZCkg
PiBkZWx0YSkgeworICAgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSArICIgKy0gIiAr
IHByZXR0eVByaW50ZWQoZGVsdGEpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKwor
CisgIGFzc2VydEFycmF5RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0QXJyYXlFcXVhbHMoZXhwZWN0
ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIHZhciBzdGFydCA9ICIiOworICAgIGlmIChuYW1l
X29wdCkgeworICAgICAgc3RhcnQgPSBuYW1lX29wdCArICIgLSAiOworICAgIH0KKyAgICBhc3Nl
cnRFcXVhbHMoZXhwZWN0ZWQubGVuZ3RoLCBmb3VuZC5sZW5ndGgsIHN0YXJ0ICsgImFycmF5IGxl
bmd0aCIpOworICAgIGlmIChleHBlY3RlZC5sZW5ndGggPT09IGZvdW5kLmxlbmd0aCkgeworICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICBh
c3NlcnRFcXVhbHMoZXhwZWN0ZWRbaV0sIGZvdW5kW2ldLAorICAgICAgICAgICAgICAgICAgICAg
c3RhcnQgKyAiYXJyYXkgZWxlbWVudCBhdCBpbmRleCAiICsgaSk7CisgICAgICB9CisgICAgfQor
ICB9OworCisKKyAgYXNzZXJ0UHJvcGVydGllc0VxdWFsID0gZnVuY3Rpb24gYXNzZXJ0UHJvcGVy
dGllc0VxdWFsKGV4cGVjdGVkLCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfb3B0KSB7CisgICAgLy8gQ2hlY2sgcHJv
cGVydGllcyBvbmx5LgorICAgIGlmICghZGVlcE9iamVjdEVxdWFscyhleHBlY3RlZCwgZm91bmQp
KSB7CisgICAgICBmYWlsKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsK
KworCisgIGFzc2VydFRvU3RyaW5nRXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0VG9TdHJpbmdFcXVh
bHMoZXhwZWN0ZWQsIGZvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWVfb3B0KSB7CisgICAgaWYgKGV4cGVjdGVkICE9PSBTdHJp
bmcoZm91bmQpKSB7CisgICAgICBmYWlsKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAg
IH0KKyAgfTsKKworCisgIGFzc2VydFRydWUgPSBmdW5jdGlvbiBhc3NlcnRUcnVlKHZhbHVlLCBu
YW1lX29wdCkgeworICAgIGFzc2VydEVxdWFscyh0cnVlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9
OworCisKKyAgYXNzZXJ0RmFsc2UgPSBmdW5jdGlvbiBhc3NlcnRGYWxzZSh2YWx1ZSwgbmFtZV9v
cHQpIHsKKyAgICBhc3NlcnRFcXVhbHMoZmFsc2UsIHZhbHVlLCBuYW1lX29wdCk7CisgIH07CisK
KworICBhc3NlcnROdWxsID0gZnVuY3Rpb24gYXNzZXJ0TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsK
KyAgICBpZiAodmFsdWUgIT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm51bGwiLCB2YWx1ZSwgbmFt
ZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydE5vdE51bGwgPSBmdW5jdGlvbiBhc3Nl
cnROb3ROdWxsKHZhbHVlLCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgewor
ICAgICAgZmFpbCgibm90IG51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKwor
ICBmdW5jdGlvbiBleGVjdXRlQ29kZShjb2RlKSB7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAn
ZnVuY3Rpb24nKSAgcmV0dXJuIGNvZGUoKTsKKyAgICBpZiAodHlwZW9mIGNvZGUgPT09ICdzdHJp
bmcnKSByZXR1cm4gZXZhbChjb2RlKTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICdH
aXZlbiBjb2RlIGlzIG5laXRoZXIgZnVuY3Rpb24gbm9yIHN0cmluZywgYnV0ICcgKyAodHlwZW9m
IGNvZGUpICsKKyAgICAgICAgJzogPCcgKyBwcmV0dHlQcmludGVkKGNvZGUpICsgJz4nKTsKKyAg
fQorCisgIGZ1bmN0aW9uIGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsK
KyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKCdm
dW5jdGlvbicsIHR5cGVvZiB0eXBlX29wdCk7CisgICAgICBhc3NlcnRJbnN0YW5jZW9mKGUsIHR5
cGVfb3B0KTsKKyAgICB9CisgICAgLy8gaWdub3JlIGNhdXNlX29wdCBiZWNhdXNlIG91ciBlcnJv
ciBtZXNzYWdlcyBhcmUgbm90IHRoZSBzYW1lIGFzIFY4J3MKKyAgICByZXR1cm47CisgICAgaWYg
KFJlZ0V4cCAhPT0gdW5kZWZpbmVkICYmIGNhdXNlX29wdCBpbnN0YW5jZW9mIFJlZ0V4cCkgewor
ICAgICAgYXNzZXJ0TWF0Y2hlcyhjYXVzZV9vcHQsIGUubWVzc2FnZSwgJ0Vycm9yIG1lc3NhZ2Un
KTsKKyAgICB9IGVsc2UgaWYgKGNhdXNlX29wdCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBhc3Nl
cnRFcXVhbHMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfQor
ICB9CisKKyAgYXNzZXJ0VGhyb3dzID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGNvZGUsIHR5cGVf
b3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9v
cHQgPT09IHVuZGVmaW5lZCkgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBv
ZiBhc3NlcnRUaHJvd3MsIHVua25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYg
KHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24n
KSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFz
c2VydFRocm93cywgbWF5YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQor
ICAgIHRyeSB7CisgICAgICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KTsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbGV0IG1zZyA9ICdEaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAg
aWYgKHR5cGVfb3B0ICE9PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVk
KQorICAgICAgbXNnICs9ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIGZhaWxX
aXRoTWVzc2FnZShtc2cpOworICB9OworCisgIGFzc2VydFRocm93c0VxdWFscyA9IGZ1bmN0aW9u
IGFzc2VydFRocm93c0VxdWFscyhmdW4sIHZhbCkgeworICAgIHRyeSB7CisgICAgICBmdW4oKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICBhc3NlcnRTYW1lKHZhbCwgZSk7CisgICAgICByZXR1
cm47CisgICAgfQorICAgIGZhaWxXaXRoTWVzc2FnZSgnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24s
IGV4cGVjdGVkICcgKyBwcmV0dHlQcmludGVkKHZhbCkpOworICB9OworCisgIGFzc2VydFRocm93
c0FzeW5jID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzQXN5bmMocHJvbWlzZSwgdHlwZV9vcHQsIGNh
dXNlX29wdCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlX29wdCA9PT0g
dW5kZWZpbmVkKSB7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoJ2ludmFsaWQgdXNlIG9mIGFzc2Vy
dFRocm93cywgdW5rbm93biB0eXBlX29wdCBnaXZlbicpOworICAgIH0KKyAgICBpZiAodHlwZV9v
cHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdHlwZV9vcHQgIT09ICdmdW5jdGlvbicpIHsKKyAg
ICAgIGZhaWxXaXRoTWVzc2FnZSgKKyAgICAgICAgICAnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhy
b3dzLCBtYXliZSB5b3Ugd2FudCBhc3NlcnRUaHJvd3NFcXVhbHMnKTsKKyAgICB9CisgICAgbGV0
IG1zZyA9ICdQcm9taXNlIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uJzsKKyAgICBpZiAodHlwZV9v
cHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlX29wdC5uYW1lICE9PSB1bmRlZmluZWQpCisgICAgICBt
c2cgKz0gJywgZXhwZWN0ZWQgJyArIHR5cGVfb3B0Lm5hbWU7CisgICAgcmV0dXJuIGFzc2VydFBy
b21pc2VSZXN1bHQoCisgICAgICAgIHByb21pc2UsCisgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0
IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAg
ICAgIC8vIGNoYWluLgorICAgICAgICByZXMgPT4gc2V0VGltZW91dChfID0+IGZhaWwoJzx0aHJv
dz4nLCByZXMsIG1zZyksIDApLAorICAgICAgICBlID0+IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVf
b3B0LCBjYXVzZV9vcHQpKTsKKyAgfTsKKworICBhc3NlcnRJbnN0YW5jZW9mID0gZnVuY3Rpb24g
YXNzZXJ0SW5zdGFuY2VvZihvYmosIHR5cGUpIHsKKyAgICBpZiAoIShvYmogaW5zdGFuY2VvZiB0
eXBlKSkgeworICAgICAgdmFyIGFjdHVhbFR5cGVOYW1lID0gbnVsbDsKKyAgICAgIHZhciBhY3R1
YWxDb25zdHJ1Y3RvciA9IG9iaiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKS5jb25zdHJ1
Y3RvcjsKKyAgICAgIGlmICh0eXBlb2YgYWN0dWFsQ29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicp
IHsKKyAgICAgICAgYWN0dWFsVHlwZU5hbWUgPSBhY3R1YWxDb25zdHJ1Y3Rvci5uYW1lIHx8IFN0
cmluZyhhY3R1YWxDb25zdHJ1Y3Rvcik7CisgICAgICB9CisgICAgICBmYWlsV2l0aE1lc3NhZ2Uo
CisgICAgICAgICAgJ09iamVjdCA8JyArIHByZXR0eVByaW50ZWQob2JqKSArICc+IGlzIG5vdCBh
biBpbnN0YW5jZSBvZiA8JyArCisgICAgICAgICAgKHR5cGUubmFtZSB8fCB0eXBlKSArICc+JyAr
CisgICAgICAgICAgKGFjdHVhbFR5cGVOYW1lID8gJyBidXQgb2YgPCcgKyBhY3R1YWxUeXBlTmFt
ZSArICc+JyA6ICcnKSk7CisgICAgfQorICB9OworCisgIGFzc2VydERvZXNOb3RUaHJvdyA9IGZ1
bmN0aW9uIGFzc2VydERvZXNOb3RUaHJvdyhjb2RlLCBuYW1lX29wdCkgeworICAgIHRyeSB7Cisg
ICAgICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAoZSBp
bnN0YW5jZW9mIE1qc1VuaXRBc3NlcnRpb25FcnJvcikgdGhyb3cgZTsKKyAgICAgIGZhaWxXaXRo
TWVzc2FnZSgidGhyZXcgYW4gZXhjZXB0aW9uOiAiICsgKGUubWVzc2FnZSB8fCBlKSk7CisgICAg
fQorICB9OworCisgIGFzc2VydFVucmVhY2hhYmxlID0gZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFi
bGUobmFtZV9vcHQpIHsKKyAgICAvLyBGaXggdGhpcyB3aGVuIHdlIGRpdGNoIHRoZSBvbGQgdGVz
dCBydW5uZXIuCisgICAgdmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlOiB1bnJlYWNoYWJsZSI7
CisgICAgaWYgKG5hbWVfb3B0KSB7CisgICAgICBtZXNzYWdlICs9ICIgLSAiICsgbmFtZV9vcHQ7
CisgICAgfQorICAgIGZhaWxXaXRoTWVzc2FnZShtZXNzYWdlKTsKKyAgfTsKKworICBhc3NlcnRD
b250YWlucyA9IGZ1bmN0aW9uKHN1YiwgdmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVl
ID09IG51bGwgPyAoc3ViICE9IG51bGwpIDogdmFsdWUuaW5kZXhPZihzdWIpID09IC0xKSB7Cisg
ICAgICBmYWlsKCJjb250YWlucyAnIiArIFN0cmluZyhzdWIpICsgIiciLCB2YWx1ZSwgbmFtZV9v
cHQpOworICAgIH0KKyAgfTsKKworICBhc3NlcnRNYXRjaGVzID0gZnVuY3Rpb24ocmVnZXhwLCBz
dHIsIG5hbWVfb3B0KSB7CisgICAgaWYgKCEocmVnZXhwIGluc3RhbmNlb2YgUmVnRXhwKSkgewor
ICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdleHApOworICAgIH0KKyAgICBpZiAoIXN0ci5t
YXRjaChyZWdleHApKSB7CisgICAgICBmYWlsKCJzaG91bGQgbWF0Y2ggJyIgKyByZWdleHAgKyAi
JyIsIHN0ciwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBjb25jYXRlbmF0
ZUVycm9ycyhzdGFjaywgZXhjZXB0aW9uKSB7CisgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBkb2Vz
IG5vdCBjb250YWluIGEgc3RhY2sgdHJhY2UsIHdyYXAgaXQgaW4gYSBuZXcgRXJyb3IuCisgICAg
aWYgKCFleGNlcHRpb24uc3RhY2spIGV4Y2VwdGlvbiA9IG5ldyBFcnJvcihleGNlcHRpb24pOwor
CisgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBhbHJlYWR5IHByb3ZpZGVzIGEgc3BlY2lhbCBzdGFj
ayB0cmFjZSwgd2UgZG8gbm90IG1vZGlmeQorICAgIC8vIGl0LgorICAgIGlmICh0eXBlb2YgZXhj
ZXB0aW9uLnN0YWNrICE9PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAg
ICB9CisgICAgZXhjZXB0aW9uLnN0YWNrID0gc3RhY2sgKyAnXG5cbicgKyBleGNlcHRpb24uc3Rh
Y2s7CisgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgfQorCisgIGFzc2VydFByb21pc2VSZXN1bHQg
PSBmdW5jdGlvbihwcm9taXNlLCBzdWNjZXNzLCBmYWlsKSB7CisgICAgaWYgKHN1Y2Nlc3MgIT09
IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBzdWNjZXNzKTsKKyAg
ICBpZiAoZmFpbCAhPT0gdW5kZWZpbmVkKSBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9m
IGZhaWwpOworICAgIGFzc2VydEluc3RhbmNlb2YocHJvbWlzZSwgUHJvbWlzZSk7CisgICAgY29u
c3Qgc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrOworCisgICAgdmFyIHRlc3RfcHJvbWlzZSA9
IHByb21pc2UudGhlbigKKyAgICAgICAgcmVzdWx0ID0+IHsKKyAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgaWYgKC0tcHJvbWlzZVRlc3RDb3VudCA9PSAwKSB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIHN1Y2Nlc3MocmVz
dWx0KTsKKyAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBVc2Ugc2V0VGlt
ZW91dCB0byB0aHJvdyB0aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQor
ICAgICAgICAgICAgLy8gY2hhaW4uCisgICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4geworICAg
ICAgICAgICAgICB0aHJvdyBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZSk7CisgICAgICAgICAg
ICB9LCAwKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHJlc3VsdCA9PiB7Cisg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAoZmFpbCA9PT0gdW5kZWZp
bmVkKSB0aHJvdyByZXN1bHQ7CisgICAgICAgICAgICBmYWlsKHJlc3VsdCk7CisgICAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhl
IGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAgIC8vIGNo
YWluLgorICAgICAgICAgICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAgdGhyb3cg
Y29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAg
ICAgfQorICAgICAgICB9KTsKKworICAgIGlmICghcHJvbWlzZVRlc3RDaGFpbikgcHJvbWlzZVRl
c3RDaGFpbiA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIC8vIHdhaXRVbnRpbERvbmUgaXMgaWRl
bXBvdGVudC4KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICArK3Byb21pc2VU
ZXN0Q291bnQ7CisgICAgcmV0dXJuIHByb21pc2VUZXN0Q2hhaW4udGhlbih0ZXN0X3Byb21pc2Up
OworICB9OworCisgIHZhciBPcHRpbWl6YXRpb25TdGF0dXNJbXBsID0gdW5kZWZpbmVkOworCisg
IHZhciBPcHRpbWl6YXRpb25TdGF0dXMgPSBmdW5jdGlvbihmdW4sIHN5bmNfb3B0KSB7CisgICAg
aWYgKE9wdGltaXphdGlvblN0YXR1c0ltcGwgPT09IHVuZGVmaW5lZCkgeworICAgICAgdHJ5IHsK
KyAgICAgICAgT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9IG5ldyBGdW5jdGlvbigKKyAgICAgICAg
ICAgICJmdW4iLCAic3luYyIsICJyZXR1cm4gJUdldE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5
bmMpOyIpOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5h
dGl2ZXMgc3ludGF4IG5vdCBhbGxvd2VkIik7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBP
cHRpbWl6YXRpb25TdGF0dXNJbXBsKGZ1biwgc3luY19vcHQpOworICB9CisKKyAgYXNzZXJ0VW5v
cHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3NlcnRVbm9wdGltaXplZCgKKyAgICAgIGZ1biwgc3luY19v
cHQsIG5hbWVfb3B0LCBza2lwX2lmX21heWJlX2Rlb3B0ZWQgPSB0cnVlKSB7CisgICAgaWYgKHN5
bmNfb3B0ID09PSB1bmRlZmluZWQpIHN5bmNfb3B0ID0gIiI7CisgICAgdmFyIG9wdF9zdGF0dXMg
PSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jX29wdCk7CisgICAgLy8gVGVzdHMgdGhhdCB1
c2UgYXNzZXJ0VW5vcHRpbWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBpZiAtLWFsd2F5cy1vcHQK
KyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVzdCBhZGQgLS1uby1hbHdh
eXMtb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBW
OE9wdGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAwLAorICAgICAgICAgICAg
ICAgICJ0ZXN0IGRvZXMgbm90IG1ha2Ugc2Vuc2Ugd2l0aCAtLWFsd2F5cy1vcHQiKTsKKyAgICBh
c3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24p
ICE9PSAwLCBuYW1lX29wdCk7CisgICAgaWYgKHNraXBfaWZfbWF5YmVfZGVvcHRlZCAmJgorICAg
ICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtNYXliZURlb3B0ZWQpICE9
PSAwKSB7CisgICAgICAvLyBXaGVuIC0tZGVvcHQtZXZlcnktbi10aW1lcyBmbGFnIGlzIHNwZWNp
ZmllZCBpdCdzIG5vIGxvbmdlciBndWFyYW50ZWVkCisgICAgICAvLyB0aGF0IHBhcnRpY3VsYXIg
ZnVuY3Rpb24gaXMgc3RpbGwgZGVvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAor
ICAgICAgLy8gdG8gc3RyZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhc3NlcnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVz
LmtPcHRpbWl6ZWQpICE9PSAwLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRPcHRpbWl6ZWQg
PSBmdW5jdGlvbiBhc3NlcnRPcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29w
dCwgc2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0g
dW5kZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0
aW9uU3RhdHVzKGZ1biwgc3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9w
dGltaXplZCgpIGRvIG5vdCBtYWtlIHNlbnNlIGZvciBMaXRlIG1vZGUgd2hlcmUKKyAgICAvLyBv
cHRpbWl6YXRpb24gaXMgYWx3YXlzIGRpc2FibGVkLCBleHBsaWNpdGx5IGV4aXQgdGhlIHRlc3Qg
d2l0aCBhIHdhcm5pbmcuCisgICAgaWYgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1
cy5rTGl0ZU1vZGUpIHsKKyAgICAgIHByaW50KCJXYXJuaW5nOiBUZXN0IHVzZXMgYXNzZXJ0T3B0
aW1pemVkIGluIExpdGUgbW9kZSwgc2tpcHBpbmcgdGVzdC4iKTsKKyAgICAgIHRlc3RSdW5uZXIu
cXVpdCgwKTsKKyAgICB9CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0T3B0aW1pemVkKCkg
ZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1uby1vcHQKKyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQu
IFN1Y2ggdGVzdHMgbXVzdCBhZGQgLS1vcHQgdG8gZmxhZ3MgY29tbWVudC4KKyAgICBhc3NlcnRG
YWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAh
PT0gMCwKKyAgICAgICAgICAgICAgICAidGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1u
by1vcHQiKTsKKyAgICBhc3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1p
emF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgJ3Nob3VsZCBiZSBhIGZ1
bmN0aW9uOiAnICsgbmFtZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYK
KyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVk
KSAhPT0gMCkgeworICAgICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBz
cGVjaWZpZWQgaXQncyBubyBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1
bGFyIGZ1bmN0aW9uIGlzIHN0aWxsIG9wdGltaXplZCwgc28ga2VlcCBydW5uaW5nIHRoZSB0ZXN0
CisgICAgICAvLyB0byBzdHJlc3MgdGVzdCB0aGUgZGVvcHRpbWl6ZXIuCisgICAgICByZXR1cm47
CisgICAgfQorICAgIGFzc2VydFRydWUoCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6
YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgb3B0aW1p
emVkOiAnICsgbmFtZV9vcHQpOworICB9CisKKyAgaXNOZXZlck9wdGltaXplTGl0ZU1vZGUgPSBm
dW5jdGlvbiBpc05ldmVyT3B0aW1pemVMaXRlTW9kZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9
IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTGl0ZU1vZGUpICE9PSAwOworICB9CisKKyAgaXNO
ZXZlck9wdGltaXplID0gZnVuY3Rpb24gaXNOZXZlck9wdGltaXplKCkgeworICAgIHZhciBvcHRf
c3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMDsK
KyAgfQorCisgIGlzQWx3YXlzT3B0aW1pemUgPSBmdW5jdGlvbiBpc0Fsd2F5c09wdGltaXplKCkg
eworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIp
OworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtBbHdheXNP
cHRpbWl6ZSkgIT09IDA7CisgIH0KKworICBpc0ludGVycHJldGVkID0gZnVuY3Rpb24gaXNJbnRl
cnByZXRlZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhm
dW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0
dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7
CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXpl
ZCkgPT09IDAgJiYKKyAgICAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1
cy5rSW50ZXJwcmV0ZWQpICE9PSAwOworICB9CisKKyAgaXNPcHRpbWl6ZWQgPSBmdW5jdGlvbiBp
c09wdGltaXplZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1
cyhmdW4sICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25T
dGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9u
Iik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGlt
aXplZCkgIT09IDA7CisgIH0KKworICBpc1R1cmJvRmFubmVkID0gZnVuY3Rpb24gaXNUdXJib0Zh
bm5lZChmdW4pIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4s
ICIiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMu
a0lzRnVuY3Rpb24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7Cisg
ICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkg
IT09IDAgJiYKKyAgICAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5r
VHVyYm9GYW5uZWQpICE9PSAwOworICB9CisKKyAgLy8gQ3VzdG9tIFY4LXNwZWNpZmljIHN0YWNr
IHRyYWNlIGZvcm1hdHRlciB0aGF0IGlzIHRlbXBvcmFyaWx5IGluc3RhbGxlZCBvbgorICAvLyB0
aGUgRXJyb3Igb2JqZWN0LgorICBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJh
Y2UgPSBmdW5jdGlvbihlcnJvciwgc3RhY2spIHsKKyAgICAvLyBUcmlnZ2VyIGRlZmF1bHQgZm9y
bWF0dGluZyB3aXRoIHJlY3Vyc2lvbi4KKyAgICB0cnkgeworICAgICAgLy8gRmlsdGVyLW91dCBh
bGwgYnV0IHRoZSBmaXJzdCBtanN1bml0IGZyYW1lLgorICAgICAgbGV0IGZpbHRlcmVkU3RhY2sg
PSBbXTsKKyAgICAgIGxldCBpbk1qc3VuaXQgPSB0cnVlOworICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBzdGFjay5sZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgZnJhbWUgPSBzdGFja1tpXTsK
KyAgICAgICAgaWYgKGluTWpzdW5pdCkgeworICAgICAgICAgIGxldCBmaWxlID0gZnJhbWUuZ2V0
RmlsZU5hbWUoKTsKKyAgICAgICAgICBpZiAoIWZpbGUgfHwgIWZpbGUuZW5kc1dpdGgoIm1qc3Vu
aXQuanMiKSkgeworICAgICAgICAgICAgaW5NanN1bml0ID0gZmFsc2U7CisgICAgICAgICAgICAv
LyBQdXNoIHRoZSBsYXN0IG1qc3VuaXQgZnJhbWUsIHR5cGljYWxseSBjb250YWluaW5nIHRoZSBh
c3NlcnRpb24KKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uLgorICAgICAgICAgICAgaWYgKGkgPiAw
KSBBcnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpLTFdKTsKKyAg
ICAgICAgICAgIEFycmF5UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIHN0YWNrW2ld
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
QXJyYXlQcm90b3R5cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgZnJhbWUpOworICAgICAgfQor
ICAgICAgc3RhY2sgPSBmaWx0ZXJlZFN0YWNrOworCisgICAgICAvLyBJbmZlciBmdW5jdGlvbiBu
YW1lcyBhbmQgY2FsY3VsYXRlIHttYXhfbmFtZV9sZW5ndGh9CisgICAgICBsZXQgbWF4X25hbWVf
bGVuZ3RoID0gMDsKKyAgICAgIEFycmF5UHJvdG90eXBlRm9yRWFjaC5jYWxsKHN0YWNrLCBlYWNo
ID0+IHsKKyAgICAgICAgbGV0IG5hbWUgPSBlYWNoLmdldEZ1bmN0aW9uTmFtZSgpOworICAgICAg
ICBpZiAobmFtZSA9PSBudWxsKSBuYW1lID0gIiI7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgp
KSB7CisgICAgICAgICAgbmFtZSA9IG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoZWFjaC5pc0Nv
bnN0cnVjdG9yKCkpIHsKKyAgICAgICAgICBuYW1lID0gIm5ldyAiICsgbmFtZTsKKyAgICAgICAg
fSBlbHNlIGlmIChlYWNoLmlzTmF0aXZlKCkpIHsKKyAgICAgICAgICBuYW1lID0gIm5hdGl2ZSAi
ICsgbmFtZTsKKyAgICAgICAgfSBlbHNlIGlmICghZWFjaC5pc1RvcGxldmVsKCkpIHsKKyAgICAg
ICAgICBuYW1lID0gZWFjaC5nZXRUeXBlTmFtZSgpICsgIi4iICsgbmFtZTsKKyAgICAgICAgfQor
ICAgICAgICBlYWNoLm5hbWUgPSBuYW1lOworICAgICAgICBtYXhfbmFtZV9sZW5ndGggPSBNYXRo
Lm1heChuYW1lLmxlbmd0aCwgbWF4X25hbWVfbGVuZ3RoKQorICAgICAgfSk7CisKKyAgICAgIC8v
IEZvcm1hdCBzdGFjayBmcmFtZXMuCisgICAgICBzdGFjayA9IEFycmF5UHJvdG90eXBlTWFwLmNh
bGwoc3RhY2ssIGVhY2ggPT4geworICAgICAgICBsZXQgZnJhbWUgPSAiICAgIGF0ICIgKyBlYWNo
Lm5hbWUucGFkRW5kKG1heF9uYW1lX2xlbmd0aCk7CisgICAgICAgIGxldCBmaWxlTmFtZSA9IGVh
Y2guZ2V0RmlsZU5hbWUoKTsKKyAgICAgICAgaWYgKGVhY2guaXNFdmFsKCkpIHJldHVybiBmcmFt
ZSArICIgIiArIGVhY2guZ2V0RXZhbE9yaWdpbigpOworICAgICAgICBmcmFtZSArPSAiICIgKyAo
ZmlsZU5hbWUgPyBmaWxlTmFtZSA6ICIiKTsKKyAgICAgICAgbGV0IGxpbmU9IGVhY2guZ2V0TGlu
ZU51bWJlcigpOworICAgICAgICBmcmFtZSArPSAiICIgKyAobGluZSA/IGxpbmUgOiAiIik7Cisg
ICAgICAgIGxldCBjb2x1bW4gPSBlYWNoLmdldENvbHVtbk51bWJlcigpOworICAgICAgICBmcmFt
ZSArPSAoY29sdW1uID8gIjoiICsgY29sdW1uIDogIiIpOworICAgICAgICByZXR1cm4gZnJhbWU7
CisgICAgICB9KTsKKyAgICAgIHJldHVybiAiIiArIGVycm9yLm1lc3NhZ2UgKyAiXG4iICsgQXJy
YXlQcm90b3R5cGVKb2luLmNhbGwoc3RhY2ssICJcbiIpOworICAgIH0gY2F0Y2ggKGUpIHt9Owor
ICAgIHJldHVybiBlcnJvci5zdGFjazsKKyAgfQorfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVz
cy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NzUwMDE4
NTc1OWM3MmU2YWNiMzJkYjI2NmM2NzVlYTM0NWU1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0wLDAgKzEs
MzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJp
Z2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdz
OiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMpID0+ICQu
ZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgpOworCits
ZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBmdW5jdGlvbiBj
bGVhbnVwKCkgeyBzdG9yZWRfZ2xvYmFsID0gZ2xvYmFsVGhpczsgfSBjbGVhbnVwOyIpOworbGV0
IHJlYWxtX2dsb2JhbF90aGlzID0gUmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQg
ZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBv
YmplY3QgYW5kIGEgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUg
b2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJl
bGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVn
aXN0ZXIob2JqZWN0KTsKKyAgICB9Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0
aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0
X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIs
ICJzdG9yZWRfZ2xvYmFsOyIpOworICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xv
YmFsVGhpcyk7CisgIGFzc2VydEVxdWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhp
cyk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rl
c3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJkNGQwMjQ3ZTI3MTBkYTQ4NWM5MjU3MmFiYTljMjc2Y2RlZjM1YWQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50
LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFr
UmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0t
bm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMi
LCAiY2FsbGVyIHJlbGF0aXZlIik7CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5jcmVhdGVSZWFs
bSwgZXZhbDogKHIsIHMpID0+ICQuZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9OworCitsZXQgciA9
IFJlYWxtLmNyZWF0ZSgpOworCitsZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwgInZhciBzdG9y
ZWRfZ2xvYmFsOyBsZXQgY2xlYW51cCA9IG5ldyBQcm94eShmdW5jdGlvbigpIHsgc3RvcmVkX2ds
b2JhbCA9IGdsb2JhbFRoaXM7fSwge30pOyBjbGVhbnVwIik7CitsZXQgcmVhbG1fZ2xvYmFsX3Ro
aXMgPSBSZWFsbS5ldmFsKHIsICJnbG9iYWxUaGlzIik7CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6
YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0
ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0
byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEK
KworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9s
ZGluZ3MiKTsKKyAgICB9Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xl
YW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMg
PSBmdW5jdGlvbigpIHsKKyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9y
ZWRfZ2xvYmFsOyIpOworICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhp
cyk7CisgIGFzc2VydEVxdWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9
CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanMgYi9KU1Rlc3RzL3N0cmVzcy92
OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NjE2YTUwMjFh
Y2E3NTUxYzgxMTllYjYxZWZlOTQ3YjUxMmMzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTUy
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdo
dCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczog
LS1oYXJtb255LXdlYWstcmVmcworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwg
ImNhbGxlciByZWxhdGl2ZSIpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlv
blJlZ2lzdHJ5KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4g
e30pOworICBhc3NlcnRFcXVhbHMoZmcudG9TdHJpbmcoKSwgIltvYmplY3QgRmluYWxpemF0aW9u
UmVnaXN0cnldIik7CisgIGFzc2VydE5vdFNhbWUoZmcuX19wcm90b19fLCBPYmplY3QucHJvdG90
eXBlKTsKKyAgYXNzZXJ0U2FtZShmZy5fX3Byb3RvX18uX19wcm90b19fLCBPYmplY3QucHJvdG90
eXBlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1
Y3RvckNhbGxBc0Z1bmN0aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNz
YWdlID0gIiI7CisgIHRyeSB7CisgICAgbGV0IGYgPSBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9
PiB7fSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBtZXNzYWdlID0gZS5tZXNzYWdlOworICAgIGNh
dWdodCA9IHRydWU7CisgIH0gZmluYWxseSB7CisgICAgYXNzZXJ0VHJ1ZShjYXVnaHQpOworICB9
Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xl
YW51cE5vdENhbGxhYmxlKCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3Ry
eTogY2xlYW51cCBtdXN0IGJlIGNhbGxhYmxlIjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7
CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3Ry
eSgxKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KG51bGwpOyB9LCBUeXBlRXJyb3IsIG1lc3Nh
Z2UpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3Ry
eVdpdGhDYWxsYWJsZVByb3h5QXNDbGVhbnVwKCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBs
ZXQgb2JqID0gKCkgPT4ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIp
OworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkocHJveHkpOworfSkoKTsKKwor
KGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJs
ZVByb3h5QXNDbGVhbnVwKCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3Ry
eTogY2xlYW51cCBtdXN0IGJlIGNhbGxhYmxlIjsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0
IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgYXNz
ZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5
KTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0
ZXJXaXRoTm9uT2JqZWN0VGFyZ2V0KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVn
aXN0cnkoKCkgPT4ge30pOworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeS5w
cm90b3R5cGUucmVnaXN0ZXI6IHRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy5yZWdpc3RlcigxLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdl
KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKGZhbHNlLCAiaG9sZGluZ3MiKSwg
VHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKCJm
b28iLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgp
ID0+IGZnLnJlZ2lzdGVyKFN5bWJvbCgpLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdl
KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKG51bGwsICJob2xkaW5ncyIpLCBU
eXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIodW5k
ZWZpbmVkLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5j
dGlvbiBUZXN0UmVnaXN0ZXJXaXRoUHJveHkoKSB7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxl
dCBvYmogPSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGxl
dCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGZnLnJlZ2lzdGVy
KHByb3h5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJUYXJnZXRBbmRIb2xkaW5n
c1NhbWVWYWx1ZSgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+
IHt9KTsKKyAgbGV0IG9iaiA9IHthOiAxfTsKKyAgLy8gU2FtZVZhbHVlKHRhcmdldCwgaG9sZGlu
Z3MpIG5vdCBvaworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIob2JqLCBvYmopLCBU
eXBlRXJyb3IsCisgICAgICAgICAgICAgICAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBl
LnJlZ2lzdGVyOiB0YXJnZXQgYW5kIGhvbGRpbmdzIG11c3Qgbm90IGJlIHNhbWUiKTsKKyAgbGV0
IGhvbGRpbmdzID0ge2E6IDF9OworICBmZy5yZWdpc3RlcihvYmosIGhvbGRpbmdzKTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRob3V0RmluYWxpemF0aW9uUmVnaXN0cnkoKSB7
CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVn
aXN0ZXIuY2FsbCh7fSwge30sICJob2xkaW5ncyIpLCBUeXBlRXJyb3IpOworICAvLyBEb2VzIG5v
dCB0aHJvdzoKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsK
KyAgRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwoZmcsIHt9LCAi
aG9sZGluZ3MiKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlz
dGVudEtleSgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9
KTsKKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKHsiayI6ICJ3aGF0ZXZlciJ9KTsKKyAg
YXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJX
aXRoTm9uRmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5h
bGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUudW5yZWdpc3Rlci5jYWxsKHt9LCB7fSksCisgICAg
ICAgICAgICAgICBUeXBlRXJyb3IpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVy
V2l0aE5vbk9iamVjdFVucmVnaXN0ZXJUb2tlbigpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXph
dGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0
ZXIoMSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKEJp
Z0ludCgxKSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVy
KCdvbmUnKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIo
U3ltYm9sKCkpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rl
cih0cnVlKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIo
ZmFsc2UpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih1
bmRlZmluZWQpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rl
cihudWxsKSwgVHlwZUVycm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0
cnVjdG9yKCkgeworICBsZXQgd3IgPSBuZXcgV2Vha1JlZih7fSk7CisgIGFzc2VydEVxdWFscyh3
ci50b1N0cmluZygpLCAiW29iamVjdCBXZWFrUmVmXSIpOworICBhc3NlcnROb3RTYW1lKHdyLl9f
cHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7CisKKyAgbGV0IGRlcmVmX2Rlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdyLl9fcHJvdG9fXywgImRlcmVmIik7CisgIGFzc2Vy
dEVxdWFscyh0cnVlLCBkZXJlZl9kZXNjLmNvbmZpZ3VyYWJsZSk7CisgIGFzc2VydEVxdWFscyhm
YWxzZSwgZGVyZWZfZGVzYy5lbnVtZXJhYmxlKTsKKyAgYXNzZXJ0RXF1YWxzKCJmdW5jdGlvbiIs
IHR5cGVvZiBkZXJlZl9kZXNjLnZhbHVlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1Jl
ZkNvbnN0cnVjdG9yV2l0aE5vbk9iamVjdCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiV2Vha1JlZjog
dGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0IjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFr
UmVmKCksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vh
a1JlZigxKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBX
ZWFrUmVmKGZhbHNlKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IG5ldyBXZWFrUmVmKCJmb28iKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dz
KCgpID0+IG5ldyBXZWFrUmVmKFN5bWJvbCgpKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNz
ZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKG51bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOwor
ICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBt
ZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yQ2FsbEFz
RnVuY3Rpb24oKSB7CisgIGxldCBjYXVnaHQgPSBmYWxzZTsKKyAgbGV0IG1lc3NhZ2UgPSAiIjsK
KyAgdHJ5IHsKKyAgICBsZXQgZiA9IFdlYWtSZWYoe30pOworICB9IGNhdGNoIChlKSB7CisgICAg
bWVzc2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOworICB9IGZpbmFsbHkgewor
ICAgIGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RXZWFr
UmVmV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307Cisg
IGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgd3IgPSBuZXcgV2Vh
a1JlZihwcm94eSk7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxp
emF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6
YXRpb25yZWdpc3RyeS1hbmQtd2Vha3JlZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGRhOGEwYzlmZWZjOWQx
ZGUyNjk1YjIzZDUyMDE0MjhmYjI2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMKQEAgLTAsMCArMSw0NyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQg
MjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0t
aGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKwor
bG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKwor
bGV0IGNsZWFudXBfY2FsbGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRp
bmdzKSB7CisgIGxldCBob2xkaW5nc19saXN0ID0gW107CisgIGhvbGRpbmdzX2xpc3QucHVzaCho
b2xkaW5ncyk7CisgIGFzc2VydEVxdWFscygxLCBob2xkaW5nc19saXN0Lmxlbmd0aCk7CisgIGFz
c2VydEVxdWFscygiaG9sZGluZ3MiLCBob2xkaW5nc19saXN0WzBdKTsKKyAgY2xlYW51cF9jYWxs
ZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51
cCk7CitsZXQgd2Vha19yZWZzID0gW107CisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG8gPSB7fTsKKyAgICAgICAgd2Vha19y
ZWZzLnB1c2gobmV3IFdlYWtSZWYobykpOworICAgICAgICBmZy5yZWdpc3RlcihvLCAiaG9sZGlu
Z3MiKTsKKyAgICB9Cit9KSgpOworCisvLyBTaW5jZSB0aGUgV2Vha1JlZiB3YXMgY3JlYXRlZCBk
dXJpbmcgdGhpcyB0dXJuLCBpdCBpcyBub3QgY2xlYXJlZCBieSBHQy4gVGhlCisvLyBwb2ludGVy
IGluc2lkZSB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkgaXMgbm90IGNsZWFyZWQgZWl0aGVyLCBz
aW5jZSB0aGUgV2Vha1JlZgorLy8ga2VlcHMgdGhlIHRhcmdldCBvYmplY3QgYWxpdmUuCitnYygp
OworKGZ1bmN0aW9uKCkgeworICAgIHdlYWtfcmVmcy5mb3JFYWNoKCh3ZWFrX3JlZikgPT4gYXNz
ZXJ0RXF1YWxzKCJvYmplY3QiLCB0eXBlb2Yod2Vha19yZWYuZGVyZWYoKSkpKTsKK30pKCk7CisK
Ky8vIFRyaWdnZXIgZ2MgaW4gbmV4dCB0YXNrCitzZXRUaW1lb3V0KCgpID0+IHsKKyAgICBnYygp
OworCisgICAgLy8gQ2hlY2sgdGhhdCBjbGVhbnVwIGNhbGxiYWNrIHdhcyBjYWxsZWQgaW4gYSBm
b2xsb3cgdXAgdGFzaworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBhc3NlcnRUcnVl
KGNsZWFudXBfY2FsbGVkKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh3ZWFrX3JlZnMuc29tZSgod2Vh
a19yZWYpID0+IHdlYWtfcmVmLmRlcmVmKCkgPT09IG51bGwpKTsKKyAgICB9LCAwKTsKK30sIDAp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2Vl
cHMtaG9sZGluZ3MtYWxpdmUuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdp
c3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDJjNGJiOGVlODRlMDEw
Yjc0ZDZkZWIzNWEwY2ZhY2YxNmQ0OTNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMKQEAgLTAs
MCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBD
b3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8g
RmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1h
cmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRp
dmUiKTsKKworbGV0IGNsZWFudXBfY2FsbGVkID0gZmFsc2U7CitsZXQgaG9sZGluZ3NfbGlzdCA9
IFtdOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRGYWxzZShj
bGVhbnVwX2NhbGxlZCk7CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGNsZWFu
dXBfY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KGNsZWFudXApOworbGV0IG8xID0ge307CitsZXQgaG9sZGluZ3MgPSB7J2EnOiAndGhpcyBpcyB0
aGUgaG9sZGluZ3Mgb2JqZWN0J307CisKKy8vIElnbml0aW9uIGhvbGRzIHJlZmVyZW5jZXMgdG8g
b2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGVzZSB3aWxsIGJlCisvLyByZWxlYXNl
ZCB3aGVuIHRoZSBmdW5jdGlvbiBleGl0cy4gU28gb25seSBhY2Nlc3MgbyBpbnNpZGUgYSBmdW5j
dGlvbiB0bworLy8gcHJldmVudCBhbnkgcmVmZXJlbmNlcyB0byBvYmplY3RzIGluIHRlbXBvcmFy
eSByZWdpc3RlcnMgd2hlbiBhIGdjIGlzCisvLyB0cmlnZ2VyZWQuCisoKCkgPT4ge2ZnLnJlZ2lz
dGVyKG8xLCBob2xkaW5ncyk7fSkoKQorCitnYygpOworYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxs
ZWQpOworCisvLyBEcm9wIHRoZSBsYXN0IHJlZmVyZW5jZXMgdG8gbzEuCisoKCkgPT4ge28xID0g
bnVsbDt9KSgpCisKKy8vIERyb3AgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBob2xkaW5ncy4g
VGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGtlZXBzIGl0CisvLyBhbGl2ZSwgc28gdGhlIGNsZWFu
dXAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYXMgbm9ybWFsLgoraG9sZGluZ3MgPSBudWxsOwor
Z2MoKTsKK2Fzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKworbGV0IHRpbWVvdXRfZnVuYyA9
IGZ1bmN0aW9uKCkgeworICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVkKTsKKyAgYXNzZXJ0RXF1
YWxzKGhvbGRpbmdzX2xpc3QubGVuZ3RoLCAxKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xp
c3RbMF0uYSwgInRoaXMgaXMgdGhlIGhvbGRpbmdzIG9iamVjdCIpOworfQorCitzZXRUaW1lb3V0
KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6
YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMgYi9K
U1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFu
dXAtbXVsdGlwbGUtdGltZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q4Yzk2Mzk3NWQyZWNmYjg3NzY1OTJj
ZGI1NWZlODUzNzI3OWMyMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZp
bmFsaXphdGlvbnJlZ2lzdHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5q
cwpAQCAtMCwwICsxLDg1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIp
CisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVt
ZW50YWwtbWFya2luZworLy8gRmxhZ3M6IC0tbm8tc3RyZXNzLWZsdXNoLWJ5dGVjb2RlCisKK2xv
YWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xl
dCBjbGVhbnVwMF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50
ID0gMDsKK2xldCBjbGVhbnVwMF8xX2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAx
X2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0
IGNsZWFudXAxXzFfaG9sZGluZ3NfY291bnQgPSAwOworCitsZXQgY2xlYW51cDAgPSBmdW5jdGlv
bihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0gIjAi
KQorICAgICsrY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xlYW51
cDBfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwMF9jYWxsX2NvdW50OworfQorCitsZXQg
Y2xlYW51cDEgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3NbaG9sZGluZ3Mu
bGVuZ3RoIC0gMV0gPT0gIjAiKQorICAgICsrY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudDsKKyAg
ZWxzZQorICAgICsrY2xlYW51cDFfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwMV9jYWxs
X2NvdW50OworfQorCitsZXQgZmcwID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAw
KTsKK2xldCBmZzEgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cDEpOworCisvLyBS
ZWdpc3RlciAxIHdlYWsgcmVmZXJlbmNlIGZvciBlYWNoIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGFu
ZCBraWxsIHRoZSBvYmplY3RzIHRoZXkgcG9pbnQgdG8uCisoZnVuY3Rpb24oKSB7CisgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgLy8gVGhlIG9iamVjdHMgbmVlZCB0byBi
ZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbS4KKyAg
ICBsZXQgb2JqZWN0cyA9IFtdOworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFd
ID0ge307CisKKyAgICBmZzAucmVnaXN0ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0wIik7Cisg
ICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNbMV0sICJob2xkaW5nczEtMCIpOworCisgICAgLy8gRHJv
cCB0aGUgcmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0cy4KKyAgICBvYmplY3RzID0gW107CisgIH0K
K30pKCk7CisKKy8vIFdpbGwgc2NoZWR1bGUgYm90aCBmZzAgYW5kIGZnMSBmb3IgY2xlYW51cC4K
K2djKCk7CisKKy8vIEJlZm9yZSB0aGUgY2xlYW51cCB0YXNrIGhhcyBhIGNoYW5jZSB0byBydW4s
IGRvIHRoZSBzYW1lIHRoaW5nIGFnYWluLCBzbyBib3RoCisvLyBGaW5hbGl6YXRpb25SZWdpc3Ry
aWVzIGFyZSAoYWdhaW4pIHNjaGVkdWxlZCBmb3IgY2xlYW51cC4gVGhpcyBoYXMgdG8gYmUgYSBJ
SUZFIGZ1bmN0aW9uCisvLyAoc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGUgb2JqZWN0
cykgc28gd2UgY2Fubm90IHVzZSB0aGUgc2FtZSBmdW5jdGlvbgorLy8gYXMgYmVmb3JlLgorKGZ1
bmN0aW9uKCkgeworICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGxldCBv
YmplY3RzID0gW107CisgICAgb2JqZWN0c1swXSA9IHt9OworICAgIG9iamVjdHNbMV0gPSB7fTsK
KyAgICBmZzAucmVnaXN0ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0xIik7CisgICAgZmcxLnJl
Z2lzdGVyKG9iamVjdHNbMV0sICJob2xkaW5nczEtMSIpOworICAgIG9iamVjdHMgPSBbXTsKKyAg
fQorfSkoKTsKKworZ2MoKTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBh
c3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDBfY2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFs
cygwLCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNs
ZWFudXAwXzFfaG9sZGluZ3NfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFf
Y2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2Nv
dW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQpOwor
fQorCisvLyBHaXZlIHRoZSBjbGVhbnVwIHRhc2sgYSBjaGFuY2UgdG8gcnVuLgorc2V0VGltZW91
dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlw
bGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1t
dWx0aXBsZS1kaXJ0eS1maW5hbGl6YXRpb24tcmVnaXN0cmllcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTA3
M2EwMzFkYjA2Y2NkMzAyNmQ4ZjI0ZjEyN2ZhZGRiODk4YWM0Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMu
anMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEi
KQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3Jl
bWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxs
ZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudDEgPSAwOworbGV0IGNsZWFu
dXBfY2FsbF9jb3VudDIgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgewor
ICAgIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdzMSIpCisgICAgICAgICsrY2xlYW51cF9jYWxs
X2NvdW50MTsKKyAgICBlbHNlIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdzMiIpCisgICAgICAg
ICsrY2xlYW51cF9jYWxsX2NvdW50MjsKKyAgICBlbHNlCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworfQorCitsZXQgZmcxID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOwor
bGV0IGZnMiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRl
IHR3byBvYmplY3RzIGFuZCByZWdpc3RlciB0aGVtIGluIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMu
IFRoZSBvYmplY3RzIG5lZWQKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBj
YW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAg
ZmcxLnJlZ2lzdGVyKG9iamVjdDEsICJob2xkaW5nczEiKTsKKworICAgICAgICBsZXQgb2JqZWN0
MiA9IHt9OworICAgICAgICBmZzIucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIpOworICAg
IH0KKyAgICAvLyBvYmplY3QxIGFuZCBvYmplY3QyIGdvIG91dCBvZiBzY29wZS4KK30pKCk7CisK
Ky8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNs
ZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDEpOworYXNz
ZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDIpOworCisvLyBBc3NlcnQgdGhhdCB0aGUg
Y2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKKyAgICBh
c3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50Mik7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXJlZW50cmFu
dC1nYy1mcm9tLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJv
bS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhOTdkYWE0ZDFkMjY1MjQ4MjIwMmQxMWI1YjJjYmM0
NWNiMjcyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQt
Z2MtZnJvbS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1q
c3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjYWxsZWQgPSBmYWxzZTsKK2xl
dCByZWVudHJhbnRfZ2MgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGdjKCk7CisgICAgY2Fs
bGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHJlZW50
cmFudF9nYyk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyAr
K2kpCisgICAgICAgIGZnLnJlZ2lzdGVyKHt9LCA0Mik7Cit9KSgpOworCitnYygpOworCitzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydFRydWUoY2FsbGVkKTsKK30sIDApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRp
cnR5LWVucXVldWUuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3MtZmluYWxpemF0aW9ucmVn
aXN0cnktZGlydHktZW5xdWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTI0ZTJjZDNlYzc2ZDVjODk1MWNk
MmZhMGE1MWE4NWZkMDgwOTgxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
c3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMKQEAgLTAsMCArMSwz
OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmln
aHQgMjAyMCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6
IC0tc3RyZXNzLWNvbXBhY3Rpb24gLS1leHBvc2UtZ2MKKworLy8gVGVzdCB0aGF0IHRoZSBkaXJ0
eSBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIHRoYXQgYXJlIGVucXVldWVkIGR1cmluZyBHQyBoYXZl
CisvLyB0aGVpciBzbG90cyBjb3JyZWN0bHkgcmVjb3JkZWQgYnkgdGhlIEdDLgorCisvLyAxKSBD
cmVhdGUgbWFueSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IG9iamVjdHMgc28gdGhhdCB0aGV5IHNw
YW4gc2V2ZXJhbCBwYWdlcworLy8gKHBhZ2Ugc2l6ZSBpcyAyNTZrYikuCitsZXQgcmVnaXN0cmll
cyA9IFtdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDI0ICogODsgaSsrKSB7CisgIHJlZ2lzdHJp
ZXMucHVzaChuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pKTsKK30KKworLy8gMikg
Rm9yY2UgdHdvIEdDcyB0byBlbnN1cmUgdGhhdCBKU0ZpbmFsaXphdG9uUmVnaXN0cnkgb2JqZWN0
cyBhcmUgdGVudXJlZC4KK2djKCk7CitnYygpOworCisvLyAzKSBJbiBhIGZ1bmN0aW9uOiBjcmVh
dGUgYSBkdW1teSB0YXJnZXQgYW5kIHJlZ2lzdGVyIGl0IGluIGFsbAorLy8gSlNGaW5hbGl6YXRv
blJlZ2lzdHJ5IG9iamVjdHMuCisoZnVuY3Rpb24oKSB7CisgIGxldCBnYXJiYWdlID0ge307Cisg
IHJlZ2lzdHJpZXMuZm9yRWFjaCgoZnIpID0+IHsKKyAgICBmci5yZWdpc3RlcihnYXJiYWdlLCA0
Mik7CisgIH0pOworICBnYXJiYWdlID0gbnVsbDsKK30pKCk7CisKKy8vIDQpIE91dHNpZGUgdGhl
IGZ1bmN0aW9uIHdoZXJlIHRoZSB0YXJnZXQgaXMgdW5yZWFjaGFibGU6IGZvcmNlIEdDIHRvIGNv
bGxlY3QKKy8vIHRoZSBvYmplY3QuCitnYygpOworCisvLyA1KSBGb3JjZSBhbm90aGVyIEdDIHRv
IHRlc3QgdGhhdCB0aGUgc2xvdCB3YXMgY29ycmVjdGx5IHVwZGF0ZWQuCitnYygpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzYwY2ZkYTc3ZjBh
ZmNhMWI1Y2I5ZmRkYWZlYWMwZDkwNzUwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFr
LXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBf
Y2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICAg
YXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCB1bmRlZmluZWQpOworICAgICsrY2xlYW51cF9jYWxsX2Nv
dW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisK
Ky8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25S
ZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0
aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307Cisg
ICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3
aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygp
OworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0
IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVu
Y3Rpb24oKSB7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9
CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVu
cmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDcyYjBmOGIzYmI4ZWJhNjkw
YTE2MGQxNjM4ZDM5ZTQzZjQ3MmQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
djgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vh
ay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVw
X2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBh
c3NlcnRFcXVhbHMoImhvbGRpbmdzIiwgaG9sZGluZ3MpOworICArK2NsZWFudXBfY2FsbF9jb3Vu
dDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0
IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5k
IHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVk
cworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxs
IHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsr
aSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVj
dCwgImhvbGRpbmdzIiwga2V5KTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVj
bGFpbSB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3Nl
cnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNs
ZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigp
IHsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKyAgICBsZXQg
b2xkX2NsZWFudXBfY2FsbF9jb3VudCA9IGNsZWFudXBfY2FsbF9jb3VudDsKKworICAgIC8vIFVu
cmVnaXN0ZXIgYW4gYWxyZWFkeSBjbGVhbmVkLXVwIHdlYWsgcmVmZXJlbmNlLgorICAgIGxldCBz
dWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworICAgIC8vIFNpbmNlIHdlIG1heSBub3QgY29s
bGVjdCBldmVyeXRoaW5nIHdlIGRvbid0IGtub3cgd2hhdCBzdWNjZXNzIHdpbGwgYmUgdW5saWtl
IHY4LgorICAgIC8vIGFzc2VydEZhbHNlKHN1Y2Nlc3MpOworCisgICAgLy8gQXNzZXJ0IHRoYXQg
aXQgZGlkbid0IGRvIGFueXRoaW5nLgorICAgIHNldFRpbWVvdXQoKCkgPT4geyBhc3NlcnRFcXVh
bHMob2xkX2NsZWFudXBfY2FsbF9jb3VudCwgY2xlYW51cF9jYWxsX2NvdW50KTsgfSwgMCk7Cit9
CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11
bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDFlM2VjNmEzYWViZmM3
ODc2YzdkZGFmN2Q3ZGI4YzE1M2ZlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy92OC11bnJlZ2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnkt
d2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nIC0tbm9pbmNyZW1l
bnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVy
IHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6
ICJ0aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0
IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUg
aW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhm
dW5jdGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJt
eSBob2xkaW5ncyIsIGtleSk7CisKKyAgLy8gQ2xlYXIgdGhlIFdlYWtDZWxsIGJlZm9yZSB0aGUg
R0MgaGFzIGEgY2hhbmNlIHRvIGRpc2NvdmVyIGl0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVn
aXN0ZXIoa2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBv
dXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0
IG9iamVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKwor
Ly8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5j
ZSB3ZSBjYWxsZWQgdW5yZWdpc3Rlci4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItY2FsbGVkLXR3aWNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQt
dHdpY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhlZmU4MjRiNmM3NGEwNThjYjFkMWViMzg3MWVjZTViYWY4
YmE3MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2Fs
bGVkLXR3aWNlLmpzCkBAIC0wLDAgKzEsNDYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VX
ZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdj
IC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQu
anMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOwor
bGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3Vu
dDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0
IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5k
IHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVk
cworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxs
IHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3Rl
cihvYmplY3QsICJob2xkaW5ncyIsIGtleSk7CisKKyAgLy8gVW5yZWdpc3RlciBiZWZvcmUgdGhl
IEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0LgorICBsZXQgc3VjY2VzcyA9
IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBDYWxs
IHVucmVnaXN0ZXIgYWdhaW4gKGp1c3QgdG8gYXNzZXJ0IHdlIGhhbmRsZSB0aGlzIGdyYWNlZnVs
bHkpLgorICBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRGYWxzZShzdWNj
ZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlz
IEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMo
MCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVu
Y3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5jZSB0aGUgd2VhayByZWZlcmVuY2UKKy8vIHdhcyB1
bnJlZ2lzdGVyZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVx
dWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVu
YywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1j
bGVhbnVwMi5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViMjEyMjg2NjNhZDJjZWQ1OTY5NWE1M2M1YjNiMGU1ZjdjYjAwYmMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1j
bGVhbnVwMi5qcwpAQCAtMCwwICsxLDQ5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vh
a1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAt
LW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0Lmpz
IiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgY2xlYW51
cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIC8vIFNlZSB3aGljaCB0YXJnZXQgd2UncmUgY2xl
YW5pbmcgdXAgYW5kIHVucmVnaXN0ZXIgdGhlIG90aGVyIG9uZS4KKyAgaWYgKGhvbGRpbmdzID09
IDEpIHsKKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5Mik7CisgICAgYXNzZXJ0
VHJ1ZShzdWNjZXNzIHx8IGNhbGxlZCk7CisgIH0gZWxzZSB7CisgICAgYXNzZXJ0U2FtZShob2xk
aW5ncywgMik7CisgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgIGFz
c2VydFRydWUoc3VjY2VzcyB8fCBjYWxsZWQpOworICB9CisgIGNhbGxlZCA9IHRydWU7Cit9CisK
K2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkxID0g
eyJrIjogImZpcnN0IGtleSJ9OworbGV0IGtleTIgPSB7ImsiOiAic2Vjb25kIGtleSJ9OworLy8g
Q3JlYXRlIHR3byBvYmplY3RzIGFuZCByZWdpc3RlciB0aGVtIGluIHRoZSBGaW5hbGl6YXRpb25S
ZWdpc3RyeS4gVGhlIG9iamVjdHMKKy8vIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0
aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0MSA9IHt9Owor
ICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxLCAxLCBrZXkxKTsKKyAgICAgICAgbGV0IG9iamVj
dDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MiwgMiwga2V5Mik7CisgICAgfQor
fSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGFyZ2V0IG9iamVjdHMgYW5kIHNjaGVk
dWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RmFsc2UoY2FsbGVkKTsKKworLy8gQXNzZXJ0IHRo
YXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZCBhbmQgY2xlYW5lZCB1cCBvbmUgaG9s
ZGluZ3MgKGJ1dCBub3QgdGhlIG90aGVyIG9uZSkuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rp
b24oKSB7CisgICAgYXNzZXJ0VHJ1ZShjYWxsZWQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRf
ZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lk
ZS1jbGVhbnVwMy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFu
dXAzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI3ZmFhN2I2ZTNjNDNiZjJiMTI4NjZmMjQwY2M2ZWFjMTg3ZDIx
YjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lk
ZS1jbGVhbnVwMy5qcwpAQCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
V2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1n
YyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0
LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsK
K2xldCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24o
aG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCAiaG9sZGluZ3MiKTsKKworICAv
LyBUaGVyZSdzIG1vcmVzIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleSB0aGF0IHdlIGhhdmVuJ3QK
KyAgLy8gY2xlYW5lZCB1cCB5ZXQgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gdW5yZWdpc3RlciB0
aGUKKyAgLy8gY2FsbGJhY2sgZm9yIHRoYXQgb25lLgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVn
aXN0ZXIoa2V5KTsKKworICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworCisgICsrY2xlYW51cF9ob2xk
aW5nc19jb3VudDsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJl
Z2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0
byBiZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRo
ZW0hCitsZXQga2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworCisoZnVuY3Rpb24oKSB7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVj
dCA9IHt9OworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3Rlcihv
YmplY3QsICJob2xkaW5ncyIsIGtleSk7CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsICJo
b2xkaW5ncyIsIGtleSk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIGRpc2NvdmVy
IGRpcnR5IFdlYWtDZWxscyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVh
bHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAg
ZnVuY3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAg
YXNzZXJ0RXF1YWxzKDEsIGNsZWFudXBfY2FsbF9jb3VudCk7CisgIGFzc2VydEVxdWFscygxLCBj
bGVhbnVwX2hvbGRpbmdzX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDAp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MzM5OWU2NWYw
ZDI3NDI2MDhiMTM4NDZkNWE1ZDkxN2FiMzdlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanMKQEAgLTAsMCArMSw1MyBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFr
LXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBf
Y2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xl
YW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MyIiwg
aG9sZGluZ3MpOworICArK2NsZWFudXBfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cF9jYWxs
X2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7
CitsZXQga2V5MSA9IHsiayI6ICJrZXkxIn07CitsZXQga2V5MiA9IHsiayI6ICJrZXkyIn07Cisv
LyBDcmVhdGUgdGhyZWUgb2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0
aW9uUmVnaXN0cnkuIFRoZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUg
c28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDFhID0g
e307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDFhLCAiaG9sZGluZ3MxYSIsIGtleTEpOwor
CisgICAgICAgIGxldCBvYmplY3QxYiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3Qx
YiwgImhvbGRpbmdzMWIiLCBrZXkxKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAg
ICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGluZ3MyIiwga2V5Mik7CisKKyAgICAgICAg
Ly8gVW5yZWdpc3RlciBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0aGUg
b2JqZWN0cy4KKyAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAg
ICAgICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2ls
bCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0cy4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24g
d2lsbCBiZSBjYWxsZWQgb25seSBmb3IgdGhlIHJlZmVyZW5jZSB3aGljaAorLy8gd2FzIG5vdCB1
bnJlZ2lzdGVyZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydE5v
dEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xl
YW51cF9ob2xkaW5nc19jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzIGIv
SlNUZXN0cy9zdHJlc3Mvdjgtd2Vhay11bnJlZ2lzdGVydG9rZW4uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQx
ZTgwMGFhMmFjZTA5ZjZmMjk1MmU0ZTk3Y2I1Njk4MWVhMmUzZQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCkBAIC0wLDAgKzEsMzEg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0
IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAt
LWhhcm1vbnktd2Vhay1yZWZzLXdpdGgtY2xlYW51cC1zb21lIC0tZXhwb3NlLWdjIC0tbm9pbmNy
ZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2Fs
bGVyIHJlbGF0aXZlIik7CisKK3ZhciBGUiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSAoZnVu
Y3Rpb24gKGhvbGRpbmdzKSB7IGdsb2JhbFRoaXMuRlJSYW4gPSB0cnVlOyB9KTsKK3sKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqID0ge307Cisg
ICAgICAgIC8vIG9iaiBpcyBpdHMgb3duIHVucmVnaXN0ZXIgdG9rZW4gYW5kIGJlY29tZXMgdW5y
ZWFjaGFibGUgYWZ0ZXIgdGhpcworICAgICAgICAvLyBibG9jay4gSWYgdGhlIHVucmVnaXN0ZXIg
dG9rZW4gaXMgaGVsZCBzdHJvbmdseSB0aGlzIHRlc3Qgd2lsbCBub3QKKyAgICAgICAgLy8gdGVy
bWluYXRlLgorICAgICAgICBGUi5yZWdpc3RlcihvYmosIDQyLCBvYmopOworICAgIH0KK30KKwor
bGV0IHRyeUFnYWluQ291bnQgPSAxMDsKK2Z1bmN0aW9uIHRyeUFnYWluKCkgeworICAgIGdjKCk7
CisgICAgaWYgKGdsb2JhbFRoaXMuRlJSYW4pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIS0t
dHJ5QWdhaW5Db3VudCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgc2V0VGltZW91
dCh0cnlBZ2FpbiwgMCk7Cit9Cit0cnlBZ2FpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404738</attachid>
            <date>2020-07-20 12:01:42 -0700</date>
            <delta_ts>2020-07-20 13:01:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199888-20200720120141.patch</filename>
            <type>text/plain</type>
            <size>193000</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzRmOTg2OWEwOTc5MGJmNWM2ODM4ZGIyNTc4NDIxNjE4MzhlYmY3Li5jNzUxYTVkZDY0OTY1ZWJh
YThlOWJjMjU3ZDk3MzhjZGUzYjlkYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZXJlIGFyZSB0d28K
KyAgICAgICAgbWFpbiBwYXJ0cyB0byB0aGlzIHBhdGNoLCB0aGUgZmlyc3QgaXMgcmVmYWN0b3Jp
bmcgUHJvbWlzZVRpbWVyIGEKKyAgICAgICAgbW9yZSBnZW5lcmFsIGludG8gRGVmZXJyZWRXb3Jr
VGltZXIuIFRoaXMgYWxsb3dzIHVzIHRvIGZpbmFsbHkKKyAgICAgICAgaGF2ZSBhICJyZWFsIiBz
ZXRUaW1lb3V0IG9uIHRoZSBqc2MgY29tbWFuZCBsaW5lLiBUaGUgc2Vjb25kIHBhcnQKKyAgICAg
ICAgaXMgYWRkaW5nIGFsbCB0aGUgbmV3IGNsYXNzZXMgbmVlZGVkIGZvciBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBpcyBtb3N0bHkgYSByZW5hbWUg
YnV0IGRvZXMgdHdvIG1haW4gbmV3CisgICAgICAgIHRoaW5ncy4gVGhlIGZpcnN0IGlzIHRoYXQg
aXQgbm93IG5vdGlmaWVzIHRoZSBWTSB3ZSBoYXZlIGZpbmlzaGVkCisgICAgICAgIGEgc3luY2hy
b251b3VzIEpTIGV4ZWN1dGlvbiwgc28gdGhhdCBXZWFrUmVmcyBjYW4gYmUKKyAgICAgICAgY29s
bGVjdGVkLiBUaGUgc2Vjb25kIGlzIHRoYXQgaXQgbm93IGNhdGNoZXMgYW55IGV4Y2VwdGlvbnMg
YW5kCisgICAgICAgIGZvcndhcmRzIHRoZSB0byBhIG5ldyBtZXRob2Qgb24gdGhlIGdsb2JhbCBv
YmplY3QgbWV0aG9kCisgICAgICAgIHRhYmxlLiBGb3IgV2ViQ29yZSwgdGhpcyByZXBvcnRzIHRo
ZSBleGNlcHRpb24gdG8gdGhlIGNvbnNvbGUuIEZvcgorICAgICAgICBBUEkgdXNlcnMsIHRoaXMg
Y2FsbHMgdGhlaXIgZXhjZXB0aW9uSGFuZGxlciBibG9jay4gRm9yIHRoZSBDTEksCisgICAgICAg
IGl0IGV4aXRzIHdpdGggZXhpdCBzdGF0dXMgMyAob3VyIGdlbmVyYWwgZXhjZXB0aW9uIGV4aXQK
KyAgICAgICAgc3RhdHVzKS4gVW5mb3J0dW5hdGVseSwgdGhlcmUncyBub3QgY3VycmVudGx5IGFu
IGVyZ29ub21pYyB3YXkgdG8KKyAgICAgICAgcGFzcyB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uIGZy
b20gdGhlIENMSSBhcmd1bWVudHMgdG8gdGhpcyBoYW5kbGVyCisgICAgICAgIHNvIHRoYXQncyBu
b3Qgc3VwcG9ydGVkIGhlcmUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBGaW5hbGl6
YXRpb25SZWdpc3RyeSB0aGlzIHBhdGNoIGFkZHMgYSAibmV3IgorICAgICAgICBjbGFzcyBKU0Rl
c3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsLCB3aGljaCBhbGxvd3MgdXMgdG8KKyAg
ICAgICAgaGF2ZSBhIGRlc3RydWN0aWJsZSBvYmplY3Qgd2l0aCBpbnRlcm5hbCBmaWVsZHMuIFNp
bmNlIHRoZSBvcmRlcgorICAgICAgICBvZiBjb2xsZWN0aW9uIGRvZXNuJ3QgbWF0dGVyIHdlIGN1
cnJlbnRseSB1c2UgQysrIEhhc2hUYWJsZXMgb24KKyAgICAgICAgdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBTaW5jZSB1c2VycyBjYW4gdW5yZWdpc3RlciBvYmplY3RzIHdoaWxlCisgICAgICAg
IHRoZSBjYWxsYmFjayBpcyBwZW5kaW5nIHdlIGhhdmUgYSBoYXNoIHRhYmxlIGZvciB0aGUgbGl2
ZSBlbnRyaWVzCisgICAgICAgIGFuZCBhIHNlY29uZCBoYXNoIHRhYmxlIGZvciB0aGUgZGVhZCBv
bmVzLiBMYXN0bHksIGJlY2F1c2UgdXNlcnMKKyAgICAgICAgYXJlIG5vdCByZXF1cmVkIHRvIHBy
b3ZpZGUgYSB0b2tlbiBmb3IgdW5yZWdpc3RyYXRpb24gd2UgaGF2ZSB0d28KKyAgICAgICAgZXh0
cmEgVmVjdG9ycyBjb250YWluaW5nIHRoZSBsaXZlL2RlYWQgb2JqZWN0cyB0aGF0IGFyZSBub3QK
KyAgICAgICAgdW5yZWdpc3RlcmlibGUuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvblNldFRpbWVvdXQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6YXRpb25S
ZWdpc3RyeUxpdmVDb3VudCk6CisgICAgICAgIChmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY2hlY2tVbmNhdWdodEV4Y2Vw
dGlvbik6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3ApOgorICAgICAgICAocnVuSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5jcHAuCisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsp
OgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVy
cmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRl
ZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKToKKyAgICAgICAgKiBydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpGaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAqIHJ1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jRmlu
YWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OnByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpydW5GaW5hbGl6YXRpb25DbGVhbnVwKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZGVhZENvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdGFja092ZXJmbG93RnJhbWVDYWxsZWUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjptYXBTZXRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnNldEFkZFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphcnJheUpvaW5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg6CisgICAgICAgICogcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCYXNlPjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNv
bHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6
OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRl
SUQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlN
b2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMC0wNy0xOSAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIG5vbi11bmlm
aWVkIHNvdXJjZSBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDY0MDNlODBhZGI4MTdmNjQwYTU5
NTE5N2RhZDFlMTI1ZGRjMjJiLi5lNTgxNDU5MGE2MDQ0OGRmN2YxYmQ5MDU4ZTc0MzM4NWIxNTRl
OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZp
bmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQcm9taXNlRGVmZXJyZWRU
aW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNvLCBhZGQgZ2xvYmFsT2Jq
ZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25zIGZyb20gSlNDJ3MKKyAg
ICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6cmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFt
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlhdGVTdHJl
YW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6
CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorCiAyMDIw
LTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgY2FudmFzIGNhcHR1cmVTdHJlYW0sIHRlc3Rz
IGZhaWxpbmcgc2luY2UgdGhleSB3ZXJlIGFkZGVkIGluIHIyMTM1OTgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFj
NDcyNTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uMzY5MjQ0ZmZlZjRkNzYyYjRlZDhlMGU2NGVi
Yzk1OTgxMjQ2MzQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ0LDExICs0NCwxNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBj
b21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKIH07
CiAKK3ZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBCYXNlOjpyZXBv
cnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsK
K30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9i
YWxPYmplY3QuaAppbmRleCA3Mzk3YzZiNGE2MGM2MmMzOGY0MGM2ODEwNzYxYzg1YzhmYzNjYzc0
Li44MTY3YzVjYzBiYzRhZmQ5N2M5ODU2NDk1M2RkZWQ0MzBjNzMzZTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCkBAIC01OSw2ICs1OSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9p
ZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhj
ZXB0aW9uKik7CisKICAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlcklt
cG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqIG1v
ZHVsZU5hbWVWYWx1ZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBTb3VyY2VPcmlnaW4mKTsK
ICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0
KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleVZhbHVlLCBKU1ZhbHVlIHJlZmVycmVyVmFs
dWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVy
RmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW0KaW5kZXggZDYxYWFjN2U0NWM1MzcyMDVhOGFjYTdlMDhlZmQ2OTRjYmVkYzQyMy4uZGRl
MmJkMzIzYmM3YjY1YjRmMDkwMjNiODdhZWEyN2IwNDIzNjM5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC02MiwxMyArNjIsMjAgQEAg
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlclJlc29sdmUsIC8vIG1vZHVs
ZUxvYWRlclJlc29sdmUKICAgICAmbW9kdWxlTG9hZGVyRmV0Y2gsIC8vIG1vZHVsZUxvYWRlckZl
dGNoCiAgICAgJm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLCAvLyBtb2R1
bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwotICAgIG1vZHVsZUxvYWRlckV2YWx1
YXRlLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQorICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwg
Ly8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9u
VHJhY2tlcgorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51
bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1p
bmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwogfTsKIAordm9pZCBKU0FQ
SUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVm
OnRvR2xvYmFsUmVmKGdsb2JhbE9iamVjdCldOworICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlv
bjp0b1JlZihnbG9iYWxPYmplY3QtPnZtKCksIGV4Y2VwdGlvbi0+dmFsdWUoKSldOworfQorCiBz
dGF0aWMgRXhwZWN0ZWQ8VVJMLCBTdHJpbmc+IGNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcihj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgc3BlY2lmaWVyKQogewogICAgIFVSTCBhYnNv
bHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAzNmEwODMwZmE1MWU5YjIyOWE0ZWYzMThhOTBjOWU3NTIyYzBhYmU3Li4zNjc2NTkz
NzRlYjJkM2NiMzE0NjRhNWE5MTRlZWU5OGEyYWM5OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC04MzAsNiArODMwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0RhdGFWaWV3LmgKICAgICBydW50aW1l
L0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCisgICAgcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCiAgICAgcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaAogICAgIHJ1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKICAgICBydW50aW1lL0Rp
cmVjdEFyZ3VtZW50c09mZnNldC5oCkBAIC05NjgsNyArOTY5LDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL1BhcnNlSW50LmgKICAg
ICBydW50aW1lL1ByaXZhdGVOYW1lLmgKICAgICBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgK
LSAgICBydW50aW1lL1Byb21pc2VUaW1lci5oCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuaAogICAgIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAogICAgIHJ1bnRpbWUvUHJv
cGVydHlOYW1lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNkNzRjMjUyMmVh
MmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1Zi4uYTI2YTk5NzUyNTJkMDY1NDY2YmZhNjFhNWI1
YzJlZjMwZjI0ZjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkzMSwxNiAr
OTMxLDE5IEBACiAJCTUzMEZERTc1MjFGQUIwMDYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEZERTczMjFG
QUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSAqLzsgfTsKIAkJNTMxMUJENEIxRUE1ODFF
NTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFFQTU4MUU1MDA1MjUyODEgLyogV2FzbU9NR1BsYW4u
aCAqLzsgfTsKIAkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCQzFENUNFNjc2
MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsgfTsKLQkJNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQy
IC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAq
LzsgfTsKLQkJNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4
ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9
OworICAgICAgICAgICAgICAgIDUzMTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMx
ODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi87IH07CisgICAgICAg
ICAgICAgICAgNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzMzQkJEQjIxMTBGN0QyMDA3NjE4RUMgLyog
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgKi87IH07CiAJCTUzMzNCQkRDMjExMEY3RDkwMDc2MThFQyAvKiBERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkVDOURDMjEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3Bw
ICovOyB9OwogCQk1MzMzQkJERDIxMTBGN0UxMDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg4
MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi87IH07Ci0J
CTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEUyQTYy
Mzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1
MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFMkE2MjM5
NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzMzhFQkEzMjNBQjA0Qjgw
MDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYyIC8qIEZU
TFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87IH07Ci0JCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRE
NyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJG
RTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0
NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQy
RkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1
MzQxRkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQz
QzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKIAkJNTM0NjM4NzEx
RTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNS
dW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk1MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVD
MDBGMTJBQzEgLyogUHJvbWlzZVRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKyAgICAgICAgICAgICAgICA1MzQ2Mzg3NTFF
NzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBE
ZWZlcnJlZFdvcmtUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisgICAgICAgICAgICAgICAgNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpT
VHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAw
MTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJh
eUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNGNjQgLyogQWNjZXNz
Q2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCAqLzsgfTsKQEAgLTM1OTcsNiAr
MzYwMCw3IEBACiAJCTUyRUVENzkzMjQ5MkI4NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkFsbG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MkY2QzM1QjFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFF
QjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9
IGpzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzMDA3NDBDMjJERDZGNjYwMEI5QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MDFGQTNFMzFDMDAyNkE1NDUgLyogU291
cmNlc0NvY29hLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VzQ29jb2EudHh0OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjM0MTFGQTNFMzFEMDAyNkE1NDUgLyog
U291cmNlcy50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlcy50eHQ7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMEE2NkFEMUZBM0U3NzcwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMTQ0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZp
ZWRTb3VyY2UxNDQuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC0zNjIyLDE3ICszNjI2LDIyIEBACiAJCTUzMTgwNDVCMjJFQUFD
NEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0V4dHJhY3RW
YWx1ZS5oOyBwYXRoID0gYjMvQjNFeHRyYWN0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTMxODA0NUQyMkVBQUYwRjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzRXh0cmFjdFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzRXh0cmFj
dFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxRDRFMTkxRjU5Q0RE
MjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGFwaS5jcHA7
IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyog
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MzI2MzFCMzIxODc3N0E1MDA3QjgxOTEgLyogSmF2YVNjcmlwdENvcmUubW9kdWxlbWFw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gInNvdXJjZWNvZGUubW9kdWxlLW1hcCI7IHBhdGggPSBKYXZhU2NyaXB0Q29y
ZS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMzhFMkE2MjM5NkVG
RUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzM4RUJBMjIzQUIwNEEzMDAzODI2NjIgLyogRlRMU2Vs
ZWN0UHJlZGljdGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRM
U2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgcGF0aCA9IGZ0bC9GVExTZWxlY3RQcmVkaWN0YWJpbGl0
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUw
MEEgLyogV2FzbU9wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT3Bz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZF
MiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQ2MjJDMkQ5
RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0
MUZDNkYxREFDMzNFNTAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5j
cHA7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTM0MUZDNzExREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQm91bmRz
Q2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3MDFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5M
b29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEy
QUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNlVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9taXNlVGltZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNU
eXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDYzODc0
MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWZlcnJlZFdvcmtUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJyZWRXb3JrVGlt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAgICAgICAgIDUzNDg2
QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJy
YXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFy
cmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgzMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBl
ZEFycmF5Q1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZWRBcnJh
eUNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJheUNUZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MTM0LDYgKzcxNDMsOCBAQAogCQkJCTE0QTE1NjMwMTA5NjYz
NjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEz
NUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5jcHAgKi8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAw
RjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIw
MUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJCTczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFB
QTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAqLywKQEAgLTcxODQsMTEgKzcx
OTUsMTcgQEAKIAkJCQkxNDczNDFFOTFEQzJDRjI1MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2Uu
Y3BwICovLAogCQkJCTE0NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5o
ICovLAogCQkJCUUzNUEwQjlDMjIwQUQ4N0EwMEFDNDQ3NCAvKiBFeGVjdXRhYmxlQmFzZUlubGlu
ZXMuaCAqLywKLQkJCQlDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVy
QWdlbnQuY3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNGQUQzMzIz
NzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovLAogCQkJCUNFQ0ZB
RDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNF
MjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICov
LAogCQkJCUNFMjBCRDAzMjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJh
c2UuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDUyMkMyRDg3
RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwICovLAorCQkJ
CTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRFNkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJCQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyog
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLywKIAkJCQlBN0E4QUYyOTE3QURCNUYz
MDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3QThBRjJBMTdBREI1RjMwMDVBQjE3NCAv
KiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxv
YXQ2NEFycmF5LmggKi8sCiAJCQkJQkMyNjgwQzAwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5j
dGlvbkNvbnN0cnVjdG9yLmggKi8sCkBAIC03MzQ1LDcgKzczNjIsMTMgQEAKIAkJCQkwRjdERjEz
OTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3Bw
ICovLAogCQkJCTBGN0RGMTNBMUUyOTcxMEUwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oICovLAogCQkJCUE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4
cG9ydE1hY3Jvcy5oICovLAotCQkJCTBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0
MzJBcnJheS5oICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzAwNzQwQzIy
REQ2RjY2MDBCOUFDQjMgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDc5ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5
ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovLAorCQkJCTc5ODkz
Nzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuaCAqLywKKwkJCQk3OTg5Mzc3NzFE
Q0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmggKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5o
ICovLAogCQkJCTBGMkI2NkMyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICov
LAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJ
CQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLApAQCAtNzU0NCw5
ICs3NTY3LDcgQEAKIAkJCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUu
aCAqLywKIAkJCQkxNDczNDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUu
Y3BwICovLAogCQkJCTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5oICovLAotCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuY3Bw
ICovLAotCQkJCTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCAqLywK
LQkJCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQTdGQjYwQTMxMDNGN0RDMjAwMTdB
Mjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAw
MTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQw
MDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLAogCQkJCTg2MTU4QUIyMTU1QzhC
M0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKQEAgLTkyODYsNiArOTMwNyw3IEBACiAJ
CQkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0IC8qIERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZl
cnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNDYzODc1MUU3MERERUMwMEYx
MkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3
NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVC
eUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTI2LDkgKzk1NDgsMTEgQEAKIAkJCQkw
RjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTI2N0NGODIyNDkzMTZCMTAwMjJCRjZEIC8qIEZhc3RKSVRQZXJtaXNzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRUNGQUQz
NzIzNzJEQUQ0MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNGQUQzNzIzNzJEQUQ0MDAyOTE1
OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMjBCRDA1
MjM3RDNFMjMwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NDIyQzJE
Nzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg1Nyw3ICs5ODgxLDggQEAKIAkJCQlGRTM4NEVFNjFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2
MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0
QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ3MjJDMkQ5RDIw
MDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3
OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAxNDcsOCArMTAxNzIsNyBAQAogCQkJCURDNjA1QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9m
aWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8q
IFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUQ0MURDMDJFNkQw
MEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0NjM4
NzUxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVy
cyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAw
QzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEw
MDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5h
bWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAy
YTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0YzI3MDUuLjJhMjg3YTdmZGRiMDgwNGYzYjYw
MTIwZGNhMGJlNzViNzU1ZTc5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc4
Niw2ICs3ODYsOCBAQCBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAogcnVudGltZS9FeGVjdXRh
YmxlQmFzZS5jcHAKIHJ1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0Zp
bGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKK3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAKQEAgLTg1MCw2ICs4
NTIsNyBAQCBydW50aW1lL0pTRGF0YVZpZXcuY3BwCiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCiBydW50aW1lL0pTRGF0ZU1hdGguY3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmNwcAorcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUv
SlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKQEAgLTkzMiw3ICs5MzUsNyBAQCBydW50aW1lL09wZXJh
dGlvbnMuY3BwCiBydW50aW1lL09wdGlvbnMuY3BwCiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3Jl
YXRpbmdGdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCi1ydW50
aW1lL1Byb21pc2VUaW1lci5jcHAKK3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCiBydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcAogcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRl
eCAxODRiYjk0NDQxZDNmYTQzMzQyYWZiZjk2NjVjYzFiZTczOWVlMDEzLi5kODFhZGVmZjVmODQy
NmE4NTMyNDJjNGU3YTE3YjU3YTY1MjFjNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU1ZpcnR1YWxN
YWNoaW5lSW50ZXJuYWwuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dl
YWtPYmplY3RSZWYuaCIKQEAgLTYxMSw2ICs2MTIsOCBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKnZtKCkubV93ZWFrT2JqZWN0UmVmU3BhY2Up
OwogICAgIGlmICh2bSgpLm1fZXJyb3JJbnN0YW5jZVNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1h
cmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bSgpLm1fZXJyb3JJ
bnN0YW5jZVNwYWNlKTsKKyAgICBpZiAodm0oKS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2Up
CisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeT4oKnZtKCkubV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKTsKIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAodm0oKS5tX3dlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDJlMGQwYTMwZGY1ZjY1MzA4ZTdhOWZjZWI5
NjQzNGEyOTdmMTgzMTkuLmM5YmVlZDlmYTgyMzRmMWExMDYyMWYzMTM2MjBiYmNhZjU2MjlkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29tcGls
ZXJUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb25m
aWdGaWxlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNh
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpT
RmluYWxpemF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTU2LDcgKzU4
LDYgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVy
cm9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb21pc2VU
aW1lci5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFwQWNjZXNzU2NvcGUuaCIKICNpbmNsdWRlICJT
YW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCkBAIC0xNTUsNiAr
MTU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIHsKIAorI2RlZmluZSBF
WElUX0VYQ0VQVElPTiAzCisKIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIHN0YXRpYyB2b2lkIGpzY0V4
aXQoaW50IHN0YXR1cykKIHsKICAgICB3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsK
QEAgLTE4OCw3ICsxOTEsNyBAQCBjbGFzcyBXb3JrZXJzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgogaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYsIGJvb2wgaXNXb3JrZXIsIGNvbnN0
IEZ1bmMmKTsKLXN0YXRpYyB2b2lkIGNoZWNrRXhjZXB0aW9uKEdsb2JhbE9iamVjdCosIGJvb2wg
aXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUsIENvbW1hbmRMaW5lJiwgYm9v
bCYgc3VjY2Vzcyk7CitzdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqLCBi
b29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVlLCBjb25zdCBDb21tYW5k
TGluZSYsIGJvb2wmIHN1Y2Nlc3MpOwogCiBjbGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPE1lc3NhZ2U+IHsKIHB1YmxpYzoKQEAgLTMwMiw3ICszMDUsMTAgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIo
SlNHbG9iYWxPYmplY3QqLCBDYWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNG
b3JBbGxWYXJpYWJsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNldFRpbWVvdXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklz
MzJCaXRQbGF0Zm9ybShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwpAQCAtNTM4LDggKzU0NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5
cGVzRm9yQWxsVmFyaWFibGVzICwgMCk7CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFp
bk1pY3JvdGFza3MiLCBmdW5jdGlvbkRyYWluTWljcm90YXNrcywgMCk7Ci0gICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMsIDAp
OworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVv
dXQsIDIpOwogCisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZVdlYWtSZWZzIiwgZnVu
Y3Rpb25SZWxlYXNlV2Vha1JlZnMsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZpbmFs
aXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50IiwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxp
dmVDb3VudCwgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0
cnlEZWFkQ291bnQiLCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50LCAwKTsK
KyAgICAgICAgCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0UmFuZG9tU2VlZCIsIGZ1bmN0
aW9uR2V0UmFuZG9tU2VlZCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0UmFuZG9t
U2VlZCIsIGZ1bmN0aW9uU2V0UmFuZG9tU2VlZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiaXNSb3BlIiwgZnVuY3Rpb25Jc1JvcGUsIDEpOwpAQCAtNjM4LDYgKzY0OCw4IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9i
amVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAg
c3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVj
dCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3Rh
dGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0ds
b2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBK
U1ZhbHVlKTsKKworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KTsKIApAQCAt
NjYwLDYgKzY3Miw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVj
dDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyQ3JlYXRl
SW1wb3J0TWV0YVByb3BlcnRpZXMsCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVh
dGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgorICAgICZyZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5n
dWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBp
bnN0YW50aW5hdGVTdHJlYW1pbmcKQEAgLTIxODcsNiArMjIwMCwyOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHJhaW5NaWNyb3Rhc2tzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFu
eSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBkb24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0
ZXN0aW5nLgorICAgIGF1dG8gY2FsbGJhY2sgPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2
bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3Vt
ZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsKKworICAgIC8vIEZJWE1FOiBXZSBkb24ndCBs
b29rIGF0IHRoZSB0aW1lb3V0IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBzY2hl
ZHVsZSB3b3JrIGxhdGVyIEFQSS4KKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGlu
Z1dvcmsodm0sIGNhbGxiYWNrLCB7IH0pOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hl
ZHVsZVdvcmtTb29uKGNhbGxiYWNrLCBbY2FsbGJhY2tdIHsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNhbGxiYWNrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywganNVbmRlZmluZWQo
KSwgYXJncywgIllvdSBzaG91bGRuJ3Qgc2VlIHRoaXMuLi4iKTsKKyAgICAgICAgdm0uZGVmZXJy
ZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKGNhbGxiYWNrKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpAQCAtMjE5NCw2ICsyMjMwLDMyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25SZWxlYXNlV2Vha1JlZnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVD
b3VudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZmluYWxpemF0aW9uUmVnaXN0cnkg
PSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih2bSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CisgICAgaWYgKCFmaW5hbGl6YXRpb25SZWdpc3RyeSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50
IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lzdHJ5Il9zKTsKKworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxpemF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChs
b2NrZXIpKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxp
emF0aW9uUmVnaXN0cnkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3Ry
eSJfcyk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5
LT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFs
aXphdGlvblJlZ2lzdHJ5LT5kZWFkQ291bnQobG9ja2VyKSkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMjYxNywxMCArMjY3OSwxMCBA
QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICAvLyBXZSBjYW4ndCB1c2Ug
ZGVzdHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2luZyBjb2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dz
CiAgICAgLy8gU3RydWN0dXJlZCBFeGNlcHRpb24gSGFuZGxpbmcKLSAgICBpbnQgcmVzID0gMDsK
KyAgICBpbnQgcmVzID0gRVhJVF9TVUNDRVNTOwogICAgIFRSWQogICAgICAgICByZXMgPSBqc2Nt
YWluKGFyZ2MsIGFyZ3YpOwotICAgIEVYQ0VQVChyZXMgPSAzKQorICAgIEVYQ0VQVChyZXMgPSBF
WElUX0VYQ0VQVElPTikKICAgICBmaW5hbGl6ZVN0YXRzQXRFbmRPZlRlc3RpbmcoKTsKICAgICBp
ZiAoZ2V0ZW52KCJKU19TSEVMTF9XQUlUX0ZPUl9JTlBVVF9UT19FWElUIikpIHsKICAgICAgICAg
V1RGOjpmYXN0RGlzYWJsZVNjYXZlbmdlcigpOwpAQCAtMjY5MSw3ICsyNzUzLDcgQEAgc3RhdGlj
IHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBl
eGNlcHRpb24pCiAjdW5kZWYgQ0hFQ0tfRVhDRVBUSU9OCiB9CiAKLXN0YXRpYyBib29sIGNoZWNr
VW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBleGNlcHRpb24sIENvbW1hbmRMaW5lJiBvcHRpb25zKQorc3RhdGljIGJvb2wgY2hlY2tV
bmNhdWdodEV4Y2VwdGlvbihWTSYgdm0sIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGV4Y2VwdGlvbiwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMpCiB7CiAgICAgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZEV4Y2VwdGlvbk5hbWUgPSBvcHRpb25zLm1fdW5jYXVnaHRFeGNlcHRp
b25OYW1lOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKQEAgLTI3
MjMsNyArMjc4NSw3IEBAIHN0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZt
LCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwg
Q29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCitzdGF0aWMgdm9pZCBjaGVja0V4
Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCBpc0xhc3RGaWxlLCBib29s
IGhhc0V4Y2VwdGlvbiwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMs
IGJvb2wmIHN1Y2Nlc3MpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBA
IC0yNzQyLDYgKzI4MDQsMTUgQEAgc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXMKICAgICAgICAgc3Vj
Y2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tVbmNhdWdodEV4Y2VwdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCAoaGFzRXhjZXB0aW9uKSA/IHZhbHVlIDogSlNWYWx1ZSgpLCBvcHRpb25zKTsKIH0KIAordm9p
ZCBHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgYXV0
byogZ2xvYmFsID0ganNDYXN0PEdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgZHVt
cEV4Y2VwdGlvbihnbG9iYWwsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7CisgICAgYm9vbCBoaWRlTm9S
ZXR1cm4gPSB0cnVlOworICAgIGlmIChoaWRlTm9SZXR1cm4pCisgICAgICAgIGpzY0V4aXQoRVhJ
VF9FWENFUFRJT04pOworfQorCiBzdGF0aWMgdm9pZCBydW5XaXRoT3B0aW9ucyhHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wmIHN1Y2Nlc3MpCiB7
CiAgICAgVmVjdG9yPFNjcmlwdD4mIHNjcmlwdHMgPSBvcHRpb25zLm1fc2NyaXB0czsKQEAgLTMx
NzYsNyArMzI0Nyw3IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJv
b2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIGZ1bmModm0sIGdsb2JhbE9i
amVjdCwgc3VjY2Vzcyk7CiAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIH0KLSAg
ICB2bS5wcm9taXNlVGltZXItPnJ1blJ1bkxvb3AoKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+cnVuUnVuTG9vcCgpOwogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CiAgICAgICAgIGlmIChvcHRpb25zLm1faW50ZXJhY3RpdmUgJiYgc3VjY2VzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2
OGVmZWRhMTRkNDYxMDUyNjA3NWFmZGViYWM5YWRiYTI1MjY2YmEuLjUwZDZiYmE1NDk4YzAyYjUy
MjRiYjM3YzY1ZDdhYjJkMTgyZThiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiw2ICszNiw3IEBACiAgICAgbWFjcm8oRGF0ZVRp
bWVGb3JtYXQpIFwKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAor
ICAgIG1hY3JvKEZpbmFsaXphdGlvblJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwK
ICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3JvKEludGwpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xOTU2ZGE0MTQwMWIxNmFmZGVkOGUxYWQzOWMyNDZjZDM2YmZiNTBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3Bw
CkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3Jr
VGltZXIuaCIKKworI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCituYW1lc3BhY2UgRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKK0RlZmVycmVkV29ya1RpbWVyOjpE
ZWZlcnJlZFdvcmtUaW1lcihWTSYgdm0pCisgICAgOiBCYXNlKHZtKQoreworfQorCit2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0mIHZtKQoreworICAgIEFTU0VSVCh2bS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBj
YW5jZWxUaW1lcigpOworICAgIGlmICghbV9ydW5UYXNrcykgeworICAgICAgICBtX3Rhc2tMb2Nr
LnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKCFtX3Rhc2tz
LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtl
Rmlyc3QoKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6
dmVyYm9zZSwgIkRvaW5nIHdvcmsgb246ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisKKyAgICAg
ICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KKyAgICAg
ICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSkgeworICAgICAgICAgICAg
Ly8gQWxsb3cgdGFza3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgorICAgICAgICAgICAg
bV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRydWU7CisgICAgICAgICAgICBtX3Rhc2tMb2NrLnVu
bG9jaygpOyAKKworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBydW5sb29w
IHR1cm4sIHdlIGNhbiByZWxlYXNlIGFueSB3ZWFrcmVmcyBoZXJlLgorICAgICAgICAgICAgdm0u
ZmluYWxpemVTeW5jaHJvbm91c0pTRXhlY3V0aW9uKCk7CisKKyAgICAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRhc2soKTsKKyAgICAg
ICAgICAgIGlmIChFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGlja2V0LT5nbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAg
ICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0VW5jYXVn
aHRFeGNlcHRpb25BdEV2ZW50TG9vcChnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOworICAgICAgICAgICAg
QVNTRVJUKCF2bS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkpOworCisgICAgICAgICAgICBtX3Rh
c2tMb2NrLmxvY2soKTsKKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHko
KSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpCisgICAgICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CisKKyAgICBtX3Rhc2tMb2NrLnVubG9jaygpOworfQor
Cit2b2lkIERlZmVycmVkV29ya1RpbWVyOjpydW5SdW5Mb29wKCkKK3sKKyAgICBBU1NFUlQoIW1f
YXBpTG9jay0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgQVNT
RVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsK
KyAgICBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2ggPSB0cnVlOworICAg
IGlmIChtX3BlbmRpbmdUaWNrZXRzLnNpemUoKSkKKyAgICAgICAgUnVuTG9vcDo6cnVuKCk7Cit9
CisKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmFkZFBlbmRpbmdXb3JrKFZNJiB2bSwgVGlja2V0
IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykKK3sKKyAgICBB
U1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKKyAgICAgICAgQVNTRVJU
KGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOworCisgICAgYXV0byByZXN1bHQgPSBt
X3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVk
V29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgdGlja2V0OiAi
LCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9u
ZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhTG9nTG5J
ZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRl
bmNpZXMgZm9yIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsKKyAgICB9Cit9CisK
K2Jvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc1BlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQpCit7
CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKKyAgICByZXR1cm4gbV9wZW5kaW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpOworfQorCiti
b29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQg
dGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpCit7CisgICAgQVNTRVJUKHRpY2tldC0+dm0oKS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nVGlj
a2V0cy5jb250YWlucyh0aWNrZXQpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5nZXQodGlja2V0KTsKKyAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRlcGVuZGVuY3kp
OworfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayhUaWNrZXQg
dGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7CisgICAgYm9vbCByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLnJlbW92ZSh0
aWNrZXQpOworCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRX
b3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50
ZXIodGlja2V0KSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIERlZmVycmVkV29y
a1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKFRpY2tldCB0aWNrZXQsIFRhc2smJiB0YXNrKQorewor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOworICAgIG1fdGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKKyAgICBpZiAoIWlzU2NoZWR1
bGVkKCkgJiYgIW1fY3VycmVudGx5UnVubmluZ1Rhc2spCisgICAgICAgIHNldFRpbWVVbnRpbEZp
cmUoMF9zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzFhOGFiYzll
YzQyODU2ZTlkZDNhMWNjM2JjNWNlODZkYjRmNjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSlNQcm9taXNlOworY2xhc3MgVk07CitjbGFzcyBKU0NlbGw7
CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlZmVycmVkV29ya1RpbWVyIGZpbmFsIDogcHVi
bGljIEpTUnVuTG9vcFRpbWVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNSdW5Mb29w
VGltZXI7CisKKyAgICB2b2lkIGRvV29yayhWTSYpIGZpbmFsOworCisgICAgdXNpbmcgVGlja2V0
ID0gSlNPYmplY3QqOworICAgIHZvaWQgYWRkUGVuZGluZ1dvcmsoVk0mLCBUaWNrZXQsIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOworICAgIGJvb2wgaGFzUGVuZGluZ1dv
cmsoVGlja2V0KTsKKyAgICBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCwg
SlNDZWxsKiBkZXBlbmRlbmN5KTsKKyAgICBib29sIGNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCk7
CisKKyAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB2b2lkIHNjaGVkdWxl
V29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworCisgICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tzKCkg
eyBtX3J1blRhc2tzID0gZmFsc2U7IH0KKworICAgIHZvaWQgcnVuUnVuTG9vcCgpOworCisgICAg
c3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIERlZmVycmVkV29ya1RpbWVyKFZNJik7CisKKyAgICBMb2NrIG1fdGFz
a0xvY2s7CisgICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRT
dG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY3Vy
cmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OworICAgIERlcXVlPHN0ZDo6dHVwbGU8VGlja2V0
LCBUYXNrPj4gbV90YXNrczsKKyAgICBIYXNoTWFwPFRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0Nl
bGw+Pj4gbV9wZW5kaW5nVGlja2V0czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDY5OGYwYzkxNDllZTk3MWMz
YTlmY2FmMThkODc2NjYyYzNjMGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKQEAgLTAs
MCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMu
aCIKKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yKSB9OworCit2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHBy
b3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkZpbmFsaXphdGlvblJl
Z2lzdHJ5Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxGaW5hbGl6YXRpb25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0RmluYWxpemF0
aW9uUmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvcjo6RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxs
RmluYWxpemF0aW9uUmVnaXN0cnksIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KQorewor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmluYWxpemF0aW9u
UmVnaXN0cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmluYWxpemF0aW9uUmVnaXN0cnkiKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNDYWxsYWJsZSh2bSkpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJz
dCBhcmd1bWVudCB0byBGaW5hbGl6YXRpb25SZWdpc3RyeSBzaG91bGQgYmUgYSBmdW5jdGlvbiJf
cyk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSA9
IGNhbGxGcmFtZS0+anNDYWxsZWUoKSA9PSBuZXdUYXJnZXQKKyAgICAgICAgPyBnbG9iYWxPYmpl
Y3QtPmZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkKKyAgICAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG5ld1RhcmdldCwg
Z2V0RnVuY3Rpb25SZWFsbSh2bSwgbmV3VGFyZ2V0KS0+ZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1
Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKHZtLCBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVy
ZSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKSkpKTsKK30KKwor
fQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYWUxNjhjY2Nj
YTZlNmJkYjEwNTU3NTZkMTA0MTdhZGQ2OTI3NzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOwor
CitjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0
aW9uOworCisgICAgc3RhdGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZSogcHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQorICAgIHsKKyAgICAgICAgRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0
aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKik7
Cit9OworCitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxMWY5ZjhmNjkzMDE3ZGRmMzlmOGZiNDc0NTg0
OTNkYzk5MGI4ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkZpbmFsaXph
dGlvblJlZ2lzdHJ5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSkgfTsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlS
ZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVy
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK3ZvaWQgRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIC8vIFdlIGNhbid0IG1ha2UgdGhpcyBhIHByb3Bl
cnR5IG5hbWUgYmVjYXVzZSBpdCdzIGEgcmVzZXZlcmVkIHdvcmQgaW4gQysrLi4uCisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInJlZ2lzdGVyIiksIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTihJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidW5yZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRpb25SZWdpc3Ry
eVVucmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
K30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdp
c3RyeSBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgYXV0byogZ3JvdXAgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9u
UmVnaXN0cnkqPih2bSwgYXNPYmplY3QodmFsdWUpKTsKKyAgICBpZiAoTElLRUxZKGdyb3VwKSkK
KyAgICAgICAgcmV0dXJuIGdyb3VwOworCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdpc3RyeSBmdW5jdGlvbiBvbiBhIG5vbi1G
aW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3QiX3MpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lz
dHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGdyb3VwID0gZ2V0Rmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUg
dGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB0YXJnZXQiX3MpOworCisgICAg
SlNWYWx1ZSBob2xkaW5ncyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKHNhbWVW
YWx1ZShnbG9iYWxPYmplY3QsIHRhcmdldCwgaG9sZGluZ3MpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgZXhwZWN0cyB0aGUg
dGFyZ2V0IG9iamVjdCBhbmQgdGhlIGhvbGRpbmdzIHBhcmFtZXRlciBhcmUgbm90IHRoZSBzYW1l
LiBPdGhlcndpc2UsIHRoZSB0YXJnZXQgY2FuIG5ldmVyIGJlIGNvbGxlY3RlZCJfcyk7CisKKyAg
ICBKU1ZhbHVlIHVucmVnaXN0ZXJUb2tlbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CisgICAg
aWYgKCF1bnJlZ2lzdGVyVG9rZW4uaXNVbmRlZmluZWQoKSAmJiAhdW5yZWdpc3RlclRva2VuLmlz
T2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJyZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgYXMgdGhlIHVucmVnaXN0cmF0aW9u
IHRva2VuIl9zKTsKKworICAgIGdyb3VwLT5yZWdpc3RlclRhcmdldCh2bSwgdGFyZ2V0LmdldE9i
amVjdCgpLCBob2xkaW5ncywgdW5yZWdpc3RlclRva2VuKTsKKyAgICByZXR1cm4gZW5jb2RlZEpT
VW5kZWZpbmVkKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
RmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAoYXV0byogdG9rZW4gPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gZ3JvdXAt
PnVucmVnaXN0ZXIodm0sIHRva2VuKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgfQorCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGlzIHRo
ZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTVhNTM1MzYxYzk4ZGY2OGY1OWZlNzEzMmM1YzM3NzkwYjA3Yjhh
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNlKTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGU+KHZtLmhlYXApKSBGaW5h
bGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHBy
b3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeyB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oCmluZGV4IDkz
MTc1ODNhMWI2MzlkM2E0N2UwZDVmMDQ2NDY1NjlkNzY0ZWM0NWEuLjFhMDBmNDk2YmM3YzY3ODAx
M2FkZmQ3NDNhOGJjYmMxNzZmY2IyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYyODNkNjNkZjI1MDhkNGY1N2U4NGZhZWYxYjFkZDYxMDM2N2QyZTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5LmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5OjpzX2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdpc3RyeSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGaW5hbGl6YXRp
b25SZWdpc3RyeSkgfTsKKworU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0pTRmluYWxpemF0aW9uUmVnaXN0cnkqIEpTRmluYWxpemF0aW9uUmVnaXN0
cnk6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogY2FsbGJh
Y2spCit7CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pih2bS5oZWFwKSkgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSh2bSwgc3RydWN0dXJlKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24odm0sIGNhbGxiYWNrKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK3ZvaWQgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogY2Fs
bGJhY2spCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChjYWxs
YmFjay0+aXNDYWxsYWJsZSh2bSkpOworICAgIGF1dG8gdmFsdWVzID0gaW5pdGlhbFZhbHVlcygp
OworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlcy5zaXplKCk7ICsr
aW5kZXgpCisgICAgICAgIEJhc2U6OmludGVybmFsRmllbGQoaW5kZXgpLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIodmFsdWVzW2luZGV4XSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6Q2FsbGJh
Y2spLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY2FsbGJhY2spOworfQorCit2b2lkIEpTRmluYWxp
emF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworCisg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4oY2Vs
bCk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRoaXNPYmplY3QtPmNlbGxMb2NrKCkp
OworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3QtPm1fbGl2ZVJlZ2lzdHJh
dGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiBpdGVyLnZhbHVlKQor
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0aW9uLmhvbGRpbmdzKTsKKyAgICB9
CisgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3Ry
YXRpb25MaXZlKQorICAgICAgICB2aXNpdG9yLmFwcGVuZChyZWdpc3RyYXRpb24uaG9sZGluZ3Mp
OworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJh
dGlvbnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBob2xkaW5ncyA6IGl0ZXIudmFsdWUpCisgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYg
aG9sZGluZ3MgOiB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkKQorICAgICAgICB2
aXNpdG9yLmFwcGVuZChob2xkaW5ncyk7CisKKyAgICBzaXplX3QgdG90YWxCdWZmZXJTaXplc0lu
Qnl0ZXMgPSB0aGlzT2JqZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXpl
b2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFp
clR5cGUpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbGl2
ZVJlZ2lzdHJhdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5t
X2RlYWRSZWdpc3RyYXRpb25zKTo6S2V5VmFsdWVQYWlyVHlwZSk7CisgICAgdG90YWxCdWZmZXJT
aXplc0luQnl0ZXMgKz0gdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5jYXBhY2l0
eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUu
dGFrZUxhc3QoKSkpOworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3Qt
Pm1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlz
T2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB2aXNpdG9y
LnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodG90YWxCdWZmZXJTaXplc0luQnl0
ZXMpOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlc3Ryb3koSlNDZWxsKiB0
YWJsZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odGFibGUp
LT5+SlNGaW5hbGl6YXRpb25SZWdpc3RyeSgpOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVn
aXN0cnk6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworCisgICAgYXV0byByZW1vdmVGcm9tVmVjdG9yID0g
W10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHBvc2l0aW9uKSB7CisgICAgICAgIHN0ZDo6c3dhcCh2
ZWN0b3JbcG9zaXRpb25dLCB2ZWN0b3IubGFzdCgpKTsKKyAgICAgICAgcmV0dXJuIHZlY3Rvci50
YWtlTGFzdCgpOworICAgIH07CisKKyAgICBib29sIHJlYWRpZWRDZWxsID0gZmFsc2U7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmUuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgQVNTRVJUKCFtX25vVW5yZWdpc3RyYXRpb25MaXZlW2ldLmhvbGRpbmdz
LmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJrZWQobV9ub1VucmVnaXN0cmF0aW9uTGl2
ZVtpXS5ob2xkaW5ncy5nZXQoKS5hc0NlbGwoKSkpOworICAgICAgICBpZiAoIXZtLmhlYXAuaXNN
YXJrZWQobV9ub1VucmVnaXN0cmF0aW9uTGl2ZVtpXS50YXJnZXQpKSB7CisgICAgICAgICAgICBt
X25vVW5yZWdpc3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKG1fbm9VbnJlZ2lz
dHJhdGlvbkxpdmUsIGkpLmhvbGRpbmdzKTsKKyAgICAgICAgICAgIHJlYWRpZWRDZWxsID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbGl2ZVJlZ2lzdHJhdGlvbnMucmVtb3ZlSWYo
WyZdIChhdXRvJiBidWNrZXQpIC0+IGJvb2wgeworICAgICAgICBBU1NFUlQoYnVja2V0LnZhbHVl
LnNpemUoKSk7CisKKyAgICAgICAgYm9vbCBrZXlJc0RlYWQgPSAhdm0uaGVhcC5pc01hcmtlZChi
dWNrZXQua2V5KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1Y2tldC52YWx1
ZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKCFidWNrZXQudmFsdWVbaV0uaG9s
ZGluZ3MuZ2V0KCkuaXNDZWxsKCkgfHwgdm0uaGVhcC5pc01hcmtlZChidWNrZXQudmFsdWVbaV0u
aG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAgICAgICAgIGlmICghdm0uaGVhcC5pc01h
cmtlZChidWNrZXQudmFsdWVbaV0udGFyZ2V0KSkgeworICAgICAgICAgICAgICAgIGlmIChrZXlJ
c0RlYWQpCisgICAgICAgICAgICAgICAgICAgIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQuYXBwZW5k
KHJlbW92ZUZyb21WZWN0b3IoYnVja2V0LnZhbHVlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZGVhZExpc3QgPSBtX2RlYWRS
ZWdpc3RyYXRpb25zLmFkZChidWNrZXQua2V5LCBEZWFkUmVnaXN0cmF0aW9ucygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGVhZExpc3QuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChyZW1vdmVGcm9t
VmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9sZGluZ3MpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGtleUlzRGVhZCkKKyAgICAgICAgICAgICAgICBtX25vVW5yZWdpc3RyYXRpb25MaXZlLmFwcGVu
ZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuICFidWNrZXQudmFsdWUuc2l6ZSgpOworICAgIH0pOworCisgICAgaWYgKCF2bS5k
ZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykgJiYgKHJlYWRpZWRDZWxsIHx8
IGRlYWRDb3VudChsb2NrZXIpKSkgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRk
UGVuZGluZ1dvcmsodm0sIHRoaXMsIHsgfSk7CisgICAgICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdv
cmtUaW1lci0+aGFzUGVuZGluZ1dvcmsodGhpcykpOworICAgICAgICB2bS5kZWZlcnJlZFdvcmtU
aW1lci0+c2NoZWR1bGVXb3JrU29vbih0aGlzLCBbdGhpc10geworICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgICAgICAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICAgICAgdGhpcy0+cnVuRmlu
YWxpemF0aW9uQ2xlYW51cChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOworICAgICAgICB9KTsKKyAgICB9Cit9
CisKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cnVuRmluYWxpemF0aW9uQ2xlYW51cChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICB3aGlsZSAoSlNWYWx1ZSB2YWx1ZSA9IHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpKSB7CisgICAg
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIGFyZ3MuYXBwZW5kKHZhbHVl
KTsKKyAgICAgICAgY2FsbChnbG9iYWxPYmplY3QsIGNhbGxiYWNrKCksIGFyZ3MsICJUaGlzIHNo
b3VsZCBub3QgYmUgdmlzaWJsZTogcGxlYXNlIHJlcG9ydCBhIGJ1ZyB0byBidWdzLndlYmtpdC5v
cmciKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9
Cit9CisKK0pTVmFsdWUgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1Zh
bHVlKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIEpT
VmFsdWUgcmVzdWx0OworICAgIGlmIChtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUoKSkKKyAg
ICAgICAgcmVzdWx0ID0gbV9ub1VucmVnaXN0cmF0aW9uRGVhZC50YWtlTGFzdCgpLmdldCgpOwor
ICAgIGVsc2UgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX2RlYWRSZWdpc3RyYXRpb25zLmJlZ2lu
KCk7CisgICAgICAgIGlmIChpdGVyID09IG1fZGVhZFJlZ2lzdHJhdGlvbnMuZW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICBBU1NFUlQoaXRlci0+dmFsdWUuc2l6
ZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gaXRlci0+dmFsdWUudGFrZUxhc3QoKS5nZXQoKTsKKyAg
ICAgICAgaWYgKCFpdGVyLT52YWx1ZS5zaXplKCkpCisgICAgICAgICAgICBtX2RlYWRSZWdpc3Ry
YXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9F
TkFCTEVEKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IG1fZGVhZFJlZ2lzdHJh
dGlvbnMpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyLnZhbHVlLnNpemUoKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpyZWdpc3RlclRhcmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG9s
ZGluZ3MsIEpTVmFsdWUgdG9rZW4pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxs
TG9jaygpKTsKKyAgICBSZWdpc3RyYXRpb24gcmVnaXN0cmF0aW9uOworICAgIHJlZ2lzdHJhdGlv
bi50YXJnZXQgPSB0YXJnZXQ7CisgICAgcmVnaXN0cmF0aW9uLmhvbGRpbmdzLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoaG9sZGluZ3MpOworICAgIGlmICh0b2tlbi5pc1VuZGVmaW5lZCgpKQorICAg
ICAgICBtX25vVW5yZWdpc3RyYXRpb25MaXZlLmFwcGVuZChXVEZNb3ZlKHJlZ2lzdHJhdGlvbikp
OworICAgIGVsc2UgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbGl2ZVJlZ2lzdHJhdGlvbnMu
YWRkKGpzU2VjdXJlQ2FzdDxKU09iamVjdCo+KHZtLCB0b2tlbiksIExpdmVSZWdpc3RyYXRpb25z
KCkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKHJlZ2lz
dHJhdGlvbikpOworICAgIH0KKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsKK30KKwor
Ym9vbCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKFZNJiwgSlNPYmplY3QqIHRv
a2VuKQoreworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd3JpdGUgYmFycmllciBvdXJzZWx2ZXMg
aGVyZSBiZWNhdXNlIHdlIHdpbGwgb25seSBwb2ludCB0byBsZXNzIHRoaW5ncyBhZnRlciB0aGlz
IGZpbmlzaGVzLgorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAg
Ym9vbCByZXN1bHQgPSBtX2xpdmVSZWdpc3RyYXRpb25zLnJlbW92ZSh0b2tlbik7CisgICAgcmVz
dWx0IHw9IG1fZGVhZFJlZ2lzdHJhdGlvbnMucmVtb3ZlKHRva2VuKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3NpemVfdCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpsaXZlQ291bnQoY29u
c3QgTG9ja2VyPEpTQ2VsbExvY2s+JikKK3sKKyAgICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdp
c3RyYXRpb25MaXZlLnNpemUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2xpdmVS
ZWdpc3RyYXRpb25zKQorICAgICAgICBjb3VudCArPSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAg
IHJldHVybiBjb3VudDsKK30KKworc2l6ZV90IEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmRlYWRD
b3VudChjb25zdCBMb2NrZXI8SlNDZWxsTG9jaz4mKQoreworICAgIHNpemVfdCBjb3VudCA9IG1f
bm9VbnJlZ2lzdHJhdGlvbkRlYWQuc2l6ZSgpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6
IG1fZGVhZFJlZ2lzdHJhdGlvbnMpCisgICAgICAgIGNvdW50ICs9IGl0ZXIudmFsdWUuc2l6ZSgp
OworCisgICAgcmV0dXJuIGNvdW50OworfQorCitTdHJpbmcgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eTo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCit7
CisgICAgcmV0dXJuICJPYmplY3QiX3M7Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmQ1Y2QzOGNmMGJhN2Q4Mjk5MWNkYjVjMGFhYTFmZjY0NDJhZjYzMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0
cnkuaApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSwg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTRmluYWxpemF0aW9uUmVn
aXN0cnkgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwxPiB7CitwdWJs
aWM6CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT47CisKKyAg
ICBlbnVtIGNsYXNzIEZpZWxkIDogdWludDhfdCB7IAorICAgICAgICBDYWxsYmFjaywKKyAgICB9
OworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5s
aW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5
LCBpbmxpbmVDYXBhY2l0eSA9PSAwVSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNGaW5hbGl6
YXRpb25SZWdpc3RyeSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uZmluYWxpemF0aW9uUmVnaXN0cnlT
cGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51
bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgIH0gfTsKKyAgICB9CisKKyAg
ICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQp
IGNvbnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGZpZWxkKSk7IH0KKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmll
bGQgZmllbGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGZpZWxkKSk7IH0KKworICAgIEpTT2JqZWN0KiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJu
IGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6OkNhbGxiYWNrKS5nZXQoKSk7
IH0KKworICAgIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBKU09iamVjdCogY2FsbGJhY2spOworICAgIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5KiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOworCisgICAgdm9pZCBydW5GaW5hbGl6YXRpb25DbGVhbnVwKEpTR2xv
YmFsT2JqZWN0Kik7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKwor
ICAgIEpTVmFsdWUgdGFrZURlYWRIb2xkaW5nc1ZhbHVlKCk7CisKKyAgICBib29sIHVucmVnaXN0
ZXIoVk0mLCBKU09iamVjdCogdG9rZW4pOworICAgIC8vIHRva2VuIHNob3VsZCBiZSBhIEpTT2Jq
ZWN0IG9yIHVuZGVmaW5lZC4KKyAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0KFZNJiwgSlNPYmplY3Qq
IHRhcmdldCwgSlNWYWx1ZSBob2xkaW5ncywgSlNWYWx1ZSB0b2tlbik7CisKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3QgbGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2Vs
bExvY2s+Jik7CisKK3ByaXZhdGU6CisgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTT2JqZWN0KiBjYWxsYmFjayk7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFt
ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdHJ1Y3QgUmVnaXN0
cmF0aW9uIHsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldDsKKyAgICAgICAgV3JpdGVCYXJyaWVy
PFVua25vd24+IGhvbGRpbmdzOworICAgIH07CisKKyAgICB1c2luZyBMaXZlUmVnaXN0cmF0aW9u
cyA9IFZlY3RvcjxSZWdpc3RyYXRpb24+OworICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIHRhcmdl
dCBhbnltb3JlIHNpbmNlIHdlIGtub3cgaXQncyBkZWFkLgorICAgIHVzaW5nIERlYWRSZWdpc3Ry
YXRpb25zID0gVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj47CisKKyAgICAvLyBOb3RlIHRo
YXQgd2UgZG9uJ3QgYm90aGVyIHB1dHRpbmcgYSB3cml0ZSBiYXJyaWVyIG9uIHRoZSBrZXkgb3Ig
dGFyZ2V0IGJlY2F1c2UgdGhleSBhcmUgd2Vha2x5IHJlZmVyZW5jZWQuCisgICAgSGFzaE1hcDxK
U09iamVjdCosIExpdmVSZWdpc3RyYXRpb25zPiBtX2xpdmVSZWdpc3RyYXRpb25zOworICAgIEhh
c2hNYXA8SlNPYmplY3QqLCBEZWFkUmVnaXN0cmF0aW9ucz4gbV9kZWFkUmVnaXN0cmF0aW9uczsK
KyAgICAvLyBXZSB1c2UgYSBzZXBhcmF0ZSBsaXN0IGZvciBubyB1bnJlZ2lzdGVyIHZhbHVlcyBp
bnN0ZWFkIG9mIGEgc3BlY2lhbCBrZXkgaW4gdGhlIHRhYmxlcyBhYm92ZSBiZWNhdXNlIHRoZSBI
YXNoTWFwIGhhcyBhIHRlbmRlbmN5IHRvIHJlYWxsb2NhdGUgdW5kZXIgdXMgd2hlbiBpdGVyYXRp
bmcuLi4KKyAgICBMaXZlUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25MaXZlOworICAg
IERlYWRSZWdpc3RyYXRpb25zIG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIz
NzAwNi4uNmQ3MGVmY2U1NjJlMTZjZWVkZjk5MThjZWY5MjIxNDQzNWZmMWM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjEs
NiArNjEsOCBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9y
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkZp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKQEAgLTk5LDYgKzEwMSw3IEBACiAjaW5jbHVkZSAiSlNEYXRhVmlldy5o
IgogI2luY2x1ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0RvbGxhclZN
LmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9y
RnVuY3Rpb24uaCIKQEAgLTM4Nyw2ICszOTAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RU
YWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBu
dWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51
bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJl
amVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwK
ICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxl
U3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAgLTIxOTks
NiArMjIwMywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhSZWY8TWlj
cm90YXNrPiYmIHRhc2spCiAgICAgdm0oKS5xdWV1ZU1pY3JvdGFzaygqdGhpcywgV1RGTW92ZSh0
YXNrKSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9u
QXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAg
ICBkYXRhTG9nTG4oIlVuY2F1Z2h0IEV4Y2VwdGlvbiBhdCBydW4gbG9vcDogIiwgZXhjZXB0aW9u
LT52YWx1ZSgpKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0RGVidWdnZXIoRGVidWdn
ZXIqIGRlYnVnZ2VyKQogewogICAgIG1fZGVidWdnZXIgPSBkZWJ1Z2dlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRkYzMwYjgyZTU1
ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjQ3NGZkZTY0ZmY2Y2FlMjgzZTk5ZTQ2ZWVj
ODA1MDgxYmMwZjliYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtMTM4LDYgKzEzOCw4IEBAIGNvbnN0ZXhwciBib29sIHR5cGVFeHBv
c2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBtYWNybyhKU1Byb21pc2UsIHByb21pc2UsIHByb21p
c2UsIEpTUHJvbWlzZSwgUHJvbWlzZSwgb2JqZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCkgXAog
ICAgIG1hY3JvKEJpZ0ludCwgYmlnSW50LCBiaWdJbnRPYmplY3QsIEJpZ0ludE9iamVjdCwgQmln
SW50LCBvYmplY3QsIE9wdGlvbnM6OnVzZUJpZ0ludCgpKSBcCiAgICAgbWFjcm8oV2Vha09iamVj
dFJlZiwgd2Vha09iamVjdFJlZiwgd2Vha09iamVjdFJlZiwgSlNXZWFrT2JqZWN0UmVmLCBXZWFr
UmVmLCBvYmplY3QsIE9wdGlvbnM6OnVzZVdlYWtSZWZzKCkpIFwKKyAgICBtYWNybyhGaW5hbGl6
YXRpb25SZWdpc3RyeSwgZmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJlZ2lzdHJ5
LCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LCBGaW5hbGl6YXRpb25SZWdpc3RyeSwgb2JqZWN0LCBP
cHRpb25zOjp1c2VXZWFrUmVmcygpKSBcCisKIAogI2RlZmluZSBGT1JfRUFDSF9CVUlMVElOX0RF
UklWRURfSVRFUkFUT1JfVFlQRShtYWNybykgXAogICAgIG1hY3JvKFN0cmluZ0l0ZXJhdG9yLCBz
dHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIEpTU3RyaW5nSXRlcmF0b3IsIFN0cmluZ0l0
ZXJhdG9yLCBpdGVyYXRvciwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKQEAgLTIyNyw2ICsyMjks
OSBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgdm9pZCAo
KlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZSos
IEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CiAgICAgUHJvbWlzZVJlamVjdGlvblRyYWNr
ZXJQdHIgcHJvbWlzZVJlamVjdGlvblRyYWNrZXI7CiAKKyAgICB0eXBlZGVmIHZvaWQgKCpSZXBv
cnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyKShKU0dsb2JhbE9iamVjdCosIEV4Y2Vw
dGlvbiopOworICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIgcmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKKwogICAgIHR5cGVkZWYgU3RyaW5nICgqRGVm
YXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAgRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25Q
dHIgZGVmYXVsdExhbmd1YWdlOwogCkBAIC00NTMsMjEgKzQ1OCw2IEBAIHB1YmxpYzoKICAgICBX
ZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKICAgICBSZWdFeHBHbG9iYWxEYXRhIG1fcmVnRXhwR2xv
YmFsRGF0YTsKIAotICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBjb25z
dCB7IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQotCi0gICAgSW5s
aW5lV2F0Y2hwb2ludFNldCYgYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsg
cmV0dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIG1hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1
cm4gbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNo
cG9pbnRTZXQmIHNldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9z
ZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRT
ZXQmIHN0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zdHJp
bmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRT
ZXQmIG1hcFNldFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnRTZXQ7
IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkgeyByZXR1
cm4gbV9zZXRBZGRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dFNldDsgfQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9pbnRTZXQo
KSB7IHJldHVybiBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBv
aW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQoKQotICAgIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1cm4gbV9udW1iZXJU
b1N0cmluZ1dhdGNocG9pbnRTZXQ7Ci0gICAgfQogICAgIC8vIElmIHRoaXMgaGFzbid0IGJlZW4g
aW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2NvbAogICAgIC8v
IGlzIG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5lV2F0Y2hwb2lu
dFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7CkBAIC00OTQsNiArNDg0
LDIzIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90eXBlQWRk
V2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50OwogCitwdWJsaWM6CisgICAgSlNDYWxsZWUqIHN0YWNrT3ZlcmZsb3dG
cmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlLmdl
dCgpOyB9CisKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnRTZXQoKSB7IHJldHVybiBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9
CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQoKSB7IHJldHVybiBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9CisgICAg
SW5saW5lV2F0Y2hwb2ludFNldCYgc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQo
KSB7IHJldHVybiBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0OyB9CisgICAg
SW5saW5lV2F0Y2hwb2ludFNldCYgbWFwU2V0V2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFw
U2V0V2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEFkZFdhdGNo
cG9pbnRTZXQoKSB7IHJldHVybiBtX3NldEFkZFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBhcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlK
b2luV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldDsgfQor
ICAgIElubGluZVdhdGNocG9pbnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCgpCisg
ICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7CisgICAgICAg
IHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsKKyAgICB9CisKICAgICBib29s
IGlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsK
ICAgICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZh
YmxlKCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9u
T2JzZXJ2YWJsZSgpOwpAQCAtODI0LDYgKzgzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVu
aGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKFZNJiB2bSwgSlNPYmplY3QqIGZ1bmN0aW9uKSB7IG1f
dW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suc2V0KHZtLCBmdW5jdGlvbik7IH0KICAgICBKU09i
amVjdCogdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3VuaGFu
ZGxlZFJlamVjdGlvbkNhbGxiYWNrLmdldCgpOyB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRV
bmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7
CisKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KIAogICAgIEpTT2Jq
ZWN0KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdN
b2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAK
aW5kZXggODgzMDgzZWNiNzY3ZDA4ODNmOWE0OTIxZjM5OWY1OTA4ODEzY2ZkZi4uNGYzNGI2YjQ5
Y2E4OWU2NjhjYjlhMjY3MTAzMjNjYWUxNzg2NGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJK
U1Byb21pc2UuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkRlZmVy
cmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEpTUHJvbWlz
ZTo6cmVzb2x2ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKICAgICAgICAgY2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgfQotICAgIHZtLnByb21pc2VU
aW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhpcyk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGlt
ZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOwogfQogCiB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpAQCAt
MTgzLDcgKzE4Myw3IEBAIHZvaWQgSlNQcm9taXNlOjpyZWplY3QoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5jdGlvbihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlamVjdFByb21pc2VGdW5jdGlvbigp
LCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAgICAgfQotICAgIHZtLnByb21pc2VUaW1lci0+Y2FuY2VsUGVuZGluZ1Byb21pc2UodGhp
cyk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmNhbmNlbFBlbmRpbmdXb3JrKHRoaXMpOwog
fQogCiB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0QXNIYW5kbGVkKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYWRmYjc5ZmRkYTgxODNjYTkxMzE1YzUyMDY0NzBk
MTQyMzEyOTQ1NC4uOWJlODNjZThiMTg0YTVkZDBmYzNmMWQ1Nzg3ZDVhYTQ2ZmRlYzU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00ODYsNiAr
NDg2LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBm
YWxzZTsKICAgICB2KEJvb2wsIHVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNoaW5nLCBmYWxz
ZSwgTm9ybWFsLCAiVW5uYW1lZCBXZWJBc3NlbWJseSBtb2R1bGVzIGFyZSBpZGVudGlmaWVkIGlu
IGJhY2t0cmFjZXMgdGhyb3VnaCB0aGVpciBoYXNoLCBpZiBhdmFpbGFibGUuIikgXAogICAgIHYo
Qm9vbCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgdHlw
ZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vi
QXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUg
d2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCisgICAgLyogRklYTUU6IFdlIHNob3VsZCBtYWtl
IHN1cmUgZmluYWxpemVycyBkb24ndCBydW4gZm9yIGRldGFjaGVkIHdpbmRvd3MgYmVmb3JlIGVu
YWJsaW5nIFdlYWtSZWZzIGJ5IGRlZmF1bHQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MDggKi8gXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwg
dXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQg
c3VwcG9ydC4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRy
dWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2Nh
dGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3
YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGVmZDJiMDA4NDMwMjYyNjE4NTk4MTk1ODlmNzg0Y2JiZDM2M2QwNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKLQotI2luY2x1ZGUgIkpTUHJv
bWlzZS5oIgotI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJWTS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3BhY2UgUHJv
bWlzZVRpbWVySW50ZXJuYWwgewotc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKLX0KLQotUHJvbWlzZVRpbWVyOjpQcm9taXNlVGltZXIoVk0mIHZtKQotICAgIDogQmFzZSh2
bSkKLXsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OmRvV29yayhWTSYgdm0pCi17Ci0gICAgQVNT
RVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIG1fdGFza0xvY2su
bG9jaygpOwotICAgIGNhbmNlbFRpbWVyKCk7Ci0gICAgaWYgKCFtX3J1blRhc2tzKSB7Ci0gICAg
ICAgIG1fdGFza0xvY2sudW5sb2NrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB3
aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10g
PSBtX3Rhc2tzLnRha2VMYXN0KCk7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1lcklu
dGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRp
Y2tldCkpOwotCi0gICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2Ug
cHJvbWlzZXMuCi0gICAgICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0aWNrZXQp
KSB7Ci0gICAgICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBydW4gbm93IHRvIHNjaGVkdWxlIHdv
cmsuCi0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKLSAgICAgICAg
ICAgIG1fdGFza0xvY2sudW5sb2NrKCk7IAotCi0gICAgICAgICAgICB0YXNrKCk7Ci0gICAgICAg
ICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKLQotICAgICAgICAgICAgbV90YXNrTG9jay5sb2Nr
KCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpICYmIG1fc2hv
dWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2gpCi0gICAgICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5zdG9wKCk7Ci0KLSAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotfQotCi12b2lkIFBy
b21pc2VUaW1lcjo6cnVuUnVuTG9vcCgpCi17Ci0gICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCkt
PmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIEFTU0VSVCgmUnVuTG9vcDo6
Y3VycmVudCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7Ci0gICAgbV9zaG91bGRT
dG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCA9IHRydWU7Ci0gICAgaWYgKG1fcGVuZGlu
Z1Byb21pc2VzLnNpemUoKSkKLSAgICAgICAgUnVuTG9vcDo6cnVuKCk7Ci19Ci0KLXZvaWQgUHJv
bWlzZVRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShWTSYgdm0sIEpTUHJvbWlzZSogdGlja2V0LCBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKQotewotICAgIEFTU0VSVCh2bS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQotICAgICAgICBBU1NFUlQoZGVwZW5kZW5j
aWVzW2ldLmdldCgpICE9IHRpY2tldCk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1By
b21pc2VzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7Ci0gICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1lckludGVy
bmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIo
dGlja2V0KSk7Ci0gICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0s
IHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShkZXBl
bmRlbmNpZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VUaW1l
ckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHByb21pc2U6
ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
YXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7Ci0gICAgfQotfQotCi1ib29sIFByb21pc2VUaW1l
cjo6aGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNTRVJUKHRp
Y2tldC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICByZXR1cm4g
bV9wZW5kaW5nUHJvbWlzZXMuY29udGFpbnModGlja2V0KTsKLX0KLQotYm9vbCBQcm9taXNlVGlt
ZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBKU0Nl
bGwqIGRlcGVuZGVuY3kpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhyZWFk
SXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nUHJvbWlzZXMuY29udGFp
bnModGlja2V0KSk7Ci0KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2VzLmdldCh0
aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7Ci19Ci0KLWJv
b2wgUHJvbWlzZVRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqIHRpY2tldCkK
LXsKLSAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMucmVtb3ZlKHRpY2tldCk7
Ci0KLSAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlVGltZXJJbnRl
cm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkp
OwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnNjaGVkdWxl
V29ya1Nvb24oSlNQcm9taXNlKiB0aWNrZXQsIFRhc2smJiB0YXNrKQotewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGFza0xvY2spOwotICAgIG1fdGFza3MuYXBwZW5kKHN0ZDo6bWFrZV90dXBs
ZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKLSAgICBpZiAoIWlzU2NoZWR1bGVkKCkgJiYgIW1f
Y3VycmVudGx5UnVubmluZ1Rhc2spCi0gICAgICAgIHNldFRpbWVVbnRpbEZpcmUoMF9zKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9taXNlVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b21pc2VUaW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTRkMGYyOWFlMmQy
OGNmM2U0MDRiZWZiNTQ2ZjUzY2QwYmJhZTliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VU
aW1lci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNS
dW5Mb29wVGltZXIuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKLQotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1Byb21pc2U7Ci1jbGFzcyBWTTsKLWNsYXNzIEpT
Q2VsbDsKLQotY2xhc3MgUHJvbWlzZVRpbWVyIGZpbmFsIDogcHVibGljIEpTUnVuTG9vcFRpbWVy
IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNSdW5Mb29wVGltZXI7Ci0KLSAgICB2b2lk
IGRvV29yayhWTSYpIGZpbmFsOwotCi0gICAgdm9pZCBhZGRQZW5kaW5nUHJvbWlzZShWTSYsIEpT
UHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlKiB0aWNrZXQp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21p
c2UoSlNQcm9taXNlKiB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7Ci0gICAgLy8gSlNQcm9t
aXNlIHNob3VsZCBoYW5kbGUgY2FuY2VsaW5nIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQg
b3IgcmVqZWN0ZWQuCi0gICAgYm9vbCBjYW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2UqKTsK
LQotICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHZvaWQgc2NoZWR1bGVX
b3JrU29vbihKU1Byb21pc2UqLCBUYXNrJiYpOwotCi0gICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tz
KCkgeyBtX3J1blRhc2tzID0gZmFsc2U7IH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cnVuUnVuTG9vcCgpOwotCi0gICAgc3RhdGljIFJlZjxQcm9taXNlVGltZXI+IGNyZWF0ZShWTSYg
dm0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9taXNlVGltZXIodm0p
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUHJvbWlzZVRpbWVyKFZNJik7Ci0KLSAgICBIYXNo
TWFwPEpTUHJvbWlzZSosIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1Byb21pc2Vz
OwotICAgIExvY2sgbV90YXNrTG9jazsKLSAgICBib29sIG1fcnVuVGFza3MgeyB0cnVlIH07Ci0g
ICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OwotICAgIFZlY3Rv
cjxzdGQ6OnR1cGxlPEpTUHJvbWlzZSosIFRhc2s+PiBtX3Rhc2tzOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJRFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuY3BwCmluZGV4IGFjYjM0YzlkM2RiMjZlNThhNjFmZmRiMzE3MTdhNTFlNjgzMWZj
NWQuLmUyMTEzOTc4YTMyNGVkN2I0YTVmMTBkMWIzZDA1YmY5ZTRjZmIzZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCkBAIC0z
Miw2ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKK25h
bWVzcGFjZSBTdHJ1Y3R1cmVJRFRhYmxlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhwciBib29s
IHZlcmJvc2UgPSBmYWxzZTsKK30KKwogU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJs
ZSgpCiAgICAgOiBtX3RhYmxlKG1ha2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4oc19p
bml0aWFsU2l6ZSkpCiAgICAgLCBtX3NpemUoMSkKQEAgLTE2MSwxMSArMTY1LDE0IEBAIFN0cnVj
dHVyZUlEIFN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgdGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMgPSBlbmNv
ZGUoc3RydWN0dXJlLCByZXN1bHQpOwogICAgIG1fc2l6ZSsrOwogICAgIEFTU0VSVCghaXNOdWtl
ZChyZXN1bHQpKTsKKworICAgIGRhdGFMb2dMbklmKFN0cnVjdHVyZUlEVGFibGVJbnRlcm5hbDo6
dmVyYm9zZSwgIkFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCByZXN1bHQsICIgZm9yIFN0cnVjdHVy
ZSAiLCBSYXdQb2ludGVyKHN0cnVjdHVyZSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZv
aWQgU3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKIHsKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1cmVJRFRh
YmxlSW50ZXJuYWw6OnZlcmJvc2UsICJEZWFsbG9jYXRlZCBTdHJ1Y3R1cmVJRCAiLCBzdHJ1Y3R1
cmVJRCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZUlEICE9IHNfdW51c2VkSUQpOwogICAgIHVpbnQz
Ml90IHN0cnVjdHVyZUluZGV4ID0gc3RydWN0dXJlSUQgPj4gc19udW1iZXJPZkVudHJvcHlCaXRz
OwogICAgIEFTU0VSVChzdHJ1Y3R1cmVJbmRleCAmJiBzdHJ1Y3R1cmVJbmRleCA8IHNfbWF4aW11
bU51bWJlck9mU3RydWN0dXJlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggOGNhYTQ4YzFiZTMxMWI1ZDg3ZTg2MDM4YmEwZjQwNDE4Mzg4OGMyYS4uYmNmNjA5YWQ0NmY0
ODQyN2U5NmU2YTQyYTBhYjE4YjQ3OTE0ZWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2Nv
cGUuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkRpc2Fzc2Vt
Ymxlci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1
ZGUgIkVycm9ySW5zdGFuY2UuaCIKQEAgLTg4LDYgKzg5LDcgQEAKICNpbmNsdWRlICJKU0NhbGxl
ZS5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIkpTRmluYWxp
emF0aW9uUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpA
QCAtMTMzLDcgKzEzNSw2IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgot
I2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxl
LmgiCiAjaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemluZ0Z1enpl
ckFnZW50LmgiCkBAIC0yODIsNiArMjgzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAg
LCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0Nh
bGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+PigpKQogICAgICwgZGF0ZUluc3RhbmNlSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPERhdGVJbnN0YW5jZT4oKSkKICAgICAs
IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RXJyb3JJ
bnN0YW5jZT4oKSkKKyAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKSkKICAgICAsIGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKICAgICAsIGdsb2JhbE9iamVjdEhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0dsb2JhbE9iamVjdD4oKSkKICAgICAsIGluamVj
dGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPElu
c3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+KCkpCkBAIC0zNjUsNyArMzY3LDcgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxv
b3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAgLCB0b3BF
bnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxl
cigpKQotICAgICwgcHJvbWlzZVRpbWVyKFByb21pc2VUaW1lcjo6Y3JlYXRlKCp0aGlzKSkKKyAg
ICAsIGRlZmVycmVkV29ya1RpbWVyKERlZmVycmVkV29ya1RpbWVyOjpjcmVhdGUoKnRoaXMpKQog
ICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJl
bnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9w
ZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCkBAIC01NzUs
NyArNTc3LDcgQEAgVk06On5WTSgpCiAgICAgYXV0byBkZXN0cnVjdGlvbkxvY2tlciA9IGhvbGRM
b2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQoKSk7CiAgICAgCiAgICAgR2lnYWNhZ2U6OnJlbW92
ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2FnZURpc2FibGVkQ2FsbGJh
Y2ssIHRoaXMpOwotICAgIHByb21pc2VUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygpOworICAgIGRl
ZmVycmVkV29ya1RpbWVyLT5zdG9wUnVubmluZ1Rhc2tzKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgIGlmIChXYXNtOjpXb3JrbGlzdCogd29ya2xpc3QgPSBXYXNtOjpleGlzdGluZ1dv
cmtsaXN0T3JOdWxsKCkpCiAgICAgICAgIHdvcmtsaXN0LT5zdG9wQWxsUGxhbnNGb3JDb250ZXh0
KHdhc21Db250ZXh0KTsKQEAgLTE0ODcsNiArMTQ4OSw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUuZ2V0
KCksCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNl
LCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIz
MAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4
OGVjNjhmMWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2Nv
cGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXaXRoU2NvcGUpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwg
ZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZS5nZXQoKSwgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSkKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9u
U3BhY2UsIG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBPYmpDQ2FsbGJh
Y2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYxMGI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCA2MGY1OTcyOWZlYzJlMDJlNjk3NmMzMWVkNTFiMTQ4YTVjNmVhYTA1Li5mNGYyZWZl
MDNiZTY2Mzk2NDg1OWI2NGI3Yjc4MjgwNGQ0ZTY3YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7CiBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogY2xh
c3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb247Ci1jbGFzcyBQcm9taXNlVGltZXI7CitjbGFzcyBEZWZl
cnJlZFdvcmtUaW1lcjsKIGNsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwogY2xhc3Mg
UmVnaXN0ZXI7CkBAIC0zNzcsNiArMzc3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBlcnJvckluc3RhbmNlSGVhcENlbGxU
eXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGZpbmFsaXphdGlvblJl
Z2lzdHJ5Q2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlw
ZTsKQEAgLTU1MCw2ICs1NTEsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2tTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHdlYWtPYmplY3RSZWZTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHdlYWtTZXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHdlYWtNYXBTcGFjZSkKQEAgLTcwOSw4ICs3MTEsOCBAQCBwdWJsaWM6
CiAgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dCb3VuZEV4ZWN1dGFibGU7CiAgICAg
V2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dDYW5Db25zdHJ1Y3RCb3VuZEV4ZWN1dGFibGU7
CiAKLSAgICBSZWY8UHJvbWlzZVRpbWVyPiBwcm9taXNlVGltZXI7Ci0gICAgCisgICAgUmVmPERl
ZmVycmVkV29ya1RpbWVyPiBkZWZlcnJlZFdvcmtUaW1lcjsKKwogICAgIEpTQ2VsbCogY3VycmVu
dGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdDsKICAgICBjb25zdCBDbGFzc0luZm8qIGN1cnJl
bnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3RDbGFzc0luZm8geyBudWxscHRyIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKaW5kZXgg
NWRhNjk2ZDY5N2RkNDc1MDVkN2RjNTJiNjA2ZTMxNzc0YTRlMjY1ZC4uYWY0MmQ4ZDU3MDlmMjA2
YTdhNzg3MDhmNjVkN2U1MGI1NThlNjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgorI2lu
Y2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGluZXMuaCIK
QEAgLTQxLDcgKzQyLDYgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVk
ZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCkBAIC0xMzQsMTAg
KzEzNCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5bmNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZlY3RvcjxTdHJvbmc8SlND
ZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2Vs
bD4odm0sIGdsb2JhbE9iamVjdCkpOwogCi0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5n
UHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZl
cnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5k
ZW5jaWVzKSk7CiAKICAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250
ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxs
YmFja1R5cGU+KFtwcm9taXNlLCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFs
aWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VUaW1l
ci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBnbG9iYWxP
YmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAg
IEpTVmFsdWUgbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKSB7CkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlzZQogICAg
IC8vIFRoZSBpbnN0YW5jZSBrZWVwcyB0aGUgbW9kdWxlIGFsaXZlLgogICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGluc3RhbmNlKSk7CiAgICAgZGVwZW5kZW5jaWVz
LmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7Ci0gICAgdm0ucHJvbWlz
ZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNp
ZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21p
c2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAgICAgLy8gTm90ZTogVGhpcyBjb21wbGV0aW9u
IHRhc2sgbWF5IG9yIG1heSBub3QgZ2V0IGNhbGxlZCBpbW1lZGlhdGVseS4KICAgICBtb2R1bGUt
Pm1vZHVsZSgpLmNvbXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlN
b2RlKCksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFja1R5cGU+KFtw
cm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVh
dGlvbk1vZGUsICZ2bV0gKFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgcmVmQ29kZUJsb2NrKSBtdXRh
YmxlIHsKICAgICAgICAgUmVmUHRyPFdhc206OkNvZGVCbG9jaz4gY29kZUJsb2NrID0gV1RGTW92
ZShyZWZDb2RlQmxvY2spOwotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nv
b24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgcmVz
b2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2RlQmxvY2sgPSBXVEZNb3ZlKGNvZGVCbG9j
ayldICgpIG11dGFibGUgeworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVX
b3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0
LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29k
ZUJsb2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgcmVzb2x2ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBpbXBvcnRPYmplY3Qs
IGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlKTsK
ICAgICAgICAgfSk7CkBAIC0yMzMsMTMgKzIzMywxMyBAQCBzdGF0aWMgdm9pZCBjb21waWxlQW5k
SW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21p
cwogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVu
Y2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwogICAgIGRlcGVu
ZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIG1vZHVsZUtleUNlbGwpKTsKLSAgICB2
bS5wcm9taXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRl
cGVuZGVuY2llcykpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2
bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGdsb2JhbE9iamVjdCwg
YnVmZmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5j
KCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206
Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlD
ZWxsLCBnbG9iYWxPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKFdhc206
Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZt
LnByb21pc2VUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0
T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21p
c2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBX
VEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9k
dWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1i
bHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBzdGF0aWMg
dm9pZCB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iagogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVz
OwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVj
dCkpOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9i
amVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21p
c2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFk
ZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAg
V2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3Vy
Y2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlz
ZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVsZTo6VmFsaWRh
dGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHZtLnByb21pc2VUaW1lci0+
c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxP
YmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21p
c2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCks
ICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBK
U1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+d2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCkBAIC0zMzksNyArMzM5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJl
YW1pbmdJbnRlcm5hbChKU0dsb2JhbE9iamVjdCoKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxs
Pj4gZGVwZW5kZW5jaWVzOwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4o
dm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21p
c2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2ll
cykpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
Y29tcGlsZVN0cmVhbWluZykKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9i
YWxPYmoKICAgICAgICAgICAgICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2ll
czsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZt
LCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0
cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKLSAgICAgICAgICAgICAgICB2bS5wcm9t
aXNlVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVu
Y2llcykpOworICAgICAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5n
V29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xODQ4ODg+IGlmIHRoZXJlJ3MgYW4g
aW1wb3J0T2JqZWN0IGFuZCBpdCBjb250YWlucyBhIE1lbW9yeSwgdGhlbiB3ZSBjYW4gY29tcGls
ZSB0aGUgbW9kdWxlIHdpdGggdGhlIHJpZ2h0IG1lbW9yeSB0eXBlIChmYXN0IG9yIG5vdCkgYnkg
bG9va2luZyBhdCB0aGUgbWVtb3J5J3MgdHlwZS4KICAgICAgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5nKGdsb2Jh
bE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgaW1wb3J0T2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b2RlQmxvY2suaAppbmRleCA0ODk0OWJmNmVjMjgwZmVmMjczZjA0MDZlZDFjZDEwN2Q5YzU1Y2Yy
Li4yZTU2YjRkM2JhZjdmMDBmZWFkZDMwMDRiNGJmZTJjOTY1ZDUzNjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVk
ZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApp
bmRleCBkMjhlNTA5ZGIwMWM3MDEwZGQ3N2UyZmViYzM1Yzc5ODlhZGQ3YTMyLi4wMzllZjgyMzBh
ODZiNjEzNWNlZWJkZTQzYzNhMTM3MDVkY2Y5N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yMzQsNiArMjM0LDExIEBAIHZv
aWQgSlNET01HbG9iYWxPYmplY3Q6OnByb21pc2VSZWplY3Rpb25UcmFja2VyKEpTR2xvYmFsT2Jq
ZWN0KiBqc0dsb2JhbE9iamVjdCwKICAgICB9CiB9CiAKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6
OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGpzR2xv
YmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHJlcG9ydEV4Y2Vw
dGlvbihqc0dsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKK30KKwogSlNET01HbG9iYWxPYmplY3Qm
IGNhbGxlckdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7CiAgICAgY2xhc3MgR2V0Q2FsbGVyR2xvYmFsT2JqZWN0
RnVuY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaAppbmRleCBkMjk4NThjZmE0YjBiZTBkNjIxMzkwYTgzZDc2ZDVhODUwYjlkMjgwLi43Mzg2
N2Q2YWIyZTViNGRiYjcwYjcwYTlhMzYwOTQ4NDlmMGNlZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMmIGJ1aWx0aW5JbnRlcm5hbEZ1
bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkludGVybmFsRnVuY3Rpb25zOyB9CiAKKyAgICBz
dGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsKIAogcHVibGljOgogICAgIH5KU0RPTUdsb2JhbE9iamVj
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
aW5kZXggODgzMjEzZTkwNjFmMzhiOGJiNDMzNTc5YjI5ODYwOTg3Nzg0ZTc4Mi4uYWNlYTc2NmFm
MWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTSW50ZXJu
YWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNXZWJBc3NlbWJseS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01pY3JvdGFzay5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgpAQCAtNzgsNiArNzgsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVs
ZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgICZtb2R1bGVMb2FkZXJFdmFs
dWF0ZSwKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCisgICAgJnJlcG9ydFVuY2F1Z2h0
RXhjZXB0aW9uQXRFdmVudExvb3AsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgJmNvbXBpbGVTdHJlYW1pbmcsCkBAIC00NDMsOCArNDQ0LDggQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNvbXBpbGVTdHJlYW1pbmcoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkoKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKIAotICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNlKHByb21p
c2UpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5n
UHJvbWlzZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRX
b3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJy
ZWRXb3JrVGltZXItPmhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGdsb2JhbE9i
amVjdCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNwb25zZTo6
dG9XcmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1p
bmdBY3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJvbWlzZV0g
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBieXRlU2l6ZSkgbXV0YWJsZSB7CkBAIC00NjEsOSArNDYyLDkgQEAgdm9pZCBK
U0RPTVdpbmRvd0Jhc2U6Omluc3RhbnRpYXRlU3RyZWFtaW5nKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlMKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAot
ICAgIEFTU0VSVCh2bS5wcm9taXNlVGltZXItPmhhc1BlbmRpbmdQcm9taXNlKHByb21pc2UpKTsK
LSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlz
ZShwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5o
YXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShwcm9taXNlLCBpbXBvcnRlZE9iamVjdCkpOwor
ICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzUGVuZGluZ1dvcmsocHJvbWlzZSkp
OworICAgIEFTU0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGlu
Z1dvcmsocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgQVNTRVJUKHZtLmRlZmVycmVkV29y
a1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhwcm9taXNlLCBpbXBvcnRlZE9iamVj
dCkpOwogCiAgICAgaWYgKGF1dG8gaW5wdXRSZXNwb25zZSA9IEpTRmV0Y2hSZXNwb25zZTo6dG9X
cmFwcGVkKHZtLCBzb3VyY2UpKSB7CiAgICAgICAgIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdB
Y3Rpb24oZ2xvYmFsT2JqZWN0LCBpbnB1dFJlc3BvbnNlLCBwcm9taXNlLCBbcHJvbWlzZSwgaW1w
b3J0ZWRPYmplY3RdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKaW5kZXgg
NDlkZjQzOTA1N2RmNTlkMjk0ZDQ4NGE5NGYyOWI1MjQwZjg4NjE4MS4uZGNlNzM4MjBiYmJmZDli
OTVjNTg3OWQxM2VmNjVlYWI5OGE5MDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIGNv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTUmVtb3RlRE9NV2luZG93QmFzZTo6c19nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSA9CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRl
SW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0
ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgbnVsbHB0ciwg
Ly8gcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAogICAgIG51bGxwdHIsIC8vIGRl
ZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxs
cHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDUzNzZlODBkMDAw
NTM3NzYyNTgyYWEyNWJlOTFkMTJhOGY1OTdlYzQuLmM0NGYyZmIzYTBiMDVkYWFiMWE4YTllMmY4
OWI1MmQ4NTFlYjQzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAgY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRN
ZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAg
JnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0
RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGls
ZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmNwcAppbmRleCAwOTY1YTg2YzQxOGJlNjFlNjJlMWZmZGFjNmNmZThiYWY2YjRkNmVlLi5iMTRi
ODE1NDJkYjg4OWVjNmQyNTliYzViNzBlZjJhNTA5OWM5NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKQEAg
LTU3LDYgKzU3LDcgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmwKICAgICBudWxscHRyLCAvLyBt
b2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwogICAgIG51bGxwdHIsIC8vIG1v
ZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAorICAgICZy
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFuZ3VhZ2Us
CiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3Rh
bnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkzMWNlZTc3NzliZjk2MTQzOGU4MjAxNTBj
N2E3ZjhhYjQ2NzU1NDcuLjcxNmIxYTY5YjhlZWMxZGE2NDcyMDFhNDMyNjkyYjMzODk3ZWI3OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKICNpbmNsdWRlICJXb3JrZXJDb25zb2xl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJy
ZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjUyLDcg
KzI1Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmlj
YXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOCiAKICAgICBwcm9jZXNzVGltZXIobV92
bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIobV92bS0+
aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+cHJv
bWlzZVRpbWVyLnB0cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3JrVGlt
ZXIucHRyKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnJlbW92ZVRpbWVy
U2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2Fs
bGJhY2sgY2FsbGJhY2spCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpU
aW0KIAogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkp
OwogICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkpOwot
ICAgIHByb2Nlc3NUaW1lcihtX3ZtLT5wcm9taXNlVGltZXIucHRyKCkpOworICAgIHByb2Nlc3NU
aW1lcihtX3ZtLT5kZWZlcnJlZFdvcmtUaW1lci5wdHIoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlYzA3YWM0NjM1MGQy
YTM0MjllYTA5ODc0ZTNmZGYyZGZkYTllNDUxLi42NmVjZDUzNmY4MTNkMDI5YzQ5N2YxYWVhN2Yy
MTllZGZjNzViMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1
bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAK
QEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KIAogI2lmIFVTRShHTElCKQogI2luY2x1
ZGUgPGdsaWIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCA2YTg4Y2FhMTQ0YWUyN2ZjN2MxZjJkNWYzM2JjZDEwOGNj
MTIwYTllLi4yMGE2Zjg1NjE4NThhZGZiZTJlMmJjMThlYmY3MTUwYjk3YWQxNGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0zNywxMSArMzcsMTEgQEAKICNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVudC5oIgog
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1By
b21pc2VUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkNTNjMmFjM2I5YjM2ZTM0Y2M5OGI0N2My
YmE3OWJlNzIwYTA5MGYuLmU2OWRhMmZkYWJmMDkwZDI1N2NhYzFmODkwODdmN2VkNjlhMDhmZjEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxpemF0aW9u
UmVnaXN0cmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk5ODg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKG1ha2VXZWFrUmVmKToKKyAgICAgICAgKHR1cm5FdmVudExvb3ApOgorICAg
ICAgICAoYXN5bmMgdGVzdCk6CisgICAgICAgICoganMvdW50aXRsZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbDogQWRk
ZWQuCisKIDIwMjAtMDctMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEFkZCBzdXBwb3J0IGZvciBjYW52YXMgY2FwdHVyZVN0
cmVhbSwgdGVzdHMgZmFpbGluZyBzaW5jZSB0aGV5IHdlcmUgYWRkZWQgaW4gcjIxMzU5OApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9u
cmVnaXN0cnkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6
YXRpb25yZWdpc3RyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjIyZGMzOWRlODBiNGRkOWQxZGU0ZmJkMDRk
MzFkMzMxNjE0ZWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMKQEAgLTAsMCArMSw1NSBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPXRydWUiKQorCithc3luY1Rlc3RTdGFydCgx
KTsKK3ZhciBvYmplY3RzID0gW107Cit2YXIgd2Vha1JlZnMgPSBbXTsKK3ZhciBmaW5hbGl6ZXJD
YWxsZWQgPSBmYWxzZTsKK3ZhciBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IG5ldyBGaW5hbGl6YXRp
b25SZWdpc3RyeSgoKSA9PiBmaW5hbGl6ZXJDYWxsZWQgPSB0cnVlKTsKK2Z1bmN0aW9uIG1ha2VX
ZWFrUmVmKCkgeyByZXR1cm4gbmV3IFdlYWtSZWYoeyBmb286IDEgfSk7IH0KK25vSW5saW5lKG1h
a2VXZWFrUmVmKTsKKworLy8gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzIHRlc3Qgc3RhbmRh
bG9uZS1wcmUuanMgcHJpbnRzIG5ld2xpbmVzIHNsaWdodGx5IGRpZmZlcmVudGx5IGZyb20ganMt
dGVzdC1wcmUuanMgZm9yIGFzeW5jIHRlc3RzIHNvIHdlIGRvbid0IHVzZSB0aGUgc2hvdWxkQmUg
aGVscGVycy4uLgorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbXNnID0gIiIpIHsKKyAgICBp
ZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9CisKK2xldCBs
b29wQ291bnQgPSAxMDAwOworZnVuY3Rpb24gdHVybkV2ZW50TG9vcCgpIHsKKyAgICByZXR1cm4g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHsKKyAgICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0s
IDApOworICAgIH0pOworfQorCit2YXIgaTsKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBsb29wQ291bnQ7IGkrKykgeworICAgICAgICBsZXQgd2VhayA9
IG1ha2VXZWFrUmVmKCk7CisgICAgICAgIHdlYWtSZWZzLnB1c2god2Vhayk7CisgICAgICAgIG9i
amVjdHMucHVzaCh3ZWFrLmRlcmVmKCkpOworICAgICAgICBmaW5hbGl6YXRpb25SZWdpc3RyeS5y
ZWdpc3Rlcih3ZWFrLmRlcmVmKCkpOworICAgIH0KKworICAgIGF3YWl0IHR1cm5FdmVudExvb3Ao
KTsKKworICAgIGFzc2VydChmaW5hbGl6ZXJDYWxsZWQgPT09IGZhbHNlKTsKKyAgICBmb3IgKGkg
PSAwOyBpIDwgbG9vcENvdW50OyBpKyspCisgICAgICAgIGFzc2VydCh3ZWFrUmVmc1tpXS5kZXJl
ZigpID09PSBvYmplY3RzW2ldLCAiZmFpbGVkIG9uIGl0ZXJhdGlvbjogIiArIGkpOworCisgICAg
b2JqZWN0cy5sZW5ndGggPSAwOworICAgIG9iamVjdHMgPSBudWxsOworCisgICAgYXdhaXQgdHVy
bkV2ZW50TG9vcCgpOworICAgIC8vIFdlIG5lZWQgdG8gdHVybiB0aGUgZXZlbnQgbG9vcCBhZ2Fp
biBzaW5jZSBGUiBtYXkgbm90IGhhdmUgY2FsbGVkIHRoZSBjYWxsYmFjayBpbiB0aGUgbGFzdCB0
dXJuLgorICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsKKworICAgIGFzc2VydChmaW5hbGl6ZXJD
YWxsZWQgPT09IHRydWUpOworICAgIGFzc2VydCh3ZWFrUmVmcy5zb21lKCh3ZWFrUmVmKSA9PiB3
ZWFrUmVmLmRlcmVmKCkgPT09IG51bGwpID09PSB0cnVlKTsKKworICAgIGFzeW5jVGVzdFBhc3Nl
ZCgpOworfQorCit0ZXN0KCkuY2F0Y2goZSA9PiBkZWJ1ZyhlKSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy91bnRpdGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYzBlMWNiNzA1YTlkNzc5MDgwNGM2OTg1MjdjODQzMjEzZDRhZDZmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dl
YWtyZWYtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3Ry
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlNWVlZWRiZjFiNDM1Zjk2YzNhMjBiZjgxNDAx
YWVlNDMzMTk4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmlu
YWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbCBiL0xheW91dFRl
c3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWQ3
Y2Y0N2Q0YTM0MTY5OGJkMGQ1NWVkNmE4ODkwYmZlNDEyNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVlIF0g
LS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDE2YzA5MmE4NTc0MDZkMmZhNzJmM2U3N2ExMmU2OGJlOTEzNGQ0NGUuLmJjOTAzYzk5NDA2
MjM5OTFmMzA5YWU0ZmVlYmQxNDU2ZGYxZjQ1OGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4IEBACisyMDIwLTA3LTE3
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBGaW5hbGl6YXRpb25SZWdpc3RyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBZ
dXN1a2UgU3V6dWtpLgorCisgICAgICAgIFNoYW1lbGVzc2x5IGNvcHkgdjgncyB0ZXN0cyBhbmQg
cmVmYWN0b3IgdGhlbSB0byB3b3JrIHdpdGggY29uc2VydmF0aXZlIEdDLgorCisgICAgICAgICog
c3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0LmpzOiBBZGRlZC4KKyAgICAgICAgKE1qc1VuaXRB
c3NlcnRpb25FcnJvcik6CisgICAgICAgIChNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJvdG90eXBl
LnRvU3RyaW5nKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKGNsYXNzT2YpOgorICAgICAg
ICAoVmFsdWVPZik6CisgICAgICAgIChwcmV0dHlQcmludGVkKToKKyAgICAgICAgKHByZXR0eVBy
aW50ZWRBcnJheUVsZW1lbnQpOgorICAgICAgICAoZmFpbFdpdGhNZXNzYWdlKToKKyAgICAgICAg
KGZvcm1hdEZhaWx1cmVUZXh0KToKKyAgICAgICAgKGZhaWwpOgorICAgICAgICAoZGVlcE9iamVj
dEVxdWFscyk6CisgICAgICAgIChkZWVwRXF1YWxzKToKKyAgICAgICAgKGFzc2VydFNhbWUpOgor
ICAgICAgICAoYXNzZXJ0Tm90U2FtZSk6CisgICAgICAgIChhc3NlcnRFcXVhbHMpOgorICAgICAg
ICAoYXNzZXJ0Tm90RXF1YWxzKToKKyAgICAgICAgKGFzc2VydEVxdWFsc0RlbHRhKToKKyAgICAg
ICAgKGFzc2VydEFycmF5RXF1YWxzKToKKyAgICAgICAgKGFzc2VydFByb3BlcnRpZXNFcXVhbCk6
CisgICAgICAgIChhc3NlcnRUb1N0cmluZ0VxdWFscyk6CisgICAgICAgIChhc3NlcnRUcnVlKToK
KyAgICAgICAgKGFzc2VydEZhbHNlKToKKyAgICAgICAgKGFzc2VydE51bGwpOgorICAgICAgICAo
YXNzZXJ0Tm90TnVsbCk6CisgICAgICAgIChleGVjdXRlQ29kZSk6CisgICAgICAgIChjaGVja0V4
Y2VwdGlvbik6CisgICAgICAgIChhc3NlcnRUaHJvd3MpOgorICAgICAgICAoYXNzZXJ0VGhyb3dz
RXF1YWxzKToKKyAgICAgICAgKGFzc2VydFRocm93c0FzeW5jKToKKyAgICAgICAgKGFzc2VydElu
c3RhbmNlb2YpOgorICAgICAgICAoYXNzZXJ0RG9lc05vdFRocm93KToKKyAgICAgICAgKGFzc2Vy
dFVucmVhY2hhYmxlKToKKyAgICAgICAgKGFzc2VydENvbnRhaW5zKToKKyAgICAgICAgKGFzc2Vy
dE1hdGNoZXMpOgorICAgICAgICAoY29uY2F0ZW5hdGVFcnJvcnMpOgorICAgICAgICAoYXNzZXJ0
UHJvbWlzZVJlc3VsdCk6CisgICAgICAgIChPcHRpbWl6YXRpb25TdGF0dXMpOgorICAgICAgICAo
YXNzZXJ0VW5vcHRpbWl6ZWQpOgorICAgICAgICAoYXNzZXJ0T3B0aW1pemVkKToKKyAgICAgICAg
KGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlKToKKyAgICAgICAgKGlzTmV2ZXJPcHRpbWl6ZSk6Cisg
ICAgICAgIChpc0Fsd2F5c09wdGltaXplKToKKyAgICAgICAgKGlzSW50ZXJwcmV0ZWQpOgorICAg
ICAgICAoaXNPcHRpbWl6ZWQpOgorICAgICAgICAoaXNUdXJib0Zhbm5lZCk6CisgICAgICAgIChN
anNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UpOgorICAgICAgICAqIHN0cmVz
cy92OC1jbGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzOiBBZGRlZC4KKyAgICAgICAgKGxl
dC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20t
ZGlmZmVyZW50LXJlYWxtLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgor
ICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAg
IChUZXN0RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0aW9uKToKKyAg
ICAgICAgKFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeUNsZWFudXBOb3RDYWxsYWJs
ZSk6CisgICAgICAgIChUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoTm9uQ2Fs
bGFibGVQcm94eUFzQ2xlYW51cCk6CisgICAgICAgIChUZXN0UmVnaXN0ZXJUYXJnZXRBbmRIb2xk
aW5nc1NhbWVWYWx1ZSk6CisgICAgICAgIChUZXN0UmVnaXN0ZXJXaXRob3V0RmluYWxpemF0aW9u
UmVnaXN0cnkpOgorICAgICAgICAoVGVzdFVucmVnaXN0ZXJXaXRoTm9uRXhpc3RlbnRLZXkpOgor
ICAgICAgICAoVGVzdFVucmVnaXN0ZXJXaXRoTm9uRmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAg
ICAgICAoVGVzdFdlYWtSZWZDb25zdHJ1Y3RvcldpdGhOb25PYmplY3QpOgorICAgICAgICAoVGVz
dFdlYWtSZWZXaXRoUHJveHkpOgorICAgICAgICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdp
c3RyeS1hbmQtd2Vha3JlZi5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAg
ICAgIChzZXRUaW1lb3V0KToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0
cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXAp
OgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5qczog
QWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cDApOgorICAgICAgICAobGV0LmNsZWFudXAxKToK
KyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1tdWx0aXBs
ZS1kaXJ0eS1maW5hbGl6YXRpb24tcmVnaXN0cmllcy5qczogQWRkZWQuCisgICAgICAgIChsZXQu
Y2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3Mv
djgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qczogQWRkZWQuCisgICAgICAgIChsZXQucmVl
bnRyYW50X2djKToKKyAgICAgICAgKHNldFRpbWVvdXQpOgorICAgICAgICAqIHN0cmVzcy92OC1z
dHJlc3MtZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHktZW5xdWV1ZS5qczogQWRkZWQuCisgICAg
ICAgIChpLnJlZ2lzdHJpZXMucHVzaC5uZXcuRmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAg
ICAocmVnaXN0cmllcy5mb3JFYWNoKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5kZWZpbmVkLWhv
bGRpbmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50
aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFu
dXAuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVv
dXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFudXAu
anM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRf
ZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMp
OgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qczogQWRk
ZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToK
KyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanM6IEFkZGVk
LgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6Cisg
ICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qczogQWRkZWQuCisgICAgICAgIChs
ZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJl
c3Mvdjgtd2Vhay11bnJlZ2lzdGVydG9rZW4uanM6IEFkZGVkLgorICAgICAgICAoRlIubmV3LkZp
bmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKHRyeUFnYWluKToKKwogMjAyMC0wNy0xOCAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgcmVncmVzc2lv
biBkdWUgdG8gcjI2NDUwNzogTWF0aC57bWlufG1heH0gaW5lcXVhbGl0eSB0ZXN0IHNob3VsZCB1
c2UgRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCBpbnN0ZWFkIERvdWJsZU5vdEVxdWFsQW5kT3Jk
ZXJlZC4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc3
NDYxZjc0YzkwMjIzMjFmYzYwZTY4NmY3OTVkNTBlMzkyOTgxNgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0LmpzCkBAIC0wLDAgKzEsODA5IEBA
CisvLyBDb3B5cmlnaHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAg
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1bmN0aW9uIE1qc1VuaXRBc3NlcnRpb25F
cnJvcihtZXNzYWdlKSB7CisgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7CisgIC8vIFRlbXBvcmFy
aWx5IGluc3RhbGwgYSBjdXN0b20gc3RhY2sgdHJhY2UgZm9ybWF0dGVyIGFuZCByZXN0b3JlIHRo
ZQorICAvLyBwcmV2aW91cyB2YWx1ZS4KKyAgbGV0IHByZXZQcmVwYXJlU3RhY2tUcmFjZSA9IEVy
cm9yLnByZXBhcmVTdGFja1RyYWNlOworICB0cnkgeworICAgIEVycm9yLnByZXBhcmVTdGFja1Ry
YWNlID0gTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlOworICAgIC8vIFRo
aXMgYWxsb3dzIGZldGNoaW5nIHRoZSBzdGFjayB0cmFjZSB1c2luZyBUcnlDYXRjaDo6U3RhY2tU
cmFjZS4KKyAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKCJNanNVbml0QXNzZXJ0aW9uRXJyb3Ii
KS5zdGFjazsKKyAgfSBmaW5hbGx5IHsKKyAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHBy
ZXZQcmVwYXJlU3RhY2tUcmFjZTsKKyAgfQorfQorCisvKgorICogVGhpcyBmaWxlIGlzIGluY2x1
ZGVkIGluIGFsbCBtaW5pIGpzdW5pdCB0ZXN0IGNhc2VzLiAgVGhlIHRlc3QKKyAqIGZyYW1ld29y
ayBleHBlY3RzIGxpbmVzIHRoYXQgc2lnbmFsIGZhaWxlZCB0ZXN0cyB0byBzdGFydCB3aXRoCisg
KiB0aGUgZi13b3JkIGFuZCBpZ25vcmUgYWxsIG90aGVyIGxpbmVzLgorICovCisKK01qc1VuaXRB
c3NlcnRpb25FcnJvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLm1lc3NhZ2UgKyAiXG5cblN0YWNrOiAiICsgdGhpcy5zdGFjazsKK307CisKKworLy8g
RXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlcyB0aGUgc2FtZSBvYmplY3RzLCBvciB0aGUgc2FtZSBw
cmltaXRpdmUKKy8vIHZhbHVlcy4KKy8vIEZvciBrbm93biBwcmltaXRpdmUgdmFsdWVzLCBwbGVh
c2UgdXNlIGFzc2VydEVxdWFscy4KK3ZhciBhc3NlcnRTYW1lOworCisvLyBJbnZlcnNlIG9mIGFz
c2VydFNhbWUuCit2YXIgYXNzZXJ0Tm90U2FtZTsKKworLy8gRXhwZWN0ZWQgYW5kIGZvdW5kIHZh
bHVlcyBhcmUgaWRlbnRpY2FsIHByaW1pdGl2ZSB2YWx1ZXMgb3IgZnVuY3Rpb25zCisvLyBvciBz
aW1pbGFybHkgc3RydWN0dXJlZCBvYmplY3RzIChjaGVja2luZyBpbnRlcm5hbCBwcm9wZXJ0aWVz
CisvLyBvZiwgZS5nLiwgTnVtYmVyIGFuZCBEYXRlIG9iamVjdHMsIHRoZSBlbGVtZW50cyBvZiBh
cnJheXMKKy8vIGFuZCB0aGUgcHJvcGVydGllcyBvZiBub24tQXJyYXkgb2JqZWN0cykuCit2YXIg
YXNzZXJ0RXF1YWxzOworCisvLyBEZWVwIGVxdWFsaXR5IHByZWRpY2F0ZSB1c2VkIGJ5IGFzc2Vy
dEVxdWFscy4KK3ZhciBkZWVwRXF1YWxzOworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVz
IGFyZSBub3QgaWRlbnRpY2FsIHByaW1pdGl2ZSB2YWx1ZXMgb3IgZnVuY3Rpb25zCisvLyBvciBz
aW1pbGFybHkgc3RydWN0dXJlZCBvYmplY3RzIChjaGVja2luZyBpbnRlcm5hbCBwcm9wZXJ0aWVz
CisvLyBvZiwgZS5nLiwgTnVtYmVyIGFuZCBEYXRlIG9iamVjdHMsIHRoZSBlbGVtZW50cyBvZiBh
cnJheXMKKy8vIGFuZCB0aGUgcHJvcGVydGllcyBvZiBub24tQXJyYXkgb2JqZWN0cykuCit2YXIg
YXNzZXJ0Tm90RXF1YWxzOworCisvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGV4cGVjdGVkIGFu
ZCBmb3VuZCB2YWx1ZSBpcyB3aXRoaW4gY2VydGFpbiB0b2xlcmFuY2UuCit2YXIgYXNzZXJ0RXF1
YWxzRGVsdGE7CisKKy8vIFRoZSBmb3VuZCBvYmplY3QgaXMgYW4gQXJyYXkgd2l0aCB0aGUgc2Ft
ZSBsZW5ndGggYW5kIGVsZW1lbnRzCisvLyBhcyB0aGUgZXhwZWN0ZWQgb2JqZWN0LiBUaGUgZXhw
ZWN0ZWQgb2JqZWN0IGRvZXNuJ3QgbmVlZCB0byBiZSBhbiBBcnJheSwKKy8vIGFzIGxvbmcgYXMg
aXQncyAiYXJyYXktaXNoIi4KK3ZhciBhc3NlcnRBcnJheUVxdWFsczsKKworLy8gVGhlIGZvdW5k
IG9iamVjdCBtdXN0IGhhdmUgdGhlIHNhbWUgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIGFzIHRoZQor
Ly8gZXhwZWN0ZWQgb2JqZWN0LiBUaGUgdHlwZSBvZiBvYmplY3QgaXNuJ3QgY2hlY2tlZC4KK3Zh
ciBhc3NlcnRQcm9wZXJ0aWVzRXF1YWw7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBzdHJpbmcgY29u
dmVyc2lvbiBvZiB0aGUgZm91bmQgdmFsdWUgaXMgZXF1YWwgdG8KKy8vIHRoZSBleHBlY3RlZCBz
dHJpbmcuIE9ubHkga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHBsZWFzZQorLy8g
Y2hlY2sgdGhlIHJlYWwgc3RydWN0dXJlIG9mIHRoZSBmb3VuZCB2YWx1ZS4KK3ZhciBhc3NlcnRU
b1N0cmluZ0VxdWFsczsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIHRydWUu
IFVzZSB3aXRoIGJvb2xlYW4gZXhwcmVzc2lvbnMKKy8vIGZvciB0ZXN0cyB0aGF0IGRvZXNuJ3Qg
aGF2ZSB0aGVpciBvd24gYXNzZXJ0WFhYIGZ1bmN0aW9uLgordmFyIGFzc2VydFRydWU7CisKKy8v
IENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBmYWxzZS4KK3ZhciBhc3NlcnRGYWxzZTsK
KworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIG51bGwuIEtlcHQgZm9yIGhpc3Rv
cmljYWwgY29tcGF0aWJpbGl0eSwKKy8vIHBsZWFzZSBqdXN0IHVzZSBhc3NlcnRFcXVhbHMobnVs
bCwgZXhwZWN0ZWQpLgordmFyIGFzc2VydE51bGw7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3Vu
ZCB2YWx1ZSBpcyAqbm90KiBudWxsLgordmFyIGFzc2VydE5vdE51bGw7CisKKy8vIEFzc2VydCB0
aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gb3IgZXZhbCBjb2RlIHRocm93cyBhbiBleGNlcHRpb24u
CisvLyBUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlvbiBjb25zdHJ1
Y3RvciB0aGF0IHRoZQorLy8gdGhyb3duIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qgd2l0
aCAiaW5zdGFuY2VvZiIuCisvLyBUaGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBtZXNz
YWdlIHR5cGUgc3RyaW5nIG9yIFJlZ0V4cCBvYmplY3QgdGhhdCBpcworLy8gY29tcGFyZWQgdG8g
dGhlIG1lc3NhZ2Ugb2YgdGhlIHRocm93biBleGNlcHRpb24uCit2YXIgYXNzZXJ0VGhyb3dzOwor
CisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRocm93cyBhbiBleGNlcHRpb24u
CisvLyBUaGUgZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgc2Vjb25kIGFyZ3VtZW50
IHVzaW5nIGFzc2VydEVxdWFscy4KK3ZhciBhc3NlcnRUaHJvd3NFcXVhbHM7CisKKy8vIEFzc2Vy
dCB0aGF0IHRoZSBwYXNzZWQgcHJvbWlzZSBkb2VzIG5vdCByZXNvbHZlLCBidXQgZXZlbnR1YWxs
eSB0aHJvd3MgYW4KKy8vIGV4Y2VwdGlvbi4gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBp
cyBhbiBleGNlcHRpb24gY29uc3RydWN0b3IgdGhhdCB0aGUKKy8vIHRocm93biBleGNlcHRpb24g
aXMgY2hlY2tlZCBhZ2FpbnN0IHdpdGggImluc3RhbmNlb2YiLgorLy8gVGhlIG9wdGlvbmFsIHRo
aXJkIGFyZ3VtZW50IGlzIGEgbWVzc2FnZSB0eXBlIHN0cmluZyBvciBSZWdFeHAgb2JqZWN0IHRo
YXQgaXMKKy8vIGNvbXBhcmVkIHRvIHRoZSBtZXNzYWdlIG9mIHRoZSB0aHJvd24gZXhjZXB0aW9u
LgordmFyIGFzc2VydFRocm93c0FzeW5jOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIGZ1
bmN0aW9uIG9yIGV2YWwgY29kZSBkb2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCit2YXIgYXNz
ZXJ0RG9lc05vdFRocm93OworCisvLyBBc3NlcnRzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIGFu
IGluc3RhbmNlIG9mIHRoZSBjb25zdHJ1Y3RvciBwYXNzZWQKKy8vIGFzIHRoZSBzZWNvbmQgYXJn
dW1lbnQuCit2YXIgYXNzZXJ0SW5zdGFuY2VvZjsKKworLy8gQXNzZXJ0IHRoYXQgdGhpcyBjb2Rl
IGlzIG5ldmVyIGV4ZWN1dGVkIChpLmUuLCBhbHdheXMgZmFpbHMgaWYgZXhlY3V0ZWQpLgordmFy
IGFzc2VydFVucmVhY2hhYmxlOworCisvLyBBc3NlcnQgdGhhdCB0aGUgZnVuY3Rpb24gY29kZSBp
cyAobm90KSBvcHRpbWl6ZWQuICBJZiAibm8gc3luYyIgaXMgcGFzc2VkCisvLyBhcyBzZWNvbmQg
YXJndW1lbnQsIHdlIGRvIG5vdCB3YWl0IGZvciB0aGUgY29uY3VycmVudCBvcHRpbWl6YXRpb24g
dGhyZWFkIHRvCisvLyBmaW5pc2ggd2hlbiBwb2xsaW5nIGZvciBvcHRpbWl6YXRpb24gc3RhdHVz
LgorLy8gT25seSB3b3JrcyB3aXRoIC0tYWxsb3ctbmF0aXZlcy1zeW50YXguCit2YXIgYXNzZXJ0
T3B0aW1pemVkOwordmFyIGFzc2VydFVub3B0aW1pemVkOworCisvLyBBc3NlcnQgdGhhdCBhIHN0
cmluZyBjb250YWlucyBhbm90aGVyIGV4cGVjdGVkIHN1YnN0cmluZy4KK3ZhciBhc3NlcnRDb250
YWluczsKKworLy8gQXNzZXJ0IHRoYXQgYSBzdHJpbmcgbWF0Y2hlcyBhIGdpdmVuIHJlZ2V4Lgor
dmFyIGFzc2VydE1hdGNoZXM7CisKKy8vIEFzc2VydCB0aGF0IGEgcHJvbWlzZSByZXNvbHZlcyBv
ciByZWplY3RzLgorLy8gUGFyYW1ldGVyczoKKy8vIHtwcm9taXNlfSAtIHRoZSBwcm9taXNlCisv
LyB7c3VjY2Vzc30gLSBvcHRpb25hbCAtIGEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdpdGgg
dGhlIHJlc3VsdCBvZiB0aGUKKy8vICAgICAgICAgICAgIHJlc29sdmluZyBwcm9taXNlLgorLy8g
IHtmYWlsfSAtICAgb3B0aW9uYWwgLSBhIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRo
ZSByZXN1bHQgb2YgdGhlCisvLyAgICAgICAgICAgICByZWplY3RpbmcgcHJvbWlzZS4gSWYgdGhl
IHByb21pc2UgaXMgcmVqZWN0ZWQgYnV0IG5vIHtmYWlsfQorLy8gICAgICAgICAgICAgY2FsbGJh
Y2sgaXMgc2V0LCB0aGUgZXJyb3IgaXMgcHJvcGFnYXRlZCBvdXQgb2YgdGhlIHByb21pc2UKKy8v
ICAgICAgICAgICAgIGNoYWluLgordmFyIGFzc2VydFByb21pc2VSZXN1bHQ7CisKK3ZhciBwcm9t
aXNlVGVzdENoYWluOwordmFyIHByb21pc2VUZXN0Q291bnQgPSAwOworCisvLyBUaGVzZSBiaXRz
IG11c3QgYmUgaW4gc3luYyB3aXRoIGJpdHMgZGVmaW5lZCBpbiBSdW50aW1lX0dldE9wdGltaXph
dGlvblN0YXR1cwordmFyIFY4T3B0aW1pemF0aW9uU3RhdHVzID0geworICBrSXNGdW5jdGlvbjog
MSA8PCAwLAorICBrTmV2ZXJPcHRpbWl6ZTogMSA8PCAxLAorICBrQWx3YXlzT3B0aW1pemU6IDEg
PDwgMiwKKyAga01heWJlRGVvcHRlZDogMSA8PCAzLAorICBrT3B0aW1pemVkOiAxIDw8IDQsCisg
IGtUdXJib0Zhbm5lZDogMSA8PCA1LAorICBrSW50ZXJwcmV0ZWQ6IDEgPDwgNiwKKyAga01hcmtl
ZEZvck9wdGltaXphdGlvbjogMSA8PCA3LAorICBrTWFya2VkRm9yQ29uY3VycmVudE9wdGltaXph
dGlvbjogMSA8PCA4LAorICBrT3B0aW1pemluZ0NvbmN1cnJlbnRseTogMSA8PCA5LAorICBrSXNF
eGVjdXRpbmc6IDEgPDwgMTAsCisgIGtUb3Btb3N0RnJhbWVJc1R1cmJvRmFubmVkOiAxIDw8IDEx
LAorICBrTGl0ZU1vZGU6IDEgPDwgMTIsCisgIGtNYXJrZWRGb3JEZW9wdGltaXphdGlvbjogMSA8
PCAxMywKK307CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAtLWxpdGUtbW9kZSBpcyBvbiBhbmQgd2Ug
Y2FuJ3QgZXZlciB0dXJuIG9uIG9wdGltaXphdGlvbi4KK3ZhciBpc05ldmVyT3B0aW1pemVMaXRl
TW9kZTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0tbm8tb3B0IG1vZGUgaXMgb24uCit2YXIgaXNO
ZXZlck9wdGltaXplOworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1hbHdheXMtb3B0IG1vZGUgaXMg
b24uCit2YXIgaXNBbHdheXNPcHRpbWl6ZTsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1
bmN0aW9uIGluIGludGVycHJldGVkLgordmFyIGlzSW50ZXJwcmV0ZWQ7CisKKy8vIFJldHVybnMg
dHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpcyBvcHRpbWl6ZWQuCit2YXIgaXNPcHRpbWl6ZWQ7CisK
Ky8vIFJldHVybnMgdHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpcyBjb21waWxlZCBieSBUdXJib0Zh
bi4KK3ZhciBpc1R1cmJvRmFubmVkOworCisvLyBNb25rZXktcGF0Y2hhYmxlIGFsbC1wdXJwb3Nl
IGZhaWx1cmUgaGFuZGxlci4KK3ZhciBmYWlsV2l0aE1lc3NhZ2U7CisKKy8vIFJldHVybnMgdGhl
IGZvcm1hdHRlZCBmYWlsdXJlIHRleHQuICBVc2VkIGJ5IHRlc3QtYXN5bmMuanMuCit2YXIgZm9y
bWF0RmFpbHVyZVRleHQ7CisKKy8vIFJldHVybnMgYSBwcmV0dHktcHJpbnRlZCBzdHJpbmcgcmVw
cmVzZW50YXRpb24gb2YgdGhlIHBhc3NlZCB2YWx1ZS4KK3ZhciBwcmV0dHlQcmludGVkOworCiso
ZnVuY3Rpb24gKCkgeyAgLy8gU2NvcGUgZm9yIHV0aWxpdHkgZnVuY3Rpb25zLgorCisgIHZhciBP
YmplY3RQcm90b3R5cGVUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CisgIHZh
ciBOdW1iZXJQcm90b3R5cGVWYWx1ZU9mID0gTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mOworICB2
YXIgQm9vbGVhblByb3RvdHlwZVZhbHVlT2YgPSBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mOwor
ICB2YXIgU3RyaW5nUHJvdG90eXBlVmFsdWVPZiA9IFN0cmluZy5wcm90b3R5cGUudmFsdWVPZjsK
KyAgdmFyIERhdGVQcm90b3R5cGVWYWx1ZU9mID0gRGF0ZS5wcm90b3R5cGUudmFsdWVPZjsKKyAg
dmFyIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nID0gUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZzsK
KyAgdmFyIEFycmF5UHJvdG90eXBlRm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoOwor
ICB2YXIgQXJyYXlQcm90b3R5cGVKb2luID0gQXJyYXkucHJvdG90eXBlLmpvaW47CisgIHZhciBB
cnJheVByb3RvdHlwZU1hcCA9IEFycmF5LnByb3RvdHlwZS5tYXA7CisgIHZhciBBcnJheVByb3Rv
dHlwZVB1c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaDsKKworICB2YXIgQmlnSW50UHJvdG90eXBl
VmFsdWVPZjsKKyAgLy8gVE9ETyhuZWlzKTogUmVtb3ZlIHRyeS1jYXRjaCBvbmNlIEJpZ0ludHMg
YXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgdHJ5IHsKKyAgICBCaWdJbnRQcm90b3R5cGVWYWx1
ZU9mID0gQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mOworICB9IGNhdGNoIChlKSB7fQorCisgIGZ1
bmN0aW9uIGNsYXNzT2Yob2JqZWN0KSB7CisgICAgLy8gQXJndW1lbnQgbXVzdCBub3QgYmUgbnVs
bCBvciB1bmRlZmluZWQuCisgICAgdmFyIHN0cmluZyA9IE9iamVjdFByb3RvdHlwZVRvU3RyaW5n
LmNhbGwob2JqZWN0KTsKKyAgICAvLyBTdHJpbmcgaGFzIGZvcm1hdCBbb2JqZWN0IDxDbGFzc05h
bWU+XS4KKyAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyg4LCBzdHJpbmcubGVuZ3RoIC0gMSk7
CisgIH0KKworCisgIGZ1bmN0aW9uIFZhbHVlT2YodmFsdWUpIHsKKyAgICBzd2l0Y2ggKGNsYXNz
T2YodmFsdWUpKSB7CisgICAgICBjYXNlICJOdW1iZXIiOgorICAgICAgICByZXR1cm4gTnVtYmVy
UHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkJpZ0ludCI6CisgICAg
ICAgIHJldHVybiBCaWdJbnRQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2Fz
ZSAiU3RyaW5nIjoKKyAgICAgICAgcmV0dXJuIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2YuY2FsbCh2
YWx1ZSk7CisgICAgICBjYXNlICJCb29sZWFuIjoKKyAgICAgICAgcmV0dXJuIEJvb2xlYW5Qcm90
b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiRGF0ZSI6CisgICAgICAgIHJl
dHVybiBEYXRlUHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgIH0KKworCisgIHByZXR0eVByaW50ZWQgPSBm
dW5jdGlvbiBwcmV0dHlQcmludGVkKHZhbHVlKSB7CisgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUp
IHsKKyAgICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2
YWx1ZSk7CisgICAgICBjYXNlICJiaWdpbnQiOgorICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVl
KSArICJuIjsKKyAgICAgIGNhc2UgIm51bWJlciI6CisgICAgICAgIGlmICh2YWx1ZSA9PT0gMCAm
JiAoMSAvIHZhbHVlKSA8IDApIHJldHVybiAiLTAiOworICAgICAgICAvLyBGQUxMVEhST1VHSC4K
KyAgICAgIGNhc2UgImJvb2xlYW4iOgorICAgICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgIGNh
c2UgImZ1bmN0aW9uIjoKKyAgICAgIGNhc2UgInN5bWJvbCI6CisgICAgICAgIHJldHVybiBTdHJp
bmcodmFsdWUpOworICAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgICAgaWYgKHZhbHVlID09PSBu
dWxsKSByZXR1cm4gIm51bGwiOworICAgICAgICB2YXIgb2JqZWN0Q2xhc3MgPSBjbGFzc09mKHZh
bHVlKTsKKyAgICAgICAgc3dpdGNoIChvYmplY3RDbGFzcykgeworICAgICAgICAgIGNhc2UgIk51
bWJlciI6CisgICAgICAgICAgY2FzZSAiQmlnSW50IjoKKyAgICAgICAgICBjYXNlICJTdHJpbmci
OgorICAgICAgICAgIGNhc2UgIkJvb2xlYW4iOgorICAgICAgICAgIGNhc2UgIkRhdGUiOgorICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdENsYXNzICsgIigiICsgcHJldHR5UHJpbnRlZChWYWx1ZU9m
KHZhbHVlKSkgKyAiKSI7CisgICAgICAgICAgY2FzZSAiUmVnRXhwIjoKKyAgICAgICAgICAgIHJl
dHVybiBSZWdFeHBQcm90b3R5cGVUb1N0cmluZy5jYWxsKHZhbHVlKTsKKyAgICAgICAgICBjYXNl
ICJBcnJheSI6CisgICAgICAgICAgICB2YXIgbWFwcGVkID0gQXJyYXlQcm90b3R5cGVNYXAuY2Fs
bCgKKyAgICAgICAgICAgICAgICB2YWx1ZSwgcHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCk7Cisg
ICAgICAgICAgICB2YXIgam9pbmVkID0gQXJyYXlQcm90b3R5cGVKb2luLmNhbGwobWFwcGVkLCAi
LCIpOworICAgICAgICAgICAgcmV0dXJuICJbIiArIGpvaW5lZCArICJdIjsKKyAgICAgICAgICBj
YXNlICJVaW50OEFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQ4QXJyYXkiOgorICAgICAgICAg
IGNhc2UgIkludDE2QXJyYXkiOgorICAgICAgICAgIGNhc2UgIlVpbnQxNkFycmF5IjoKKyAgICAg
ICAgICBjYXNlICJVaW50MzJBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50MzJBcnJheSI6Cisg
ICAgICAgICAgY2FzZSAiRmxvYXQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJGbG9hdDY0QXJy
YXkiOgorICAgICAgICAgICAgdmFyIGpvaW5lZCA9IEFycmF5UHJvdG90eXBlSm9pbi5jYWxsKHZh
bHVlLCAiLCIpOworICAgICAgICAgICAgcmV0dXJuIG9iamVjdENsYXNzICsgIihbIiArIGpvaW5l
ZCArICJdKSI7CisgICAgICAgICAgY2FzZSAiT2JqZWN0IjoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKCIg
KyBTdHJpbmcodmFsdWUpICsgIikiOworICAgICAgICB9CisgICAgICAgIC8vIGNsYXNzT2YoKSBy
ZXR1cm5lZCAiT2JqZWN0Ii4KKyAgICAgICAgdmFyIG5hbWUgPSB2YWx1ZS5jb25zdHJ1Y3Rvci5u
YW1lOworICAgICAgICBpZiAobmFtZSkgcmV0dXJuIG5hbWUgKyAiKCkiOworICAgICAgICByZXR1
cm4gIk9iamVjdCgpIjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAiLS0gdW5rbm93
biB2YWx1ZSAtLSI7CisgICAgfQorICB9CisKKworICBmdW5jdGlvbiBwcmV0dHlQcmludGVkQXJy
YXlFbGVtZW50KHZhbHVlLCBpbmRleCwgYXJyYXkpIHsKKyAgICBpZiAodmFsdWUgPT09IHVuZGVm
aW5lZCAmJiAhKGluZGV4IGluIGFycmF5KSkgcmV0dXJuICIiOworICAgIHJldHVybiBwcmV0dHlQ
cmludGVkKHZhbHVlKTsKKyAgfQorCisKKyAgZmFpbFdpdGhNZXNzYWdlID0gZnVuY3Rpb24gZmFp
bFdpdGhNZXNzYWdlKG1lc3NhZ2UpIHsKKyAgICB0aHJvdyBuZXcgTWpzVW5pdEFzc2VydGlvbkVy
cm9yKG1lc3NhZ2UpOworICB9CisKKyAgZm9ybWF0RmFpbHVyZVRleHQgPSBmdW5jdGlvbihleHBl
Y3RlZFRleHQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIHZhciBtZXNzYWdlID0gIkZhaWwiICsg
InVyZSI7CisgICAgaWYgKG5hbWVfb3B0KSB7CisgICAgICAvLyBGaXggdGhpcyB3aGVuIHdlIGRp
dGNoIHRoZSBvbGQgdGVzdCBydW5uZXIuCisgICAgICBtZXNzYWdlICs9ICIgKCIgKyBuYW1lX29w
dCArICIpIjsKKyAgICB9CisKKyAgICB2YXIgZm91bmRUZXh0ID0gcHJldHR5UHJpbnRlZChmb3Vu
ZCk7CisgICAgaWYgKGV4cGVjdGVkVGV4dC5sZW5ndGggPD0gNDAgJiYgZm91bmRUZXh0Lmxlbmd0
aCA8PSA0MCkgeworICAgICAgbWVzc2FnZSArPSAiOiBleHBlY3RlZCA8IiArIGV4cGVjdGVkVGV4
dCArICI+IGZvdW5kIDwiICsgZm91bmRUZXh0ICsgIj4iOworICAgIH0gZWxzZSB7CisgICAgICBt
ZXNzYWdlICs9ICI6XG5leHBlY3RlZDpcbiIgKyBleHBlY3RlZFRleHQgKyAiXG5mb3VuZDpcbiIg
KyBmb3VuZFRleHQ7CisgICAgfQorICAgIHJldHVybiBtZXNzYWdlOworICB9CisKKyAgZnVuY3Rp
b24gZmFpbChleHBlY3RlZFRleHQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIHJldHVybiBmYWls
V2l0aE1lc3NhZ2UoZm9ybWF0RmFpbHVyZVRleHQoZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9v
cHQpKTsKKyAgfQorCisKKyAgZnVuY3Rpb24gZGVlcE9iamVjdEVxdWFscyhhLCBiKSB7CisgICAg
dmFyIGFQcm9wcyA9IE9iamVjdC5rZXlzKGEpOworICAgIGFQcm9wcy5zb3J0KCk7CisgICAgdmFy
IGJQcm9wcyA9IE9iamVjdC5rZXlzKGIpOworICAgIGJQcm9wcy5zb3J0KCk7CisgICAgaWYgKCFk
ZWVwRXF1YWxzKGFQcm9wcywgYlByb3BzKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFQcm9wcy5sZW5ndGg7IGkrKykgeworICAgICAgaWYg
KCFkZWVwRXF1YWxzKGFbYVByb3BzW2ldXSwgYlthUHJvcHNbaV1dKSkgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisKKworICBk
ZWVwRXF1YWxzID0gZnVuY3Rpb24gZGVlcEVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIp
IHsKKyAgICAgIC8vIENoZWNrIGZvciAtMC4KKyAgICAgIGlmIChhID09PSAwKSByZXR1cm4gKDEg
LyBhKSA9PT0gKDEgLyBiKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAodHlw
ZW9mIGEgIT09IHR5cGVvZiBiKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKHR5cGVvZiBhID09PSAi
bnVtYmVyIikgcmV0dXJuIGlzTmFOKGEpICYmIGlzTmFOKGIpOworICAgIGlmICh0eXBlb2YgYSAh
PT0gIm9iamVjdCIgJiYgdHlwZW9mIGEgIT09ICJmdW5jdGlvbiIpIHJldHVybiBmYWxzZTsKKyAg
ICAvLyBOZWl0aGVyIGEgbm9yIGIgaXMgcHJpbWl0aXZlLgorICAgIHZhciBvYmplY3RDbGFzcyA9
IGNsYXNzT2YoYSk7CisgICAgaWYgKG9iamVjdENsYXNzICE9PSBjbGFzc09mKGIpKSByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiUmVnRXhwIikgeworICAgICAgLy8gRm9y
IFJlZ0V4cCwganVzdCBjb21wYXJlIHBhdHRlcm4gYW5kIGZsYWdzIHVzaW5nIGl0cyB0b1N0cmlu
Zy4KKyAgICAgIHJldHVybiBSZWdFeHBQcm90b3R5cGVUb1N0cmluZy5jYWxsKGEpID09PQorICAg
ICAgICAgICAgIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwoYik7CisgICAgfQorICAgIC8v
IEZ1bmN0aW9ucyBhcmUgb25seSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcy4KKyAgICBpZiAob2Jq
ZWN0Q2xhc3MgPT09ICJGdW5jdGlvbiIpIHJldHVybiBmYWxzZTsKKyAgICBpZiAob2JqZWN0Q2xh
c3MgPT09ICJBcnJheSIpIHsKKyAgICAgIHZhciBlbGVtZW50Q291bnQgPSAwOworICAgICAgaWYg
KGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9
CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYg
KCFkZWVwRXF1YWxzKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiU3RyaW5nIiB8fCBv
YmplY3RDbGFzcyA9PT0gIk51bWJlciIgfHwKKyAgICAgIG9iamVjdENsYXNzID09PSAiQmlnSW50
IiB8fCBvYmplY3RDbGFzcyA9PT0gIkJvb2xlYW4iIHx8CisgICAgICBvYmplY3RDbGFzcyA9PT0g
IkRhdGUiKSB7CisgICAgICBpZiAoVmFsdWVPZihhKSAhPT0gVmFsdWVPZihiKSkgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gZGVlcE9iamVjdEVxdWFscyhhLCBiKTsKKyAgfQorCisg
IGFzc2VydFNhbWUgPSBmdW5jdGlvbiBhc3NlcnRTYW1lKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9v
cHQpIHsKKyAgICBpZiAoT2JqZWN0LmlzKGV4cGVjdGVkLCBmb3VuZCkpIHJldHVybjsKKyAgICBm
YWlsKHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICB9OworCisg
IGFzc2VydE5vdFNhbWUgPSBmdW5jdGlvbiBhc3NlcnROb3RTYW1lKGV4cGVjdGVkLCBmb3VuZCwg
bmFtZV9vcHQpIHsKKyAgICBpZiAoIU9iamVjdC5pcyhleHBlY3RlZCwgZm91bmQpKSByZXR1cm47
CisgICAgZmFpbCgibm90IHNhbWUgYXMgIiArIHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3Vu
ZCwgbmFtZV9vcHQpOworICB9CisKKyAgYXNzZXJ0RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0RXF1
YWxzKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICBpZiAoIWRlZXBFcXVhbHMoZm91
bmQsIGV4cGVjdGVkKSkgeworICAgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91
bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0Tm90RXF1YWxzID0gZnVuY3Rp
b24gYXNzZXJ0Tm90RXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICBpZiAo
ZGVlcEVxdWFscyhmb3VuZCwgZXhwZWN0ZWQpKSB7CisgICAgICBmYWlsKCJub3QgZXF1YWxzIHRv
ICIgKyBwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9Cisg
IH07CisKKworICBhc3NlcnRFcXVhbHNEZWx0YSA9CisgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVh
bHNEZWx0YShleHBlY3RlZCwgZm91bmQsIGRlbHRhLCBuYW1lX29wdCkgeworICAgIGlmIChNYXRo
LmFicyhleHBlY3RlZCAtIGZvdW5kKSA+IGRlbHRhKSB7CisgICAgICBmYWlsKHByZXR0eVByaW50
ZWQoZXhwZWN0ZWQpICsgIiArLSAiICsgcHJldHR5UHJpbnRlZChkZWx0YSksIGZvdW5kLCBuYW1l
X29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0QXJyYXlFcXVhbHMgPSBmdW5jdGlvbiBh
c3NlcnRBcnJheUVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgdmFyIHN0
YXJ0ID0gIiI7CisgICAgaWYgKG5hbWVfb3B0KSB7CisgICAgICBzdGFydCA9IG5hbWVfb3B0ICsg
IiAtICI7CisgICAgfQorICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5sZW5ndGgsIGZvdW5kLmxl
bmd0aCwgc3RhcnQgKyAiYXJyYXkgbGVuZ3RoIik7CisgICAgaWYgKGV4cGVjdGVkLmxlbmd0aCA9
PT0gZm91bmQubGVuZ3RoKSB7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxl
bmd0aDsgKytpKSB7CisgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZFtpXSwgZm91bmRbaV0s
CisgICAgICAgICAgICAgICAgICAgICBzdGFydCArICJhcnJheSBlbGVtZW50IGF0IGluZGV4ICIg
KyBpKTsKKyAgICAgIH0KKyAgICB9CisgIH07CisKKworICBhc3NlcnRQcm9wZXJ0aWVzRXF1YWwg
PSBmdW5jdGlvbiBhc3NlcnRQcm9wZXJ0aWVzRXF1YWwoZXhwZWN0ZWQsIGZvdW5kLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9v
cHQpIHsKKyAgICAvLyBDaGVjayBwcm9wZXJ0aWVzIG9ubHkuCisgICAgaWYgKCFkZWVwT2JqZWN0
RXF1YWxzKGV4cGVjdGVkLCBmb3VuZCkpIHsKKyAgICAgIGZhaWwoZXhwZWN0ZWQsIGZvdW5kLCBu
YW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0VG9TdHJpbmdFcXVhbHMgPSBmdW5j
dGlvbiBhc3NlcnRUb1N0cmluZ0VxdWFscyhleHBlY3RlZCwgZm91bmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9vcHQpIHsKKyAg
ICBpZiAoZXhwZWN0ZWQgIT09IFN0cmluZyhmb3VuZCkpIHsKKyAgICAgIGZhaWwoZXhwZWN0ZWQs
IGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0VHJ1ZSA9IGZ1bmN0
aW9uIGFzc2VydFRydWUodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgYXNzZXJ0RXF1YWxzKHRydWUs
IHZhbHVlLCBuYW1lX29wdCk7CisgIH07CisKKworICBhc3NlcnRGYWxzZSA9IGZ1bmN0aW9uIGFz
c2VydEZhbHNlKHZhbHVlLCBuYW1lX29wdCkgeworICAgIGFzc2VydEVxdWFscyhmYWxzZSwgdmFs
dWUsIG5hbWVfb3B0KTsKKyAgfTsKKworCisgIGFzc2VydE51bGwgPSBmdW5jdGlvbiBhc3NlcnRO
dWxsKHZhbHVlLCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgeworICAgICAg
ZmFpbCgibnVsbCIsIHZhbHVlLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0
Tm90TnVsbCA9IGZ1bmN0aW9uIGFzc2VydE5vdE51bGwodmFsdWUsIG5hbWVfb3B0KSB7CisgICAg
aWYgKHZhbHVlID09PSBudWxsKSB7CisgICAgICBmYWlsKCJub3QgbnVsbCIsIHZhbHVlLCBuYW1l
X29wdCk7CisgICAgfQorICB9OworCisgIGZ1bmN0aW9uIGV4ZWN1dGVDb2RlKGNvZGUpIHsKKyAg
ICBpZiAodHlwZW9mIGNvZGUgPT09ICdmdW5jdGlvbicpICByZXR1cm4gY29kZSgpOworICAgIGlm
ICh0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycpIHJldHVybiBldmFsKGNvZGUpOworICAgIGZhaWxX
aXRoTWVzc2FnZSgKKyAgICAgICAgJ0dpdmVuIGNvZGUgaXMgbmVpdGhlciBmdW5jdGlvbiBub3Ig
c3RyaW5nLCBidXQgJyArICh0eXBlb2YgY29kZSkgKworICAgICAgICAnOiA8JyArIHByZXR0eVBy
aW50ZWQoY29kZSkgKyAnPicpOworICB9CisKKyAgZnVuY3Rpb24gY2hlY2tFeGNlcHRpb24oZSwg
dHlwZV9vcHQsIGNhdXNlX29wdCkgeworICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkKSB7
CisgICAgICBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9mIHR5cGVfb3B0KTsKKyAgICAg
IGFzc2VydEluc3RhbmNlb2YoZSwgdHlwZV9vcHQpOworICAgIH0KKyAgICAvLyBpZ25vcmUgY2F1
c2Vfb3B0IGJlY2F1c2Ugb3VyIGVycm9yIG1lc3NhZ2VzIGFyZSBub3QgdGhlIHNhbWUgYXMgVjgn
cworICAgIHJldHVybjsKKyAgICBpZiAoUmVnRXhwICE9PSB1bmRlZmluZWQgJiYgY2F1c2Vfb3B0
IGluc3RhbmNlb2YgUmVnRXhwKSB7CisgICAgICBhc3NlcnRNYXRjaGVzKGNhdXNlX29wdCwgZS5t
ZXNzYWdlLCAnRXJyb3IgbWVzc2FnZScpOworICAgIH0gZWxzZSBpZiAoY2F1c2Vfb3B0ICE9PSB1
bmRlZmluZWQpIHsKKyAgICAgIGFzc2VydEVxdWFscyhjYXVzZV9vcHQsIGUubWVzc2FnZSwgJ0Vy
cm9yIG1lc3NhZ2UnKTsKKyAgICB9CisgIH0KKworICBhc3NlcnRUaHJvd3MgPSBmdW5jdGlvbiBh
c3NlcnRUaHJvd3MoY29kZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgeworICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID4gMSAmJiB0eXBlX29wdCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBmYWlsV2l0
aE1lc3NhZ2UoJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgdW5rbm93biB0eXBlX29wdCBn
aXZlbicpOworICAgIH0KKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Yg
dHlwZV9vcHQgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgKKyAgICAg
ICAgICAnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCBtYXliZSB5b3Ugd2FudCBhc3NlcnRU
aHJvd3NFcXVhbHMnKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgIGV4ZWN1dGVDb2RlKGNvZGUp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBj
YXVzZV9vcHQpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsZXQgbXNnID0gJ0RpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uJzsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBl
X29wdC5uYW1lICE9PSB1bmRlZmluZWQpCisgICAgICBtc2cgKz0gJywgZXhwZWN0ZWQgJyArIHR5
cGVfb3B0Lm5hbWU7CisgICAgZmFpbFdpdGhNZXNzYWdlKG1zZyk7CisgIH07CisKKyAgYXNzZXJ0
VGhyb3dzRXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzRXF1YWxzKGZ1biwgdmFsKSB7Cisg
ICAgdHJ5IHsKKyAgICAgIGZ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGFzc2VydFNh
bWUodmFsLCBlKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZmFpbFdpdGhNZXNzYWdlKCdE
aWQgbm90IHRocm93IGV4Y2VwdGlvbiwgZXhwZWN0ZWQgJyArIHByZXR0eVByaW50ZWQodmFsKSk7
CisgIH07CisKKyAgYXNzZXJ0VGhyb3dzQXN5bmMgPSBmdW5jdGlvbiBhc3NlcnRUaHJvd3NBc3lu
Yyhwcm9taXNlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5n
dGggPiAxICYmIHR5cGVfb3B0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2Fn
ZSgnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCB1bmtub3duIHR5cGVfb3B0IGdpdmVuJyk7
CisgICAgfQorICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0eXBlX29w
dCAhPT0gJ2Z1bmN0aW9uJykgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdp
bnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIG1heWJlIHlvdSB3YW50IGFzc2VydFRocm93c0Vx
dWFscycpOworICAgIH0KKyAgICBsZXQgbXNnID0gJ1Byb21pc2UgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24nOworICAgIGlmICh0eXBlX29wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVfb3B0Lm5hbWUg
IT09IHVuZGVmaW5lZCkKKyAgICAgIG1zZyArPSAnLCBleHBlY3RlZCAnICsgdHlwZV9vcHQubmFt
ZTsKKyAgICByZXR1cm4gYXNzZXJ0UHJvbWlzZVJlc3VsdCgKKyAgICAgICAgcHJvbWlzZSwKKyAg
ICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRvIGdldCBv
dXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgLy8gY2hhaW4uCisgICAgICAgIHJlcyA9PiBzZXRU
aW1lb3V0KF8gPT4gZmFpbCgnPHRocm93PicsIHJlcywgbXNnKSwgMCksCisgICAgICAgIGUgPT4g
Y2hlY2tFeGNlcHRpb24oZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkpOworICB9OworCisgIGFzc2Vy
dEluc3RhbmNlb2YgPSBmdW5jdGlvbiBhc3NlcnRJbnN0YW5jZW9mKG9iaiwgdHlwZSkgeworICAg
IGlmICghKG9iaiBpbnN0YW5jZW9mIHR5cGUpKSB7CisgICAgICB2YXIgYWN0dWFsVHlwZU5hbWUg
PSBudWxsOworICAgICAgdmFyIGFjdHVhbENvbnN0cnVjdG9yID0gb2JqICYmIE9iamVjdC5nZXRQ
cm90b3R5cGVPZihvYmopLmNvbnN0cnVjdG9yOworICAgICAgaWYgKHR5cGVvZiBhY3R1YWxDb25z
dHJ1Y3RvciA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICBhY3R1YWxUeXBlTmFtZSA9IGFjdHVh
bENvbnN0cnVjdG9yLm5hbWUgfHwgU3RyaW5nKGFjdHVhbENvbnN0cnVjdG9yKTsKKyAgICAgIH0K
KyAgICAgIGZhaWxXaXRoTWVzc2FnZSgKKyAgICAgICAgICAnT2JqZWN0IDwnICsgcHJldHR5UHJp
bnRlZChvYmopICsgJz4gaXMgbm90IGFuIGluc3RhbmNlIG9mIDwnICsKKyAgICAgICAgICAodHlw
ZS5uYW1lIHx8IHR5cGUpICsgJz4nICsKKyAgICAgICAgICAoYWN0dWFsVHlwZU5hbWUgPyAnIGJ1
dCBvZiA8JyArIGFjdHVhbFR5cGVOYW1lICsgJz4nIDogJycpKTsKKyAgICB9CisgIH07CisKKyAg
YXNzZXJ0RG9lc05vdFRocm93ID0gZnVuY3Rpb24gYXNzZXJ0RG9lc05vdFRocm93KGNvZGUsIG5h
bWVfb3B0KSB7CisgICAgdHJ5IHsKKyAgICAgIGV4ZWN1dGVDb2RlKGNvZGUpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgIGlmIChlIGluc3RhbmNlb2YgTWpzVW5pdEFzc2VydGlvbkVycm9yKSB0
aHJvdyBlOworICAgICAgZmFpbFdpdGhNZXNzYWdlKCJ0aHJldyBhbiBleGNlcHRpb246ICIgKyAo
ZS5tZXNzYWdlIHx8IGUpKTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0VW5yZWFjaGFibGUgPSBm
dW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZShuYW1lX29wdCkgeworICAgIC8vIEZpeCB0aGlzIHdo
ZW4gd2UgZGl0Y2ggdGhlIG9sZCB0ZXN0IHJ1bm5lci4KKyAgICB2YXIgbWVzc2FnZSA9ICJGYWls
IiArICJ1cmU6IHVucmVhY2hhYmxlIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAgIG1lc3Nh
Z2UgKz0gIiAtICIgKyBuYW1lX29wdDsKKyAgICB9CisgICAgZmFpbFdpdGhNZXNzYWdlKG1lc3Nh
Z2UpOworICB9OworCisgIGFzc2VydENvbnRhaW5zID0gZnVuY3Rpb24oc3ViLCB2YWx1ZSwgbmFt
ZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgPT0gbnVsbCA/IChzdWIgIT0gbnVsbCkgOiB2YWx1ZS5p
bmRleE9mKHN1YikgPT0gLTEpIHsKKyAgICAgIGZhaWwoImNvbnRhaW5zICciICsgU3RyaW5nKHN1
YikgKyAiJyIsIHZhbHVlLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisgIGFzc2VydE1hdGNo
ZXMgPSBmdW5jdGlvbihyZWdleHAsIHN0ciwgbmFtZV9vcHQpIHsKKyAgICBpZiAoIShyZWdleHAg
aW5zdGFuY2VvZiBSZWdFeHApKSB7CisgICAgICByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cCk7
CisgICAgfQorICAgIGlmICghc3RyLm1hdGNoKHJlZ2V4cCkpIHsKKyAgICAgIGZhaWwoInNob3Vs
ZCBtYXRjaCAnIiArIHJlZ2V4cCArICInIiwgc3RyLCBuYW1lX29wdCk7CisgICAgfQorICB9Owor
CisgIGZ1bmN0aW9uIGNvbmNhdGVuYXRlRXJyb3JzKHN0YWNrLCBleGNlcHRpb24pIHsKKyAgICAv
LyBJZiB0aGUgZXhjZXB0aW9uIGRvZXMgbm90IGNvbnRhaW4gYSBzdGFjayB0cmFjZSwgd3JhcCBp
dCBpbiBhIG5ldyBFcnJvci4KKyAgICBpZiAoIWV4Y2VwdGlvbi5zdGFjaykgZXhjZXB0aW9uID0g
bmV3IEVycm9yKGV4Y2VwdGlvbik7CisKKyAgICAvLyBJZiB0aGUgZXhjZXB0aW9uIGFscmVhZHkg
cHJvdmlkZXMgYSBzcGVjaWFsIHN0YWNrIHRyYWNlLCB3ZSBkbyBub3QgbW9kaWZ5CisgICAgLy8g
aXQuCisgICAgaWYgKHR5cGVvZiBleGNlcHRpb24uc3RhY2sgIT09ICdzdHJpbmcnKSB7CisgICAg
ICByZXR1cm4gZXhjZXB0aW9uOworICAgIH0KKyAgICBleGNlcHRpb24uc3RhY2sgPSBzdGFjayAr
ICdcblxuJyArIGV4Y2VwdGlvbi5zdGFjazsKKyAgICByZXR1cm4gZXhjZXB0aW9uOworICB9CisK
KyAgYXNzZXJ0UHJvbWlzZVJlc3VsdCA9IGZ1bmN0aW9uKHByb21pc2UsIHN1Y2Nlc3MsIGZhaWwp
IHsKKyAgICBpZiAoc3VjY2VzcyAhPT0gdW5kZWZpbmVkKSBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9u
JywgdHlwZW9mIHN1Y2Nlc3MpOworICAgIGlmIChmYWlsICE9PSB1bmRlZmluZWQpIGFzc2VydEVx
dWFscygnZnVuY3Rpb24nLCB0eXBlb2YgZmFpbCk7CisgICAgYXNzZXJ0SW5zdGFuY2VvZihwcm9t
aXNlLCBQcm9taXNlKTsKKyAgICBjb25zdCBzdGFjayA9IChuZXcgRXJyb3IoKSkuc3RhY2s7CisK
KyAgICB2YXIgdGVzdF9wcm9taXNlID0gcHJvbWlzZS50aGVuKAorICAgICAgICByZXN1bHQgPT4g
eworICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoLS1wcm9taXNlVGVzdENvdW50ID09
IDApIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgIT09
IHVuZGVmaW5lZCkgc3VjY2VzcyhyZXN1bHQpOworICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2FpbiB0byBn
ZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgICAgICAvLyBjaGFpbi4KKyAgICAgICAgICAg
IHNldFRpbWVvdXQoXyA9PiB7CisgICAgICAgICAgICAgIHRocm93IGNvbmNhdGVuYXRlRXJyb3Jz
KHN0YWNrLCBlKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgcmVzdWx0ID0+IHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKC0t
cHJvbWlzZVRlc3RDb3VudCA9PSAwKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIGlmIChmYWlsID09PSB1bmRlZmluZWQpIHRocm93IHJlc3VsdDsKKyAgICAgICAgICAgIGZh
aWwocmVzdWx0KTsKKyAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBVc2Ug
c2V0VGltZW91dCB0byB0aHJvdyB0aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJv
bWlzZQorICAgICAgICAgICAgLy8gY2hhaW4uCisgICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4g
eworICAgICAgICAgICAgICB0aHJvdyBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZSk7CisgICAg
ICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgaWYgKCFwcm9t
aXNlVGVzdENoYWluKSBwcm9taXNlVGVzdENoYWluID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAg
Ly8gd2FpdFVudGlsRG9uZSBpcyBpZGVtcG90ZW50LgorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICsrcHJvbWlzZVRlc3RDb3VudDsKKyAgICByZXR1cm4gcHJvbWlzZVRlc3RD
aGFpbi50aGVuKHRlc3RfcHJvbWlzZSk7CisgIH07CisKKyAgdmFyIE9wdGltaXphdGlvblN0YXR1
c0ltcGwgPSB1bmRlZmluZWQ7CisKKyAgdmFyIE9wdGltaXphdGlvblN0YXR1cyA9IGZ1bmN0aW9u
KGZ1biwgc3luY19vcHQpIHsKKyAgICBpZiAoT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICB0cnkgeworICAgICAgICBPcHRpbWl6YXRpb25TdGF0dXNJbXBsID0g
bmV3IEZ1bmN0aW9uKAorICAgICAgICAgICAgImZ1biIsICJzeW5jIiwgInJldHVybiAlR2V0T3B0
aW1pemF0aW9uU3RhdHVzKGZ1biwgc3luYyk7Iik7CisgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigibmF0aXZlcyBzeW50YXggbm90IGFsbG93ZWQiKTsKKyAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIE9wdGltaXphdGlvblN0YXR1c0ltcGwoZnVuLCBzeW5jX29w
dCk7CisgIH0KKworICBhc3NlcnRVbm9wdGltaXplZCA9IGZ1bmN0aW9uIGFzc2VydFVub3B0aW1p
emVkKAorICAgICAgZnVuLCBzeW5jX29wdCwgbmFtZV9vcHQsIHNraXBfaWZfbWF5YmVfZGVvcHRl
ZCA9IHRydWUpIHsKKyAgICBpZiAoc3luY19vcHQgPT09IHVuZGVmaW5lZCkgc3luY19vcHQgPSAi
IjsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmNfb3B0
KTsKKyAgICAvLyBUZXN0cyB0aGF0IHVzZSBhc3NlcnRVbm9wdGltaXplZCgpIGRvIG5vdCBtYWtl
IHNlbnNlIGlmIC0tYWx3YXlzLW9wdAorICAgIC8vIG9wdGlvbiBpcyBwcm92aWRlZC4gU3VjaCB0
ZXN0cyBtdXN0IGFkZCAtLW5vLWFsd2F5cy1vcHQgdG8gZmxhZ3MgY29tbWVudC4KKyAgICBhc3Nl
cnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtBbHdheXNPcHRpbWl6
ZSkgIT09IDAsCisgICAgICAgICAgICAgICAgInRlc3QgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRo
IC0tYWx3YXlzLW9wdCIpOworICAgIGFzc2VydFRydWUoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsIG5hbWVfb3B0KTsKKyAgICBpZiAoc2tpcF9p
Zl9tYXliZV9kZW9wdGVkICYmCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25T
dGF0dXMua01heWJlRGVvcHRlZCkgIT09IDApIHsKKyAgICAgIC8vIFdoZW4gLS1kZW9wdC1ldmVy
eS1uLXRpbWVzIGZsYWcgaXMgc3BlY2lmaWVkIGl0J3Mgbm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAg
ICAgIC8vIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBpcyBzdGlsbCBkZW9wdGltaXplZCwgc28g
a2VlcCBydW5uaW5nIHRoZSB0ZXN0CisgICAgICAvLyB0byBzdHJlc3MgdGVzdCB0aGUgZGVvcHRp
bWl6ZXIuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVz
ICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAsIG5hbWVfb3B0KTsKKyAg
fQorCisgIGFzc2VydE9wdGltaXplZCA9IGZ1bmN0aW9uIGFzc2VydE9wdGltaXplZCgKKyAgICAg
IGZ1biwgc3luY19vcHQsIG5hbWVfb3B0LCBza2lwX2lmX21heWJlX2Rlb3B0ZWQgPSB0cnVlKSB7
CisgICAgaWYgKHN5bmNfb3B0ID09PSB1bmRlZmluZWQpIHN5bmNfb3B0ID0gIiI7CisgICAgdmFy
IG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jX29wdCk7CisgICAgLy8g
VGVzdHMgdGhhdCB1c2UgYXNzZXJ0T3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgZm9yIExp
dGUgbW9kZSB3aGVyZQorICAgIC8vIG9wdGltaXphdGlvbiBpcyBhbHdheXMgZGlzYWJsZWQsIGV4
cGxpY2l0bHkgZXhpdCB0aGUgdGVzdCB3aXRoIGEgd2FybmluZy4KKyAgICBpZiAob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtMaXRlTW9kZSkgeworICAgICAgcHJpbnQoIldhcm5p
bmc6IFRlc3QgdXNlcyBhc3NlcnRPcHRpbWl6ZWQgaW4gTGl0ZSBtb2RlLCBza2lwcGluZyB0ZXN0
LiIpOworICAgICAgdGVzdFJ1bm5lci5xdWl0KDApOworICAgIH0KKyAgICAvLyBUZXN0cyB0aGF0
IHVzZSBhc3NlcnRPcHRpbWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBpZiAtLW5vLW9wdAorICAg
IC8vIG9wdGlvbiBpcyBwcm92aWRlZC4gU3VjaCB0ZXN0cyBtdXN0IGFkZCAtLW9wdCB0byBmbGFn
cyBjb21tZW50LgorICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25T
dGF0dXMua05ldmVyT3B0aW1pemUpICE9PSAwLAorICAgICAgICAgICAgICAgICJ0ZXN0IGRvZXMg
bm90IG1ha2Ugc2Vuc2Ugd2l0aCAtLW5vLW9wdCIpOworICAgIGFzc2VydFRydWUoCisgICAgICAg
IChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLAor
ICAgICAgICAnc2hvdWxkIGJlIGEgZnVuY3Rpb246ICcgKyBuYW1lX29wdCk7CisgICAgaWYgKHNr
aXBfaWZfbWF5YmVfZGVvcHRlZCAmJgorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0
aW9uU3RhdHVzLmtNYXliZURlb3B0ZWQpICE9PSAwKSB7CisgICAgICAvLyBXaGVuIC0tZGVvcHQt
ZXZlcnktbi10aW1lcyBmbGFnIGlzIHNwZWNpZmllZCBpdCdzIG5vIGxvbmdlciBndWFyYW50ZWVk
CisgICAgICAvLyB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgc3RpbGwgb3B0aW1pemVkLCBz
byBrZWVwIHJ1bm5pbmcgdGhlIHRlc3QKKyAgICAgIC8vIHRvIHN0cmVzcyB0ZXN0IHRoZSBkZW9w
dGltaXplci4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0VHJ1ZSgKKyAgICAgICAg
KG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rT3B0aW1pemVkKSAhPT0gMCwKKyAg
ICAgICAgJ3Nob3VsZCBiZSBvcHRpbWl6ZWQ6ICcgKyBuYW1lX29wdCk7CisgIH0KKworICBpc05l
dmVyT3B0aW1pemVMaXRlTW9kZSA9IGZ1bmN0aW9uIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlKCkg
eworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIp
OworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtMaXRlTW9k
ZSkgIT09IDA7CisgIH0KKworICBpc05ldmVyT3B0aW1pemUgPSBmdW5jdGlvbiBpc05ldmVyT3B0
aW1pemUoKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXModW5kZWZp
bmVkLCAiIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMu
a05ldmVyT3B0aW1pemUpICE9PSAwOworICB9CisKKyAgaXNBbHdheXNPcHRpbWl6ZSA9IGZ1bmN0
aW9uIGlzQWx3YXlzT3B0aW1pemUoKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRp
b25TdGF0dXModW5kZWZpbmVkLCAiIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRp
bWl6YXRpb25TdGF0dXMua0Fsd2F5c09wdGltaXplKSAhPT0gMDsKKyAgfQorCisgIGlzSW50ZXJw
cmV0ZWQgPSBmdW5jdGlvbiBpc0ludGVycHJldGVkKGZ1bikgeworICAgIHZhciBvcHRfc3RhdHVz
ID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwgIiIpOworICAgIGFzc2VydFRydWUoKG9wdF9zdGF0
dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICAg
ICAgICAibm90IGEgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGlt
aXphdGlvblN0YXR1cy5rT3B0aW1pemVkKSA9PT0gMCAmJgorICAgICAgICAgICAob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJbnRlcnByZXRlZCkgIT09IDA7CisgIH0KKworICBp
c09wdGltaXplZCA9IGZ1bmN0aW9uIGlzT3B0aW1pemVkKGZ1bikgeworICAgIHZhciBvcHRfc3Rh
dHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwgIiIpOworICAgIGFzc2VydFRydWUoKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAg
ICAgICAgICAibm90IGEgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9w
dGltaXphdGlvblN0YXR1cy5rT3B0aW1pemVkKSAhPT0gMDsKKyAgfQorCisgIGlzVHVyYm9GYW5u
ZWQgPSBmdW5jdGlvbiBpc1R1cmJvRmFubmVkKGZ1bikgeworICAgIHZhciBvcHRfc3RhdHVzID0g
T3B0aW1pemF0aW9uU3RhdHVzKGZ1biwgIiIpOworICAgIGFzc2VydFRydWUoKG9wdF9zdGF0dXMg
JiBWOE9wdGltaXphdGlvblN0YXR1cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICAgICAg
ICAibm90IGEgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rT3B0aW1pemVkKSAhPT0gMCAmJgorICAgICAgICAgICAob3B0X3N0YXR1cyAm
IFY4T3B0aW1pemF0aW9uU3RhdHVzLmtUdXJib0Zhbm5lZCkgIT09IDA7CisgIH0KKworICAvLyBD
dXN0b20gVjgtc3BlY2lmaWMgc3RhY2sgdHJhY2UgZm9ybWF0dGVyIHRoYXQgaXMgdGVtcG9yYXJp
bHkgaW5zdGFsbGVkIG9uCisgIC8vIHRoZSBFcnJvciBvYmplY3QuCisgIE1qc1VuaXRBc3NlcnRp
b25FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IGZ1bmN0aW9uKGVycm9yLCBzdGFjaykgeworICAg
IC8vIFRyaWdnZXIgZGVmYXVsdCBmb3JtYXR0aW5nIHdpdGggcmVjdXJzaW9uLgorICAgIHRyeSB7
CisgICAgICAvLyBGaWx0ZXItb3V0IGFsbCBidXQgdGhlIGZpcnN0IG1qc3VuaXQgZnJhbWUuCisg
ICAgICBsZXQgZmlsdGVyZWRTdGFjayA9IFtdOworICAgICAgbGV0IGluTWpzdW5pdCA9IHRydWU7
CisgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
IGxldCBmcmFtZSA9IHN0YWNrW2ldOworICAgICAgICBpZiAoaW5NanN1bml0KSB7CisgICAgICAg
ICAgbGV0IGZpbGUgPSBmcmFtZS5nZXRGaWxlTmFtZSgpOworICAgICAgICAgIGlmICghZmlsZSB8
fCAhZmlsZS5lbmRzV2l0aCgibWpzdW5pdC5qcyIpKSB7CisgICAgICAgICAgICBpbk1qc3VuaXQg
PSBmYWxzZTsKKyAgICAgICAgICAgIC8vIFB1c2ggdGhlIGxhc3QgbWpzdW5pdCBmcmFtZSwgdHlw
aWNhbGx5IGNvbnRhaW5pbmcgdGhlIGFzc2VydGlvbgorICAgICAgICAgICAgLy8gZnVuY3Rpb24u
CisgICAgICAgICAgICBpZiAoaSA+IDApIEFycmF5UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVk
U3RhY2ssIHN0YWNrW2ktMV0pOworICAgICAgICAgICAgQXJyYXlQcm90b3R5cGVQdXNoLmNhbGwo
ZmlsdGVyZWRTdGFjaywgc3RhY2tbaV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBBcnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0
YWNrLCBmcmFtZSk7CisgICAgICB9CisgICAgICBzdGFjayA9IGZpbHRlcmVkU3RhY2s7CisKKyAg
ICAgIC8vIEluZmVyIGZ1bmN0aW9uIG5hbWVzIGFuZCBjYWxjdWxhdGUge21heF9uYW1lX2xlbmd0
aH0KKyAgICAgIGxldCBtYXhfbmFtZV9sZW5ndGggPSAwOworICAgICAgQXJyYXlQcm90b3R5cGVG
b3JFYWNoLmNhbGwoc3RhY2ssIGVhY2ggPT4geworICAgICAgICBsZXQgbmFtZSA9IGVhY2guZ2V0
RnVuY3Rpb25OYW1lKCk7CisgICAgICAgIGlmIChuYW1lID09IG51bGwpIG5hbWUgPSAiIjsKKyAg
ICAgICAgaWYgKGVhY2guaXNFdmFsKCkpIHsKKyAgICAgICAgICBuYW1lID0gbmFtZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChlYWNoLmlzQ29uc3RydWN0b3IoKSkgeworICAgICAgICAgIG5hbWUgPSAi
bmV3ICIgKyBuYW1lOworICAgICAgICB9IGVsc2UgaWYgKGVhY2guaXNOYXRpdmUoKSkgeworICAg
ICAgICAgIG5hbWUgPSAibmF0aXZlICIgKyBuYW1lOworICAgICAgICB9IGVsc2UgaWYgKCFlYWNo
LmlzVG9wbGV2ZWwoKSkgeworICAgICAgICAgIG5hbWUgPSBlYWNoLmdldFR5cGVOYW1lKCkgKyAi
LiIgKyBuYW1lOworICAgICAgICB9CisgICAgICAgIGVhY2gubmFtZSA9IG5hbWU7CisgICAgICAg
IG1heF9uYW1lX2xlbmd0aCA9IE1hdGgubWF4KG5hbWUubGVuZ3RoLCBtYXhfbmFtZV9sZW5ndGgp
CisgICAgICB9KTsKKworICAgICAgLy8gRm9ybWF0IHN0YWNrIGZyYW1lcy4KKyAgICAgIHN0YWNr
ID0gQXJyYXlQcm90b3R5cGVNYXAuY2FsbChzdGFjaywgZWFjaCA9PiB7CisgICAgICAgIGxldCBm
cmFtZSA9ICIgICAgYXQgIiArIGVhY2gubmFtZS5wYWRFbmQobWF4X25hbWVfbGVuZ3RoKTsKKyAg
ICAgICAgbGV0IGZpbGVOYW1lID0gZWFjaC5nZXRGaWxlTmFtZSgpOworICAgICAgICBpZiAoZWFj
aC5pc0V2YWwoKSkgcmV0dXJuIGZyYW1lICsgIiAiICsgZWFjaC5nZXRFdmFsT3JpZ2luKCk7Cisg
ICAgICAgIGZyYW1lICs9ICIgIiArIChmaWxlTmFtZSA/IGZpbGVOYW1lIDogIiIpOworICAgICAg
ICBsZXQgbGluZT0gZWFjaC5nZXRMaW5lTnVtYmVyKCk7CisgICAgICAgIGZyYW1lICs9ICIgIiAr
IChsaW5lID8gbGluZSA6ICIiKTsKKyAgICAgICAgbGV0IGNvbHVtbiA9IGVhY2guZ2V0Q29sdW1u
TnVtYmVyKCk7CisgICAgICAgIGZyYW1lICs9IChjb2x1bW4gPyAiOiIgKyBjb2x1bW4gOiAiIik7
CisgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgIH0pOworICAgICAgcmV0dXJuICIiICsgZXJy
b3IubWVzc2FnZSArICJcbiIgKyBBcnJheVByb3RvdHlwZUpvaW4uY2FsbChzdGFjaywgIlxuIik7
CisgICAgfSBjYXRjaCAoZSkge307CisgICAgcmV0dXJuIGVycm9yLnN0YWNrOworICB9Cit9KSgp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1y
ZWFsbS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTg3NTAwMTg1NzU5YzcyZTZhY2IzMmRiMjY2YzY3NWVhMzQ1ZTU0MQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJl
bnQtcmVhbG0uanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdl
YWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2Mg
LS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5q
cyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKK2xldCBSZWFsbSA9IHsgY3JlYXRlOiAkLmNyZWF0ZVJl
YWxtLCBldmFsOiAociwgcykgPT4gJC5ldmFsU2NyaXB0LmNhbGwociwgcykgIH07CisKK2xldCBy
ID0gUmVhbG0uY3JlYXRlKCk7CisKK2xldCBjbGVhbnVwID0gUmVhbG0uZXZhbChyLCAidmFyIHN0
b3JlZF9nbG9iYWw7IGZ1bmN0aW9uIGNsZWFudXAoKSB7IHN0b3JlZF9nbG9iYWwgPSBnbG9iYWxU
aGlzOyB9IGNsZWFudXA7Iik7CitsZXQgcmVhbG1fZ2xvYmFsX3RoaXMgPSBSZWFsbS5ldmFsKHIs
ICJnbG9iYWxUaGlzIik7CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVh
bnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgYSByZWdpc3RlciBpdCBpbiB0aGUgRmlu
YWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNs
b3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVj
dCA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QpOworICAgIH0KK30pKCk7CisKK2dj
KCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW4g
aXRzIFJlYWxtLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBsZXQgc3RvcmVk
X2dsb2JhbCA9IFJlYWxtLmV2YWwociwgInN0b3JlZF9nbG9iYWw7Iik7CisgIGFzc2VydE5vdEVx
dWFscyhzdG9yZWRfZ2xvYmFsLCBnbG9iYWxUaGlzKTsKKyAgYXNzZXJ0RXF1YWxzKHN0b3JlZF9n
bG9iYWwsIHJlYWxtX2dsb2JhbF90aGlzKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMs
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRp
ZmZlcmVudC1yZWFsbS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFudXAtcHJveHktZnJvbS1k
aWZmZXJlbnQtcmVhbG0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ0ZDAyNDdlMjcxMGRhNDg1YzkyNTcyYWJh
OWMyNzZjZGVmMzVhZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFu
dXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUg
VjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13
ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9y
ZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKK2xldCBSZWFsbSA9
IHsgY3JlYXRlOiAkLmNyZWF0ZVJlYWxtLCBldmFsOiAociwgcykgPT4gJC5ldmFsU2NyaXB0LmNh
bGwociwgcykgIH07CisKK2xldCByID0gUmVhbG0uY3JlYXRlKCk7CisKK2xldCBjbGVhbnVwID0g
UmVhbG0uZXZhbChyLCAidmFyIHN0b3JlZF9nbG9iYWw7IGxldCBjbGVhbnVwID0gbmV3IFByb3h5
KGZ1bmN0aW9uKCkgeyBzdG9yZWRfZ2xvYmFsID0gZ2xvYmFsVGhpczt9LCB7fSk7IGNsZWFudXAi
KTsKK2xldCByZWFsbV9nbG9iYWxfdGhpcyA9IFJlYWxtLmV2YWwociwgImdsb2JhbFRoaXMiKTsK
KworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVh
dGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnku
IFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBj
YW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBm
Zy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5ncyIpOworICAgIH0KK30pKCk7CisKK2djKCk7CisK
Ky8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW4gaXRzIFJl
YWxtLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBsZXQgc3RvcmVkX2dsb2Jh
bCA9IFJlYWxtLmV2YWwociwgInN0b3JlZF9nbG9iYWw7Iik7CisgIGFzc2VydE5vdEVxdWFscyhz
dG9yZWRfZ2xvYmFsLCBnbG9iYWxUaGlzKTsKKyAgYXNzZXJ0RXF1YWxzKHN0b3JlZF9nbG9iYWws
IHJlYWxtX2dsb2JhbF90aGlzKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2lj
cy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1iYXNpY3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDU2MTZhNTAyMWFjYTc1NTFjODExOWViNjFlZmU5NDdiNTEyYzNjMQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1i
YXNpY3MuanMKQEAgLTAsMCArMSwxNTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFr
UmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzCisKK2xvYWQoIi4vcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKKyhmdW5jdGlvbiBU
ZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGFzc2VydEVxdWFscyhmZy50b1N0cmluZygp
LCAiW29iamVjdCBGaW5hbGl6YXRpb25SZWdpc3RyeV0iKTsKKyAgYXNzZXJ0Tm90U2FtZShmZy5f
X3Byb3RvX18sIE9iamVjdC5wcm90b3R5cGUpOworICBhc3NlcnRTYW1lKGZnLl9fcHJvdG9fXy5f
X3Byb3RvX18sIE9iamVjdC5wcm90b3R5cGUpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24oKSB7CisgIGxldCBjYXVn
aHQgPSBmYWxzZTsKKyAgbGV0IG1lc3NhZ2UgPSAiIjsKKyAgdHJ5IHsKKyAgICBsZXQgZiA9IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIG1lc3Nh
Z2UgPSBlLm1lc3NhZ2U7CisgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgfSBmaW5hbGx5IHsKKyAgICBh
c3NlcnRUcnVlKGNhdWdodCk7CisgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0
RmluYWxpemF0aW9uUmVnaXN0cnlDbGVhbnVwTm90Q2FsbGFibGUoKSB7CisgIGxldCBtZXNzYWdl
ID0gIkZpbmFsaXphdGlvblJlZ2lzdHJ5OiBjbGVhbnVwIG11c3QgYmUgY2FsbGFibGUiOworICBh
c3NlcnRUaHJvd3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKTsg
fSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0g
bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KDEpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBh
c3NlcnRUaHJvd3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkobnVs
bCk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdENvbnN0
cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5V2l0aENhbGxhYmxlUHJveHlBc0NsZWFudXAoKSB7Cisg
IGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSAoKSA9PiB7fTsKKyAgbGV0IHByb3h5ID0g
bmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShwcm94eSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlv
blJlZ2lzdHJ5V2l0aE5vbkNhbGxhYmxlUHJveHlBc0NsZWFudXAoKSB7CisgIGxldCBtZXNzYWdl
ID0gIkZpbmFsaXphdGlvblJlZ2lzdHJ5OiBjbGVhbnVwIG11c3QgYmUgY2FsbGFibGUiOworICBs
ZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5ldyBQcm94
eShvYmosIGhhbmRsZXIpOworICBhc3NlcnRUaHJvd3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkocHJveHkpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsK
KworKGZ1bmN0aW9uIFRlc3RSZWdpc3RlcldpdGhOb25PYmplY3RUYXJnZXQoKSB7CisgIGxldCBm
ZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBtZXNzYWdlID0g
IkZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3RlcjogdGFyZ2V0IG11c3QgYmUg
YW4gb2JqZWN0IjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKDEsICJob2xkaW5n
cyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0
ZXIoZmFsc2UsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJv
d3MoKCkgPT4gZmcucmVnaXN0ZXIoImZvbyIsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3Nh
Z2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIoU3ltYm9sKCksICJob2xkaW5n
cyIpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0
ZXIobnVsbCwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93
cygoKSA9PiBmZy5yZWdpc3Rlcih1bmRlZmluZWQsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1l
c3NhZ2UpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RSZWdpc3RlcldpdGhQcm94eSgpIHsKKyAg
bGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJv
eHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgp
ID0+IHt9KTsKKyAgZmcucmVnaXN0ZXIocHJveHkpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RS
ZWdpc3RlclRhcmdldEFuZEhvbGRpbmdzU2FtZVZhbHVlKCkgeworICBsZXQgZmcgPSBuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBsZXQgb2JqID0ge2E6IDF9OworICAvLyBT
YW1lVmFsdWUodGFyZ2V0LCBob2xkaW5ncykgbm90IG9rCisgIGFzc2VydFRocm93cygoKSA9PiBm
Zy5yZWdpc3RlcihvYmosIG9iaiksIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICJGaW5hbGl6
YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXI6IHRhcmdldCBhbmQgaG9sZGluZ3MgbXVz
dCBub3QgYmUgc2FtZSIpOworICBsZXQgaG9sZGluZ3MgPSB7YTogMX07CisgIGZnLnJlZ2lzdGVy
KG9iaiwgaG9sZGluZ3MpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RSZWdpc3RlcldpdGhvdXRG
aW5hbGl6YXRpb25SZWdpc3RyeSgpIHsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEZpbmFsaXphdGlv
blJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKHt9LCB7fSwgImhvbGRpbmdzIiksIFR5
cGVFcnJvcik7CisgIC8vIERvZXMgbm90IHRocm93OgorICBsZXQgZmcgPSBuZXcgRmluYWxpemF0
aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUu
cmVnaXN0ZXIuY2FsbChmZywge30sICJob2xkaW5ncyIpOworfSkoKTsKKworKGZ1bmN0aW9uIFRl
c3RVbnJlZ2lzdGVyV2l0aE5vbkV4aXN0ZW50S2V5KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIo
eyJrIjogIndoYXRldmVyIn0pOworICBhc3NlcnRGYWxzZShzdWNjZXNzKTsKK30pKCk7CisKKyhm
dW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25GaW5hbGl6YXRpb25SZWdpc3RyeSgpIHsKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IEZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS51bnJlZ2lz
dGVyLmNhbGwoe30sIHt9KSwKKyAgICAgICAgICAgICAgIFR5cGVFcnJvcik7Cit9KSgpOworCiso
ZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uT2JqZWN0VW5yZWdpc3RlclRva2VuKCkgewor
ICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBhc3NlcnRU
aHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcigxKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dz
KCgpID0+IGZnLnVucmVnaXN0ZXIoQmlnSW50KDEpKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoJ29uZScpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJv
d3MoKCkgPT4gZmcudW5yZWdpc3RlcihTeW1ib2woKSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKHRydWUpLCBUeXBlRXJyb3IpOworICBhc3NlcnRUaHJv
d3MoKCkgPT4gZmcudW5yZWdpc3RlcihmYWxzZSksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93
cygoKSA9PiBmZy51bnJlZ2lzdGVyKHVuZGVmaW5lZCksIFR5cGVFcnJvcik7CisgIGFzc2VydFRo
cm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKG51bGwpLCBUeXBlRXJyb3IpOworfSkoKTsKKworKGZ1
bmN0aW9uIFRlc3RXZWFrUmVmQ29uc3RydWN0b3IoKSB7CisgIGxldCB3ciA9IG5ldyBXZWFrUmVm
KHt9KTsKKyAgYXNzZXJ0RXF1YWxzKHdyLnRvU3RyaW5nKCksICJbb2JqZWN0IFdlYWtSZWZdIik7
CisgIGFzc2VydE5vdFNhbWUod3IuX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKKworICBs
ZXQgZGVyZWZfZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3IuX19wcm90
b19fLCAiZGVyZWYiKTsKKyAgYXNzZXJ0RXF1YWxzKHRydWUsIGRlcmVmX2Rlc2MuY29uZmlndXJh
YmxlKTsKKyAgYXNzZXJ0RXF1YWxzKGZhbHNlLCBkZXJlZl9kZXNjLmVudW1lcmFibGUpOworICBh
c3NlcnRFcXVhbHMoImZ1bmN0aW9uIiwgdHlwZW9mIGRlcmVmX2Rlc2MudmFsdWUpOworfSkoKTsK
KworKGZ1bmN0aW9uIFRlc3RXZWFrUmVmQ29uc3RydWN0b3JXaXRoTm9uT2JqZWN0KCkgeworICBs
ZXQgbWVzc2FnZSA9ICJXZWFrUmVmOiB0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiOworICBhc3Nl
cnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNz
ZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKDEpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBh
c3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoZmFsc2UpLCBUeXBlRXJyb3IsIG1lc3NhZ2Up
OworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoImZvbyIpLCBUeXBlRXJyb3IsIG1l
c3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoU3ltYm9sKCkpLCBUeXBl
RXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYobnVsbCks
IFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZih1
bmRlZmluZWQpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RX
ZWFrUmVmQ29uc3RydWN0b3JDYWxsQXNGdW5jdGlvbigpIHsKKyAgbGV0IGNhdWdodCA9IGZhbHNl
OworICBsZXQgbWVzc2FnZSA9ICIiOworICB0cnkgeworICAgIGxldCBmID0gV2Vha1JlZih7fSk7
CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBtZXNzYWdlID0gZS5tZXNzYWdlOworICAgIGNhdWdodCA9
IHRydWU7CisgIH0gZmluYWxseSB7CisgICAgYXNzZXJ0VHJ1ZShjYXVnaHQpOworICB9Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZXaXRoUHJveHkoKSB7CisgIGxldCBoYW5kbGVyID0g
e307CisgIGxldCBvYmogPSB7fTsKKyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxl
cik7CisgIGxldCB3ciA9IG5ldyBXZWFrUmVmKHByb3h5KTsKK30pKCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1hbmQtd2Vha3JlZi5qcyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc4ZGE4YTBjOWZlZmM5ZDFkZTI2OTViMjNkNTIwMTQyOGZiMjZiMjMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1hbmQtd2Vh
a3JlZi5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1Jl
ZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5v
aW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwg
ImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsZWQgPSBmYWxzZTsKK2xldCBj
bGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgbGV0IGhvbGRpbmdzX2xpc3QgPSBbXTsK
KyAgaG9sZGluZ3NfbGlzdC5wdXNoKGhvbGRpbmdzKTsKKyAgYXNzZXJ0RXF1YWxzKDEsIGhvbGRp
bmdzX2xpc3QubGVuZ3RoKTsKKyAgYXNzZXJ0RXF1YWxzKCJob2xkaW5ncyIsIGhvbGRpbmdzX2xp
c3RbMF0pOworICBjbGVhbnVwX2NhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCB3ZWFrX3JlZnMgPSBbXTsKKyhmdW5jdGlv
bigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQg
byA9IHt9OworICAgICAgICB3ZWFrX3JlZnMucHVzaChuZXcgV2Vha1JlZihvKSk7CisgICAgICAg
IGZnLnJlZ2lzdGVyKG8sICJob2xkaW5ncyIpOworICAgIH0KK30pKCk7CisKKy8vIFNpbmNlIHRo
ZSBXZWFrUmVmIHdhcyBjcmVhdGVkIGR1cmluZyB0aGlzIHR1cm4sIGl0IGlzIG5vdCBjbGVhcmVk
IGJ5IEdDLiBUaGUKKy8vIHBvaW50ZXIgaW5zaWRlIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeSBp
cyBub3QgY2xlYXJlZCBlaXRoZXIsIHNpbmNlIHRoZSBXZWFrUmVmCisvLyBrZWVwcyB0aGUgdGFy
Z2V0IG9iamVjdCBhbGl2ZS4KK2djKCk7CisoZnVuY3Rpb24oKSB7CisgICAgd2Vha19yZWZzLmZv
ckVhY2goKHdlYWtfcmVmKSA9PiBhc3NlcnRFcXVhbHMoIm9iamVjdCIsIHR5cGVvZih3ZWFrX3Jl
Zi5kZXJlZigpKSkpOworfSkoKTsKKworLy8gVHJpZ2dlciBnYyBpbiBuZXh0IHRhc2sKK3NldFRp
bWVvdXQoKCkgPT4geworICAgIGdjKCk7CisKKyAgICAvLyBDaGVjayB0aGF0IGNsZWFudXAgY2Fs
bGJhY2sgd2FzIGNhbGxlZCBpbiBhIGZvbGxvdyB1cCB0YXNrCisgICAgc2V0VGltZW91dCgoKSA9
PiB7CisgICAgICAgIGFzc2VydFRydWUoY2xlYW51cF9jYWxsZWQpOworICAgICAgICBhc3NlcnRU
cnVlKHdlYWtfcmVmcy5zb21lKCh3ZWFrX3JlZikgPT4gd2Vha19yZWYuZGVyZWYoKSA9PT0gbnVs
bCkpOworICAgIH0sIDApOworfSwgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1m
aW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcwMmM0YmI4ZWU4NGUwMTBiNzRkNmRlYjM1YTBjZmFjZjE2ZDQ5M2YKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1o
b2xkaW5ncy1hbGl2ZS5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9z
ZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1
bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsZWQgPSBmYWxz
ZTsKK2xldCBob2xkaW5nc19saXN0ID0gW107CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRp
bmdzKSB7CisgIGFzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKyAgaG9sZGluZ3NfbGlzdC5w
dXNoKGhvbGRpbmdzKTsKKyAgY2xlYW51cF9jYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQgbzEgPSB7fTsKK2xldCBob2xk
aW5ncyA9IHsnYSc6ICd0aGlzIGlzIHRoZSBob2xkaW5ncyBvYmplY3QnfTsKKworLy8gSWduaXRp
b24gaG9sZHMgcmVmZXJlbmNlcyB0byBvYmplY3RzIGluIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRo
ZXNlIHdpbGwgYmUKKy8vIHJlbGVhc2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGV4aXRzLiBTbyBvbmx5
IGFjY2VzcyBvIGluc2lkZSBhIGZ1bmN0aW9uIHRvCisvLyBwcmV2ZW50IGFueSByZWZlcmVuY2Vz
IHRvIG9iamVjdHMgaW4gdGVtcG9yYXJ5IHJlZ2lzdGVycyB3aGVuIGEgZ2MgaXMKKy8vIHRyaWdn
ZXJlZC4KKygoKSA9PiB7ZmcucmVnaXN0ZXIobzEsIGhvbGRpbmdzKTt9KSgpCisKK2djKCk7Cith
c3NlcnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7CisKKy8vIERyb3AgdGhlIGxhc3QgcmVmZXJlbmNl
cyB0byBvMS4KKygoKSA9PiB7bzEgPSBudWxsO30pKCkKKworLy8gRHJvcCB0aGUgbGFzdCByZWZl
cmVuY2UgdG8gdGhlIGhvbGRpbmdzLiBUaGUgRmluYWxpemF0aW9uUmVnaXN0cnkga2VlcHMgaXQK
Ky8vIGFsaXZlLCBzbyB0aGUgY2xlYW51cCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhcyBub3Jt
YWwuCitob2xkaW5ncyA9IG51bGw7CitnYygpOworYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQp
OworCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydFRydWUoY2xlYW51
cF9jYWxsZWQpOworICBhc3NlcnRFcXVhbHMoaG9sZGluZ3NfbGlzdC5sZW5ndGgsIDEpOworICBh
c3NlcnRFcXVhbHMoaG9sZGluZ3NfbGlzdFswXS5hLCAidGhpcyBpcyB0aGUgaG9sZGluZ3Mgb2Jq
ZWN0Iik7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51
cC1tdWx0aXBsZS10aW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZDhjOTYzOTc1ZDJlY2ZiODc3NjU5MmNkYjU1ZmU4NTM3Mjc5YzIzCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1j
bGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzCkBAIC0wLDAgKzEsODUgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2pl
Y3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZz
IC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisvLyBGbGFnczogLS1uby1zdHJl
c3MtZmx1c2gtYnl0ZWNvZGUKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJj
YWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXAwX2NhbGxfY291bnQgPSAwOworbGV0IGNs
ZWFudXAwXzBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAwXzFfaG9sZGluZ3NfY291
bnQgPSAwOworCitsZXQgY2xlYW51cDFfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cDFfMF9o
b2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cDFfMV9ob2xkaW5nc19jb3VudCA9IDA7CisK
K2xldCBjbGVhbnVwMCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGlmIChob2xkaW5nc1tob2xk
aW5ncy5sZW5ndGggLSAxXSA9PSAiMCIpCisgICAgKytjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50
OworICBlbHNlCisgICAgKytjbGVhbnVwMF8xX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXAw
X2NhbGxfY291bnQ7Cit9CisKK2xldCBjbGVhbnVwMSA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7Cisg
IGlmIChob2xkaW5nc1tob2xkaW5ncy5sZW5ndGggLSAxXSA9PSAiMCIpCisgICAgKytjbGVhbnVw
MV8wX2hvbGRpbmdzX2NvdW50OworICBlbHNlCisgICAgKytjbGVhbnVwMV8xX2hvbGRpbmdzX2Nv
dW50OworICArK2NsZWFudXAxX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZzAgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoY2xlYW51cDApOworbGV0IGZnMSA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShjbGVhbnVwMSk7CisKKy8vIFJlZ2lzdGVyIDEgd2VhayByZWZlcmVuY2UgZm9yIGVhY2gg
RmluYWxpemF0aW9uUmVnaXN0cnkgYW5kIGtpbGwgdGhlIG9iamVjdHMgdGhleSBwb2ludCB0by4K
KyhmdW5jdGlvbigpIHsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAv
LyBUaGUgb2JqZWN0cyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4g
cmVsaWFibHkga2lsbCB0aGVtLgorICAgIGxldCBvYmplY3RzID0gW107CisgICAgb2JqZWN0c1sw
XSA9IHt9OworICAgIG9iamVjdHNbMV0gPSB7fTsKKworICAgIGZnMC5yZWdpc3RlcihvYmplY3Rz
WzBdLCAiaG9sZGluZ3MwLTAiKTsKKyAgICBmZzEucmVnaXN0ZXIob2JqZWN0c1sxXSwgImhvbGRp
bmdzMS0wIik7CisKKyAgICAvLyBEcm9wIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3RzLgor
ICAgIG9iamVjdHMgPSBbXTsKKyAgfQorfSkoKTsKKworLy8gV2lsbCBzY2hlZHVsZSBib3RoIGZn
MCBhbmQgZmcxIGZvciBjbGVhbnVwLgorZ2MoKTsKKworLy8gQmVmb3JlIHRoZSBjbGVhbnVwIHRh
c2sgaGFzIGEgY2hhbmNlIHRvIHJ1biwgZG8gdGhlIHNhbWUgdGhpbmcgYWdhaW4sIHNvIGJvdGgK
Ky8vIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgYXJlIChhZ2Fpbikgc2NoZWR1bGVkIGZvciBjbGVh
bnVwLiBUaGlzIGhhcyB0byBiZSBhIElJRkUgZnVuY3Rpb24KKy8vIChzbyB0aGF0IHdlIGNhbiBy
ZWxpYWJseSBraWxsIHRoZSBvYmplY3RzKSBzbyB3ZSBjYW5ub3QgdXNlIHRoZSBzYW1lIGZ1bmN0
aW9uCisvLyBhcyBiZWZvcmUuCisoZnVuY3Rpb24oKSB7CisgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7CisgICAgbGV0IG9iamVjdHMgPSBbXTsKKyAgICBvYmplY3RzWzBdID0ge307
CisgICAgb2JqZWN0c1sxXSA9IHt9OworICAgIGZnMC5yZWdpc3RlcihvYmplY3RzWzBdLCAiaG9s
ZGluZ3MwLTEiKTsKKyAgICBmZzEucmVnaXN0ZXIob2JqZWN0c1sxXSwgImhvbGRpbmdzMS0xIik7
CisgICAgb2JqZWN0cyA9IFtdOworICB9Cit9KSgpOworCitnYygpOworCitsZXQgdGltZW91dF9m
dW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF9jYWxsX2Nv
dW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwXzBfaG9sZGluZ3NfY291bnQpOwor
ICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDBfMV9ob2xkaW5nc19jb3VudCk7CisgIGFzc2Vy
dE5vdEVxdWFscygwLCBjbGVhbnVwMV9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAs
IGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51
cDFfMF9ob2xkaW5nc19jb3VudCk7Cit9CisKKy8vIEdpdmUgdGhlIGNsZWFudXAgdGFzayBhIGNo
YW5jZSB0byBydW4uCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1maW5hbGl6YXRpb24tcmVnaXN0cmllcy5q
cyBiL0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3Ry
aWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmExMDczYTAzMWRiMDZjY2QzMDI2ZDhmMjRmMTI3ZmFkZGI4OThh
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1m
aW5hbGl6YXRpb24tcmVnaXN0cmllcy5qcwpAQCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9q
ZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVm
cyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNl
cy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxs
X2NvdW50MSA9IDA7CitsZXQgY2xlYW51cF9jYWxsX2NvdW50MiA9IDA7CitsZXQgY2xlYW51cCA9
IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICAgaWYgKGhvbGRpbmdzID09PSAiaG9sZGluZ3MxIikK
KyAgICAgICAgKytjbGVhbnVwX2NhbGxfY291bnQxOworICAgIGVsc2UgaWYgKGhvbGRpbmdzID09
PSAiaG9sZGluZ3MyIikKKyAgICAgICAgKytjbGVhbnVwX2NhbGxfY291bnQyOworICAgIGVsc2UK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CisKK2xldCBmZzEgPSBuZXcgRmluYWxpemF0
aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQgZmcyID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KGNsZWFudXApOworCisvLyBDcmVhdGUgdHdvIG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4g
RmluYWxpemF0aW9uUmVnaXN0cmllcy4gVGhlIG9iamVjdHMgbmVlZAorLy8gdG8gYmUgaW5zaWRl
IGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlv
bigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQg
b2JqZWN0MSA9IHt9OworICAgICAgICBmZzEucmVnaXN0ZXIob2JqZWN0MSwgImhvbGRpbmdzMSIp
OworCisgICAgICAgIGxldCBvYmplY3QyID0ge307CisgICAgICAgIGZnMi5yZWdpc3RlcihvYmpl
Y3QyLCAiaG9sZGluZ3MyIik7CisgICAgfQorICAgIC8vIG9iamVjdDEgYW5kIG9iamVjdDIgZ28g
b3V0IG9mIHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIGRpc2NvdmVyIGRpcnR5IFdl
YWtDZWxscyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50MSk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50Mik7
CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQg
dGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFu
dXBfY2FsbF9jb3VudDEpOworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291
bnQyKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE5N2RhYTRk
MWQyNjUyNDgyMjAyZDExYjViMmNiYzQ1Y2IyNzIxMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFudXAuanMKQEAgLTAsMCArMSwyOCBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQg
MjAyMCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0t
aGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKwor
bG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKwor
bGV0IGNhbGxlZCA9IGZhbHNlOworbGV0IHJlZW50cmFudF9nYyA9IGZ1bmN0aW9uKGhvbGRpbmdz
KSB7CisgICAgZ2MoKTsKKyAgICBjYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkocmVlbnRyYW50X2djKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAgZmcucmVnaXN0ZXIoe30sIDQyKTsK
K30pKCk7CisKK2djKCk7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0VHJ1
ZShjYWxsZWQpOworfSwgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3Mt
ZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHktZW5xdWV1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4
LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlMjRlMmNkM2VjNzZkNWM4OTUxY2QyZmEwYTUxYTg1ZmQwODA5ODEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3MtZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHkt
ZW5xdWV1ZS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vh
a1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDIwIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1zdHJlc3MtY29tcGFjdGlvbiAtLWV4cG9zZS1nYwor
CisvLyBUZXN0IHRoYXQgdGhlIGRpcnR5IEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgdGhhdCBhcmUg
ZW5xdWV1ZWQgZHVyaW5nIEdDIGhhdmUKKy8vIHRoZWlyIHNsb3RzIGNvcnJlY3RseSByZWNvcmRl
ZCBieSB0aGUgR0MuCisKKy8vIDEpIENyZWF0ZSBtYW55IEpTRmluYWxpemF0aW9uUmVnaXN0cnkg
b2JqZWN0cyBzbyB0aGF0IHRoZXkgc3BhbiBzZXZlcmFsIHBhZ2VzCisvLyAocGFnZSBzaXplIGlz
IDI1NmtiKS4KK2xldCByZWdpc3RyaWVzID0gW107Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMjQg
KiA4OyBpKyspIHsKKyAgcmVnaXN0cmllcy5wdXNoKG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgo
KSA9PiB7fSkpOworfQorCisvLyAyKSBGb3JjZSB0d28gR0NzIHRvIGVuc3VyZSB0aGF0IEpTRmlu
YWxpemF0b25SZWdpc3RyeSBvYmplY3RzIGFyZSB0ZW51cmVkLgorZ2MoKTsKK2djKCk7CisKKy8v
IDMpIEluIGEgZnVuY3Rpb246IGNyZWF0ZSBhIGR1bW15IHRhcmdldCBhbmQgcmVnaXN0ZXIgaXQg
aW4gYWxsCisvLyBKU0ZpbmFsaXphdG9uUmVnaXN0cnkgb2JqZWN0cy4KKyhmdW5jdGlvbigpIHsK
KyAgbGV0IGdhcmJhZ2UgPSB7fTsKKyAgcmVnaXN0cmllcy5mb3JFYWNoKChmcikgPT4geworICAg
IGZyLnJlZ2lzdGVyKGdhcmJhZ2UsIDQyKTsKKyAgfSk7CisgIGdhcmJhZ2UgPSBudWxsOworfSko
KTsKKworLy8gNCkgT3V0c2lkZSB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIHRhcmdldCBpcyB1bnJl
YWNoYWJsZTogZm9yY2UgR0MgdG8gY29sbGVjdAorLy8gdGhlIG9iamVjdC4KK2djKCk7CisKKy8v
IDUpIEZvcmNlIGFub3RoZXIgR0MgdG8gdGVzdCB0aGF0IHRoZSBzbG90IHdhcyBjb3JyZWN0bHkg
dXBkYXRlZC4KK2djKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmluZWQt
aG9sZGluZ3MuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjJjNjBjZmRhNzdmMGFmY2ExYjVjYjlmZGRhZmVhYzBkOTA3NTBiYgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcwpAQCAt
MCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVu
Y3Rpb24oaG9sZGluZ3MpIHsKKyAgICBhc3NlcnRFcXVhbHMoaG9sZGluZ3MsIHVuZGVmaW5lZCk7
CisgICAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRp
b25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIg
aXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzIHRvIGJlIGlu
c2lkZQorLy8gYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKwor
KGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAg
ICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0KTsKKyAgICB9
Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdCBhbmQg
c2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2Nv
dW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNhbGxlZC4K
K2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnROb3RFcXVhbHMoMCwg
Y2xlYW51cF9jYWxsX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpz
IGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRkNzJiMGY4YjNiYjhlYmE2OTBhMTYwZDE2MzhkMzllNDNmNDcyZDEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFmdGVyLWNsZWFudXAuanMKQEAg
LTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisv
LyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
Ly8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFs
LW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVs
YXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1
bmN0aW9uKGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MiLCBob2xkaW5ncyk7
CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9u
UmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9Owor
Ly8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRo
YXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAg
ICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiLCBrZXkpOworICAgIH0KK30pKCk7
CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0IGFuZCBzY2hlZHVs
ZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOwor
CisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRp
bWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVw
X2NhbGxfY291bnQpOworICAgIGxldCBvbGRfY2xlYW51cF9jYWxsX2NvdW50ID0gY2xlYW51cF9j
YWxsX2NvdW50OworCisgICAgLy8gVW5yZWdpc3RlciBhbiBhbHJlYWR5IGNsZWFuZWQtdXAgd2Vh
ayByZWZlcmVuY2UuCisgICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7CisgICAg
Ly8gU2luY2Ugd2UgbWF5IG5vdCBjb2xsZWN0IGV2ZXJ5dGhpbmcgd2UgZG9uJ3Qga25vdyB3aGF0
IHN1Y2Nlc3Mgd2lsbCBiZSB1bmxpa2UgdjguCisgICAgLy8gYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7
CisKKyAgICAvLyBBc3NlcnQgdGhhdCBpdCBkaWRuJ3QgZG8gYW55dGhpbmcuCisgICAgc2V0VGlt
ZW91dCgoKSA9PiB7IGFzc2VydEVxdWFscyhvbGRfY2xlYW51cF9jYWxsX2NvdW50LCBjbGVhbnVw
X2NhbGxfY291bnQpOyB9LCAwKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5q
cyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFudXAuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGNkMWUzZWM2YTNhZWJmYzc4NzZjN2RkYWY3ZDdkYjhjMTUzZmVhZAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYmVmb3JlLWNsZWFudXAuanMK
QEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQor
CisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVu
dGFsLW1hcmtpbmcgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMv
djgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9j
b3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICsrY2xlYW51
cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xl
YW51cCk7CitsZXQga2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworLy8gQ3JlYXRlIGFu
IG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUg
b2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJl
bGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICBsZXQgb2JqZWN0ID0ge307Cisg
IGZnLnJlZ2lzdGVyKG9iamVjdCwgIm15IGhvbGRpbmdzIiwga2V5KTsKKworICAvLyBDbGVhciB0
aGUgV2Vha0NlbGwgYmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgaXQuCisg
IGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRUcnVlKHN1Y2Nlc3Mp
OworCisgIC8vIG9iamVjdCBnb2VzIG91dCBvZiBzY29wZS4KK30pKCk7CisKKy8vIFRoaXMgR0Mg
d2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0LgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBj
bGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlv
biB3b24ndCBiZSBjYWxsZWQsIHNpbmNlIHdlIGNhbGxlZCB1bnJlZ2lzdGVyLgorbGV0IHRpbWVv
dXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2Nv
dW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMgYi9KU1Rlc3RzL3N0cmVz
cy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGVmZTgyNGI2Yzc0
YTA1OGNiMWQxZWIzODcxZWNlNWJhZjhiYTczCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMKQEAgLTAsMCArMSw0NiBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0
aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9u
eS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgi
Li9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNs
ZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7
CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9u
UmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5ID0geyJrIjogInRoaXMgaXMgdGhlIGtleSJ9Owor
Ly8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRo
YXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICBsZXQgb2Jq
ZWN0ID0ge307CisgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwga2V5KTsKKworICAv
LyBVbnJlZ2lzdGVyIGJlZm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNlIHRvIGRpc2NvdmVyIHRoZSBv
YmplY3QuCisgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRUcnVl
KHN1Y2Nlc3MpOworCisgIC8vIENhbGwgdW5yZWdpc3RlciBhZ2FpbiAoanVzdCB0byBhc3NlcnQg
d2UgaGFuZGxlIHRoaXMgZ3JhY2VmdWxseSkuCisgIHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtl
eSk7CisgIGFzc2VydEZhbHNlKHN1Y2Nlc3MpOworCisgIC8vIG9iamVjdCBnb2VzIG91dCBvZiBz
Y29wZS4KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0YXJnZXQgb2JqZWN0
LgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3Nl
cnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3b24ndCBiZSBjYWxsZWQsIHNpbmNlIHRoZSB3
ZWFrIHJlZmVyZW5jZQorLy8gd2FzIHVucmVnaXN0ZXJlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBm
dW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisK
K3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5y
ZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIyMTIyODY2M2FkMmNlZDU5
Njk1YTUzYzViM2IwZTVmN2NiMDBiYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnkt
d2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4v
cmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjYWxs
ZWQgPSBmYWxzZTsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgLy8gU2Vl
IHdoaWNoIHRhcmdldCB3ZSdyZSBjbGVhbmluZyB1cCBhbmQgdW5yZWdpc3RlciB0aGUgb3RoZXIg
b25lLgorICBpZiAoaG9sZGluZ3MgPT0gMSkgeworICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdp
c3RlcihrZXkyKTsKKyAgICBhc3NlcnRUcnVlKHN1Y2Nlc3MgfHwgY2FsbGVkKTsKKyAgfSBlbHNl
IHsKKyAgICBhc3NlcnRTYW1lKGhvbGRpbmdzLCAyKTsKKyAgICBsZXQgc3VjY2VzcyA9IGZnLnVu
cmVnaXN0ZXIoa2V5MSk7CisgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzIHx8IGNhbGxlZCk7CisgIH0K
KyAgY2FsbGVkID0gdHJ1ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5
KGNsZWFudXApOworbGV0IGtleTEgPSB7ImsiOiAiZmlyc3Qga2V5In07CitsZXQga2V5MiA9IHsi
ayI6ICJzZWNvbmQga2V5In07CisvLyBDcmVhdGUgdHdvIG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRo
ZW0gaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0cworLy8gbmVlZCB0byBi
ZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKwor
KGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAg
ICAgIGxldCBvYmplY3QxID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDEsIDEsIGtl
eTEpOworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmpl
Y3QyLCAyLCBrZXkyKTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0
YXJnZXQgb2JqZWN0cyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRGYWxzZShj
YWxsZWQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVk
IGFuZCBjbGVhbmVkIHVwIG9uZSBob2xkaW5ncyAoYnV0IG5vdCB0aGUgb3RoZXIgb25lKS4KK2xl
dCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRUcnVlKGNhbGxlZCk7Cit9
CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
dW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmYWE3YjZlM2M0M2Jm
MmIxMjg2NmYyNDBjYzZlYWMxODdkMjFiOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTgg
dGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1v
bnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQo
Ii4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBj
bGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXBfaG9sZGluZ3NfY291bnQgPSAwOwor
bGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoaG9sZGlu
Z3MsICJob2xkaW5ncyIpOworCisgIC8vIFRoZXJlJ3MgbW9yZXMgb2JqZWN0IHdpdGggdGhlIHNh
bWUga2V5IHRoYXQgd2UgaGF2ZW4ndAorICAvLyBjbGVhbmVkIHVwIHlldCBzbyB3ZSBzaG91bGQg
YmUgYWJsZSB0byB1bnJlZ2lzdGVyIHRoZQorICAvLyBjYWxsYmFjayBmb3IgdGhhdCBvbmUuCisg
IGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkpOworCisgIGFzc2VydFRydWUoc3VjY2Vz
cyk7CisKKyAgKytjbGVhbnVwX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXBfY2FsbF9jb3Vu
dDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworLy8g
Q3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lz
dHJ5LiBUaGUgb2JqZWN0IG5lZWRzIHRvIGJlIGluc2lkZQorLy8gYSBjbG9zdXJlIHNvIHRoYXQg
d2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0aGUg
a2V5In07CisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsr
aSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGxldCBvYmplY3QyID0ge307
CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwga2V5KTsKKyAgICAgICAg
ZmcucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzIiwga2V5KTsKKyAgICB9Cit9KSgpOworCisv
LyBUaGlzIEdDIHdpbGwgZGlzY292ZXIgZGlydHkgV2Vha0NlbGxzIGFuZCBzY2hlZHVsZSBjbGVh
bnVwLgorZ2MoKTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBB
c3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRf
ZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMSwgY2xlYW51cF9jYWxsX2NvdW50
KTsKKyAgYXNzZXJ0RXF1YWxzKDEsIGNsZWFudXBfaG9sZGluZ3NfY291bnQpOworfQorCitzZXRU
aW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11
bnJlZ2lzdGVyLW1hbnkuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTgzMzk5ZTY1ZjBkMjc0MjYwOGIxMzg0NmQ1YTVkOTE3YWIzN2VkZQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcwpAQCAt
MCwwICsxLDUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwX2hvbGRp
bmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNz
ZXJ0RXF1YWxzKCJob2xkaW5nczIiLCBob2xkaW5ncyk7CisgICsrY2xlYW51cF9ob2xkaW5nc19j
b3VudDsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6
YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkxID0geyJrIjogImtleTEifTsKK2xldCBr
ZXkyID0geyJrIjogImtleTIifTsKKy8vIENyZWF0ZSB0aHJlZSBvYmplY3RzIGFuZCByZWdpc3Rl
ciB0aGVtIGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdHMKKy8vIG5lZWQg
dG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0h
CisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgewor
ICAgICAgICBsZXQgb2JqZWN0MWEgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MWEs
ICJob2xkaW5nczFhIiwga2V5MSk7CisKKyAgICAgICAgbGV0IG9iamVjdDFiID0ge307CisgICAg
ICAgIGZnLnJlZ2lzdGVyKG9iamVjdDFiLCAiaG9sZGluZ3MxYiIsIGtleTEpOworCisgICAgICAg
IGxldCBvYmplY3QyID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5n
czIiLCBrZXkyKTsKKworICAgICAgICAvLyBVbnJlZ2lzdGVyIGJlZm9yZSB0aGUgR0MgaGFzIGEg
Y2hhbmNlIHRvIGRpc2NvdmVyIHRoZSBvYmplY3RzLgorICAgICAgICBsZXQgc3VjY2VzcyA9IGZn
LnVucmVnaXN0ZXIoa2V5MSk7CisgICAgICAgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisgICAgfQor
fSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3RzLgorZ2Mo
KTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhh
dCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciB0aGUgcmVmZXJl
bmNlIHdoaWNoCisvLyB3YXMgbm90IHVucmVnaXN0ZXJlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBm
dW5jdGlvbigpIHsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cisg
IGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2hvbGRpbmdzX2NvdW50KTsKK30KKworc2V0VGlt
ZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvdjgtd2Vh
ay11bnJlZ2lzdGVydG9rZW4uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0
b2tlbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNDFlODAwYWEyYWNlMDlmNmYyOTUyZTRlOTdjYjU2OTgxZWEy
ZTNlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgtd2Vhay11bnJlZ2lzdGVy
dG9rZW4uanMKQEAgLTAsMCArMSwzMSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtS
ZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMtd2l0aC1jbGVhbnVwLXNv
bWUgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJj
ZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKwordmFyIEZSID0gbmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5IChmdW5jdGlvbiAoaG9sZGluZ3MpIHsgZ2xvYmFsVGhpcy5GUlJh
biA9IHRydWU7IH0pOworeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgIGxldCBvYmogPSB7fTsKKyAgICAgICAgLy8gb2JqIGlzIGl0cyBvd24gdW5yZWdpc3Rl
ciB0b2tlbiBhbmQgYmVjb21lcyB1bnJlYWNoYWJsZSBhZnRlciB0aGlzCisgICAgICAgIC8vIGJs
b2NrLiBJZiB0aGUgdW5yZWdpc3RlciB0b2tlbiBpcyBoZWxkIHN0cm9uZ2x5IHRoaXMgdGVzdCB3
aWxsIG5vdAorICAgICAgICAvLyB0ZXJtaW5hdGUuCisgICAgICAgIEZSLnJlZ2lzdGVyKG9iaiwg
NDIsIG9iaik7CisgICAgfQorfQorCitsZXQgdHJ5QWdhaW5Db3VudCA9IDEwOworZnVuY3Rpb24g
dHJ5QWdhaW4oKSB7CisgICAgZ2MoKTsKKyAgICBpZiAoZ2xvYmFsVGhpcy5GUlJhbikKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmICghLS10cnlBZ2FpbkNvdW50KQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoKTsKKyAgICBzZXRUaW1lb3V0KHRyeUFnYWluLCAwKTsKK30KK3RyeUFnYWluKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404747</attachid>
            <date>2020-07-20 13:01:18 -0700</date>
            <delta_ts>2020-07-20 13:10:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199888-20200720130118.patch</filename>
            <type>text/plain</type>
            <size>193019</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzRmOTg2OWEwOTc5MGJmNWM2ODM4ZGIyNTc4NDIxNjE4MzhlYmY3Li5jNzUxYTVkZDY0OTY1ZWJh
YThlOWJjMjU3ZDk3MzhjZGUzYjlkYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZXJlIGFyZSB0d28K
KyAgICAgICAgbWFpbiBwYXJ0cyB0byB0aGlzIHBhdGNoLCB0aGUgZmlyc3QgaXMgcmVmYWN0b3Jp
bmcgUHJvbWlzZVRpbWVyIGEKKyAgICAgICAgbW9yZSBnZW5lcmFsIGludG8gRGVmZXJyZWRXb3Jr
VGltZXIuIFRoaXMgYWxsb3dzIHVzIHRvIGZpbmFsbHkKKyAgICAgICAgaGF2ZSBhICJyZWFsIiBz
ZXRUaW1lb3V0IG9uIHRoZSBqc2MgY29tbWFuZCBsaW5lLiBUaGUgc2Vjb25kIHBhcnQKKyAgICAg
ICAgaXMgYWRkaW5nIGFsbCB0aGUgbmV3IGNsYXNzZXMgbmVlZGVkIGZvciBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBpcyBtb3N0bHkgYSByZW5hbWUg
YnV0IGRvZXMgdHdvIG1haW4gbmV3CisgICAgICAgIHRoaW5ncy4gVGhlIGZpcnN0IGlzIHRoYXQg
aXQgbm93IG5vdGlmaWVzIHRoZSBWTSB3ZSBoYXZlIGZpbmlzaGVkCisgICAgICAgIGEgc3luY2hy
b251b3VzIEpTIGV4ZWN1dGlvbiwgc28gdGhhdCBXZWFrUmVmcyBjYW4gYmUKKyAgICAgICAgY29s
bGVjdGVkLiBUaGUgc2Vjb25kIGlzIHRoYXQgaXQgbm93IGNhdGNoZXMgYW55IGV4Y2VwdGlvbnMg
YW5kCisgICAgICAgIGZvcndhcmRzIHRoZSB0byBhIG5ldyBtZXRob2Qgb24gdGhlIGdsb2JhbCBv
YmplY3QgbWV0aG9kCisgICAgICAgIHRhYmxlLiBGb3IgV2ViQ29yZSwgdGhpcyByZXBvcnRzIHRo
ZSBleGNlcHRpb24gdG8gdGhlIGNvbnNvbGUuIEZvcgorICAgICAgICBBUEkgdXNlcnMsIHRoaXMg
Y2FsbHMgdGhlaXIgZXhjZXB0aW9uSGFuZGxlciBibG9jay4gRm9yIHRoZSBDTEksCisgICAgICAg
IGl0IGV4aXRzIHdpdGggZXhpdCBzdGF0dXMgMyAob3VyIGdlbmVyYWwgZXhjZXB0aW9uIGV4aXQK
KyAgICAgICAgc3RhdHVzKS4gVW5mb3J0dW5hdGVseSwgdGhlcmUncyBub3QgY3VycmVudGx5IGFu
IGVyZ29ub21pYyB3YXkgdG8KKyAgICAgICAgcGFzcyB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uIGZy
b20gdGhlIENMSSBhcmd1bWVudHMgdG8gdGhpcyBoYW5kbGVyCisgICAgICAgIHNvIHRoYXQncyBu
b3Qgc3VwcG9ydGVkIGhlcmUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBGaW5hbGl6
YXRpb25SZWdpc3RyeSB0aGlzIHBhdGNoIGFkZHMgYSAibmV3IgorICAgICAgICBjbGFzcyBKU0Rl
c3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsLCB3aGljaCBhbGxvd3MgdXMgdG8KKyAg
ICAgICAgaGF2ZSBhIGRlc3RydWN0aWJsZSBvYmplY3Qgd2l0aCBpbnRlcm5hbCBmaWVsZHMuIFNp
bmNlIHRoZSBvcmRlcgorICAgICAgICBvZiBjb2xsZWN0aW9uIGRvZXNuJ3QgbWF0dGVyIHdlIGN1
cnJlbnRseSB1c2UgQysrIEhhc2hUYWJsZXMgb24KKyAgICAgICAgdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBTaW5jZSB1c2VycyBjYW4gdW5yZWdpc3RlciBvYmplY3RzIHdoaWxlCisgICAgICAg
IHRoZSBjYWxsYmFjayBpcyBwZW5kaW5nIHdlIGhhdmUgYSBoYXNoIHRhYmxlIGZvciB0aGUgbGl2
ZSBlbnRyaWVzCisgICAgICAgIGFuZCBhIHNlY29uZCBoYXNoIHRhYmxlIGZvciB0aGUgZGVhZCBv
bmVzLiBMYXN0bHksIGJlY2F1c2UgdXNlcnMKKyAgICAgICAgYXJlIG5vdCByZXF1cmVkIHRvIHBy
b3ZpZGUgYSB0b2tlbiBmb3IgdW5yZWdpc3RyYXRpb24gd2UgaGF2ZSB0d28KKyAgICAgICAgZXh0
cmEgVmVjdG9ycyBjb250YWluaW5nIHRoZSBsaXZlL2RlYWQgb2JqZWN0cyB0aGF0IGFyZSBub3QK
KyAgICAgICAgdW5yZWdpc3RlcmlibGUuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvblNldFRpbWVvdXQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6YXRpb25S
ZWdpc3RyeUxpdmVDb3VudCk6CisgICAgICAgIChmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY2hlY2tVbmNhdWdodEV4Y2Vw
dGlvbik6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3ApOgorICAgICAgICAocnVuSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5jcHAuCisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsp
OgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVy
cmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRl
ZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKToKKyAgICAgICAgKiBydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpGaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAqIHJ1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jRmlu
YWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OnByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpydW5GaW5hbGl6YXRpb25DbGVhbnVwKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZGVhZENvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdGFja092ZXJmbG93RnJhbWVDYWxsZWUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjptYXBTZXRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnNldEFkZFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphcnJheUpvaW5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg6CisgICAgICAgICogcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCYXNlPjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNv
bHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6
OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRl
SUQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlN
b2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMC0wNy0xOSAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIG5vbi11bmlm
aWVkIHNvdXJjZSBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDY0MDNlODBhZGI4MTdmNjQwYTU5
NTE5N2RhZDFlMTI1ZGRjMjJiLi5lNTgxNDU5MGE2MDQ0OGRmN2YxYmQ5MDU4ZTc0MzM4NWIxNTRl
OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZp
bmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQcm9taXNlRGVmZXJyZWRU
aW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNvLCBhZGQgZ2xvYmFsT2Jq
ZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25zIGZyb20gSlNDJ3MKKyAg
ICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6cmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFt
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlhdGVTdHJl
YW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6
CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorCiAyMDIw
LTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgY2FudmFzIGNhcHR1cmVTdHJlYW0sIHRlc3Rz
IGZhaWxpbmcgc2luY2UgdGhleSB3ZXJlIGFkZGVkIGluIHIyMTM1OTgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFj
NDcyNTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uOWI0ZjMzOGZkOTAzMTIyNjk2Njc5YTg3OGIx
YzI4YmY2ZTA0OTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ0LDExICs0NCwxNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBj
b21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKIH07
CiAKK3ZvaWQgSlNBUElHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb24p
Cit7CisgICAgQmFzZTo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChnbG9iYWxP
YmplY3QsIGV4Y2VwdGlvbik7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKaW5kZXggNzM5N2M2YjRhNjBjNjJjMzhmNDBj
NjgxMDc2MWM4NWM4ZmMzY2M3NC4uODE2N2M1Y2MwYmM0YWZkOTdjOTg1NjQ5NTNkZGVkNDMwYzcz
M2U1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3Qu
aApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworCiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9t
aXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxv
YWRlciosIEpTU3RyaW5nKiBtb2R1bGVOYW1lVmFsdWUsIEpTVmFsdWUgcGFyYW1ldGVycywgY29u
c3QgU291cmNlT3JpZ2luJik7CiAgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVz
b2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXlWYWx1ZSwg
SlNWYWx1ZSByZWZlcnJlclZhbHVlLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNJbnRlcm5hbFBy
b21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIq
LCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4IGQ2MWFhYzdlNDVjNTM3MjA1YThhY2E3ZTA4
ZWZkNjk0Y2JlZGM0MjMuLmRkZTJiZDMyM2JjN2I2NWI0ZjA5MDIzYjg3YWVhMjdiMDQyMzYzOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3Qu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpA
QCAtNjIsMTMgKzYyLDIwIEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2Fk
ZXJSZXNvbHZlLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCiAgICAgJm1vZHVsZUxvYWRlckZldGNo
LCAvLyBtb2R1bGVMb2FkZXJGZXRjaAogICAgICZtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRh
UHJvcGVydGllcywgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKLSAg
ICBtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKKyAgICAmbW9k
dWxlTG9hZGVyRXZhbHVhdGUsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwg
Ly8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25B
dEV2ZW50TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRy
LCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1p
bmcKIH07CiAKK3ZvaWQgSlNBUElHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9u
QXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNl
cHRpb24pCit7CisgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0
aEpTR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihnbG9iYWxPYmplY3QpXTsKKyAgICBbY29u
dGV4dCBub3RpZnlFeGNlcHRpb246dG9SZWYoZ2xvYmFsT2JqZWN0LT52bSgpLCBleGNlcHRpb24t
PnZhbHVlKCkpXTsKK30KKwogc3RhdGljIEV4cGVjdGVkPFVSTCwgU3RyaW5nPiBjb21wdXRlVmFs
aWRJbXBvcnRTcGVjaWZpZXIoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHNwZWNpZmll
cikKIHsKICAgICBVUkwgYWJzb2x1dGVVUkwoVVJMKCksIHNwZWNpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzZhMDgzMGZhNTFlOWIyMjlhNGVmMzE4YTkwYzll
NzUyMmMwYWJlNy4uMzY3NjU5Mzc0ZWIyZDNjYjMxNDY0YTVhOTE0ZWVlOThhMmFjOTljNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODMwLDYgKzgzMCw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9EYXRh
Vmlldy5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3Rh
bmNlQ2FjaGUuaAorICAgIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaAogICAgIHJ1bnRpbWUv
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKICAgICBydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xv
dC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaApAQCAtOTY4LDcgKzk2OSw2
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVu
dGltZS9QYXJzZUludC5oCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5oCi0gICAgcnVudGltZS9Qcm9taXNlVGltZXIuaAogICAgIHJ1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKICAgICBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmgKICAgICBydW50aW1lL1Byb3BlcnR5TmFtZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDRjZDc0YzI1MjJlYTJiZTlkMTI2Yzg4ZmRiMjA5ODM3ZDlhNTJiNWYuLmEyNmE5OTc1
MjUyZDA2NTQ2NmJmYTYxYTViNWMyZWYzMGYyNGY2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05MzEsMTYgKzkzMSwxOSBAQAogCQk1MzBGREU3NTIxRkFCMDA2MDAwNTlENjUg
LyogdGVzdEluY2x1ZGVzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzBGREU3MzIxRkFBRkM2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gKi87IH07
CiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENDkxRUE1ODFFNTAwNTI1
MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAv
KiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggKi87IH07Ci0JCTUzMTgw
NDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8q
IEIzRXh0cmFjdFZhbHVlLmggKi87IH07Ci0JCTUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBE
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzE4MDQ1QzIyRUFBQzRCMDA0
QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1
ZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggKi87IH07CisgICAgICAgICAgICAgICAgNTMzM0JCREIy
MTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4
RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9OwogCQk1MzMzQkJEQzIxMTBG
N0Q5MDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R1NwZWN1bGF0aXZlSklULmNwcCAqLzsgfTsKIAkJNTMzM0JCREQyMTEwRjdFMTAwNzYxOEVDIC8q
IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUNjQuY3BwICovOyB9OwotCQk1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNp
ZGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisgICAgICAgICAgICAgICAgNTMzOEUyQTcyMzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRP
U1JFeGl0U2lkZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzM4RTJBNjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MzM4RUJBMzIzQUIwNEI4MDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFQkEyMjNB
QjA0QTMwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oICovOyB9OwotCQk1MzQx
RkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAw
RTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKKyAgICAgICAgICAgICAg
ICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMz
RDA3NDMyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iu
aCAqLzsgfTsKKwkJNTMzRDA3NDcyMkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
M0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi87IH07
CisgICAgICAgICAgICAgICAgNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgg
Ki87IH07CiAJCTUzNDYzODcxMUU3MENGM0QwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzAxRTcw
Q0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFBy
b21pc2VUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUzNDg2QkI3MUMxNzk1QzMw
MEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisgICAgICAg
ICAgICAgICAgNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFF
NzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI3MUMx
Nzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVk
QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTUzNDkwMjg1MUM3Mjc2QjcwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0OTAyODIxQzcyNDJDODAw
MTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi87IH07CiAJCTUzNEM0NTdDMUJDNzI0MTEw
MDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAv
KiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNTM0RTAzNEUxRTRENEIx
NjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNEUwMzREMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmgg
Ki87IH07CkBAIC0zNTk3LDYgKzM2MDAsNyBAQAogCQk1MkVFRDc5MzI0OTJCODY4MDA4RjRDOTMg
LyogRnVuY3Rpb25BbGxvd2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25BbGxvd2xpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNkMzNUIxRTcxRUIwODAwODFGNEND
IC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDsgcGF0aCA9IGpz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJGNkMzNUMxRTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDAxRkEz
RTMxQzAwMjZBNTQ1IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U291cmNlc0NvY29hLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDEx
RkEzRTMxRDAwMjZBNTQ1IC8qIFNvdXJjZXMudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNv
dXJjZXMudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjZBRDFGQTNFNzc3
MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTQ0LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE0NC5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzYyMiwxNyArMzYyNiwyMiBA
QAogCQk1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNFeHRyYWN0VmFsdWUuaDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTgwNDVEMjJFQUFGMEYwMDRBNzM0MiAvKiBC
M0V4dHJhY3RWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5jcHA7
IHBhdGggPSBiMy9CM0V4dHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluYWxpemF0aW9uUmVn
aXN0cnlQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRUU3QkMy
MkRFNkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyNjMxQjMyMTg3NzdBNTAwN0I4MTkxIC8qIEphdmFT
Y3JpcHRDb3JlLm1vZHVsZW1hcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLm1vZHVsZS1tYXAiOyBw
YXRoID0gSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MzM4RTJBNjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2twb2ludE9TUkV4aXRT
aWRlU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzOEVCQTIyM0FCMDRB
MzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5Lmg7IHBhdGggPSBmdGwvRlRM
U2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMz
QjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbU9wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzNE
MDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQ1MjJDMkQ4N0YwMDREMkZFMiAvKiBGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MzNEMDc0NjIyQzJEOUQxMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2Fz
bUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRE
NyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4NzAxRTcwQ0Yz
RDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUnVuTG9vcFRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NDYzODcyMUU3MEQwMTUwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1J1bkxvb3BUaW1lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGlt
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvbWlzZVRpbWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQ
cm9taXNlVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJv
bWlzZVRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0ODZCQjYxQzE3
OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAgICAg
ICAgICAgICAgICA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8q
IERlZmVycmVkV29ya1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlZmVycmVkV29ya1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAg
ICAgICAgICAgICAgICA1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBl
ZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRB
cnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgyMUM3MjQyQzgw
MDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFy
cmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MzFDNzI0
MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFR5cGVkQXJyYXlDVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlD
VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEzNCw2ICs3MTQzLDggQEAK
IAkJCQkxNEExNTYzMDEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCAqLywK
IAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKKwkJCQk1
MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovLAorCQkJ
CTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovLAogCQkJ
CTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAq
LywKIAkJCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90Lmgg
Ki8sCiAJCQkJMEZFMDUwMEYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAg
Ki8sCkBAIC03MTg0LDExICs3MTk1LDE3IEBACiAJCQkJMTQ3MzQxRTkxREMyQ0YyNTAwQUEyOUJB
IC8qIEV4ZWN1dGFibGVCYXNlLmNwcCAqLywKIAkJCQkxNDczNDFDQjFEQzAyRDcyMDBBQTI5QkEg
LyogRXhlY3V0YWJsZUJhc2UuaCAqLywKIAkJCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyog
RXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggKi8sCi0JCQkJQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5
IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50
LmNwcCAqLywKIAkJCQlDRUNGQUQzMjIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVy
QWdlbnQuaCAqLywKIAkJCQlDRTIwQkQwNDIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6
emVyQWdlbnRCYXNlLmNwcCAqLywKIAkJCQlDRTIwQkQwMzIzN0QzQUQ0MDA0NkU1MjAgLyogRmls
ZUJhc2VkRnV6emVyQWdlbnRCYXNlLmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUzM0QwNzQ1MjJDMkQ4N0YwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQk1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovLAorCQkJCTUzMUVFN0JDMjJERTZFQzYwMDMwREE4
MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAgKi8sCisJCQkJNTMxRUU3Qjky
MkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggKi8sCiAJ
CQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3
QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYy
QTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkExN0FE
QjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUxNkQ0RTkw
MEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDMTBFMTZE
NEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLApAQCAtNzM0NSw3ICs3MzYy
LDEzIEBACiAJCQkJMEY3REYxMzkxRTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmNwcCAqLywKIAkJCQkwRjdERjEzQTFFMjk3MTBFMDA5NTk1MUIgLyog
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlBN0I0QUNBRTE0ODRD
OUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLywKLQkJCQkwRjJCNjZDMTE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0
cnkuY3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NjIyQzJE
OUQxMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFy
cmF5LmNwcCAqLywKKwkJCQk3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5
LmNwcCAqLywKKwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5Lmgg
Ki8sCisJCQkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRjJCNjZDMTE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNGbG9hdDMyQXJyYXkuaCAqLywKIAkJCQkwRjJCNjZDMjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNG
dW5jdGlvbi5jcHAgKi8sCiAJCQkJRjY5MkE4NUYwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rp
b24uaCAqLywKQEAgLTc1NDQsOSArNzU2Nyw3IEBACiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0Iy
QjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8q
IFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEg
LyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKLQkJCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEg
LyogUHJvbWlzZVRpbWVyLmNwcCAqLywKLQkJCQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyog
UHJvbWlzZVRpbWVyLmggKi8sCi0JCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3Bl
cnR5RGVzY3JpcHRvci5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3
RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJ
CUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJ
CQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywK
IAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCkBAIC05
Mjg2LDYgKzkzMDcsNyBAQAogCQkJCTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1NCAvKiBEZWZlckdD
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MTJERjE3Q0Q4NzdDMDA4Q0M5M0MgLyogRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTUwNjg2NTFBRTI0
NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBE
ZWxldGVBbGxDb2RlRWZmb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MzExRkEzMjI0MERCMUQz
MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLApAQCAtOTUyNiw5
ICs5NTQ4LDExIEBACiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25S
YW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjdDRjgyMjQ5MzE2QjEwMDIyQkY2RCAv
KiBGYXN0SklUUGVybWlzc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzU3MUYzM0E0
NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFn
ZW50LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VD
RkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTIwQkQwNTIzN0QzRTIzMDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdl
bnRCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyog
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTMzRDA3NDQyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9h
dDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAv
KiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFC
QjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5MDBE
Qzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTk4NTcsNyArOTg4MSw4
IEBACiAJCQkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9z
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9h
dDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkVGMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEwMTQ3LDggKzEwMTcyLDcgQEAKIAkJCQlEQzYwNUI2MDFDRTI2
RUE3MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTEw
MURDQTkyOTQwMDE0RjlGRSAvKiBQcm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDczNDFENDFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGRDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNv
bmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDBGRDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3Bl
cnR5TWFwSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBC
NDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBjMDUwMmEzNGE2NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li4y
YTI4N2E3ZmRkYjA4MDRmM2I2MDEyMGRjYTBiZTc1Yjc1NWU3OTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CkBAIC03ODYsNiArNzg2LDggQEAgcnVudGltZS9FeGNlcHRpb25TY29wZS5j
cHAKIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFn
ZW50LmNwcAogcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCitydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCitydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcAogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUR1
bXAuY3BwCkBAIC04NTAsNiArODUyLDcgQEAgcnVudGltZS9KU0RhdGFWaWV3LmNwcAogcnVudGlt
ZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogcnVudGltZS9KU0RhdGVNYXRoLmNwcAogcnVudGlt
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKK3J1bnRpbWUvSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNHZW5l
cmF0b3IuY3BwCiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC05MzIsNyArOTM1
LDcgQEAgcnVudGltZS9PcGVyYXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGlt
ZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcAotcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCitydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCiBydW50aW1lL1By
b3BlcnR5U2xvdC5jcHAKIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggMTg0YmI5NDQ0MWQzZmE0MzM0MmFmYmY5NjY1Y2MxYmU3Mzll
ZTAxMy4uZDgxYWRlZmY1Zjg0MjZhODUzMjQyYzRlN2ExN2I1N2E2NTIxYzZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJc29D
ZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVk
ZSAiSklUV29ya2xpc3QuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFw
LmgiCiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCkBAIC02MTEsNiArNjEyLDggQEAgdm9p
ZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICAgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCp2bSgpLm1f
d2Vha09iamVjdFJlZlNwYWNlKTsKICAgICBpZiAodm0oKS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkK
ICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3Rh
bmNlPigqdm0oKS5tX2Vycm9ySW5zdGFuY2VTcGFjZSk7CisgICAgaWYgKHZtKCkubV9maW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCp2bSgpLm1fZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKHZtKCkubV93
ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyZTBkMGEz
MGRmNWY2NTMwOGU3YTlmY2ViOTY0MzRhMjk3ZjE4MzE5Li5jOWJlZWQ5ZmE4MjM0ZjFhMTA2MjFm
MzEzNjIwYmJjYWY1NjI5ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkNvbXBpbGVyVGltaW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb21wbGV0aW9u
LmgiCiAjaW5jbHVkZSAiQ29uZmlnRmlsZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVy
LmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNM
b2NrLmgiCkBAIC01Niw3ICs1OCw2IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIK
LSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJSZWxlYXNlSGVhcEFjY2Vzc1Nj
b3BlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlz
aXRvci5oIgpAQCAtMTU1LDYgKzE1Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSB7CiAKKyNkZWZpbmUgRVhJVF9FWENFUFRJT04gMworCiBOT19SRVRVUk5fV0lUSF9WQUxV
RSBzdGF0aWMgdm9pZCBqc2NFeGl0KGludCBzdGF0dXMpCiB7CiAgICAgd2FpdEZvckFzeW5jaHJv
bm91c0Rpc2Fzc2VtYmx5KCk7CkBAIC0xODgsNyArMTkxLDcgQEAgY2xhc3MgV29ya2VyczsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmLCBi
b29sIGlzV29ya2VyLCBjb25zdCBGdW5jJik7Ci1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihH
bG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVl
LCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOworc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRp
b24oR2xvYmFsT2JqZWN0KiwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNW
YWx1ZSwgY29uc3QgQ29tbWFuZExpbmUmLCBib29sJiBzdWNjZXNzKTsKIAogY2xhc3MgTWVzc2Fn
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZXNzYWdlPiB7CiBwdWJsaWM6CkBAIC0z
MDIsNyArMzA1LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ2FsbE1hc3F1ZXJhZGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWlu
TWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxp
dmVDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tN
b2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJv
ZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKQEAgLTUzOCw4ICs1NDQsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkdW1wVHlwZXNGb3JBbGxWYXJpYWJs
ZXMiLCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyAsIDApOwogCiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZHJhaW5NaWNyb3Rhc2tzIiwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3Ms
IDApOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlbGVhc2VXZWFrUmVmcyIsIGZ1bmN0aW9u
UmVsZWFzZVdlYWtSZWZzLCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRUaW1lb3V0
IiwgZnVuY3Rpb25TZXRUaW1lb3V0LCAyKTsKIAorICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJl
bGVhc2VXZWFrUmVmcyIsIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzLCAwKTsKKyAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJmaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCIsIGZ1bmN0aW9uRmlu
YWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50IiwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdp
c3RyeURlYWRDb3VudCwgMCk7CisgICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImdl
dFJhbmRvbVNlZWQiLCBmdW5jdGlvbkdldFJhbmRvbVNlZWQsIDApOwogICAgICAgICBhZGRGdW5j
dGlvbih2bSwgInNldFJhbmRvbVNlZWQiLCBmdW5jdGlvblNldFJhbmRvbVNlZWQsIDEpOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgImlzUm9wZSIsIGZ1bmN0aW9uSXNSb3BlLCAxKTsKQEAgLTYz
OCw2ICs2NDgsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJZGVudGlmaWVyIG1vZHVsZUxvYWRl
clJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFs
dWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVy
RmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUs
IEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2xvYmFsT2JqZWN0LCBKU0ds
b2JhbE9iamVjdCk7CiAKQEAgLTY2MCw2ICs2NzIsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
Jm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgIG51bGxwdHIsIC8v
IG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRy
YWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxs
cHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5n
CiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGluYXRlU3RyZWFtaW5nCkBAIC0yMTg3LDYgKzIyMDAs
MjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNr
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2V0VGltZW91dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gRklYTUU6IFRoaXMgbWVh
bnMgd2UgY2FuJ3QgcGFzcyBhbnkgaW50ZXJuYWwgZnVuY3Rpb24gYnV0IEkgZG9uJ3QgdGhpbmsg
dGhhdCdzIGNvbW1vbiBmb3IgdGVzdGluZy4KKyAgICBhdXRvIGNhbGxiYWNrID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICgh
Y2FsbGJhY2spCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGaXJzdCBhcmd1bWVudCBpcyBub3QgYSBKUyBmdW5jdGlvbiJfcyk7CisKKyAgICAv
LyBGSVhNRTogV2UgZG9uJ3QgbG9vayBhdCB0aGUgdGltZW91dCBwYXJhbWV0ZXIgYmVjYXVzZSB3
ZSBkb24ndCBoYXZlIGEgc2NoZWR1bGUgd29yayBsYXRlciBBUEkuCisgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBjYWxsYmFjaywgeyB9KTsKKyAgICB2bS5kZWZl
cnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihjYWxsYmFjaywgW2NhbGxiYWNrXSB7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsYmFjay0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgY2Fs
bGJhY2ssIGpzVW5kZWZpbmVkKCksIGFyZ3MsICJZb3Ugc2hvdWxkbid0IHNlZSB0aGlzLi4uIik7
CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayhjYWxsYmFj
ayk7CisgICAgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVm
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIxOTQsNiArMjIzMCwzMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxp
emF0aW9uUmVnaXN0cnlMaXZlQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZp
bmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVn
aXN0cnkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9j
aygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJl
Z2lzdHJ5LT5saXZlQ291bnQobG9ja2VyKSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IGpzRHluYW1p
Y0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKKyAgICBpZiAoIWZpbmFsaXphdGlvblJlZ2lzdHJ5KQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmlyc3QgYXJndW1lbnQgaXMgbm90IGEg
ZmluYWxpemF0aW9uUmVnaXN0cnkiX3MpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhm
aW5hbGl6YXRpb25SZWdpc3RyeS0+Y2VsbExvY2soKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihmaW5hbGl6YXRpb25SZWdpc3RyeS0+ZGVhZENvdW50KGxvY2tlcikpKTsK
K30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9y
bShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAg
LTI2MTcsMTAgKzI2NzksMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAg
ICAgLy8gV2UgY2FuJ3QgdXNlIGRlc3RydWN0b3JzIGluIHRoZSBmb2xsb3dpbmcgY29kZSBiZWNh
dXNlIGl0IHVzZXMgV2luZG93cwogICAgIC8vIFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsaW5n
Ci0gICAgaW50IHJlcyA9IDA7CisgICAgaW50IHJlcyA9IEVYSVRfU1VDQ0VTUzsKICAgICBUUlkK
ICAgICAgICAgcmVzID0ganNjbWFpbihhcmdjLCBhcmd2KTsKLSAgICBFWENFUFQocmVzID0gMykK
KyAgICBFWENFUFQocmVzID0gRVhJVF9FWENFUFRJT04pCiAgICAgZmluYWxpemVTdGF0c0F0RW5k
T2ZUZXN0aW5nKCk7CiAgICAgaWYgKGdldGVudigiSlNfU0hFTExfV0FJVF9GT1JfSU5QVVRfVE9f
RVhJVCIpKSB7CiAgICAgICAgIFdURjo6ZmFzdERpc2FibGVTY2F2ZW5nZXIoKTsKQEAgLTI2OTEs
NyArMjc1Myw3IEBAIHN0YXRpYyB2b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgZXhjZXB0aW9uKQogI3VuZGVmIENIRUNLX0VYQ0VQVElPTgogfQog
Ci1zdGF0aWMgYm9vbCBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXhjZXB0aW9uLCBDb21tYW5kTGluZSYgb3B0aW9ucykK
K3N0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIGNvbnN0IENvbW1hbmRMaW5lJiBvcHRp
b25zKQogewogICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRFeGNlcHRpb25OYW1lID0gb3B0aW9u
cy5tX3VuY2F1Z2h0RXhjZXB0aW9uTmFtZTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CkBAIC0yNzIzLDcgKzI3ODUsNyBAQCBzdGF0aWMgYm9vbCBjaGVja1VuY2F1
Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRp
b24sIEpTVmFsdWUgdmFsdWUsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQor
c3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJv
b2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIGNvbnN0IENv
bW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKIApAQCAtMjc0Miw2ICsyODA0LDE1IEBAIHN0YXRpYyB2b2lkIGNoZWNr
RXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJv
b2wgaGFzCiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNoZWNrVW5jYXVnaHRFeGNlcHRp
b24odm0sIGdsb2JhbE9iamVjdCwgKGhhc0V4Y2VwdGlvbikgPyB2YWx1ZSA6IEpTVmFsdWUoKSwg
b3B0aW9ucyk7CiB9CiAKK3ZvaWQgR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhj
ZXB0aW9uKQoreworICAgIGF1dG8qIGdsb2JhbCA9IGpzQ2FzdDxHbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpOworICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsLCBleGNlcHRpb24tPnZhbHVlKCkp
OworICAgIGJvb2wgaGlkZU5vUmV0dXJuID0gdHJ1ZTsKKyAgICBpZiAoaGlkZU5vUmV0dXJuKQor
ICAgICAgICBqc2NFeGl0KEVYSVRfRVhDRVBUSU9OKTsKK30KKwogc3RhdGljIHZvaWQgcnVuV2l0
aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25z
LCBib29sJiBzdWNjZXNzKQogewogICAgIFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzID0gb3B0aW9u
cy5tX3NjcmlwdHM7CkBAIC0zMTc2LDcgKzMyNDcsNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1h
bmRMaW5lJiBvcHRpb25zLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAg
ICBmdW5jKHZtLCBnbG9iYWxPYmplY3QsIHN1Y2Nlc3MpOwogICAgICAgICB2bS5kcmFpbk1pY3Jv
dGFza3MoKTsKICAgICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5ydW5SdW5Mb29wKCk7CisgICAg
dm0uZGVmZXJyZWRXb3JrVGltZXItPnJ1blJ1bkxvb3AoKTsKICAgICB7CiAgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYm
IHN1Y2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1MjYwNzVhZmRlYmFjOWFkYmEyNTI2NmJh
Li41MGQ2YmJhNTQ5OGMwMmI1MjI0YmIzN2M2NWQ3YWIyZDE4MmU4YjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNiArMzYsNyBA
QAogICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBt
YWNybyhFdmFsRXJyb3IpIFwKKyAgICBtYWNybyhGaW5hbGl6YXRpb25SZWdpc3RyeSkgXAogICAg
IG1hY3JvKEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRs
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdv
cmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtU
aW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk1NmRhNDE0MDFiMTZhZmRlZDhlMWFkMzljMjQ2Y2QzNmJm
YjUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNp
bmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIERlZmVycmVkV29ya1Rp
bWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitE
ZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIoVk0mIHZtKQorICAgIDogQmFzZSh2
bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkKK3sKKyAg
ICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgbV90YXNr
TG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIoKTsKKyAgICBpZiAoIW1fcnVuVGFza3MpIHsK
KyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBbdGlja2V0LCB0
YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVk
V29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVy
KHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhl
c2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tl
dCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUg
d29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVlOworICAgICAg
ICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBjYW4gcmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVy
ZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3luY2hyb25vdXNKU0V4ZWN1dGlvbigpOworCisg
ICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAg
ICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24gPSBzY29w
ZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRp
Y2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBl
eGNlcHRpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFz
a3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsK
KworICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRs
eVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9wZW5k
aW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRz
RmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworCisgICAgbV90YXNr
TG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgp
Cit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX2FwaUxvY2st
PnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRz
RmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5zaXplKCkpCisgICAgICAg
IFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5n
V29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBl
bmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ry
b25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBk
YXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5l
dyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwg
IkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVu
Y2llcyk7CisgICAgfQorfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29y
ayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0dXJuIG1fcGVuZGluZ1RpY2tldHMuY29udGFp
bnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUlu
UGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQoreworICAgIEFT
U0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAg
QVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRpY2tldCk7CisgICAgcmV0dXJuIHJlc3VsdC5j
b250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2Vs
UGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5k
aW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGRh
dGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcg
dGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbihUaWNrZXQgdGlja2V0
LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAg
ICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7
CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQorICAg
ICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjcxYThhYmM5ZWM0Mjg1NmU5ZGQzYTFjYzNiYzVjZTg2ZGI0ZjY5MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1Rp
bWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU1J1bkxvb3BUaW1l
ci5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUHJvbWlzZTsKK2NsYXNz
IFZNOworY2xhc3MgSlNDZWxsOworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWZlcnJlZFdv
cmtUaW1lciBmaW5hbCA6IHB1YmxpYyBKU1J1bkxvb3BUaW1lciB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOworCisgICAgdm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsK
KworICAgIHVzaW5nIFRpY2tldCA9IEpTT2JqZWN0KjsKKyAgICB2b2lkIGFkZFBlbmRpbmdXb3Jr
KFZNJiwgVGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKTsKKyAg
ICBib29sIGhhc1BlbmRpbmdXb3JrKFRpY2tldCk7CisgICAgYm9vbCBoYXNEZXBlbmRhbmN5SW5Q
ZW5kaW5nV29yayhUaWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7CisgICAgYm9vbCBjYW5jZWxQ
ZW5kaW5nV29yayhUaWNrZXQpOworCisgICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47
CisgICAgdm9pZCBzY2hlZHVsZVdvcmtTb29uKFRpY2tldCwgVGFzayYmKTsKKworICAgIHZvaWQg
c3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9CisKKyAgICB2b2lkIHJ1
blJ1bkxvb3AoKTsKKworICAgIHN0YXRpYyBSZWY8RGVmZXJyZWRXb3JrVGltZXI+IGNyZWF0ZShW
TSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZlcnJlZFdvcmtU
aW1lcih2bSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEZWZlcnJlZFdvcmtUaW1lcihWTSYp
OworCisgICAgTG9jayBtX3Rhc2tMb2NrOworICAgIGJvb2wgbV9ydW5UYXNrcyB7IHRydWUgfTsK
KyAgICBib29sIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKKyAgICBEZXF1
ZTxzdGQ6OnR1cGxlPFRpY2tldCwgVGFzaz4+IG1fdGFza3M7CisgICAgSGFzaE1hcDxUaWNrZXQs
IFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1RpY2tldHM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTA2OThmMGM5MTQ5ZWU5NzFjM2E5ZmNhZjE4ZDg3NjY2MmMzYzBkMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJdGVyYXRv
ck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNPYmplY3RJbmxpbmVzLmgiCisKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcikgfTsKKwordm9pZCBGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSJfcywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0
cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmluYWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisKK0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OkZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5LCBjb25zdHJ1Y3RGaW5hbGl6
YXRpb25SZWdpc3RyeSkKK3sKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IikpOworfQorCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdp
c3RyeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LmlzQ2FsbGFibGUodm0pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gRmluYWxpemF0aW9uUmVnaXN0cnkgc2hv
dWxkIGJlIGEgZnVuY3Rpb24iX3MpOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2Jq
ZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogZmluYWxpemF0aW9u
UmVnaXN0cnlTdHJ1Y3R1cmUgPSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkgPT0gbmV3VGFyZ2V0Cisg
ICAgICAgID8gZ2xvYmFsT2JqZWN0LT5maW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpCisg
ICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPmZpbmFs
aXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZSh2bSwgZmluYWxpemF0
aW9uUmVnaXN0cnlTdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0
T2JqZWN0KCkpKSk7Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWFlMTY4Y2NjY2E2ZTZiZGIxMDU1NzU2ZDEwNDE3YWRkNjkyNzc2YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZTsKKworY2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
ciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKworICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKKyAgICB7
CisgICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
cj4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlKTsK
KyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZSopOworfTsKKworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTFmOWY4ZjY5
MzAxN2RkZjM5ZjhmYjQ3NDU4NDkzZGM5OTBiODgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpz
X2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdpc3RyeSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlv
blJlZ2lzdHJ5VW5yZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit2b2lk
IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICAvLyBXZSBjYW4n
dCBtYWtlIHRoaXMgYSBwcm9wZXJ0eSBuYW1lIGJlY2F1c2UgaXQncyBhIHJlc2V2ZXJlZCB3b3Jk
IGluIEMrKy4uLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRp
b25SZWdpc3RyeVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVnaXN0ZXIiKSwgcHJvdG9GdW5j
RmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkqIGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0
KCkpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxs
ZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9iamVjdCJfcyk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8qIGdyb3VwID0ganNEeW5hbWlj
Q2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGFzT2JqZWN0KHZhbHVlKSk7CisgICAg
aWYgKExJS0VMWShncm91cCkpCisgICAgICAgIHJldHVybiBncm91cDsKKworICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkg
ZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uUmVnaXN0cnkgb2JqZWN0Il9zKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1
bmNGaW5hbGl6YXRpb25SZWdpc3RyeVJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUg
dGFyZ2V0Il9zKTsKKworICAgIEpTVmFsdWUgaG9sZGluZ3MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpOworICAgIGlmIChzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhvbGRpbmdzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJl
Z2lzdGVyIGV4cGVjdHMgdGhlIHRhcmdldCBvYmplY3QgYW5kIHRoZSBob2xkaW5ncyBwYXJhbWV0
ZXIgYXJlIG5vdCB0aGUgc2FtZS4gT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0IGNhbiBuZXZlciBiZSBj
b2xsZWN0ZWQiX3MpOworCisgICAgSlNWYWx1ZSB1bnJlZ2lzdGVyVG9rZW4gPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDIpOworICAgIGlmICghdW5yZWdpc3RlclRva2VuLmlzVW5kZWZpbmVkKCkgJiYg
IXVucmVnaXN0ZXJUb2tlbi5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFz
IHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7CisKKyAgICBncm91cC0+cmVnaXN0ZXJUYXJn
ZXQodm0sIHRhcmdldC5nZXRPYmplY3QoKSwgaG9sZGluZ3MsIHVucmVnaXN0ZXJUb2tlbik7Cisg
ICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSh2
bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGF1dG8qIHRva2VuID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkgeworICAgICAgICBi
b29sIHJlc3VsdCA9IGdyb3VwLT51bnJlZ2lzdGVyKHZtLCB0b2tlbik7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworICAgIH0KKworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bnJlZ2lzdGVyIHJlcXVp
cmVzIGFuIG9iamVjdCBpcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworfQorCit9CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1YTUzNTM2MWM5OGRmNjhmNTlm
ZTcxMzJjNWMzNzc5MGIwN2I4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlPih2bS5oZWFwKSkgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsgfQorCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaAppbmRleCA5MzE3NTgzYTFiNjM5ZDNhNDdlMGQ1ZjA0NjQ2NTY5ZDc2NGVjNDVh
Li4xYTAwZjQ5NmJjN2M2NzgwMTNhZGZkNzQzYThiY2JjMTc2ZmNiMjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjgzZDYzZGYyNTA4ZDRmNTdlODRmYWVmMWIxZGQ2MTAz
NjdkMmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkRlZmVycmVk
V29ya1RpbWVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6c19pbmZvID0geyAiRmluYWxpemF0aW9u
UmVnaXN0cnkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpIH07CisKK1N0cnVjdHVyZSogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eT4odm0uaGVhcCkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGluc3Rh
bmNlOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoY2FsbGJhY2stPmlzQ2FsbGFibGUodm0pKTsKKyAgICBhdXRvIHZhbHVl
cyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGlu
ZGV4KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlc1tpbmRleF0pOworICAgIGludGVybmFs
RmllbGQoRmllbGQ6OkNhbGxiYWNrKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsK
K30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeSo+KGNlbGwpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlz
T2JqZWN0LT5jZWxsTG9jaygpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2Jq
ZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0
aW9uIDogaXRlci52YWx1ZSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlv
bi5ob2xkaW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogdGhpc09i
amVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQocmVn
aXN0cmF0aW9uLmhvbGRpbmdzKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2Jq
ZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9sZGluZ3Mg
OiBpdGVyLnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworICAg
IH0KKyAgICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0
aW9uRGVhZCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworCisgICAgc2l6ZV90
IHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzID0gdGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9u
cy5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJh
dGlvbnMpOjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyAr
PSB0aGlzT2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVj
bHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFpclR5cGUp
OworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lz
dHJhdGlvbkxpdmUuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25v
VW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5C
eXRlcyArPSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkLmNhcGFjaXR5KCkgKiBz
aXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS50YWtlTGFz
dCgpKSk7CisgICAgdmlzaXRvci52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRv
dGFsQnVmZmVyU2l6ZXNJbkJ5dGVzKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpkZXN0cm95KEpTQ2VsbCogdGFibGUpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNGaW5hbGl6YXRp
b25SZWdpc3RyeSo+KHRhYmxlKS0+fkpTRmluYWxpemF0aW9uUmVnaXN0cnkoKTsKK30KKwordm9p
ZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0p
Cit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKworICAgIGF1dG8g
cmVtb3ZlRnJvbVZlY3RvciA9IFtdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBwb3NpdGlvbikgewor
ICAgICAgICBzdGQ6OnN3YXAodmVjdG9yW3Bvc2l0aW9uXSwgdmVjdG9yLmxhc3QoKSk7CisgICAg
ICAgIHJldHVybiB2ZWN0b3IudGFrZUxhc3QoKTsKKyAgICB9OworCisgICAgYm9vbCByZWFkaWVk
Q2VsbCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vVW5yZWdpc3Ry
YXRpb25MaXZlLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCghbV9ub1VucmVnaXN0cmF0
aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKG1f
bm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAg
ICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0udGFyZ2V0
KSkgeworICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5hcHBlbmQocmVtb3ZlRnJv
bVZlY3RvcihtX25vVW5yZWdpc3RyYXRpb25MaXZlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAg
ICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xpdmVSZWdp
c3RyYXRpb25zLnJlbW92ZUlmKFsmXSAoYXV0byYgYnVja2V0KSAtPiBib29sIHsKKyAgICAgICAg
QVNTRVJUKGJ1Y2tldC52YWx1ZS5zaXplKCkpOworCisgICAgICAgIGJvb2wga2V5SXNEZWFkID0g
IXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LmtleSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBidWNrZXQudmFsdWUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
YnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJr
ZWQoYnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAg
ICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLnRhcmdldCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAgICAgICBtX25vVW5yZWdp
c3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9s
ZGluZ3MpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGRlYWRMaXN0ID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5hZGQoYnVja2V0LmtleSwgRGVhZFJlZ2lz
dHJhdGlvbnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlYWRMaXN0Lml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVhZGllZENlbGwgPSB0cnVlOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgbV9ub1VucmVn
aXN0cmF0aW9uTGl2ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAhYnVja2V0LnZhbHVlLnNpemUoKTsKKyAgICB9
KTsKKworICAgIGlmICghdm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMp
ICYmIChyZWFkaWVkQ2VsbCB8fCBkZWFkQ291bnQobG9ja2VyKSkpIHsKKyAgICAgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCB0aGlzLCB7IH0pOworICAgICAgICBB
U1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpKTsKKyAgICAg
ICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24odGhpcywgW3RoaXNdIHsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAg
ICAgICAgIHRoaXMtPnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKKyAg
ICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJ1bkZp
bmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgd2hpbGUgKEpTVmFsdWUgdmFsdWUgPSB0YWtlRGVhZEhvbGRp
bmdzVmFsdWUoKSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAg
ICBhcmdzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFj
aygpLCBhcmdzLCAiVGhpcyBzaG91bGQgbm90IGJlIHZpc2libGU6IHBsZWFzZSByZXBvcnQgYSBi
dWcgdG8gYnVncy53ZWJraXQub3JnIik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhj
ZWxsTG9jaygpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAobV9ub1VucmVnaXN0cmF0
aW9uRGVhZC5zaXplKCkpCisgICAgICAgIHJlc3VsdCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQu
dGFrZUxhc3QoKS5nZXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9kZWFk
UmVnaXN0cmF0aW9ucy5iZWdpbigpOworICAgICAgICBpZiAoaXRlciA9PSBtX2RlYWRSZWdpc3Ry
YXRpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgQVNT
RVJUKGl0ZXItPnZhbHVlLnNpemUoKSk7CisgICAgICAgIHJlc3VsdCA9IGl0ZXItPnZhbHVlLnRh
a2VMYXN0KCkuZ2V0KCk7CisgICAgICAgIGlmICghaXRlci0+dmFsdWUuc2l6ZSgpKQorICAgICAg
ICAgICAgbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgfQorCisgICAgaWYg
Y29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRl
ci52YWx1ZS5zaXplKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQoVk0mIHZtLCBKU09iamVjdCog
dGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKQoreworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgUmVnaXN0cmF0aW9uIHJlZ2lzdHJhdGlv
bjsKKyAgICByZWdpc3RyYXRpb24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHJlZ2lzdHJhdGlvbi5o
b2xkaW5ncy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGhvbGRpbmdzKTsKKyAgICBpZiAodG9rZW4u
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5hcHBlbmQoV1RG
TW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBt
X2xpdmVSZWdpc3RyYXRpb25zLmFkZChqc1NlY3VyZUNhc3Q8SlNPYmplY3QqPih2bSwgdG9rZW4p
LCBMaXZlUmVnaXN0cmF0aW9ucygpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5h
cHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICB9CisgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIodGhpcyk7Cit9CisKK2Jvb2wgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rl
cihWTSYsIEpTT2JqZWN0KiB0b2tlbikKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdyaXRl
IGJhcnJpZXIgb3Vyc2VsdmVzIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIG9ubHkgcG9pbnQgdG8gbGVz
cyB0aGluZ3MgYWZ0ZXIgdGhpcyBmaW5pc2hlcy4KKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGNlbGxMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9saXZlUmVnaXN0cmF0aW9ucy5yZW1v
dmUodG9rZW4pOworICAgIHJlc3VsdCB8PSBtX2RlYWRSZWdpc3RyYXRpb25zLnJlbW92ZSh0b2tl
bik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgSlNGaW5hbGl6YXRpb25SZWdp
c3RyeTo6bGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7CisgICAgc2l6ZV90
IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXplKCk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBpdGVyIDogbV9saXZlUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291bnQgKz0gaXRlci52
YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3NpemVfdCBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5OjpkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUoKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICBjb3VudCAr
PSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKworU3RyaW5nIEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9zOworfQorCit9CisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkNWNkMzhjZjBiYTdkODI5OTFjZGI1YzBhYWExZmY2NDQy
YWY2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGw8MT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPDE+OworCisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQ4X3QgeyAKKyAgICAg
ICAgQ2FsbGJhY2ssCisgICAgfTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
Q2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5lQ2FwYWNpdHkgPT0gMFUpOworICAgICAgICByZXR1
cm4gc2l6ZW9mKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmZp
bmFsaXphdGlvblJlZ2lzdHJ5U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3Rk
OjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAg
ICB9IH07CisgICAgfQorCisgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5h
bEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxk
KHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisKKyAgICBKU09iamVjdCogY2FsbGJh
Y2soKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxk
OjpDYWxsYmFjaykuZ2V0KCkpOyB9CisKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGNhbGxiYWNrKTsKKyAgICBzdGF0
aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgcnVuRmluYWxp
emF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVjdCopOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKKworICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CisKKyAgICBKU1ZhbHVlIHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpOwor
CisgICAgYm9vbCB1bnJlZ2lzdGVyKFZNJiwgSlNPYmplY3QqIHRva2VuKTsKKyAgICAvLyB0b2tl
biBzaG91bGQgYmUgYSBKU09iamVjdCBvciB1bmRlZmluZWQuCisgICAgdm9pZCByZWdpc3RlclRh
cmdldChWTSYsIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9r
ZW4pOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGxpdmVDb3VudChjb25zdCBMb2Nr
ZXI8SlNDZWxsTG9jaz4mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZGVhZENvdW50
KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOworCitwcml2YXRlOgorICAgIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCogY2FsbGJhY2spOworCisgICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwor
CisgICAgc3RydWN0IFJlZ2lzdHJhdGlvbiB7CisgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQ7Cisg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBob2xkaW5nczsKKyAgICB9OworCisgICAgdXNp
bmcgTGl2ZVJlZ2lzdHJhdGlvbnMgPSBWZWN0b3I8UmVnaXN0cmF0aW9uPjsKKyAgICAvLyBXZSBk
b24ndCBuZWVkIHRoZSB0YXJnZXQgYW55bW9yZSBzaW5jZSB3ZSBrbm93IGl0J3MgZGVhZC4KKyAg
ICB1c2luZyBEZWFkUmVnaXN0cmF0aW9ucyA9IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+
OworCisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IGJvdGhlciBwdXR0aW5nIGEgd3JpdGUgYmFy
cmllciBvbiB0aGUga2V5IG9yIHRhcmdldCBiZWNhdXNlIHRoZXkgYXJlIHdlYWtseSByZWZlcmVu
Y2VkLgorICAgIEhhc2hNYXA8SlNPYmplY3QqLCBMaXZlUmVnaXN0cmF0aW9ucz4gbV9saXZlUmVn
aXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPEpTT2JqZWN0KiwgRGVhZFJlZ2lzdHJhdGlvbnM+IG1f
ZGVhZFJlZ2lzdHJhdGlvbnM7CisgICAgLy8gV2UgdXNlIGEgc2VwYXJhdGUgbGlzdCBmb3Igbm8g
dW5yZWdpc3RlciB2YWx1ZXMgaW5zdGVhZCBvZiBhIHNwZWNpYWwga2V5IGluIHRoZSB0YWJsZXMg
YWJvdmUgYmVjYXVzZSB0aGUgSGFzaE1hcCBoYXMgYSB0ZW5kZW5jeSB0byByZWFsbG9jYXRlIHVu
ZGVyIHVzIHdoZW4gaXRlcmF0aW5nLi4uCisgICAgTGl2ZVJlZ2lzdHJhdGlvbnMgbV9ub1VucmVn
aXN0cmF0aW9uTGl2ZTsKKyAgICBEZWFkUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25E
ZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDNlYTMwZGI5ZTJlNGQ1Mzhk
YThmMjMyY2Y4OWI5ZTRjOTgyMzcwMDYuLjZkNzBlZmNlNTYyZTE2Y2VlZGY5OTE4Y2VmOTIyMTQ0
MzVmZjFjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTYxLDYgKzYxLDggQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlv
bkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCkBAIC05OSw2ICsxMDEsNyBAQAogI2lu
Y2x1ZGUgIkpTRGF0YVZpZXcuaCIKICNpbmNsdWRlICJKU0RhdGFWaWV3UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSlNEb2xsYXJWTS5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnku
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0zODcsNiArMzkwLDcgQEAgY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0
YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51
bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhj
ZXB0aW9uQXRFdmVudExvb3AsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAg
bnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRl
U3RyZWFtaW5nCkBAIC0yMTk5LDYgKzIyMDMsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVl
dWVNaWNyb3Rhc2soUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogICAgIHZtKCkucXVldWVNaWNyb3Rh
c2soKnRoaXMsIFdURk1vdmUodGFzaykpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXBv
cnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9u
KiBleGNlcHRpb24pCit7CisgICAgZGF0YUxvZ0xuKCJVbmNhdWdodCBFeGNlcHRpb24gYXQgcnVu
IGxvb3A6ICIsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnNldERlYnVnZ2VyKERlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBtX2RlYnVnZ2VyID0gZGVi
dWdnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi40NzRmZGU2
NGZmNmNhZTI4M2U5OWU0NmVlYzgwNTA4MWJjMGY5YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEzOCw2ICsxMzgsOCBAQCBjb25z
dGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9IHRydWU7CiAgICAgbWFjcm8oSlNQcm9t
aXNlLCBwcm9taXNlLCBwcm9taXNlLCBKU1Byb21pc2UsIFByb21pc2UsIG9iamVjdCwgdHlwZUV4
cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhCaWdJbnQsIGJpZ0ludCwgYmlnSW50T2JqZWN0
LCBCaWdJbnRPYmplY3QsIEJpZ0ludCwgb2JqZWN0LCBPcHRpb25zOjp1c2VCaWdJbnQoKSkgXAog
ICAgIG1hY3JvKFdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RSZWYsIEpT
V2Vha09iamVjdFJlZiwgV2Vha1JlZiwgb2JqZWN0LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBc
CisgICAgbWFjcm8oRmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJlZ2lzdHJ5LCBm
aW5hbGl6YXRpb25SZWdpc3RyeSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSwgRmluYWxpemF0aW9u
UmVnaXN0cnksIG9iamVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXAorCiAKICNkZWZpbmUg
Rk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUobWFjcm8pIFwKICAgICBtYWNy
byhTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0ZXJhdG9yLCBKU1N0cmlu
Z0l0ZXJhdG9yLCBTdHJpbmdJdGVyYXRvciwgaXRlcmF0b3IsIHR5cGVFeHBvc2VkQnlEZWZhdWx0
KSBcCkBAIC0yMjcsNiArMjI5LDkgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIHZvaWQgKCpQcm9taXNlUmVqZWN0aW9uVHJhY2tlclB0cikoSlNHbG9iYWxP
YmplY3QqLCBKU1Byb21pc2UqLCBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24pOwogICAgIFBy
b21pc2VSZWplY3Rpb25UcmFja2VyUHRyIHByb21pc2VSZWplY3Rpb25UcmFja2VyOwogCisgICAg
dHlwZWRlZiB2b2lkICgqUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0cikoSlNH
bG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKyAgICBSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0
RXZlbnRMb29wUHRyIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3A7CisKICAgICB0
eXBlZGVmIFN0cmluZyAoKkRlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyKSgpOwogICAgIERlZmF1
bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRMYW5ndWFnZTsKIApAQCAtNDUzLDIxICs0NTgs
NiBAQCBwdWJsaWM6CiAgICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207CiAgICAgUmVnRXhwR2xv
YmFsRGF0YSBtX3JlZ0V4cEdsb2JhbERhdGE7CiAKLSAgICBKU0NhbGxlZSogc3RhY2tPdmVyZmxv
d0ZyYW1lQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUu
Z2V0KCk7IH0KLQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5SXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7
IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dFNldCgpIHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBTZXRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9t
YXBTZXRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0
Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0Y2hwb2ludFNldDsgfQotICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIGFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJh
eUpvaW5XYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OyB9
Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0KCkK
LSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKLSAgICAg
ICAgcmV0dXJuIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0OwotICAgIH0KICAgICAvLyBJ
ZiB0aGlzIGhhc24ndCBiZWVuIGludmFsaWRhdGVkLCBpdCBtZWFucyB0aGUgYXJyYXkgaXRlcmF0
b3IgcHJvdG9jb2wKICAgICAvLyBpcyBub3Qgb2JzZXJ2YWJsZSB0byB1c2VyIGNvZGUgeWV0Lgog
ICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0OwpAQCAtNDk0LDYgKzQ4NCwyMyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
PiBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBt
X251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludDsKIAorcHVibGljOgorICAgIEpTQ2Fs
bGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrT3Zl
cmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQorCisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcEl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcFNldFdhdGNocG9pbnRT
ZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBv
aW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50
U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdh
dGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5Sm9p
bldhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmlu
Z1dhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6
dXNlSklUKCkpOworICAgICAgICByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7
CisgICAgfQorCiAgICAgYm9vbCBpc0FycmF5UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RB
bmROb25PYnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9j
b2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAgIGJvb2wgaXNTZXRQcm90b3R5cGVJdGVyYXRv
clByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKQEAgLTgyNCw2ICs4MzEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhWTSYgdm0sIEpTT2Jq
ZWN0KiBmdW5jdGlvbikgeyBtX3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLnNldCh2bSwgZnVu
Y3Rpb24pOyB9CiAgICAgSlNPYmplY3QqIHVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKCkgY29u
c3QgeyByZXR1cm4gbV91bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjay5nZXQoKTsgfQogCisgICAg
c3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9i
amVjdCosIEV4Y2VwdGlvbiopOworCiAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRo
aXMpOyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJQcm90b3R5cGUoQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwCmluZGV4IDg4MzA4M2VjYjc2N2QwODgzZjlhNDkyMWYzOTlmNTkw
ODgxM2NmZGYuLjRmMzRiNmI0OWNhODllNjY4Y2I5YTI2NzEwMzIzY2FlMTc4NjRiNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcApAQCAtMjcsMTEgKzI3
LDExIEBACiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMu
aCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCi0jaW5j
bHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjgsNyArMTY4
LDcgQEAgdm9pZCBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5jdGlvbihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywg
dmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAg
IH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNhbmNlbFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAg
IHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9p
ZCBKU1Byb21pc2U6OnJlamVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICBjYWxsRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5yZWpl
Y3RQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNhbmNl
bFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQ
ZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnJlamVjdEFzSGFuZGxlZChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGFkZmI3OWZkZGE4
MTgzY2E5MTMxNWM1MjA2NDcwZDE0MjMxMjk0NTQuLjliZTgzY2U4YjE4NGE1ZGQwZmMzZjFkNTc4
N2Q1YWE0NmZkZWM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaApAQCAtNDg2LDYgKzQ4Niw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCB1c2VFYWdlcldlYkFzc2VtYmx5
TW9kdWxlSGFzaGluZywgZmFsc2UsIE5vcm1hbCwgIlVubmFtZWQgV2ViQXNzZW1ibHkgbW9kdWxl
cyBhcmUgaWRlbnRpZmllZCBpbiBiYWNrdHJhY2VzIHRocm91Z2ggdGhlaXIgaGFzaCwgaWYgYXZh
aWxhYmxlLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgZmFsc2Us
IE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVmZXJlbmNlcyBzcGVjLiIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFs
bG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAorICAgIC8qIEZJ
WE1FOiBXZSBzaG91bGQgbWFrZSBzdXJlIGZpbmFsaXplcnMgZG9uJ3QgcnVuIGZvciBkZXRhY2hl
ZCB3aW5kb3dzIGJlZm9yZSBlbmFibGluZyBXZWFrUmVmcyBieSBkZWZhdWx0LiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4ICovIFwKICAgICB2KEJvb2wsIHVz
ZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9y
LiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ug
d2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIg
bm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRp
b24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDhlZmQyYjAwODQzMDI2MjYxODU5ODE5NTg5Zjc4NGNiYmQzNjNk
MDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgi
Ci0KLSNpbmNsdWRlICJKU1Byb21pc2UuaCIKLSNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgSlND
IHsKLQotbmFtZXNwYWNlIFByb21pc2VUaW1lckludGVybmFsIHsKLXN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Ci19Ci0KLVByb21pc2VUaW1lcjo6UHJvbWlzZVRpbWVyKFZN
JiB2bSkKLSAgICA6IEJhc2Uodm0pCi17Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmso
Vk0mIHZtKQotewotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKLSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAgICBjYW5jZWxUaW1lcigpOwotICAgIGlmICgh
bV9ydW5UYXNrcykgewotICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9n
TG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24gcHJvbWlz
ZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJl
YWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgotICAgICAgICBpZiAobV9wZW5kaW5nUHJvbWlz
ZXMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgcnVu
IG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKLQotICAgICAgICAg
ICAgdGFzaygpOwotICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICAgICAg
ICAgIG1fdGFza0xvY2subG9jaygpOwotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2Vz
LmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKQot
ICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwotCi0gICAgbV90YXNrTG9jay51bmxv
Y2soKTsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3AoKQotewotICAgIEFTU0VS
VCghbV9hcGlMb2NrLT52bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgpLT5ydW5Mb29w
KCkpOwotICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggPSB0cnVl
OwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpCi0gICAgICAgIFJ1bkxvb3A6OnJ1
bigpOwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UoVk0mIHZtLCBK
U1Byb21pc2UqIHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykK
LXsKLSAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwotCi0gICAgYXV0byBy
ZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2Vs
bD4+KCkpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5J
ZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5k
KFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRh
TG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5k
ZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMpOwotICAgIH0KLX0K
LQotYm9vbCBQcm9taXNlVGltZXI6Omhhc1BlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0
KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCk7Ci19
Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShKU1By
b21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQotewotICAgIEFTU0VSVCh0aWNrZXQt
PnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJUKG1fcGVu
ZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX3Bl
bmRpbmdQcm9taXNlcy5nZXQodGlja2V0KTsKLSAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRl
cGVuZGVuY3kpOwotfQotCi1ib29sIFByb21pc2VUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2Uo
SlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21p
c2VzLnJlbW92ZSh0aWNrZXQpOwotCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xu
SWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwg
UmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgUHJv
bWlzZVRpbWVyOjpzY2hlZHVsZVdvcmtTb29uKEpTUHJvbWlzZSogdGlja2V0LCBUYXNrJiYgdGFz
aykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKLSAgICBtX3Rhc2tzLmFw
cGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7Ci0gICAgaWYgKCFp
c1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQotICAgICAgICBzZXRUaW1l
VW50aWxGaXJlKDBfcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2E0ZDBmMjlhZTJkMjhjZjNlNDA0YmVmYjU0NmY1M2NkMGJiYWU5Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9taXNlVGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNQcm9taXNlOwot
Y2xhc3MgVk07Ci1jbGFzcyBKU0NlbGw7Ci0KLWNsYXNzIFByb21pc2VUaW1lciBmaW5hbCA6IHB1
YmxpYyBKU1J1bkxvb3BUaW1lciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9v
cFRpbWVyOwotCi0gICAgdm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsKLQotICAgIHZvaWQgYWRkUGVu
ZGluZ1Byb21pc2UoVk0mLCBKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVw
ZW5kZW5jaWVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1BlbmRpbmdQcm9taXNl
KEpTUHJvbWlzZSogdGlja2V0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBKU0NlbGwqIGRlcGVuZGVu
Y3kpOwotICAgIC8vIEpTUHJvbWlzZSBzaG91bGQgaGFuZGxlIGNhbmNlbGluZyB3aGVuIHRoZSBw
cm9taXNlIGlzIHJlc29sdmVkIG9yIHJlamVjdGVkLgotICAgIGJvb2wgY2FuY2VsUGVuZGluZ1By
b21pc2UoSlNQcm9taXNlKik7Ci0KLSAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsK
LSAgICB2b2lkIHNjaGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiwgVGFzayYmKTsKLQotICAgIHZv
aWQgc3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJ1blJ1bkxvb3AoKTsKLQotICAgIHN0YXRpYyBSZWY8UHJvbWlz
ZVRpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUHJvbWlzZVRpbWVyKHZtKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFByb21pc2VUaW1l
cihWTSYpOwotCi0gICAgSGFzaE1hcDxKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+
PiBtX3BlbmRpbmdQcm9taXNlczsKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgYm9vbCBtX3J1
blRhc2tzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9t
aXNlc0ZpbmlzaCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsg
ZmFsc2UgfTsKLSAgICBWZWN0b3I8c3RkOjp0dXBsZTxKU1Byb21pc2UqLCBUYXNrPj4gbV90YXNr
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhY2IzNGM5ZDNkYjI2ZTU4YTYx
ZmZkYjMxNzE3YTUxZTY4MzFmYzVkLi5lMjExMzk3OGEzMjRlZDdiNGE1ZjEwZDFiM2QwNWJmOWU0
Y2ZiM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcApAQCAtMzIsNiArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQogCituYW1lc3BhY2UgU3RydWN0dXJlSURUYWJsZUludGVybmFsIHsKK3N0
YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKIFN0cnVjdHVyZUlEVGFi
bGU6OlN0cnVjdHVyZUlEVGFibGUoKQogICAgIDogbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3Ry
dWN0dXJlT3JPZmZzZXQ+KHNfaW5pdGlhbFNpemUpKQogICAgICwgbV9zaXplKDEpCkBAIC0xNjEs
MTEgKzE2NSwxNCBAQCBTdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRT
dHJ1Y3R1cmVCaXRzID0gZW5jb2RlKHN0cnVjdHVyZSwgcmVzdWx0KTsKICAgICBtX3NpemUrKzsK
ICAgICBBU1NFUlQoIWlzTnVrZWQocmVzdWx0KSk7CisKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1
cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2UsICJBbGxvY2F0ZWQgU3RydWN0dXJlSUQgIiwgcmVz
dWx0LCAiIGZvciBTdHJ1Y3R1cmUgIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCiB7CisgICAgZGF0YUxv
Z0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVybmFsOjp2ZXJib3NlLCAiRGVhbGxvY2F0ZWQgU3Ry
dWN0dXJlSUQgIiwgc3RydWN0dXJlSUQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmVJRCAhPSBzX3Vu
dXNlZElEKTsKICAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJbmRleCA9IHN0cnVjdHVyZUlEID4+IHNf
bnVtYmVyT2ZFbnRyb3B5Qml0czsKICAgICBBU1NFUlQoc3RydWN0dXJlSW5kZXggJiYgc3RydWN0
dXJlSW5kZXggPCBzX21heGltdW1OdW1iZXJPZlN0cnVjdHVyZXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDhjYWE0OGMxYmUzMTFiNWQ4N2U4NjAzOGJhMGY0MDQxODM4
ODhjMmEuLmJjZjYwOWFkNDZmNDg0MjdlOTZlNmE0MmEwYWIxOGI0NzkxNGVmMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJE
T01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKICNp
bmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
ICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuaCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCkBAIC04OCw2ICs4OSw3IEBA
CiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIK
KyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKQEAgLTEzMyw3ICsxMzUsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVy
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJv
Z3JhbUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVk
ZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgpAQCAtMjgyLDYgKzI4Myw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBi
b29sKiBzdWNjZXNzKQogICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKICAg
ICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxEYXRl
SW5zdGFuY2U+KCkpCiAgICAgLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEVycm9ySW5zdGFuY2U+KCkpCisgICAgLCBmaW5hbGl6YXRpb25SZWdpc3Ry
eUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+
KCkpCiAgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KCkpCiAgICAgLCBnbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxPYmpl
Y3Q+KCkpCiAgICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0PigpKQpAQCAt
MzY1LDcgKzM2Nyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwg
V1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgICwgY2xpZW50RGF0YShu
dWxscHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRyKQogICAgICwgdG9wQ2FsbEZyYW1l
KENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKLSAgICAsIHByb21pc2VUaW1lcihQcm9taXNlVGltZXI6
OmNyZWF0ZSgqdGhpcykpCisgICAgLCBkZWZlcnJlZFdvcmtUaW1lcihEZWZlcnJlZFdvcmtUaW1l
cjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZh
dWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmlu
Z1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5l
dyBBcmdMaXN0KQpAQCAtNTc1LDcgKzU3Nyw3IEBAIFZNOjp+Vk0oKQogICAgIGF1dG8gZGVzdHJ1
Y3Rpb25Mb2NrZXIgPSBob2xkTG9jayhzX2Rlc3RydWN0aW9uTG9jay5yZWFkKCkpOwogICAgIAog
ICAgIEdpZ2FjYWdlOjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2ln
YWNhZ2VEaXNhYmxlZENhbGxiYWNrLCB0aGlzKTsKLSAgICBwcm9taXNlVGltZXItPnN0b3BSdW5u
aW5nVGFza3MoKTsKKyAgICBkZWZlcnJlZFdvcmtUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygpOwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAoV2FzbTo6V29ya2xpc3QqIHdvcmtsaXN0
ID0gV2FzbTo6ZXhpc3RpbmdXb3JrbGlzdE9yTnVsbCgpKQogICAgICAgICB3b3JrbGlzdC0+c3Rv
cEFsbFBsYW5zRm9yQ29udGV4dCh3YXNtQ29udGV4dCk7CkBAIC0xNDg3LDYgKzE0ODksNyBAQCBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFr
TWFwSGVhcENlbGxUeXBlLmdldCgpLAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0
KSAvLyBIYXNoOjB4NGM3ODFiMzAKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha09i
amVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2l0
aFNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXph
dGlvblJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUuZ2V0KCksIEpT
RmluYWxpemF0aW9uUmVnaXN0cnkpCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyT2JqZWN0PikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhv
YmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlw
ZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNjBmNTk3MjlmZWMyZTAyZTY5NzZjMzFlZDUxYjE0
OGE1YzZlYWEwNS4uZjRmMmVmZTAzYmU2NjM5NjQ4NTliNjRiN2I3ODI4MDRkNGU2N2IyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgSlNX
ZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTmF0
aXZlRXhlY3V0YWJsZTsKIGNsYXNzIE9iakNDYWxsYmFja0Z1bmN0aW9uOwotY2xhc3MgUHJvbWlz
ZVRpbWVyOworY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBSZWdFeHA7CiBjbGFzcyBS
ZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwpAQCAtMzc3LDYgKzM3Nyw3IEBAIHB1YmxpYzoK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja09iamVjdEhlYXBD
ZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBkYXRlSW5zdGFu
Y2VIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZXJy
b3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW5qZWN0ZWRTY3JpcHRI
b3N0U3BhY2VIZWFwQ2VsbFR5cGU7CkBAIC01NTAsNiArNTUxLDcgQEAgcHVibGljOgogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
a1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrU2V0U3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrTWFwU3BhY2UpCkBAIC03MDks
OCArNzExLDggQEAgcHVibGljOgogICAgIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4gbV9zbG93Qm91
bmRFeGVjdXRhYmxlOwogICAgIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4gbV9zbG93Q2FuQ29uc3Ry
dWN0Qm91bmRFeGVjdXRhYmxlOwogCi0gICAgUmVmPFByb21pc2VUaW1lcj4gcHJvbWlzZVRpbWVy
OwotICAgIAorICAgIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gZGVmZXJyZWRXb3JrVGltZXI7CisK
ICAgICBKU0NlbGwqIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3Q7CiAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZv
IHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHkuY3BwCmluZGV4IDVkYTY5NmQ2OTdkZDQ3NTA1ZDdkYzUyYjYwNmUzMTc3NGE0ZTI2
NWQuLmFmNDJkOGQ1NzA5ZjIwNmE3YTc4NzA4ZjY1ZDdlNTBiNTU4ZTYzNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkNhdGNoU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RJbmxpbmVzLmgiCkBAIC00MSw3ICs0Miw2IEBACiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
T3B0aW9ucy5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVGhyb3dT
Y29wZS5oIgpAQCAtMTM0LDEwICsxMzQsMTAgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1
bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMu
YXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKIAotICAgIHZtLnByb21p
c2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5j
aWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9t
aXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0
ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNr
PFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCAmdm1d
IChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2Us
IGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUg
eworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNl
LCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAgICAgICAgICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6
OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1v
ZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewpAQCAtMjE0LDExICsyMTQsMTEgQEAgc3RhdGljIHZv
aWQgaW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1By
b21pc2UqIHByb21pc2UKICAgICAvLyBUaGUgaW5zdGFuY2Uga2VlcHMgdGhlIG1vZHVsZSBhbGl2
ZS4KICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbnN0YW5jZSkp
OwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVj
dCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2Us
IFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBl
bmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIC8vIE5v
dGU6IFRoaXMgY29tcGxldGlvbiB0YXNrIG1heSBvciBtYXkgbm90IGdldCBjYWxsZWQgaW1tZWRp
YXRlbHkuCiAgICAgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0
LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9j
azo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0
LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYm
IHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CiAgICAgICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+
IGNvZGVCbG9jayA9IFdURk1vdmUocmVmQ29kZUJsb2NrKTsKLSAgICAgICAgdm0ucHJvbWlzZVRp
bWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxl
LCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2Nr
ID0gV1RGTW92ZShjb2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2Rl
QmxvY2sgPSBXVEZNb3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgewogICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKICAg
ICAgICAgICAgIHJlc29sdmUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgaW5zdGFuY2UsIG1v
ZHVsZSwgaW1wb3J0T2JqZWN0LCBjb2RlQmxvY2sucmVsZWFzZU5vbk51bGwoKSwgcmVzb2x2ZUtp
bmQsIGNyZWF0aW9uTW9kZSk7CiAgICAgICAgIH0pOwpAQCAtMjMzLDEzICsyMzMsMTMgQEAgc3Rh
dGljIHZvaWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNQcm9taXMKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVu
Y2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRP
YmplY3QpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBtb2R1
bGVLZXlDZWxsKSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwg
cHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVl
KHZtLCBnbG9iYWxPYmplY3QsIGJ1ZmZlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgcmVqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFdhc206Ok1v
ZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3Jl
YXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9y
dE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRp
b25Nb2RlLCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11
dGFibGUgewotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlz
ZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCBy
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2Jh
bE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCByZXNvbHZlS2luZCwgY3JlYXRpb25N
b2RlLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
ID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQpAQCAtMjY4LDEw
ICsyNjgsMTAgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1bGVJbnN0YW50aW5hdGVBc3lu
Y0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBWZWN0b3I8U3Ryb25nPEpT
Q2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0Nl
bGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxK
U0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRp
bmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRl
ZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBl
bmRlbmNpZXMpKTsKIAogICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNv
bnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNh
bGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAmdm1dIChX
YXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGlt
cG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJs
eU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKQpAQCAtMzM5LDcgKzMzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqCiAKICAgICBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGlt
ZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykp
OworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwg
V1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcpCiAgICAgICAgIGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZyhnbG9iYWxPYmpl
Y3QsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVh
bWluZ0ludGVybmFsKEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cm9uZzxK
U0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVu
ZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgZGVw
ZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7Ci0gICAg
ICAgICAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlz
ZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICAgICAgICAgICAgICB2bS5kZWZlcnJlZFdv
cmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVz
KSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTg0
ODg4PiBpZiB0aGVyZSdzIGFuIGltcG9ydE9iamVjdCBhbmQgaXQgY29udGFpbnMgYSBNZW1vcnks
IHRoZW4gd2UgY2FuIGNvbXBpbGUgdGhlIG1vZHVsZSB3aXRoIHRoZSByaWdodCBtZW1vcnkgdHlw
ZSAoZmFzdCBvciBub3QpIGJ5IGxvb2tpbmcgYXQgdGhlIG1lbW9yeSdzIHR5cGUuCiAgICAgICAg
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5pbnN0YW50
aWF0ZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGltcG9ydE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKaW5kZXggNDg5NDliZjZlYzI4MGZlZjI3M2Yw
NDA2ZWQxY2QxMDdkOWM1NWNmMi4uMmU1NmI0ZDNiYWY3ZjAwZmVhZGQzMDA0YjRiZmUyYzk2NWQ1
MzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2suaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDggKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdv
cmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNs
dWRlICJXYXNtRm9ybWF0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDI4ZTUwOWRiMDFjNzAxMGRkNzdlMmZlYmMzNWM3OTg5
YWRkN2EzMi4uMDM5ZWY4MjMwYTg2YjYxMzVjZWViZGU0M2MzYTEzNzA1ZGNmOTdkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
MjM0LDYgKzIzNCwxMSBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojpwcm9taXNlUmVqZWN0aW9u
VHJhY2tlcihKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsCiAgICAgfQogfQogCit2b2lk
IEpTRE9NR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikK
K3sKKyAgICByZXBvcnRFeGNlcHRpb24oanNHbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7Cit9CisK
IEpTRE9NR2xvYmFsT2JqZWN0JiBjYWxsZXJHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewogICAgIGNsYXNzIEdl
dENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggZDI5ODU4Y2ZhNGIwYmUwZDYyMTM5MGE4M2Q3
NmQ1YTg1MGI5ZDI4MC4uNzM4NjdkNmFiMmU1YjRkYmI3MGI3MGE5YTM2MDk0ODQ5ZjBjZWU2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBA
IC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25z
JiBidWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKSB7IHJldHVybiBtX2J1aWx0aW5JbnRlcm5hbEZ1
bmN0aW9uczsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2
ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKik7CiAKIHB1YmxpYzoKICAg
ICB+SlNET01HbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDg4MzIxM2U5MDYxZjM4YjhiYjQzMzU3OWIyOTg2MDk4
Nzc4NGU3ODIuLmFjZWE3NjZhZjFjN2Q1ZmVlYWUxN2E2OWY5ZTNiMzVjZGVlOWE4OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNDgs
MTAgKzQ4LDEwIEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTV2ViQXNzZW1ibHkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NaWNyb3Rhc2suaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTc4LDYgKzc4LDcgQEAgY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlID0gewogICAgICZtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcywKICAg
ICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAor
ICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFu
Z3VhZ2UsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICZjb21waWxlU3RyZWFtaW5nLApA
QCAtNDQzLDggKzQ0NCw4IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFtaW5n
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKCiAKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNQ
ZW5kaW5nUHJvbWlzZShwcm9taXNlKSk7Ci0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFz
RGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAg
QVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29yayhwcm9taXNlKSk7Cisg
ICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29y
ayhwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKIAogICAgIGlmIChhdXRvIGlucHV0UmVzcG9uc2Ug
PSBKU0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2bSwgc291cmNlKSkgewogICAgICAgICBoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKGdsb2JhbE9iamVjdCwgaW5wdXRSZXNwb25zZSwg
cHJvbWlzZSwgW3Byb21pc2VdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11dGFibGUgewpAQCAtNDYx
LDkgKzQ2Miw5IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjppbnN0YW50aWF0ZVN0cmVhbWluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNQZW5kaW5n
UHJvbWlzZShwcm9taXNlKSk7Ci0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5k
YW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAgQVNTRVJU
KHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwg
aW1wb3J0ZWRPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1Bl
bmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhh
c0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOworICAgIEFT
U0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsocHJv
bWlzZSwgaW1wb3J0ZWRPYmplY3QpKTsKIAogICAgIGlmIChhdXRvIGlucHV0UmVzcG9uc2UgPSBK
U0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2bSwgc291cmNlKSkgewogICAgICAgICBoYW5kbGVS
ZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKGdsb2JhbE9iamVjdCwgaW5wdXRSZXNwb25zZSwgcHJv
bWlzZSwgW3Byb21pc2UsIGltcG9ydGVkT2JqZWN0XSAoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVTaXplKSBtdXRh
YmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9N
V2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdp
bmRvd0Jhc2UuY3BwCmluZGV4IDQ5ZGY0MzkwNTdkZjU5ZDI5NGQ0ODRhOTRmMjliNTI0MGY4ODYx
ODEuLmRjZTczODIwYmJiZmQ5Yjk1YzU4NzlkMTNlZjY1ZWFiOThhOTA0MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcApA
QCAtNDcsNiArNDcsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1JlbW90ZURP
TVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPQogICAgIG51bGxwdHIsIC8v
IG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8g
bW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcgorICAgIG51bGxwdHIsIC8vIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AK
ICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxl
U3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAppbmRleCA1Mzc2ZTgwZDAwMDUzNzc2MjU4MmFhMjViZTkxZDEyYThmNTk3ZWM0Li5jNDRmMmZi
M2EwYjA1ZGFhYjFhOGE5ZTJmODliNTJkODUxZWI0MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC02NSw2
ICs2NSw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVM
b2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICAmZGVmYXVsdExhbmd1YWdlLAogICAg
IG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0
ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggMDk2NWE4NmM0MThiZTYxZTYyZTFmZmRhYzZj
ZmU4YmFmNmI0ZDZlZS4uYjE0YjgxNTQyZGI4ODllYzZkMjU5YmM1YjcwZWYyYTUwOTljOTZkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVqZWN0
aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAg
ICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAg
ICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA5MzFjZWU3
Nzc5YmY5NjE0MzhlODIwMTUwYzdhN2Y4YWI0Njc1NTQ3Li43MTZiMWE2OWI4ZWVjMWRhNjQ3MjAx
YTQzMjY5MmIzMzg5N2ViNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW5j
bHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVy
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTgogCiAg
ICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7CiAgICAg
cHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJv
Y2Vzc1RpbWVyKG1fdm0tPnByb21pc2VUaW1lci5wdHIoKSk7CisgICAgcHJvY2Vzc1RpbWVyKG1f
dm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpU
aW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrKQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlND
OjpKU1J1bkxvb3BUaW1lcjo6VGltCiAKICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5mdWxs
QWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5lZGVuQWN0
aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+cHJvbWlzZVRpbWVyLnB0
cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwog
fQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVi
dWdnZXIqIGRlYnVnZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAK
aW5kZXggZWMwN2FjNDYzNTBkMmEzNDI5ZWEwOTg3NGUzZmRmMmRmZGE5ZTQ1MS4uNjZlY2Q1MzZm
ODEzZDAyOWM0OTdmMWFlYTdmMjE5ZWRmYzc1YjM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiV29ya2VyUnVu
TG9vcC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAKICNp
ZiBVU0UoR0xJQikKICNpbmNsdWRlIDxnbGliLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNmE4OGNhYTE0NGFlMjdm
YzdjMWYyZDVmMzNiY2QxMDhjYzEyMGE5ZS4uMjBhNmY4NTYxODU4YWRmYmUyZTJiYzE4ZWJmNzE1
MGI5N2FkMTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzcsMTEgKzM3LDExIEBACiAjaW5jbHVkZSAiV29ya2xl
dENvbnNvbGVDbGllbnQuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24u
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5
Q2FsbGJhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDUzYzJh
YzNiOWIzNmUzNGNjOThiNDdjMmJhNzliZTcyMGEwOTBmLi5lNjlkYTJmZGFiZjA5MGQyNTdjYWMx
Zjg5MDg3ZjdlZDY5YTA4ZmYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDctMTcgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3Vr
ZSBTdXp1a2kuCisKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRp
b25yZWdpc3RyeS5qczogQWRkZWQuCisgICAgICAgIChtYWtlV2Vha1JlZik6CisgICAgICAgICh0
dXJuRXZlbnRMb29wKToKKyAgICAgICAgKGFzeW5jIHRlc3QpOgorICAgICAgICAqIGpzL3VudGl0
bGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0
cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy93ZWFrcmVmLWZpbmFsaXphdGlv
bnJlZ2lzdHJ5Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBm
b3IgY2FudmFzIGNhcHR1cmVTdHJlYW0sIHRlc3RzIGZhaWxpbmcgc2luY2UgdGhleSB3ZXJlIGFk
ZGVkIGluIHIyMTM1OTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93
ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IyMmRjMzlk
ZTgwYjRkZDlkMWRlNGZiZDA0ZDMxZDMzMTYxNGVlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzCkBA
IC0wLDAgKzEsNTUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz10cnVlIikK
KworYXN5bmNUZXN0U3RhcnQoMSk7Cit2YXIgb2JqZWN0cyA9IFtdOwordmFyIHdlYWtSZWZzID0g
W107Cit2YXIgZmluYWxpemVyQ2FsbGVkID0gZmFsc2U7Cit2YXIgZmluYWxpemF0aW9uUmVnaXN0
cnkgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4gZmluYWxpemVyQ2FsbGVkID0gdHJ1
ZSk7CitmdW5jdGlvbiBtYWtlV2Vha1JlZigpIHsgcmV0dXJuIG5ldyBXZWFrUmVmKHsgZm9vOiAx
IH0pOyB9Citub0lubGluZShtYWtlV2Vha1JlZik7CisKKy8vIEF0IHRoZSB0aW1lIG9mIHdyaXRp
bmcgdGhpcyB0ZXN0IHN0YW5kYWxvbmUtcHJlLmpzIHByaW50cyBuZXdsaW5lcyBzbGlnaHRseSBk
aWZmZXJlbnRseSBmcm9tIGpzLXRlc3QtcHJlLmpzIGZvciBhc3luYyB0ZXN0cyBzbyB3ZSBkb24n
dCB1c2UgdGhlIHNob3VsZEJlIGhlbHBlcnMuLi4KK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24s
IG1zZyA9ICIiKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihtc2cpOworfQorCitsZXQgbG9vcENvdW50ID0gMTAwMDsKK2Z1bmN0aW9uIHR1cm5FdmVudExv
b3AoKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKKyAgICAg
ICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBnYygpOworICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICB9LCAwKTsKKyAgICB9KTsKK30KKwordmFyIGk7Cithc3luYyBmdW5j
dGlvbiB0ZXN0KCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcENvdW50OyBpKyspIHsK
KyAgICAgICAgbGV0IHdlYWsgPSBtYWtlV2Vha1JlZigpOworICAgICAgICB3ZWFrUmVmcy5wdXNo
KHdlYWspOworICAgICAgICBvYmplY3RzLnB1c2god2Vhay5kZXJlZigpKTsKKyAgICAgICAgZmlu
YWxpemF0aW9uUmVnaXN0cnkucmVnaXN0ZXIod2Vhay5kZXJlZigpKTsKKyAgICB9CisKKyAgICBh
d2FpdCB0dXJuRXZlbnRMb29wKCk7CisKKyAgICBhc3NlcnQoZmluYWxpemVyQ2FsbGVkID09PSBm
YWxzZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxvb3BDb3VudDsgaSsrKQorICAgICAgICBhc3Nl
cnQod2Vha1JlZnNbaV0uZGVyZWYoKSA9PT0gb2JqZWN0c1tpXSwgImZhaWxlZCBvbiBpdGVyYXRp
b246ICIgKyBpKTsKKworICAgIG9iamVjdHMubGVuZ3RoID0gMDsKKyAgICBvYmplY3RzID0gbnVs
bDsKKworICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsKKyAgICAvLyBXZSBuZWVkIHRvIHR1cm4g
dGhlIGV2ZW50IGxvb3AgYWdhaW4gc2luY2UgRlIgbWF5IG5vdCBoYXZlIGNhbGxlZCB0aGUgY2Fs
bGJhY2sgaW4gdGhlIGxhc3QgdHVybi4KKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7CisKKyAg
ICBhc3NlcnQoZmluYWxpemVyQ2FsbGVkID09PSB0cnVlKTsKKyAgICBhc3NlcnQod2Vha1JlZnMu
c29tZSgod2Vha1JlZikgPT4gd2Vha1JlZi5kZXJlZigpID09PSBudWxsKSA9PT0gdHJ1ZSk7CisK
KyAgICBhc3luY1Rlc3RQYXNzZWQoKTsKK30KKwordGVzdCgpLmNhdGNoKGUgPT4gZGVidWcoZSkp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvdW50aXRsZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL3VudGl0bGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MwZTFjYjcwNWE5ZDc3OTA4MDRjNjk4NTI3
Yzg0MzIxM2Q0YWQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3VudGl0bGVk
Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0tLXVzZVdl
YWtSZWZzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbi1yZWdpc3RyeS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZp
bmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYt
ZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZTVlZWVkYmYx
YjQzNWY5NmMzYTIwYmY4MTQwMWFlZTQzMzE5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lz
dHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDFkN2NmNDdkNGEzNDE2OThiZDBkNTVlZDZhODg5MGJmZTQxMjc0OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVn
aXN0cnkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0t
dXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNmMwOTJhODU3NDA2ZDJmYTcyZjNlNzdhMTJlNjhiZTkx
MzRkNDRlLi5iYzkwM2M5OTQwNjIzOTkxZjMwOWFlNGZlZWJkMTQ1NmRmMWY0NThhIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExOCBAQAorMjAyMC0wNy0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmluYWxpemF0aW9uUmVnaXN0cmllcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODg4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBTaGFtZWxlc3NseSBj
b3B5IHY4J3MgdGVzdHMgYW5kIHJlZmFjdG9yIHRoZW0gdG8gd29yayB3aXRoIGNvbnNlcnZhdGl2
ZSBHQy4KKworICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qczogQWRkZWQu
CisgICAgICAgIChNanNVbml0QXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAoTWpzVW5pdEFzc2Vy
dGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAg
IChjbGFzc09mKToKKyAgICAgICAgKFZhbHVlT2YpOgorICAgICAgICAocHJldHR5UHJpbnRlZCk6
CisgICAgICAgIChwcmV0dHlQcmludGVkQXJyYXlFbGVtZW50KToKKyAgICAgICAgKGZhaWxXaXRo
TWVzc2FnZSk6CisgICAgICAgIChmb3JtYXRGYWlsdXJlVGV4dCk6CisgICAgICAgIChmYWlsKToK
KyAgICAgICAgKGRlZXBPYmplY3RFcXVhbHMpOgorICAgICAgICAoZGVlcEVxdWFscyk6CisgICAg
ICAgIChhc3NlcnRTYW1lKToKKyAgICAgICAgKGFzc2VydE5vdFNhbWUpOgorICAgICAgICAoYXNz
ZXJ0RXF1YWxzKToKKyAgICAgICAgKGFzc2VydE5vdEVxdWFscyk6CisgICAgICAgIChhc3NlcnRF
cXVhbHNEZWx0YSk6CisgICAgICAgIChhc3NlcnRBcnJheUVxdWFscyk6CisgICAgICAgIChhc3Nl
cnRQcm9wZXJ0aWVzRXF1YWwpOgorICAgICAgICAoYXNzZXJ0VG9TdHJpbmdFcXVhbHMpOgorICAg
ICAgICAoYXNzZXJ0VHJ1ZSk6CisgICAgICAgIChhc3NlcnRGYWxzZSk6CisgICAgICAgIChhc3Nl
cnROdWxsKToKKyAgICAgICAgKGFzc2VydE5vdE51bGwpOgorICAgICAgICAoZXhlY3V0ZUNvZGUp
OgorICAgICAgICAoY2hlY2tFeGNlcHRpb24pOgorICAgICAgICAoYXNzZXJ0VGhyb3dzKToKKyAg
ICAgICAgKGFzc2VydFRocm93c0VxdWFscyk6CisgICAgICAgIChhc3NlcnRUaHJvd3NBc3luYyk6
CisgICAgICAgIChhc3NlcnRJbnN0YW5jZW9mKToKKyAgICAgICAgKGFzc2VydERvZXNOb3RUaHJv
dyk6CisgICAgICAgIChhc3NlcnRVbnJlYWNoYWJsZSk6CisgICAgICAgIChhc3NlcnRDb250YWlu
cyk6CisgICAgICAgIChhc3NlcnRNYXRjaGVzKToKKyAgICAgICAgKGNvbmNhdGVuYXRlRXJyb3Jz
KToKKyAgICAgICAgKGFzc2VydFByb21pc2VSZXN1bHQpOgorICAgICAgICAoT3B0aW1pemF0aW9u
U3RhdHVzKToKKyAgICAgICAgKGFzc2VydFVub3B0aW1pemVkKToKKyAgICAgICAgKGFzc2VydE9w
dGltaXplZCk6CisgICAgICAgIChpc05ldmVyT3B0aW1pemVMaXRlTW9kZSk6CisgICAgICAgIChp
c05ldmVyT3B0aW1pemUpOgorICAgICAgICAoaXNBbHdheXNPcHRpbWl6ZSk6CisgICAgICAgIChp
c0ludGVycHJldGVkKToKKyAgICAgICAgKGlzT3B0aW1pemVkKToKKyAgICAgICAgKGlzVHVyYm9G
YW5uZWQpOgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNl
KToKKyAgICAgICAgKiBzdHJlc3MvdjgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczog
QWRkZWQuCisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3Mvdjgt
Y2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qczogQWRkZWQuCisgICAgICAgIChs
ZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9uLXJlZ2lz
dHJ5LWJhc2ljcy5qczogQWRkZWQuCisgICAgICAgIChUZXN0Q29uc3RydWN0RmluYWxpemF0aW9u
UmVnaXN0cnkpOgorICAgICAgICAoVGVzdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JD
YWxsQXNGdW5jdGlvbik6CisgICAgICAgIChUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0
cnlDbGVhbnVwTm90Q2FsbGFibGUpOgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlv
blJlZ2lzdHJ5V2l0aE5vbkNhbGxhYmxlUHJveHlBc0NsZWFudXApOgorICAgICAgICAoVGVzdFJl
Z2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUpOgorICAgICAgICAoVGVzdFJlZ2lzdGVy
V2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RVbnJlZ2lzdGVyV2l0
aE5vbkV4aXN0ZW50S2V5KToKKyAgICAgICAgKFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFsaXph
dGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RXZWFrUmVmQ29uc3RydWN0b3JXaXRoTm9uT2Jq
ZWN0KToKKyAgICAgICAgKFRlc3RXZWFrUmVmV2l0aFByb3h5KToKKyAgICAgICAgKiBzdHJlc3Mv
djgtZmluYWxpemF0aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanM6IEFkZGVkLgorICAgICAgICAo
bGV0LmNsZWFudXApOgorICAgICAgICAoc2V0VGltZW91dCk6CisgICAgICAgICogc3RyZXNzL3Y4
LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAg
ICAqIHN0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAt
bXVsdGlwbGUtdGltZXMuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXAwKToKKyAgICAg
ICAgKGxldC5jbGVhbnVwMSk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAg
KiBzdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanM6IEFk
ZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6
CisgICAgICAgICogc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFudXAuanM6IEFkZGVk
LgorICAgICAgICAobGV0LnJlZW50cmFudF9nYyk6CisgICAgICAgIChzZXRUaW1lb3V0KToKKyAg
ICAgICAgKiBzdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVl
dWUuanM6IEFkZGVkLgorICAgICAgICAoaS5yZWdpc3RyaWVzLnB1c2gubmV3LkZpbmFsaXphdGlv
blJlZ2lzdHJ5KToKKyAgICAgICAgKHJlZ2lzdHJpZXMuZm9yRWFjaCk6CisgICAgICAgICogc3Ry
ZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51
cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5y
ZWdpc3Rlci1hZnRlci1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToK
KyAgICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lz
dGVyLWJlZm9yZS1jbGVhbnVwLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAg
ICAgICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVy
LWNhbGxlZC10d2ljZS5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAg
IChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNp
ZGUtY2xlYW51cDIuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAo
bGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRl
LWNsZWFudXAzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxl
dC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLW1hbnkuanM6
IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVu
Yyk6CisgICAgICAgICogc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzOiBBZGRlZC4K
KyAgICAgICAgKEZSLm5ldy5GaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgICh0cnlBZ2Fp
bik6CisKIDIwMjAtMDctMTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeGVkIHJlZ3Jlc3Npb24gZHVlIHRvIHIyNjQ1MDc6IE1hdGgue21pbnxtYXh9IGluZXF1
YWxpdHkgdGVzdCBzaG91bGQgdXNlIERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQgaW5zdGVhZCBE
b3VibGVOb3RFcXVhbEFuZE9yZGVyZWQuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZXNv
dXJjZXMvdjgtbWpzdW5pdC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy92OC1tanN1bml0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA3NzQ2MWY3NGM5MDIyMzIxZmM2MGU2ODZmNzk1ZDUwZTM5Mjk4MTYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpzdW5pdC5q
cwpAQCAtMCwwICsxLDgwOSBAQAorLy8gQ29weXJpZ2h0IDIwMDggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlv
biBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkgeworICB0aGlzLm1lc3NhZ2UgPSBtZXNz
YWdlOworICAvLyBUZW1wb3JhcmlseSBpbnN0YWxsIGEgY3VzdG9tIHN0YWNrIHRyYWNlIGZvcm1h
dHRlciBhbmQgcmVzdG9yZSB0aGUKKyAgLy8gcHJldmlvdXMgdmFsdWUuCisgIGxldCBwcmV2UHJl
cGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsKKyAgdHJ5IHsKKyAgICBF
cnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJlU3Rh
Y2tUcmFjZTsKKyAgICAvLyBUaGlzIGFsbG93cyBmZXRjaGluZyB0aGUgc3RhY2sgdHJhY2UgdXNp
bmcgVHJ5Q2F0Y2g6OlN0YWNrVHJhY2UuCisgICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcigiTWpz
VW5pdEFzc2VydGlvbkVycm9yIikuc3RhY2s7CisgIH0gZmluYWxseSB7CisgICAgRXJyb3IucHJl
cGFyZVN0YWNrVHJhY2UgPSBwcmV2UHJlcGFyZVN0YWNrVHJhY2U7CisgIH0KK30KKworLyoKKyAq
IFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbiBhbGwgbWluaSBqc3VuaXQgdGVzdCBjYXNlcy4gIFRo
ZSB0ZXN0CisgKiBmcmFtZXdvcmsgZXhwZWN0cyBsaW5lcyB0aGF0IHNpZ25hbCBmYWlsZWQgdGVz
dHMgdG8gc3RhcnQgd2l0aAorICogdGhlIGYtd29yZCBhbmQgaWdub3JlIGFsbCBvdGhlciBsaW5l
cy4KKyAqLworCitNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5tZXNzYWdlICsgIlxuXG5TdGFjazogIiArIHRoaXMu
c3RhY2s7Cit9OworCisKKy8vIEV4cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgdGhlIHNhbWUgb2Jq
ZWN0cywgb3IgdGhlIHNhbWUgcHJpbWl0aXZlCisvLyB2YWx1ZXMuCisvLyBGb3Iga25vd24gcHJp
bWl0aXZlIHZhbHVlcywgcGxlYXNlIHVzZSBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0U2FtZTsK
KworLy8gSW52ZXJzZSBvZiBhc3NlcnRTYW1lLgordmFyIGFzc2VydE5vdFNhbWU7CisKKy8vIEV4
cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9y
IGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcg
aW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3Rz
LCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFy
cmF5IG9iamVjdHMpLgordmFyIGFzc2VydEVxdWFsczsKKworLy8gRGVlcCBlcXVhbGl0eSBwcmVk
aWNhdGUgdXNlZCBieSBhc3NlcnRFcXVhbHMuCit2YXIgZGVlcEVxdWFsczsKKworLy8gRXhwZWN0
ZWQgYW5kIGZvdW5kIHZhbHVlcyBhcmUgbm90IGlkZW50aWNhbCBwcmltaXRpdmUgdmFsdWVzIG9y
IGZ1bmN0aW9ucworLy8gb3Igc2ltaWxhcmx5IHN0cnVjdHVyZWQgb2JqZWN0cyAoY2hlY2tpbmcg
aW50ZXJuYWwgcHJvcGVydGllcworLy8gb2YsIGUuZy4sIE51bWJlciBhbmQgRGF0ZSBvYmplY3Rz
LCB0aGUgZWxlbWVudHMgb2YgYXJyYXlzCisvLyBhbmQgdGhlIHByb3BlcnRpZXMgb2Ygbm9uLUFy
cmF5IG9iamVjdHMpLgordmFyIGFzc2VydE5vdEVxdWFsczsKKworLy8gVGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiBleHBlY3RlZCBhbmQgZm91bmQgdmFsdWUgaXMgd2l0aGluIGNlcnRhaW4gdG9sZXJh
bmNlLgordmFyIGFzc2VydEVxdWFsc0RlbHRhOworCisvLyBUaGUgZm91bmQgb2JqZWN0IGlzIGFu
IEFycmF5IHdpdGggdGhlIHNhbWUgbGVuZ3RoIGFuZCBlbGVtZW50cworLy8gYXMgdGhlIGV4cGVj
dGVkIG9iamVjdC4gVGhlIGV4cGVjdGVkIG9iamVjdCBkb2Vzbid0IG5lZWQgdG8gYmUgYW4gQXJy
YXksCisvLyBhcyBsb25nIGFzIGl0J3MgImFycmF5LWlzaCIuCit2YXIgYXNzZXJ0QXJyYXlFcXVh
bHM7CisKKy8vIFRoZSBmb3VuZCBvYmplY3QgbXVzdCBoYXZlIHRoZSBzYW1lIGVudW1lcmFibGUg
cHJvcGVydGllcyBhcyB0aGUKKy8vIGV4cGVjdGVkIG9iamVjdC4gVGhlIHR5cGUgb2Ygb2JqZWN0
IGlzbid0IGNoZWNrZWQuCit2YXIgYXNzZXJ0UHJvcGVydGllc0VxdWFsOworCisvLyBBc3NlcnQg
dGhhdCB0aGUgc3RyaW5nIGNvbnZlcnNpb24gb2YgdGhlIGZvdW5kIHZhbHVlIGlzIGVxdWFsIHRv
CisvLyB0aGUgZXhwZWN0ZWQgc3RyaW5nLiBPbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRp
YmlsaXR5LCBwbGVhc2UKKy8vIGNoZWNrIHRoZSByZWFsIHN0cnVjdHVyZSBvZiB0aGUgZm91bmQg
dmFsdWUuCit2YXIgYXNzZXJ0VG9TdHJpbmdFcXVhbHM7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBm
b3VuZCB2YWx1ZSBpcyB0cnVlLiBVc2Ugd2l0aCBib29sZWFuIGV4cHJlc3Npb25zCisvLyBmb3Ig
dGVzdHMgdGhhdCBkb2Vzbid0IGhhdmUgdGhlaXIgb3duIGFzc2VydFhYWCBmdW5jdGlvbi4KK3Zh
ciBhc3NlcnRUcnVlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgZmFsc2Uu
Cit2YXIgYXNzZXJ0RmFsc2U7CisKKy8vIENoZWNrcyB0aGF0IHRoZSBmb3VuZCB2YWx1ZSBpcyBu
dWxsLiBLZXB0IGZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksCisvLyBwbGVhc2UganVzdCB1
c2UgYXNzZXJ0RXF1YWxzKG51bGwsIGV4cGVjdGVkKS4KK3ZhciBhc3NlcnROdWxsOworCisvLyBD
aGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUgaXMgKm5vdCogbnVsbC4KK3ZhciBhc3NlcnROb3RO
dWxsOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIGZ1bmN0aW9uIG9yIGV2YWwgY29kZSB0
aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBpcyBh
biBleGNlcHRpb24gY29uc3RydWN0b3IgdGhhdCB0aGUKKy8vIHRocm93biBleGNlcHRpb24gaXMg
Y2hlY2tlZCBhZ2FpbnN0IHdpdGggImluc3RhbmNlb2YiLgorLy8gVGhlIG9wdGlvbmFsIHRoaXJk
IGFyZ3VtZW50IGlzIGEgbWVzc2FnZSB0eXBlIHN0cmluZyBvciBSZWdFeHAgb2JqZWN0IHRoYXQg
aXMKKy8vIGNvbXBhcmVkIHRvIHRoZSBtZXNzYWdlIG9mIHRoZSB0aHJvd24gZXhjZXB0aW9uLgor
dmFyIGFzc2VydFRocm93czsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0
aHJvd3MgYW4gZXhjZXB0aW9uLgorLy8gVGhlIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qg
dGhlIHNlY29uZCBhcmd1bWVudCB1c2luZyBhc3NlcnRFcXVhbHMuCit2YXIgYXNzZXJ0VGhyb3dz
RXF1YWxzOworCisvLyBBc3NlcnQgdGhhdCB0aGUgcGFzc2VkIHByb21pc2UgZG9lcyBub3QgcmVz
b2x2ZSwgYnV0IGV2ZW50dWFsbHkgdGhyb3dzIGFuCisvLyBleGNlcHRpb24uIFRoZSBvcHRpb25h
bCBzZWNvbmQgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisv
LyB0aHJvd24gZXhjZXB0aW9uIGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4K
Ky8vIFRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcg
b3IgUmVnRXhwIG9iamVjdCB0aGF0IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0
aGUgdGhyb3duIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnRUaHJvd3NBc3luYzsKKworLy8gQXNzZXJ0
IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNvZGUgZG9lcyBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uLgordmFyIGFzc2VydERvZXNOb3RUaHJvdzsKKworLy8gQXNzZXJ0cyB0aGF0IHRo
ZSBmb3VuZCB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29uc3RydWN0b3IgcGFzc2VkCisv
LyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LgordmFyIGFzc2VydEluc3RhbmNlb2Y7CisKKy8vIEFz
c2VydCB0aGF0IHRoaXMgY29kZSBpcyBuZXZlciBleGVjdXRlZCAoaS5lLiwgYWx3YXlzIGZhaWxz
IGlmIGV4ZWN1dGVkKS4KK3ZhciBhc3NlcnRVbnJlYWNoYWJsZTsKKworLy8gQXNzZXJ0IHRoYXQg
dGhlIGZ1bmN0aW9uIGNvZGUgaXMgKG5vdCkgb3B0aW1pemVkLiAgSWYgIm5vIHN5bmMiIGlzIHBh
c3NlZAorLy8gYXMgc2Vjb25kIGFyZ3VtZW50LCB3ZSBkbyBub3Qgd2FpdCBmb3IgdGhlIGNvbmN1
cnJlbnQgb3B0aW1pemF0aW9uIHRocmVhZCB0bworLy8gZmluaXNoIHdoZW4gcG9sbGluZyBmb3Ig
b3B0aW1pemF0aW9uIHN0YXR1cy4KKy8vIE9ubHkgd29ya3Mgd2l0aCAtLWFsbG93LW5hdGl2ZXMt
c3ludGF4LgordmFyIGFzc2VydE9wdGltaXplZDsKK3ZhciBhc3NlcnRVbm9wdGltaXplZDsKKwor
Ly8gQXNzZXJ0IHRoYXQgYSBzdHJpbmcgY29udGFpbnMgYW5vdGhlciBleHBlY3RlZCBzdWJzdHJp
bmcuCit2YXIgYXNzZXJ0Q29udGFpbnM7CisKKy8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIG1hdGNo
ZXMgYSBnaXZlbiByZWdleC4KK3ZhciBhc3NlcnRNYXRjaGVzOworCisvLyBBc3NlcnQgdGhhdCBh
IHByb21pc2UgcmVzb2x2ZXMgb3IgcmVqZWN0cy4KKy8vIFBhcmFtZXRlcnM6CisvLyB7cHJvbWlz
ZX0gLSB0aGUgcHJvbWlzZQorLy8ge3N1Y2Nlc3N9IC0gb3B0aW9uYWwgLSBhIGNhbGxiYWNrIHdo
aWNoIGlzIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlCisvLyAgICAgICAgICAgICByZXNv
bHZpbmcgcHJvbWlzZS4KKy8vICB7ZmFpbH0gLSAgIG9wdGlvbmFsIC0gYSBjYWxsYmFjayB3aGlj
aCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAgcmVqZWN0
aW5nIHByb21pc2UuIElmIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGJ1dCBubyB7ZmFpbH0KKy8v
ICAgICAgICAgICAgIGNhbGxiYWNrIGlzIHNldCwgdGhlIGVycm9yIGlzIHByb3BhZ2F0ZWQgb3V0
IG9mIHRoZSBwcm9taXNlCisvLyAgICAgICAgICAgICBjaGFpbi4KK3ZhciBhc3NlcnRQcm9taXNl
UmVzdWx0OworCit2YXIgcHJvbWlzZVRlc3RDaGFpbjsKK3ZhciBwcm9taXNlVGVzdENvdW50ID0g
MDsKKworLy8gVGhlc2UgYml0cyBtdXN0IGJlIGluIHN5bmMgd2l0aCBiaXRzIGRlZmluZWQgaW4g
UnVudGltZV9HZXRPcHRpbWl6YXRpb25TdGF0dXMKK3ZhciBWOE9wdGltaXphdGlvblN0YXR1cyA9
IHsKKyAga0lzRnVuY3Rpb246IDEgPDwgMCwKKyAga05ldmVyT3B0aW1pemU6IDEgPDwgMSwKKyAg
a0Fsd2F5c09wdGltaXplOiAxIDw8IDIsCisgIGtNYXliZURlb3B0ZWQ6IDEgPDwgMywKKyAga09w
dGltaXplZDogMSA8PCA0LAorICBrVHVyYm9GYW5uZWQ6IDEgPDwgNSwKKyAga0ludGVycHJldGVk
OiAxIDw8IDYsCisgIGtNYXJrZWRGb3JPcHRpbWl6YXRpb246IDEgPDwgNywKKyAga01hcmtlZEZv
ckNvbmN1cnJlbnRPcHRpbWl6YXRpb246IDEgPDwgOCwKKyAga09wdGltaXppbmdDb25jdXJyZW50
bHk6IDEgPDwgOSwKKyAga0lzRXhlY3V0aW5nOiAxIDw8IDEwLAorICBrVG9wbW9zdEZyYW1lSXNU
dXJib0Zhbm5lZDogMSA8PCAxMSwKKyAga0xpdGVNb2RlOiAxIDw8IDEyLAorICBrTWFya2VkRm9y
RGVvcHRpbWl6YXRpb246IDEgPDwgMTMsCit9OworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1saXRl
LW1vZGUgaXMgb24gYW5kIHdlIGNhbid0IGV2ZXIgdHVybiBvbiBvcHRpbWl6YXRpb24uCit2YXIg
aXNOZXZlck9wdGltaXplTGl0ZU1vZGU7CisKKy8vIFJldHVybnMgdHJ1ZSBpZiAtLW5vLW9wdCBt
b2RlIGlzIG9uLgordmFyIGlzTmV2ZXJPcHRpbWl6ZTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0t
YWx3YXlzLW9wdCBtb2RlIGlzIG9uLgordmFyIGlzQWx3YXlzT3B0aW1pemU7CisKKy8vIFJldHVy
bnMgdHJ1ZSBpZiBnaXZlbiBmdW5jdGlvbiBpbiBpbnRlcnByZXRlZC4KK3ZhciBpc0ludGVycHJl
dGVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMgb3B0aW1pemVkLgor
dmFyIGlzT3B0aW1pemVkOworCisvLyBSZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaXMg
Y29tcGlsZWQgYnkgVHVyYm9GYW4uCit2YXIgaXNUdXJib0Zhbm5lZDsKKworLy8gTW9ua2V5LXBh
dGNoYWJsZSBhbGwtcHVycG9zZSBmYWlsdXJlIGhhbmRsZXIuCit2YXIgZmFpbFdpdGhNZXNzYWdl
OworCisvLyBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgZmFpbHVyZSB0ZXh0LiAgVXNlZCBieSB0ZXN0
LWFzeW5jLmpzLgordmFyIGZvcm1hdEZhaWx1cmVUZXh0OworCisvLyBSZXR1cm5zIGEgcHJldHR5
LXByaW50ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXNzZWQgdmFsdWUuCit2YXIg
cHJldHR5UHJpbnRlZDsKKworKGZ1bmN0aW9uICgpIHsgIC8vIFNjb3BlIGZvciB1dGlsaXR5IGZ1
bmN0aW9ucy4KKworICB2YXIgT2JqZWN0UHJvdG90eXBlVG9TdHJpbmcgPSBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nOworICB2YXIgTnVtYmVyUHJvdG90eXBlVmFsdWVPZiA9IE51bWJlci5wcm90
b3R5cGUudmFsdWVPZjsKKyAgdmFyIEJvb2xlYW5Qcm90b3R5cGVWYWx1ZU9mID0gQm9vbGVhbi5w
cm90b3R5cGUudmFsdWVPZjsKKyAgdmFyIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2YgPSBTdHJpbmcu
cHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBEYXRlUHJvdG90eXBlVmFsdWVPZiA9IERhdGUucHJv
dG90eXBlLnZhbHVlT2Y7CisgIHZhciBSZWdFeHBQcm90b3R5cGVUb1N0cmluZyA9IFJlZ0V4cC5w
cm90b3R5cGUudG9TdHJpbmc7CisgIHZhciBBcnJheVByb3RvdHlwZUZvckVhY2ggPSBBcnJheS5w
cm90b3R5cGUuZm9yRWFjaDsKKyAgdmFyIEFycmF5UHJvdG90eXBlSm9pbiA9IEFycmF5LnByb3Rv
dHlwZS5qb2luOworICB2YXIgQXJyYXlQcm90b3R5cGVNYXAgPSBBcnJheS5wcm90b3R5cGUubWFw
OworICB2YXIgQXJyYXlQcm90b3R5cGVQdXNoID0gQXJyYXkucHJvdG90eXBlLnB1c2g7CisKKyAg
dmFyIEJpZ0ludFByb3RvdHlwZVZhbHVlT2Y7CisgIC8vIFRPRE8obmVpcyk6IFJlbW92ZSB0cnkt
Y2F0Y2ggb25jZSBCaWdJbnRzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuCisgIHRyeSB7CisgICAg
QmlnSW50UHJvdG90eXBlVmFsdWVPZiA9IEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZjsKKyAgfSBj
YXRjaCAoZSkge30KKworICBmdW5jdGlvbiBjbGFzc09mKG9iamVjdCkgeworICAgIC8vIEFyZ3Vt
ZW50IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLgorICAgIHZhciBzdHJpbmcgPSBPYmpl
Y3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iamVjdCk7CisgICAgLy8gU3RyaW5nIGhhcyBmb3Jt
YXQgW29iamVjdCA8Q2xhc3NOYW1lPl0uCisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoOCwg
c3RyaW5nLmxlbmd0aCAtIDEpOworICB9CisKKworICBmdW5jdGlvbiBWYWx1ZU9mKHZhbHVlKSB7
CisgICAgc3dpdGNoIChjbGFzc09mKHZhbHVlKSkgeworICAgICAgY2FzZSAiTnVtYmVyIjoKKyAg
ICAgICAgcmV0dXJuIE51bWJlclByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBj
YXNlICJCaWdJbnQiOgorICAgICAgICByZXR1cm4gQmlnSW50UHJvdG90eXBlVmFsdWVPZi5jYWxs
KHZhbHVlKTsKKyAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgIHJldHVybiBTdHJpbmdQcm90
b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAgICAg
IHJldHVybiBCb29sZWFuUHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2Ug
IkRhdGUiOgorICAgICAgICByZXR1cm4gRGF0ZVByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICB9CisKKwor
ICBwcmV0dHlQcmludGVkID0gZnVuY3Rpb24gcHJldHR5UHJpbnRlZCh2YWx1ZSkgeworICAgIHN3
aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICByZXR1
cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpOworICAgICAgY2FzZSAiYmlnaW50IjoKKyAgICAgICAg
cmV0dXJuIFN0cmluZyh2YWx1ZSkgKyAibiI7CisgICAgICBjYXNlICJudW1iZXIiOgorICAgICAg
ICBpZiAodmFsdWUgPT09IDAgJiYgKDEgLyB2YWx1ZSkgPCAwKSByZXR1cm4gIi0wIjsKKyAgICAg
ICAgLy8gRkFMTFRIUk9VR0guCisgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgIGNhc2UgInVu
ZGVmaW5lZCI6CisgICAgICBjYXNlICJmdW5jdGlvbiI6CisgICAgICBjYXNlICJzeW1ib2wiOgor
ICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKKyAgICAgIGNhc2UgIm9iamVjdCI6CisgICAg
ICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICJudWxsIjsKKyAgICAgICAgdmFyIG9iamVj
dENsYXNzID0gY2xhc3NPZih2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAob2JqZWN0Q2xhc3MpIHsK
KyAgICAgICAgICBjYXNlICJOdW1iZXIiOgorICAgICAgICAgIGNhc2UgIkJpZ0ludCI6CisgICAg
ICAgICAgY2FzZSAiU3RyaW5nIjoKKyAgICAgICAgICBjYXNlICJCb29sZWFuIjoKKyAgICAgICAg
ICBjYXNlICJEYXRlIjoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RDbGFzcyArICIoIiArIHBy
ZXR0eVByaW50ZWQoVmFsdWVPZih2YWx1ZSkpICsgIikiOworICAgICAgICAgIGNhc2UgIlJlZ0V4
cCI6CisgICAgICAgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcuY2FsbCh2YWx1
ZSk7CisgICAgICAgICAgY2FzZSAiQXJyYXkiOgorICAgICAgICAgICAgdmFyIG1hcHBlZCA9IEFy
cmF5UHJvdG90eXBlTWFwLmNhbGwoCisgICAgICAgICAgICAgICAgdmFsdWUsIHByZXR0eVByaW50
ZWRBcnJheUVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGpvaW5lZCA9IEFycmF5UHJvdG90eXBl
Sm9pbi5jYWxsKG1hcHBlZCwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiAiWyIgKyBqb2luZWQg
KyAiXSI7CisgICAgICAgICAgY2FzZSAiVWludDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50
OEFycmF5IjoKKyAgICAgICAgICBjYXNlICJJbnQxNkFycmF5IjoKKyAgICAgICAgICBjYXNlICJV
aW50MTZBcnJheSI6CisgICAgICAgICAgY2FzZSAiVWludDMyQXJyYXkiOgorICAgICAgICAgIGNh
c2UgIkludDMyQXJyYXkiOgorICAgICAgICAgIGNhc2UgIkZsb2F0MzJBcnJheSI6CisgICAgICAg
ICAgY2FzZSAiRmxvYXQ2NEFycmF5IjoKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVBy
b3RvdHlwZUpvaW4uY2FsbCh2YWx1ZSwgIiwiKTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RD
bGFzcyArICIoWyIgKyBqb2luZWQgKyAiXSkiOworICAgICAgICAgIGNhc2UgIk9iamVjdCI6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IG9iamVjdENsYXNzICsgIigiICsgU3RyaW5nKHZhbHVlKSArICIpIjsKKyAgICAgICAgfQorICAg
ICAgICAvLyBjbGFzc09mKCkgcmV0dXJuZWQgIk9iamVjdCIuCisgICAgICAgIHZhciBuYW1lID0g
dmFsdWUuY29uc3RydWN0b3IubmFtZTsKKyAgICAgICAgaWYgKG5hbWUpIHJldHVybiBuYW1lICsg
IigpIjsKKyAgICAgICAgcmV0dXJuICJPYmplY3QoKSI7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gIi0tIHVua25vd24gdmFsdWUgLS0iOworICAgIH0KKyAgfQorCisKKyAgZnVuY3Rp
b24gcHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCh2YWx1ZSwgaW5kZXgsIGFycmF5KSB7CisgICAg
aWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShpbmRleCBpbiBhcnJheSkpIHJldHVybiAiIjsK
KyAgICByZXR1cm4gcHJldHR5UHJpbnRlZCh2YWx1ZSk7CisgIH0KKworCisgIGZhaWxXaXRoTWVz
c2FnZSA9IGZ1bmN0aW9uIGZhaWxXaXRoTWVzc2FnZShtZXNzYWdlKSB7CisgICAgdGhyb3cgbmV3
IE1qc1VuaXRBc3NlcnRpb25FcnJvcihtZXNzYWdlKTsKKyAgfQorCisgIGZvcm1hdEZhaWx1cmVU
ZXh0ID0gZnVuY3Rpb24oZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQpIHsKKyAgICB2YXIg
bWVzc2FnZSA9ICJGYWlsIiArICJ1cmUiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAgLy8g
Rml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgorICAgICAgbWVzc2Fn
ZSArPSAiICgiICsgbmFtZV9vcHQgKyAiKSI7CisgICAgfQorCisgICAgdmFyIGZvdW5kVGV4dCA9
IHByZXR0eVByaW50ZWQoZm91bmQpOworICAgIGlmIChleHBlY3RlZFRleHQubGVuZ3RoIDw9IDQw
ICYmIGZvdW5kVGV4dC5sZW5ndGggPD0gNDApIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjogZXhwZWN0
ZWQgPCIgKyBleHBlY3RlZFRleHQgKyAiPiBmb3VuZCA8IiArIGZvdW5kVGV4dCArICI+IjsKKyAg
ICB9IGVsc2UgeworICAgICAgbWVzc2FnZSArPSAiOlxuZXhwZWN0ZWQ6XG4iICsgZXhwZWN0ZWRU
ZXh0ICsgIlxuZm91bmQ6XG4iICsgZm91bmRUZXh0OworICAgIH0KKyAgICByZXR1cm4gbWVzc2Fn
ZTsKKyAgfQorCisgIGZ1bmN0aW9uIGZhaWwoZXhwZWN0ZWRUZXh0LCBmb3VuZCwgbmFtZV9vcHQp
IHsKKyAgICByZXR1cm4gZmFpbFdpdGhNZXNzYWdlKGZvcm1hdEZhaWx1cmVUZXh0KGV4cGVjdGVk
VGV4dCwgZm91bmQsIG5hbWVfb3B0KSk7CisgIH0KKworCisgIGZ1bmN0aW9uIGRlZXBPYmplY3RF
cXVhbHMoYSwgYikgeworICAgIHZhciBhUHJvcHMgPSBPYmplY3Qua2V5cyhhKTsKKyAgICBhUHJv
cHMuc29ydCgpOworICAgIHZhciBiUHJvcHMgPSBPYmplY3Qua2V5cyhiKTsKKyAgICBiUHJvcHMu
c29ydCgpOworICAgIGlmICghZGVlcEVxdWFscyhhUHJvcHMsIGJQcm9wcykpIHsKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhUHJvcHMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgIGlmICghZGVlcEVxdWFscyhhW2FQcm9wc1tpXV0sIGJbYVByb3BzW2ld
XSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKKyAgfQorCisKKyAgZGVlcEVxdWFscyA9IGZ1bmN0aW9uIGRlZXBFcXVhbHMoYSwgYikg
eworICAgIGlmIChhID09PSBiKSB7CisgICAgICAvLyBDaGVjayBmb3IgLTAuCisgICAgICBpZiAo
YSA9PT0gMCkgcmV0dXJuICgxIC8gYSkgPT09ICgxIC8gYik7CisgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgcmV0dXJuIGZhbHNlOworICAg
IGlmICh0eXBlb2YgYSA9PT0gIm51bWJlciIpIHJldHVybiBpc05hTihhKSAmJiBpc05hTihiKTsK
KyAgICBpZiAodHlwZW9mIGEgIT09ICJvYmplY3QiICYmIHR5cGVvZiBhICE9PSAiZnVuY3Rpb24i
KSByZXR1cm4gZmFsc2U7CisgICAgLy8gTmVpdGhlciBhIG5vciBiIGlzIHByaW1pdGl2ZS4KKyAg
ICB2YXIgb2JqZWN0Q2xhc3MgPSBjbGFzc09mKGEpOworICAgIGlmIChvYmplY3RDbGFzcyAhPT0g
Y2xhc3NPZihiKSkgcmV0dXJuIGZhbHNlOworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIlJlZ0V4
cCIpIHsKKyAgICAgIC8vIEZvciBSZWdFeHAsIGp1c3QgY29tcGFyZSBwYXR0ZXJuIGFuZCBmbGFn
cyB1c2luZyBpdHMgdG9TdHJpbmcuCisgICAgICByZXR1cm4gUmVnRXhwUHJvdG90eXBlVG9TdHJp
bmcuY2FsbChhKSA9PT0KKyAgICAgICAgICAgICBSZWdFeHBQcm90b3R5cGVUb1N0cmluZy5jYWxs
KGIpOworICAgIH0KKyAgICAvLyBGdW5jdGlvbnMgYXJlIG9ubHkgaWRlbnRpY2FsIHRvIHRoZW1z
ZWx2ZXMuCisgICAgaWYgKG9iamVjdENsYXNzID09PSAiRnVuY3Rpb24iKSByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG9iamVjdENsYXNzID09PSAiQXJyYXkiKSB7CisgICAgICB2YXIgZWxlbWVudENv
dW50ID0gMDsKKyAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgfQorICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIGlmICghZGVlcEVxdWFscyhhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNl
OworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChvYmplY3RDbGFz
cyA9PT0gIlN0cmluZyIgfHwgb2JqZWN0Q2xhc3MgPT09ICJOdW1iZXIiIHx8CisgICAgICBvYmpl
Y3RDbGFzcyA9PT0gIkJpZ0ludCIgfHwgb2JqZWN0Q2xhc3MgPT09ICJCb29sZWFuIiB8fAorICAg
ICAgb2JqZWN0Q2xhc3MgPT09ICJEYXRlIikgeworICAgICAgaWYgKFZhbHVlT2YoYSkgIT09IFZh
bHVlT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGRlZXBPYmplY3RFcXVh
bHMoYSwgYik7CisgIH0KKworICBhc3NlcnRTYW1lID0gZnVuY3Rpb24gYXNzZXJ0U2FtZShleHBl
Y3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKE9iamVjdC5pcyhleHBlY3RlZCwgZm91
bmQpKSByZXR1cm47CisgICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSwgZm91bmQsIG5h
bWVfb3B0KTsKKyAgfTsKKworICBhc3NlcnROb3RTYW1lID0gZnVuY3Rpb24gYXNzZXJ0Tm90U2Ft
ZShleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAgaWYgKCFPYmplY3QuaXMoZXhwZWN0
ZWQsIGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwoIm5vdCBzYW1lIGFzICIgKyBwcmV0dHlQcmlu
dGVkKGV4cGVjdGVkKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgfQorCisgIGFzc2VydEVxdWFscyA9
IGZ1bmN0aW9uIGFzc2VydEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAg
aWYgKCFkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAgICAgIGZhaWwocHJldHR5UHJp
bnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgICAgfQorICB9OworCisgIGFzc2Vy
dE5vdEVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFscyhleHBlY3RlZCwgZm91bmQsIG5h
bWVfb3B0KSB7CisgICAgaWYgKGRlZXBFcXVhbHMoZm91bmQsIGV4cGVjdGVkKSkgeworICAgICAg
ZmFpbCgibm90IGVxdWFscyB0byAiICsgcHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBu
YW1lX29wdCk7CisgICAgfQorICB9OworCisKKyAgYXNzZXJ0RXF1YWxzRGVsdGEgPQorICAgICAg
ZnVuY3Rpb24gYXNzZXJ0RXF1YWxzRGVsdGEoZXhwZWN0ZWQsIGZvdW5kLCBkZWx0YSwgbmFtZV9v
cHQpIHsKKyAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWQgLSBmb3VuZCkgPiBkZWx0YSkgeworICAg
ICAgZmFpbChwcmV0dHlQcmludGVkKGV4cGVjdGVkKSArICIgKy0gIiArIHByZXR0eVByaW50ZWQo
ZGVsdGEpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEFycmF5
RXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0QXJyYXlFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1l
X29wdCkgeworICAgIHZhciBzdGFydCA9ICIiOworICAgIGlmIChuYW1lX29wdCkgeworICAgICAg
c3RhcnQgPSBuYW1lX29wdCArICIgLSAiOworICAgIH0KKyAgICBhc3NlcnRFcXVhbHMoZXhwZWN0
ZWQubGVuZ3RoLCBmb3VuZC5sZW5ndGgsIHN0YXJ0ICsgImFycmF5IGxlbmd0aCIpOworICAgIGlm
IChleHBlY3RlZC5sZW5ndGggPT09IGZvdW5kLmxlbmd0aCkgeworICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICBhc3NlcnRFcXVhbHMoZXhw
ZWN0ZWRbaV0sIGZvdW5kW2ldLAorICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKyAiYXJyYXkg
ZWxlbWVudCBhdCBpbmRleCAiICsgaSk7CisgICAgICB9CisgICAgfQorICB9OworCisKKyAgYXNz
ZXJ0UHJvcGVydGllc0VxdWFsID0gZnVuY3Rpb24gYXNzZXJ0UHJvcGVydGllc0VxdWFsKGV4cGVj
dGVkLCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWVfb3B0KSB7CisgICAgLy8gQ2hlY2sgcHJvcGVydGllcyBvbmx5Lgor
ICAgIGlmICghZGVlcE9iamVjdEVxdWFscyhleHBlY3RlZCwgZm91bmQpKSB7CisgICAgICBmYWls
KGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydFRv
U3RyaW5nRXF1YWxzID0gZnVuY3Rpb24gYXNzZXJ0VG9TdHJpbmdFcXVhbHMoZXhwZWN0ZWQsIGZv
dW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWVfb3B0KSB7CisgICAgaWYgKGV4cGVjdGVkICE9PSBTdHJpbmcoZm91bmQpKSB7Cisg
ICAgICBmYWlsKGV4cGVjdGVkLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisg
IGFzc2VydFRydWUgPSBmdW5jdGlvbiBhc3NlcnRUcnVlKHZhbHVlLCBuYW1lX29wdCkgeworICAg
IGFzc2VydEVxdWFscyh0cnVlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0
RmFsc2UgPSBmdW5jdGlvbiBhc3NlcnRGYWxzZSh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBhc3Nl
cnRFcXVhbHMoZmFsc2UsIHZhbHVlLCBuYW1lX29wdCk7CisgIH07CisKKworICBhc3NlcnROdWxs
ID0gZnVuY3Rpb24gYXNzZXJ0TnVsbCh2YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUg
IT09IG51bGwpIHsKKyAgICAgIGZhaWwoIm51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0K
KyAgfTsKKworCisgIGFzc2VydE5vdE51bGwgPSBmdW5jdGlvbiBhc3NlcnROb3ROdWxsKHZhbHVl
LCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgeworICAgICAgZmFpbCgibm90
IG51bGwiLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBleGVj
dXRlQ29kZShjb2RlKSB7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSAgcmV0
dXJuIGNvZGUoKTsKKyAgICBpZiAodHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnKSByZXR1cm4gZXZh
bChjb2RlKTsKKyAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICdHaXZlbiBjb2RlIGlzIG5l
aXRoZXIgZnVuY3Rpb24gbm9yIHN0cmluZywgYnV0ICcgKyAodHlwZW9mIGNvZGUpICsKKyAgICAg
ICAgJzogPCcgKyBwcmV0dHlQcmludGVkKGNvZGUpICsgJz4nKTsKKyAgfQorCisgIGZ1bmN0aW9u
IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsKKyAgICBpZiAodHlwZV9v
cHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVv
ZiB0eXBlX29wdCk7CisgICAgICBhc3NlcnRJbnN0YW5jZW9mKGUsIHR5cGVfb3B0KTsKKyAgICB9
CisgICAgLy8gaWdub3JlIGNhdXNlX29wdCBiZWNhdXNlIG91ciBlcnJvciBtZXNzYWdlcyBhcmUg
bm90IHRoZSBzYW1lIGFzIFY4J3MKKyAgICByZXR1cm47CisgICAgaWYgKFJlZ0V4cCAhPT0gdW5k
ZWZpbmVkICYmIGNhdXNlX29wdCBpbnN0YW5jZW9mIFJlZ0V4cCkgeworICAgICAgYXNzZXJ0TWF0
Y2hlcyhjYXVzZV9vcHQsIGUubWVzc2FnZSwgJ0Vycm9yIG1lc3NhZ2UnKTsKKyAgICB9IGVsc2Ug
aWYgKGNhdXNlX29wdCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBhc3NlcnRFcXVhbHMoY2F1c2Vf
b3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfQorICB9CisKKyAgYXNzZXJ0
VGhyb3dzID0gZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGNvZGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQp
IHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5l
ZCkgeworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3Ms
IHVua25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1
bmRlZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWls
V2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5
YmUgeW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIHRyeSB7CisgICAg
ICBleGVjdXRlQ29kZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBjaGVja0V4Y2Vw
dGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bGV0IG1zZyA9ICdEaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9
PSB1bmRlZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9
ICcsIGV4cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIGZhaWxXaXRoTWVzc2FnZShtc2cp
OworICB9OworCisgIGFzc2VydFRocm93c0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRocm93c0Vx
dWFscyhmdW4sIHZhbCkgeworICAgIHRyeSB7CisgICAgICBmdW4oKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICBhc3NlcnRTYW1lKHZhbCwgZSk7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IGZhaWxXaXRoTWVzc2FnZSgnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24sIGV4cGVjdGVkICcgKyBw
cmV0dHlQcmludGVkKHZhbCkpOworICB9OworCisgIGFzc2VydFRocm93c0FzeW5jID0gZnVuY3Rp
b24gYXNzZXJ0VGhyb3dzQXN5bmMocHJvbWlzZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgeworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlX29wdCA9PT0gdW5kZWZpbmVkKSB7Cisg
ICAgICBmYWlsV2l0aE1lc3NhZ2UoJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgdW5rbm93
biB0eXBlX29wdCBnaXZlbicpOworICAgIH0KKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5l
ZCAmJiB0eXBlb2YgdHlwZV9vcHQgIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIGZhaWxXaXRoTWVz
c2FnZSgKKyAgICAgICAgICAnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhyb3dzLCBtYXliZSB5b3Ug
d2FudCBhc3NlcnRUaHJvd3NFcXVhbHMnKTsKKyAgICB9CisgICAgbGV0IG1zZyA9ICdQcm9taXNl
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uJzsKKyAgICBpZiAodHlwZV9vcHQgIT09IHVuZGVmaW5l
ZCAmJiB0eXBlX29wdC5uYW1lICE9PSB1bmRlZmluZWQpCisgICAgICBtc2cgKz0gJywgZXhwZWN0
ZWQgJyArIHR5cGVfb3B0Lm5hbWU7CisgICAgcmV0dXJuIGFzc2VydFByb21pc2VSZXN1bHQoCisg
ICAgICAgIHByb21pc2UsCisgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBl
cnJvciBhZ2FpbiB0byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgIC8vIGNoYWluLgor
ICAgICAgICByZXMgPT4gc2V0VGltZW91dChfID0+IGZhaWwoJzx0aHJvdz4nLCByZXMsIG1zZyks
IDApLAorICAgICAgICBlID0+IGNoZWNrRXhjZXB0aW9uKGUsIHR5cGVfb3B0LCBjYXVzZV9vcHQp
KTsKKyAgfTsKKworICBhc3NlcnRJbnN0YW5jZW9mID0gZnVuY3Rpb24gYXNzZXJ0SW5zdGFuY2Vv
ZihvYmosIHR5cGUpIHsKKyAgICBpZiAoIShvYmogaW5zdGFuY2VvZiB0eXBlKSkgeworICAgICAg
dmFyIGFjdHVhbFR5cGVOYW1lID0gbnVsbDsKKyAgICAgIHZhciBhY3R1YWxDb25zdHJ1Y3RvciA9
IG9iaiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKS5jb25zdHJ1Y3RvcjsKKyAgICAgIGlm
ICh0eXBlb2YgYWN0dWFsQ29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgYWN0
dWFsVHlwZU5hbWUgPSBhY3R1YWxDb25zdHJ1Y3Rvci5uYW1lIHx8IFN0cmluZyhhY3R1YWxDb25z
dHJ1Y3Rvcik7CisgICAgICB9CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoCisgICAgICAgICAgJ09i
amVjdCA8JyArIHByZXR0eVByaW50ZWQob2JqKSArICc+IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiA8
JyArCisgICAgICAgICAgKHR5cGUubmFtZSB8fCB0eXBlKSArICc+JyArCisgICAgICAgICAgKGFj
dHVhbFR5cGVOYW1lID8gJyBidXQgb2YgPCcgKyBhY3R1YWxUeXBlTmFtZSArICc+JyA6ICcnKSk7
CisgICAgfQorICB9OworCisgIGFzc2VydERvZXNOb3RUaHJvdyA9IGZ1bmN0aW9uIGFzc2VydERv
ZXNOb3RUaHJvdyhjb2RlLCBuYW1lX29wdCkgeworICAgIHRyeSB7CisgICAgICBleGVjdXRlQ29k
ZShjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBpZiAoZSBpbnN0YW5jZW9mIE1qc1Vu
aXRBc3NlcnRpb25FcnJvcikgdGhyb3cgZTsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgidGhyZXcg
YW4gZXhjZXB0aW9uOiAiICsgKGUubWVzc2FnZSB8fCBlKSk7CisgICAgfQorICB9OworCisgIGFz
c2VydFVucmVhY2hhYmxlID0gZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUobmFtZV9vcHQpIHsK
KyAgICAvLyBGaXggdGhpcyB3aGVuIHdlIGRpdGNoIHRoZSBvbGQgdGVzdCBydW5uZXIuCisgICAg
dmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlOiB1bnJlYWNoYWJsZSI7CisgICAgaWYgKG5hbWVf
b3B0KSB7CisgICAgICBtZXNzYWdlICs9ICIgLSAiICsgbmFtZV9vcHQ7CisgICAgfQorICAgIGZh
aWxXaXRoTWVzc2FnZShtZXNzYWdlKTsKKyAgfTsKKworICBhc3NlcnRDb250YWlucyA9IGZ1bmN0
aW9uKHN1YiwgdmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZhbHVlID09IG51bGwgPyAoc3Vi
ICE9IG51bGwpIDogdmFsdWUuaW5kZXhPZihzdWIpID09IC0xKSB7CisgICAgICBmYWlsKCJjb250
YWlucyAnIiArIFN0cmluZyhzdWIpICsgIiciLCB2YWx1ZSwgbmFtZV9vcHQpOworICAgIH0KKyAg
fTsKKworICBhc3NlcnRNYXRjaGVzID0gZnVuY3Rpb24ocmVnZXhwLCBzdHIsIG5hbWVfb3B0KSB7
CisgICAgaWYgKCEocmVnZXhwIGluc3RhbmNlb2YgUmVnRXhwKSkgeworICAgICAgcmVnZXhwID0g
bmV3IFJlZ0V4cChyZWdleHApOworICAgIH0KKyAgICBpZiAoIXN0ci5tYXRjaChyZWdleHApKSB7
CisgICAgICBmYWlsKCJzaG91bGQgbWF0Y2ggJyIgKyByZWdleHAgKyAiJyIsIHN0ciwgbmFtZV9v
cHQpOworICAgIH0KKyAgfTsKKworICBmdW5jdGlvbiBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywg
ZXhjZXB0aW9uKSB7CisgICAgLy8gSWYgdGhlIGV4Y2VwdGlvbiBkb2VzIG5vdCBjb250YWluIGEg
c3RhY2sgdHJhY2UsIHdyYXAgaXQgaW4gYSBuZXcgRXJyb3IuCisgICAgaWYgKCFleGNlcHRpb24u
c3RhY2spIGV4Y2VwdGlvbiA9IG5ldyBFcnJvcihleGNlcHRpb24pOworCisgICAgLy8gSWYgdGhl
IGV4Y2VwdGlvbiBhbHJlYWR5IHByb3ZpZGVzIGEgc3BlY2lhbCBzdGFjayB0cmFjZSwgd2UgZG8g
bm90IG1vZGlmeQorICAgIC8vIGl0LgorICAgIGlmICh0eXBlb2YgZXhjZXB0aW9uLnN0YWNrICE9
PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKKyAgICB9CisgICAgZXhjZXB0
aW9uLnN0YWNrID0gc3RhY2sgKyAnXG5cbicgKyBleGNlcHRpb24uc3RhY2s7CisgICAgcmV0dXJu
IGV4Y2VwdGlvbjsKKyAgfQorCisgIGFzc2VydFByb21pc2VSZXN1bHQgPSBmdW5jdGlvbihwcm9t
aXNlLCBzdWNjZXNzLCBmYWlsKSB7CisgICAgaWYgKHN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkgYXNz
ZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBzdWNjZXNzKTsKKyAgICBpZiAoZmFpbCAhPT0g
dW5kZWZpbmVkKSBhc3NlcnRFcXVhbHMoJ2Z1bmN0aW9uJywgdHlwZW9mIGZhaWwpOworICAgIGFz
c2VydEluc3RhbmNlb2YocHJvbWlzZSwgUHJvbWlzZSk7CisgICAgY29uc3Qgc3RhY2sgPSAobmV3
IEVycm9yKCkpLnN0YWNrOworCisgICAgdmFyIHRlc3RfcHJvbWlzZSA9IHByb21pc2UudGhlbigK
KyAgICAgICAgcmVzdWx0ID0+IHsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKC0t
cHJvbWlzZVRlc3RDb3VudCA9PSAwKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQpIHN1Y2Nlc3MocmVzdWx0KTsKKyAgICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0
aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAgICAgLy8g
Y2hhaW4uCisgICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4geworICAgICAgICAgICAgICB0aHJv
dyBjb25jYXRlbmF0ZUVycm9ycyhzdGFjaywgZSk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGlmICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICBpZiAoZmFpbCA9PT0gdW5kZWZpbmVkKSB0aHJvdyByZXN1
bHQ7CisgICAgICAgICAgICBmYWlsKHJlc3VsdCk7CisgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhyb3cgdGhlIGVycm9yIGFnYWluIHRv
IGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAgIC8vIGNoYWluLgorICAgICAgICAg
ICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAgdGhyb3cgY29uY2F0ZW5hdGVFcnJv
cnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9
KTsKKworICAgIGlmICghcHJvbWlzZVRlc3RDaGFpbikgcHJvbWlzZVRlc3RDaGFpbiA9IFByb21p
c2UucmVzb2x2ZSgpOworICAgIC8vIHdhaXRVbnRpbERvbmUgaXMgaWRlbXBvdGVudC4KKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICArK3Byb21pc2VUZXN0Q291bnQ7CisgICAg
cmV0dXJuIHByb21pc2VUZXN0Q2hhaW4udGhlbih0ZXN0X3Byb21pc2UpOworICB9OworCisgIHZh
ciBPcHRpbWl6YXRpb25TdGF0dXNJbXBsID0gdW5kZWZpbmVkOworCisgIHZhciBPcHRpbWl6YXRp
b25TdGF0dXMgPSBmdW5jdGlvbihmdW4sIHN5bmNfb3B0KSB7CisgICAgaWYgKE9wdGltaXphdGlv
blN0YXR1c0ltcGwgPT09IHVuZGVmaW5lZCkgeworICAgICAgdHJ5IHsKKyAgICAgICAgT3B0aW1p
emF0aW9uU3RhdHVzSW1wbCA9IG5ldyBGdW5jdGlvbigKKyAgICAgICAgICAgICJmdW4iLCAic3lu
YyIsICJyZXR1cm4gJUdldE9wdGltaXphdGlvblN0YXR1cyhmdW4sIHN5bmMpOyIpOworICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm5hdGl2ZXMgc3ludGF4IG5v
dCBhbGxvd2VkIik7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBPcHRpbWl6YXRpb25TdGF0
dXNJbXBsKGZ1biwgc3luY19vcHQpOworICB9CisKKyAgYXNzZXJ0VW5vcHRpbWl6ZWQgPSBmdW5j
dGlvbiBhc3NlcnRVbm9wdGltaXplZCgKKyAgICAgIGZ1biwgc3luY19vcHQsIG5hbWVfb3B0LCBz
a2lwX2lmX21heWJlX2Rlb3B0ZWQgPSB0cnVlKSB7CisgICAgaWYgKHN5bmNfb3B0ID09PSB1bmRl
ZmluZWQpIHN5bmNfb3B0ID0gIiI7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25T
dGF0dXMoZnVuLCBzeW5jX29wdCk7CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0VW5vcHRp
bWl6ZWQoKSBkbyBub3QgbWFrZSBzZW5zZSBpZiAtLWFsd2F5cy1vcHQKKyAgICAvLyBvcHRpb24g
aXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVzdCBhZGQgLS1uby1hbHdheXMtb3B0IHRvIGZsYWdz
IGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0
YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9PSAwLAorICAgICAgICAgICAgICAgICJ0ZXN0IGRvZXMg
bm90IG1ha2Ugc2Vuc2Ugd2l0aCAtLWFsd2F5cy1vcHQiKTsKKyAgICBhc3NlcnRUcnVlKChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9PSAwLCBuYW1lX29w
dCk7CisgICAgaWYgKHNraXBfaWZfbWF5YmVfZGVvcHRlZCAmJgorICAgICAgICAob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtNYXliZURlb3B0ZWQpICE9PSAwKSB7CisgICAgICAv
LyBXaGVuIC0tZGVvcHQtZXZlcnktbi10aW1lcyBmbGFnIGlzIHNwZWNpZmllZCBpdCdzIG5vIGxv
bmdlciBndWFyYW50ZWVkCisgICAgICAvLyB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgc3Rp
bGwgZGVvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8gdG8gc3Ry
ZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3Nl
cnRGYWxzZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9
PSAwLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRPcHRpbWl6ZWQgPSBmdW5jdGlvbiBhc3Nl
cnRPcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29wdCwgc2tpcF9pZl9tYXli
ZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0gdW5kZWZpbmVkKSBzeW5j
X29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKGZ1biwg
c3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5v
dCBtYWtlIHNlbnNlIGZvciBMaXRlIG1vZGUgd2hlcmUKKyAgICAvLyBvcHRpbWl6YXRpb24gaXMg
YWx3YXlzIGRpc2FibGVkLCBleHBsaWNpdGx5IGV4aXQgdGhlIHRlc3Qgd2l0aCBhIHdhcm5pbmcu
CisgICAgaWYgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTGl0ZU1vZGUpIHsK
KyAgICAgIHByaW50KCJXYXJuaW5nOiBUZXN0IHVzZXMgYXNzZXJ0T3B0aW1pemVkIGluIExpdGUg
bW9kZSwgc2tpcHBpbmcgdGVzdC4iKTsKKyAgICAgIHRlc3RSdW5uZXIucXVpdCgwKTsKKyAgICB9
CisgICAgLy8gVGVzdHMgdGhhdCB1c2UgYXNzZXJ0T3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vu
c2UgaWYgLS1uby1vcHQKKyAgICAvLyBvcHRpb24gaXMgcHJvdmlkZWQuIFN1Y2ggdGVzdHMgbXVz
dCBhZGQgLS1vcHQgdG8gZmxhZ3MgY29tbWVudC4KKyAgICBhc3NlcnRGYWxzZSgob3B0X3N0YXR1
cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMCwKKyAgICAgICAg
ICAgICAgICAidGVzdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1uby1vcHQiKTsKKyAgICBh
c3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJ
c0Z1bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgJ3Nob3VsZCBiZSBhIGZ1bmN0aW9uOiAnICsgbmFt
ZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAg
ICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBu
byBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlz
IHN0aWxsIG9wdGltaXplZCwgc28ga2VlcCBydW5uaW5nIHRoZSB0ZXN0CisgICAgICAvLyB0byBz
dHJlc3MgdGVzdCB0aGUgZGVvcHRpbWl6ZXIuCisgICAgICByZXR1cm47CisgICAgfQorICAgIGFz
c2VydFRydWUoCisgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09w
dGltaXplZCkgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgb3B0aW1pemVkOiAnICsgbmFtZV9v
cHQpOworICB9CisKKyAgaXNOZXZlck9wdGltaXplTGl0ZU1vZGUgPSBmdW5jdGlvbiBpc05ldmVy
T3B0aW1pemVMaXRlTW9kZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0
YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXph
dGlvblN0YXR1cy5rTGl0ZU1vZGUpICE9PSAwOworICB9CisKKyAgaXNOZXZlck9wdGltaXplID0g
ZnVuY3Rpb24gaXNOZXZlck9wdGltaXplKCkgeworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1p
emF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAob3B0X3N0YXR1cyAmIFY4
T3B0aW1pemF0aW9uU3RhdHVzLmtOZXZlck9wdGltaXplKSAhPT0gMDsKKyAgfQorCisgIGlzQWx3
YXlzT3B0aW1pemUgPSBmdW5jdGlvbiBpc0Fsd2F5c09wdGltaXplKCkgeworICAgIHZhciBvcHRf
c3RhdHVzID0gT3B0aW1pemF0aW9uU3RhdHVzKHVuZGVmaW5lZCwgIiIpOworICAgIHJldHVybiAo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtBbHdheXNPcHRpbWl6ZSkgIT09IDA7
CisgIH0KKworICBpc0ludGVycHJldGVkID0gZnVuY3Rpb24gaXNJbnRlcnByZXRlZChmdW4pIHsK
KyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBh
c3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24p
ICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChv
cHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgPT09IDAgJiYKKyAg
ICAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rSW50ZXJwcmV0ZWQp
ICE9PSAwOworICB9CisKKyAgaXNPcHRpbWl6ZWQgPSBmdW5jdGlvbiBpc09wdGltaXplZChmdW4p
IHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAg
ICBhc3NlcnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rp
b24pICE9PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJu
IChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDA7Cisg
IH0KKworICBpc1R1cmJvRmFubmVkID0gZnVuY3Rpb24gaXNUdXJib0Zhbm5lZChmdW4pIHsKKyAg
ICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhmdW4sICIiKTsKKyAgICBhc3Nl
cnRUcnVlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0lzRnVuY3Rpb24pICE9
PSAwLAorICAgICAgICAgICAgICAgIm5vdCBhIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIChvcHRf
c3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua09wdGltaXplZCkgIT09IDAgJiYKKyAgICAg
ICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rVHVyYm9GYW5uZWQpICE9
PSAwOworICB9CisKKyAgLy8gQ3VzdG9tIFY4LXNwZWNpZmljIHN0YWNrIHRyYWNlIGZvcm1hdHRl
ciB0aGF0IGlzIHRlbXBvcmFyaWx5IGluc3RhbGxlZCBvbgorICAvLyB0aGUgRXJyb3Igb2JqZWN0
LgorICBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbihl
cnJvciwgc3RhY2spIHsKKyAgICAvLyBUcmlnZ2VyIGRlZmF1bHQgZm9ybWF0dGluZyB3aXRoIHJl
Y3Vyc2lvbi4KKyAgICB0cnkgeworICAgICAgLy8gRmlsdGVyLW91dCBhbGwgYnV0IHRoZSBmaXJz
dCBtanN1bml0IGZyYW1lLgorICAgICAgbGV0IGZpbHRlcmVkU3RhY2sgPSBbXTsKKyAgICAgIGxl
dCBpbk1qc3VuaXQgPSB0cnVlOworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFjay5sZW5n
dGg7IGkrKykgeworICAgICAgICBsZXQgZnJhbWUgPSBzdGFja1tpXTsKKyAgICAgICAgaWYgKGlu
TWpzdW5pdCkgeworICAgICAgICAgIGxldCBmaWxlID0gZnJhbWUuZ2V0RmlsZU5hbWUoKTsKKyAg
ICAgICAgICBpZiAoIWZpbGUgfHwgIWZpbGUuZW5kc1dpdGgoIm1qc3VuaXQuanMiKSkgeworICAg
ICAgICAgICAgaW5NanN1bml0ID0gZmFsc2U7CisgICAgICAgICAgICAvLyBQdXNoIHRoZSBsYXN0
IG1qc3VuaXQgZnJhbWUsIHR5cGljYWxseSBjb250YWluaW5nIHRoZSBhc3NlcnRpb24KKyAgICAg
ICAgICAgIC8vIGZ1bmN0aW9uLgorICAgICAgICAgICAgaWYgKGkgPiAwKSBBcnJheVByb3RvdHlw
ZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpLTFdKTsKKyAgICAgICAgICAgIEFycmF5
UHJvdG90eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIHN0YWNrW2ldKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlQcm90b3R5cGVQ
dXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgZnJhbWUpOworICAgICAgfQorICAgICAgc3RhY2sgPSBm
aWx0ZXJlZFN0YWNrOworCisgICAgICAvLyBJbmZlciBmdW5jdGlvbiBuYW1lcyBhbmQgY2FsY3Vs
YXRlIHttYXhfbmFtZV9sZW5ndGh9CisgICAgICBsZXQgbWF4X25hbWVfbGVuZ3RoID0gMDsKKyAg
ICAgIEFycmF5UHJvdG90eXBlRm9yRWFjaC5jYWxsKHN0YWNrLCBlYWNoID0+IHsKKyAgICAgICAg
bGV0IG5hbWUgPSBlYWNoLmdldEZ1bmN0aW9uTmFtZSgpOworICAgICAgICBpZiAobmFtZSA9PSBu
dWxsKSBuYW1lID0gIiI7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSB7CisgICAgICAgICAg
bmFtZSA9IG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAoZWFjaC5pc0NvbnN0cnVjdG9yKCkpIHsK
KyAgICAgICAgICBuYW1lID0gIm5ldyAiICsgbmFtZTsKKyAgICAgICAgfSBlbHNlIGlmIChlYWNo
LmlzTmF0aXZlKCkpIHsKKyAgICAgICAgICBuYW1lID0gIm5hdGl2ZSAiICsgbmFtZTsKKyAgICAg
ICAgfSBlbHNlIGlmICghZWFjaC5pc1RvcGxldmVsKCkpIHsKKyAgICAgICAgICBuYW1lID0gZWFj
aC5nZXRUeXBlTmFtZSgpICsgIi4iICsgbmFtZTsKKyAgICAgICAgfQorICAgICAgICBlYWNoLm5h
bWUgPSBuYW1lOworICAgICAgICBtYXhfbmFtZV9sZW5ndGggPSBNYXRoLm1heChuYW1lLmxlbmd0
aCwgbWF4X25hbWVfbGVuZ3RoKQorICAgICAgfSk7CisKKyAgICAgIC8vIEZvcm1hdCBzdGFjayBm
cmFtZXMuCisgICAgICBzdGFjayA9IEFycmF5UHJvdG90eXBlTWFwLmNhbGwoc3RhY2ssIGVhY2gg
PT4geworICAgICAgICBsZXQgZnJhbWUgPSAiICAgIGF0ICIgKyBlYWNoLm5hbWUucGFkRW5kKG1h
eF9uYW1lX2xlbmd0aCk7CisgICAgICAgIGxldCBmaWxlTmFtZSA9IGVhY2guZ2V0RmlsZU5hbWUo
KTsKKyAgICAgICAgaWYgKGVhY2guaXNFdmFsKCkpIHJldHVybiBmcmFtZSArICIgIiArIGVhY2gu
Z2V0RXZhbE9yaWdpbigpOworICAgICAgICBmcmFtZSArPSAiICIgKyAoZmlsZU5hbWUgPyBmaWxl
TmFtZSA6ICIiKTsKKyAgICAgICAgbGV0IGxpbmU9IGVhY2guZ2V0TGluZU51bWJlcigpOworICAg
ICAgICBmcmFtZSArPSAiICIgKyAobGluZSA/IGxpbmUgOiAiIik7CisgICAgICAgIGxldCBjb2x1
bW4gPSBlYWNoLmdldENvbHVtbk51bWJlcigpOworICAgICAgICBmcmFtZSArPSAoY29sdW1uID8g
IjoiICsgY29sdW1uIDogIiIpOworICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICB9KTsKKyAg
ICAgIHJldHVybiAiIiArIGVycm9yLm1lc3NhZ2UgKyAiXG4iICsgQXJyYXlQcm90b3R5cGVKb2lu
LmNhbGwoc3RhY2ssICJcbiIpOworICAgIH0gY2F0Y2ggKGUpIHt9OworICAgIHJldHVybiBlcnJv
ci5zdGFjazsKKyAgfQorfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNsZWFu
dXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1jbGVhbnVwLWZy
b20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NzUwMDE4NTc1OWM3MmU2YWNiMzJk
YjI2NmM2NzVlYTM0NWU1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vh
ay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CitsZXQgUmVhbG0gPSB7
IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMpID0+ICQuZXZhbFNjcmlwdC5jYWxs
KHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgpOworCitsZXQgY2xlYW51cCA9IFJl
YWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBmdW5jdGlvbiBjbGVhbnVwKCkgeyBzdG9y
ZWRfZ2xvYmFsID0gZ2xvYmFsVGhpczsgfSBjbGVhbnVwOyIpOworbGV0IHJlYWxtX2dsb2JhbF90
aGlzID0gUmVhbG0uZXZhbChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIGEgcmVn
aXN0ZXIgaXQgaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisv
LyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhl
bSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7
CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0KTsK
KyAgICB9Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5j
dGlvbiB3YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlv
bigpIHsKKyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFs
OyIpOworICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFz
c2VydEVxdWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRp
bWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWNs
ZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNGQwMjQ3
ZTI3MTBkYTQ4NWM5MjU3MmFiYTljMjc2Y2RlZjM1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy92OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzCkBAIC0w
LDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8g
Q29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8v
IEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1t
YXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0
aXZlIik7CitsZXQgUmVhbG0gPSB7IGNyZWF0ZTogJC5jcmVhdGVSZWFsbSwgZXZhbDogKHIsIHMp
ID0+ICQuZXZhbFNjcmlwdC5jYWxsKHIsIHMpICB9OworCitsZXQgciA9IFJlYWxtLmNyZWF0ZSgp
OworCitsZXQgY2xlYW51cCA9IFJlYWxtLmV2YWwociwgInZhciBzdG9yZWRfZ2xvYmFsOyBsZXQg
Y2xlYW51cCA9IG5ldyBQcm94eShmdW5jdGlvbigpIHsgc3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRo
aXM7fSwge30pOyBjbGVhbnVwIik7CitsZXQgcmVhbG1fZ2xvYmFsX3RoaXMgPSBSZWFsbS5ldmFs
KHIsICJnbG9iYWxUaGlzIik7CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShj
bGVhbnVwKTsKKworLy8gQ3JlYXRlIGFuIG9iamVjdCBhbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIEZp
bmFsaXphdGlvblJlZ2lzdHJ5LiBUaGUgb2JqZWN0IG5lZWRzCisvLyB0byBiZSBpbnNpZGUgYSBj
bG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkg
eworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmpl
Y3QgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9sZGluZ3MiKTsKKyAgICB9
Cit9KSgpOworCitnYygpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3
YXMgY2FsbGVkIGluIGl0cyBSZWFsbS4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsK
KyAgbGV0IHN0b3JlZF9nbG9iYWwgPSBSZWFsbS5ldmFsKHIsICJzdG9yZWRfZ2xvYmFsOyIpOwor
ICBhc3NlcnROb3RFcXVhbHMoc3RvcmVkX2dsb2JhbCwgZ2xvYmFsVGhpcyk7CisgIGFzc2VydEVx
dWFscyhzdG9yZWRfZ2xvYmFsLCByZWFsbV9nbG9iYWxfdGhpcyk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXph
dGlvbi1yZWdpc3RyeS1iYXNpY3MuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb24t
cmVnaXN0cnktYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NjE2YTUwMjFhY2E3NTUxYzgxMTllYjYx
ZWZlOTQ3YjUxMmMzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5h
bGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTUyIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWst
cmVmcworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2
ZSIpOworCisoZnVuY3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgewor
ICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBhc3NlcnRF
cXVhbHMoZmcudG9TdHJpbmcoKSwgIltvYmplY3QgRmluYWxpemF0aW9uUmVnaXN0cnldIik7Cisg
IGFzc2VydE5vdFNhbWUoZmcuX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKKyAgYXNzZXJ0
U2FtZShmZy5fX3Byb3RvX18uX19wcm90b19fLCBPYmplY3QucHJvdG90eXBlKTsKK30pKCk7CisK
KyhmdW5jdGlvbiBUZXN0RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0
aW9uKCkgeworICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRy
eSB7CisgICAgbGV0IGYgPSBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICBtZXNzYWdlID0gZS5tZXNzYWdlOworICAgIGNhdWdodCA9IHRydWU7Cisg
IH0gZmluYWxseSB7CisgICAgYXNzZXJ0VHJ1ZShjYXVnaHQpOworICB9Cit9KSgpOworCisoZnVu
Y3Rpb24gVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxl
KCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0
IGJlIGNhbGxhYmxlIjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KCk7IH0sIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93
cygoKSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgxKTsgfSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHsgbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KG51bGwpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworfSkoKTsKKwor
KGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhDYWxsYWJsZVBy
b3h5QXNDbGVhbnVwKCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0gKCkgPT4g
e307CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkocHJveHkpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RD
b25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXNDbGVhbnVw
KCkgeworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeTogY2xlYW51cCBtdXN0
IGJlIGNhbGxhYmxlIjsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBs
ZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IHsgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsgfSwgVHlwZUVycm9y
LCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJXaXRoTm9uT2JqZWN0
VGFyZ2V0KCkgeworICBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30p
OworICBsZXQgbWVzc2FnZSA9ICJGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0
ZXI6IHRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5y
ZWdpc3RlcigxLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnJlZ2lzdGVyKGZhbHNlLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNz
YWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKCJmb28iLCAiaG9sZGluZ3Mi
KSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVy
KFN5bWJvbCgpLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IGZnLnJlZ2lzdGVyKG51bGwsICJob2xkaW5ncyIpLCBUeXBlRXJyb3IsIG1lc3Nh
Z2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIodW5kZWZpbmVkLCAiaG9sZGlu
Z3MiKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0
ZXJXaXRoUHJveHkoKSB7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsKKyAg
bGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGxldCBmZyA9IG5ldyBGaW5h
bGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGZnLnJlZ2lzdGVyKHByb3h5KTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0UmVnaXN0ZXJUYXJnZXRBbmRIb2xkaW5nc1NhbWVWYWx1ZSgpIHsK
KyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IG9i
aiA9IHthOiAxfTsKKyAgLy8gU2FtZVZhbHVlKHRhcmdldCwgaG9sZGluZ3MpIG5vdCBvaworICBh
c3NlcnRUaHJvd3MoKCkgPT4gZmcucmVnaXN0ZXIob2JqLCBvYmopLCBUeXBlRXJyb3IsCisgICAg
ICAgICAgICAgICAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyOiB0YXJn
ZXQgYW5kIGhvbGRpbmdzIG11c3Qgbm90IGJlIHNhbWUiKTsKKyAgbGV0IGhvbGRpbmdzID0ge2E6
IDF9OworICBmZy5yZWdpc3RlcihvYmosIGhvbGRpbmdzKTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0UmVnaXN0ZXJXaXRob3V0RmluYWxpemF0aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93
cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3RyeS5wcm90b3R5cGUucmVnaXN0ZXIuY2FsbCh7fSwg
e30sICJob2xkaW5ncyIpLCBUeXBlRXJyb3IpOworICAvLyBEb2VzIG5vdCB0aHJvdzoKKyAgbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgRmluYWxpemF0aW9u
UmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwoZmcsIHt9LCAiaG9sZGluZ3MiKTsKK30p
KCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25FeGlzdGVudEtleSgpIHsKKyAg
bGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgbGV0IHN1Y2Nl
c3MgPSBmZy51bnJlZ2lzdGVyKHsiayI6ICJ3aGF0ZXZlciJ9KTsKKyAgYXNzZXJ0RmFsc2Uoc3Vj
Y2Vzcyk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRmluYWxpemF0
aW9uUmVnaXN0cnkoKSB7CisgIGFzc2VydFRocm93cygoKSA9PiBGaW5hbGl6YXRpb25SZWdpc3Ry
eS5wcm90b3R5cGUudW5yZWdpc3Rlci5jYWxsKHt9LCB7fSksCisgICAgICAgICAgICAgICBUeXBl
RXJyb3IpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbk9iamVjdFVu
cmVnaXN0ZXJUb2tlbigpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgp
ID0+IHt9KTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoMSksIFR5cGVFcnJv
cik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKEJpZ0ludCgxKSksIFR5cGVF
cnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKCdvbmUnKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoU3ltYm9sKCkpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih0cnVlKSwgVHlwZUVy
cm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIoZmFsc2UpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcih1bmRlZmluZWQpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihudWxsKSwgVHlwZUVy
cm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yKCkgeworICBs
ZXQgd3IgPSBuZXcgV2Vha1JlZih7fSk7CisgIGFzc2VydEVxdWFscyh3ci50b1N0cmluZygpLCAi
W29iamVjdCBXZWFrUmVmXSIpOworICBhc3NlcnROb3RTYW1lKHdyLl9fcHJvdG9fXywgT2JqZWN0
LnByb3RvdHlwZSk7CisKKyAgbGV0IGRlcmVmX2Rlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHdyLl9fcHJvdG9fXywgImRlcmVmIik7CisgIGFzc2VydEVxdWFscyh0cnVlLCBk
ZXJlZl9kZXNjLmNvbmZpZ3VyYWJsZSk7CisgIGFzc2VydEVxdWFscyhmYWxzZSwgZGVyZWZfZGVz
Yy5lbnVtZXJhYmxlKTsKKyAgYXNzZXJ0RXF1YWxzKCJmdW5jdGlvbiIsIHR5cGVvZiBkZXJlZl9k
ZXNjLnZhbHVlKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0
aE5vbk9iamVjdCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiV2Vha1JlZjogdGFyZ2V0IG11c3QgYmUg
YW4gb2JqZWN0IjsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCksIFR5cGVFcnJv
ciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigxKSwgVHlwZUVy
cm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKGZhbHNlKSwg
VHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFrUmVmKCJm
b28iKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IG5ldyBXZWFr
UmVmKFN5bWJvbCgpKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+
IG5ldyBXZWFrUmVmKG51bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3Mo
KCkgPT4gbmV3IFdlYWtSZWYodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZkNvbnN0cnVjdG9yQ2FsbEFzRnVuY3Rpb24oKSB7Cisg
IGxldCBjYXVnaHQgPSBmYWxzZTsKKyAgbGV0IG1lc3NhZ2UgPSAiIjsKKyAgdHJ5IHsKKyAgICBs
ZXQgZiA9IFdlYWtSZWYoe30pOworICB9IGNhdGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVz
c2FnZTsKKyAgICBjYXVnaHQgPSB0cnVlOworICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUo
Y2F1Z2h0KTsKKyAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RXZWFrUmVmV2l0aFByb3h5KCkg
eworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307CisgIGxldCBwcm94eSA9IG5l
dyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgd3IgPSBuZXcgV2Vha1JlZihwcm94eSk7Cit9
KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkt
YW5kLXdlYWtyZWYuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1h
bmQtd2Vha3JlZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGRhOGEwYzlmZWZjOWQxZGUyNjk1YjIzZDUyMDE0
MjhmYjI2YjIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0
aW9ucmVnaXN0cnktYW5kLXdlYWtyZWYuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJl
ZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJj
ZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2Fs
bGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgIGxldCBo
b2xkaW5nc19saXN0ID0gW107CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGFz
c2VydEVxdWFscygxLCBob2xkaW5nc19saXN0Lmxlbmd0aCk7CisgIGFzc2VydEVxdWFscygiaG9s
ZGluZ3MiLCBob2xkaW5nc19saXN0WzBdKTsKKyAgY2xlYW51cF9jYWxsZWQgPSB0cnVlOworfQor
CitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQgd2Vha19y
ZWZzID0gW107CisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyAr
K2kpIHsKKyAgICAgICAgbGV0IG8gPSB7fTsKKyAgICAgICAgd2Vha19yZWZzLnB1c2gobmV3IFdl
YWtSZWYobykpOworICAgICAgICBmZy5yZWdpc3RlcihvLCAiaG9sZGluZ3MiKTsKKyAgICB9Cit9
KSgpOworCisvLyBTaW5jZSB0aGUgV2Vha1JlZiB3YXMgY3JlYXRlZCBkdXJpbmcgdGhpcyB0dXJu
LCBpdCBpcyBub3QgY2xlYXJlZCBieSBHQy4gVGhlCisvLyBwb2ludGVyIGluc2lkZSB0aGUgRmlu
YWxpemF0aW9uUmVnaXN0cnkgaXMgbm90IGNsZWFyZWQgZWl0aGVyLCBzaW5jZSB0aGUgV2Vha1Jl
ZgorLy8ga2VlcHMgdGhlIHRhcmdldCBvYmplY3QgYWxpdmUuCitnYygpOworKGZ1bmN0aW9uKCkg
eworICAgIHdlYWtfcmVmcy5mb3JFYWNoKCh3ZWFrX3JlZikgPT4gYXNzZXJ0RXF1YWxzKCJvYmpl
Y3QiLCB0eXBlb2Yod2Vha19yZWYuZGVyZWYoKSkpKTsKK30pKCk7CisKKy8vIFRyaWdnZXIgZ2Mg
aW4gbmV4dCB0YXNrCitzZXRUaW1lb3V0KCgpID0+IHsKKyAgICBnYygpOworCisgICAgLy8gQ2hl
Y2sgdGhhdCBjbGVhbnVwIGNhbGxiYWNrIHdhcyBjYWxsZWQgaW4gYSBmb2xsb3cgdXAgdGFzawor
ICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVk
KTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh3ZWFrX3JlZnMuc29tZSgod2Vha19yZWYpID0+IHdlYWtf
cmVmLmRlcmVmKCkgPT09IG51bGwpKTsKKyAgICB9LCAwKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxp
dmUuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xk
aW5ncy1hbGl2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDJjNGJiOGVlODRlMDEwYjc0ZDZkZWIzNWEwY2Zh
Y2YxNmQ0OTNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0
aW9ucmVnaXN0cnkta2VlcHMtaG9sZGluZ3MtYWxpdmUuanMKQEAgLTAsMCArMSw0NyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0
aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9u
eS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgi
Li9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNs
ZWFudXBfY2FsbGVkID0gZmFsc2U7CitsZXQgaG9sZGluZ3NfbGlzdCA9IFtdOworbGV0IGNsZWFu
dXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7
CisgIGhvbGRpbmdzX2xpc3QucHVzaChob2xkaW5ncyk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1
ZTsKK30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0
IG8xID0ge307CitsZXQgaG9sZGluZ3MgPSB7J2EnOiAndGhpcyBpcyB0aGUgaG9sZGluZ3Mgb2Jq
ZWN0J307CisKKy8vIElnbml0aW9uIGhvbGRzIHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1w
b3JhcnkgcmVnaXN0ZXJzLiBUaGVzZSB3aWxsIGJlCisvLyByZWxlYXNlZCB3aGVuIHRoZSBmdW5j
dGlvbiBleGl0cy4gU28gb25seSBhY2Nlc3MgbyBpbnNpZGUgYSBmdW5jdGlvbiB0bworLy8gcHJl
dmVudCBhbnkgcmVmZXJlbmNlcyB0byBvYmplY3RzIGluIHRlbXBvcmFyeSByZWdpc3RlcnMgd2hl
biBhIGdjIGlzCisvLyB0cmlnZ2VyZWQuCisoKCkgPT4ge2ZnLnJlZ2lzdGVyKG8xLCBob2xkaW5n
cyk7fSkoKQorCitnYygpOworYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxsZWQpOworCisvLyBEcm9w
IHRoZSBsYXN0IHJlZmVyZW5jZXMgdG8gbzEuCisoKCkgPT4ge28xID0gbnVsbDt9KSgpCisKKy8v
IERyb3AgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBob2xkaW5ncy4gVGhlIEZpbmFsaXphdGlv
blJlZ2lzdHJ5IGtlZXBzIGl0CisvLyBhbGl2ZSwgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQgYXMgbm9ybWFsLgoraG9sZGluZ3MgPSBudWxsOworZ2MoKTsKK2Fzc2VydEZh
bHNlKGNsZWFudXBfY2FsbGVkKTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgewor
ICBhc3NlcnRUcnVlKGNsZWFudXBfY2FsbGVkKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xp
c3QubGVuZ3RoLCAxKTsKKyAgYXNzZXJ0RXF1YWxzKGhvbGRpbmdzX2xpc3RbMF0uYSwgInRoaXMg
aXMgdGhlIGhvbGRpbmdzIG9iamVjdCIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywg
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1z
Y2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92
OC1maW5hbGl6YXRpb25yZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGlt
ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2Q4Yzk2Mzk3NWQyZWNmYjg3NzY1OTJjZGI1NWZlODUzNzI3OWMy
MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LXNjaGVkdWxlZC1mb3ItY2xlYW51cC1tdWx0aXBsZS10aW1lcy5qcwpAQCAtMCwwICsxLDg1
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdo
dCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczog
LS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZwor
Ly8gRmxhZ3M6IC0tbm8tc3RyZXNzLWZsdXNoLWJ5dGVjb2RlCisKK2xvYWQoIi4vcmVzb3VyY2Vz
L3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwMF9jYWxs
X2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMF8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVh
bnVwMF8xX2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAxX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAxXzFfaG9s
ZGluZ3NfY291bnQgPSAwOworCitsZXQgY2xlYW51cDAgPSBmdW5jdGlvbihob2xkaW5ncykgewor
ICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0gIjAiKQorICAgICsrY2xlYW51
cDBfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xlYW51cDBfMV9ob2xkaW5nc19j
b3VudDsKKyAgKytjbGVhbnVwMF9jYWxsX2NvdW50OworfQorCitsZXQgY2xlYW51cDEgPSBmdW5j
dGlvbihob2xkaW5ncykgeworICBpZiAoaG9sZGluZ3NbaG9sZGluZ3MubGVuZ3RoIC0gMV0gPT0g
IjAiKQorICAgICsrY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudDsKKyAgZWxzZQorICAgICsrY2xl
YW51cDFfMV9ob2xkaW5nc19jb3VudDsKKyAgKytjbGVhbnVwMV9jYWxsX2NvdW50OworfQorCits
ZXQgZmcwID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAwKTsKK2xldCBmZzEgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cDEpOworCisvLyBSZWdpc3RlciAxIHdlYWsg
cmVmZXJlbmNlIGZvciBlYWNoIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGFuZCBraWxsIHRoZSBvYmpl
Y3RzIHRoZXkgcG9pbnQgdG8uCisoZnVuY3Rpb24oKSB7CisgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7CisgICAgLy8gVGhlIG9iamVjdHMgbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9z
dXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlbS4KKyAgICBsZXQgb2JqZWN0cyA9
IFtdOworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisKKyAgICBm
ZzAucmVnaXN0ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0wIik7CisgICAgZmcxLnJlZ2lzdGVy
KG9iamVjdHNbMV0sICJob2xkaW5nczEtMCIpOworCisgICAgLy8gRHJvcCB0aGUgcmVmZXJlbmNl
cyB0byB0aGUgb2JqZWN0cy4KKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisKKy8vIFdp
bGwgc2NoZWR1bGUgYm90aCBmZzAgYW5kIGZnMSBmb3IgY2xlYW51cC4KK2djKCk7CisKKy8vIEJl
Zm9yZSB0aGUgY2xlYW51cCB0YXNrIGhhcyBhIGNoYW5jZSB0byBydW4sIGRvIHRoZSBzYW1lIHRo
aW5nIGFnYWluLCBzbyBib3RoCisvLyBGaW5hbGl6YXRpb25SZWdpc3RyaWVzIGFyZSAoYWdhaW4p
IHNjaGVkdWxlZCBmb3IgY2xlYW51cC4gVGhpcyBoYXMgdG8gYmUgYSBJSUZFIGZ1bmN0aW9uCisv
LyAoc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGUgb2JqZWN0cykgc28gd2UgY2Fubm90
IHVzZSB0aGUgc2FtZSBmdW5jdGlvbgorLy8gYXMgYmVmb3JlLgorKGZ1bmN0aW9uKCkgeworICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGxldCBvYmplY3RzID0gW107Cisg
ICAgb2JqZWN0c1swXSA9IHt9OworICAgIG9iamVjdHNbMV0gPSB7fTsKKyAgICBmZzAucmVnaXN0
ZXIob2JqZWN0c1swXSwgImhvbGRpbmdzMC0xIik7CisgICAgZmcxLnJlZ2lzdGVyKG9iamVjdHNb
MV0sICJob2xkaW5nczEtMSIpOworICAgIG9iamVjdHMgPSBbXTsKKyAgfQorfSkoKTsKKworZ2Mo
KTsKKworbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMo
MCwgY2xlYW51cDBfY2FsbF9jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8w
X2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAwXzFfaG9sZGlu
Z3NfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfY2FsbF9jb3VudCk7Cisg
IGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0
Tm90RXF1YWxzKDAsIGNsZWFudXAxXzBfaG9sZGluZ3NfY291bnQpOworfQorCisvLyBHaXZlIHRo
ZSBjbGVhbnVwIHRhc2sgYSBjaGFuY2UgdG8gcnVuLgorc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMs
IDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGlydHktZmluYWxp
emF0aW9uLXJlZ2lzdHJpZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1tdWx0aXBsZS1kaXJ0eS1m
aW5hbGl6YXRpb24tcmVnaXN0cmllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTA3M2EwMzFkYjA2Y2NkMzAy
NmQ4ZjI0ZjEyN2ZhZGRiODk4YWM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
djgtbXVsdGlwbGUtZGlydHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKQEAgLTAsMCArMSw1
MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmln
aHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6
IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcK
KworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsK
KworbGV0IGNsZWFudXBfY2FsbF9jb3VudDEgPSAwOworbGV0IGNsZWFudXBfY2FsbF9jb3VudDIg
PSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGlmIChob2xkaW5n
cyA9PT0gImhvbGRpbmdzMSIpCisgICAgICAgICsrY2xlYW51cF9jYWxsX2NvdW50MTsKKyAgICBl
bHNlIGlmIChob2xkaW5ncyA9PT0gImhvbGRpbmdzMiIpCisgICAgICAgICsrY2xlYW51cF9jYWxs
X2NvdW50MjsKKyAgICBlbHNlCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCitsZXQg
ZmcxID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGZnMiA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKKworLy8gQ3JlYXRlIHR3byBvYmplY3RzIGFu
ZCByZWdpc3RlciB0aGVtIGluIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZSBvYmplY3RzIG5l
ZWQKKy8vIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2ls
bCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyAr
K2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcxLnJlZ2lzdGVyKG9i
amVjdDEsICJob2xkaW5nczEiKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAg
ICBmZzIucmVnaXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIpOworICAgIH0KKyAgICAvLyBvYmpl
Y3QxIGFuZCBvYmplY3QyIGdvIG91dCBvZiBzY29wZS4KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2ls
bCBkaXNjb3ZlciBkaXJ0eSBXZWFrQ2VsbHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOwor
YXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDEpOworYXNzZXJ0RXF1YWxzKDAsIGNs
ZWFudXBfY2FsbF9jb3VudDIpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51cCBmdW5jdGlv
biB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAgIGFzc2Vy
dE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKKyAgICBhc3NlcnROb3RFcXVhbHMo
MCwgY2xlYW51cF9jYWxsX2NvdW50Mik7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXJlZW50cmFudC1nYy1mcm9tLWNsZWFu
dXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhOTdkYWE0ZDFkMjY1MjQ4MjIwMmQxMWI1YjJjYmM0NWNiMjcyMTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVw
LmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0x
IikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNy
ZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2Fs
bGVyIHJlbGF0aXZlIik7CisKK2xldCBjYWxsZWQgPSBmYWxzZTsKK2xldCByZWVudHJhbnRfZ2Mg
PSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGdjKCk7CisgICAgY2FsbGVkID0gdHJ1ZTsKK30K
KworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHJlZW50cmFudF9nYyk7CisKKyhm
dW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIGZn
LnJlZ2lzdGVyKHt9LCA0Mik7Cit9KSgpOworCitnYygpOworCitzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydFRydWUoY2FsbGVkKTsKK30sIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC1zdHJlc3MtZmluYWxpemF0aW9ucmVnaXN0cnktZGlydHktZW5x
dWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTI0ZTJjZDNlYzc2ZDVjODk1MWNkMmZhMGE1MWE4NWZkMDgw
OTgxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXph
dGlvbnJlZ2lzdHJ5LWRpcnR5LWVucXVldWUuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAyMCB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0tc3RyZXNzLWNvbXBh
Y3Rpb24gLS1leHBvc2UtZ2MKKworLy8gVGVzdCB0aGF0IHRoZSBkaXJ0eSBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzIHRoYXQgYXJlIGVucXVldWVkIGR1cmluZyBHQyBoYXZlCisvLyB0aGVpciBzbG90
cyBjb3JyZWN0bHkgcmVjb3JkZWQgYnkgdGhlIEdDLgorCisvLyAxKSBDcmVhdGUgbWFueSBKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5IG9iamVjdHMgc28gdGhhdCB0aGV5IHNwYW4gc2V2ZXJhbCBwYWdl
cworLy8gKHBhZ2Ugc2l6ZSBpcyAyNTZrYikuCitsZXQgcmVnaXN0cmllcyA9IFtdOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDI0ICogODsgaSsrKSB7CisgIHJlZ2lzdHJpZXMucHVzaChuZXcgRmlu
YWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pKTsKK30KKworLy8gMikgRm9yY2UgdHdvIEdDcyB0
byBlbnN1cmUgdGhhdCBKU0ZpbmFsaXphdG9uUmVnaXN0cnkgb2JqZWN0cyBhcmUgdGVudXJlZC4K
K2djKCk7CitnYygpOworCisvLyAzKSBJbiBhIGZ1bmN0aW9uOiBjcmVhdGUgYSBkdW1teSB0YXJn
ZXQgYW5kIHJlZ2lzdGVyIGl0IGluIGFsbAorLy8gSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVj
dHMuCisoZnVuY3Rpb24oKSB7CisgIGxldCBnYXJiYWdlID0ge307CisgIHJlZ2lzdHJpZXMuZm9y
RWFjaCgoZnIpID0+IHsKKyAgICBmci5yZWdpc3RlcihnYXJiYWdlLCA0Mik7CisgIH0pOworICBn
YXJiYWdlID0gbnVsbDsKK30pKCk7CisKKy8vIDQpIE91dHNpZGUgdGhlIGZ1bmN0aW9uIHdoZXJl
IHRoZSB0YXJnZXQgaXMgdW5yZWFjaGFibGU6IGZvcmNlIEdDIHRvIGNvbGxlY3QKKy8vIHRoZSBv
YmplY3QuCitnYygpOworCisvLyA1KSBGb3JjZSBhbm90aGVyIEdDIHRvIHRlc3QgdGhhdCB0aGUg
c2xvdCB3YXMgY29ycmVjdGx5IHVwZGF0ZWQuCitnYygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdjgtdW5kZWZpbmVkLWhvbGRpbmdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5kZWZp
bmVkLWhvbGRpbmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzYwY2ZkYTc3ZjBhZmNhMWI1Y2I5ZmRkYWZl
YWMwZDkwNzUwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bmRlZmlu
ZWQtaG9sZGluZ3MuanMKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2Ut
Z2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7
CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7CisgICAgYXNzZXJ0RXF1YWxzKGhv
bGRpbmdzLCB1bmRlZmluZWQpOworICAgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQg
ZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBv
YmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8vIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lz
dGVyKG9iamVjdCk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhl
IHRhcmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1
bmN0aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYWZ0ZXItY2xlYW51cC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItYWZ0ZXIt
Y2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDcyYjBmOGIzYmI4ZWJhNjkwYTE2MGQxNjM4ZDM5ZTQz
ZjQ3MmQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1h
ZnRlci1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3Nl
LWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAw
OworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhv
bGRpbmdzIiwgaG9sZGluZ3MpOworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0
aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGlu
IHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5z
aWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5j
dGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBs
ZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIiwg
a2V5KTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0
IG9iamVjdCBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24g
d2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRO
b3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKyAgICBsZXQgb2xkX2NsZWFudXBfY2Fs
bF9jb3VudCA9IGNsZWFudXBfY2FsbF9jb3VudDsKKworICAgIC8vIFVucmVnaXN0ZXIgYW4gYWxy
ZWFkeSBjbGVhbmVkLXVwIHdlYWsgcmVmZXJlbmNlLgorICAgIGxldCBzdWNjZXNzID0gZmcudW5y
ZWdpc3RlcihrZXkpOworICAgIC8vIFNpbmNlIHdlIG1heSBub3QgY29sbGVjdCBldmVyeXRoaW5n
IHdlIGRvbid0IGtub3cgd2hhdCBzdWNjZXNzIHdpbGwgYmUgdW5saWtlIHY4LgorICAgIC8vIGFz
c2VydEZhbHNlKHN1Y2Nlc3MpOworCisgICAgLy8gQXNzZXJ0IHRoYXQgaXQgZGlkbid0IGRvIGFu
eXRoaW5nLgorICAgIHNldFRpbWVvdXQoKCkgPT4geyBhc3NlcnRFcXVhbHMob2xkX2NsZWFudXBf
Y2FsbF9jb3VudCwgY2xlYW51cF9jYWxsX2NvdW50KTsgfSwgMCk7Cit9CisKK3NldFRpbWVvdXQo
dGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYmVmb3JlLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWJlZm9y
ZS1jbGVhbnVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDFlM2VjNmEzYWViZmM3ODc2YzdkZGFmN2Q3ZGI4
YzE1M2ZlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVy
LWJlZm9yZS1jbGVhbnVwLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisK
K2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisK
K2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xk
aW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZnID0gbmV3IEZpbmFs
aXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBr
ZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6
YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3Vy
ZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAg
bGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJteSBob2xkaW5ncyIsIGtl
eSk7CisKKyAgLy8gQ2xlYXIgdGhlIFdlYWtDZWxsIGJlZm9yZSB0aGUgR0MgaGFzIGEgY2hhbmNl
IHRvIGRpc2NvdmVyIGl0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAg
YXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9
KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7
Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQg
dGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkLCBzaW5jZSB3ZSBjYWxsZWQgdW5y
ZWdpc3Rlci4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxz
KDAsIGNsZWFudXBfY2FsbF9jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1jYWxsZWQtdHdpY2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzhlZmU4MjRiNmM3NGEwNThjYjFkMWViMzg3MWVjZTViYWY4YmE3MwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCkBA
IC0wLDAgKzEsNDYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKwor
Ly8gQ29weXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisK
Ky8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRh
bC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJl
bGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBm
dW5jdGlvbihob2xkaW5ncykgeworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKworbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleSA9IHsiayI6ICJ0
aGlzIGlzIHRoZSBrZXkifTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGlu
IHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5z
aWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5j
dGlvbigpIHsKKyAgbGV0IG9iamVjdCA9IHt9OworICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xk
aW5ncyIsIGtleSk7CisKKyAgLy8gVW5yZWdpc3RlciBiZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5j
ZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0LgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIo
a2V5KTsKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICAvLyBDYWxsIHVucmVnaXN0ZXIgYWdh
aW4gKGp1c3QgdG8gYXNzZXJ0IHdlIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkpLgorICBzdWNjZXNz
ID0gZmcudW5yZWdpc3RlcihrZXkpOworICBhc3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAvLyBv
YmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFp
bSB0aGUgdGFyZ2V0IG9iamVjdC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxs
X2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd29uJ3QgYmUg
Y2FsbGVkLCBzaW5jZSB0aGUgd2VhayByZWZlcmVuY2UKKy8vIHdhcyB1bnJlZ2lzdGVyZWQuCits
ZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFscygwLCBjbGVhbnVw
X2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcyBiL0pT
VGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmViMjEyMjg2NjNhZDJjZWQ1OTY5NWE1M2M1YjNiMGU1ZjdjYjAwYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpAQCAt
MCwwICsxLDQ5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8v
IENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisv
LyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwt
bWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhv
bGRpbmdzKSB7CisgIC8vIFNlZSB3aGljaCB0YXJnZXQgd2UncmUgY2xlYW5pbmcgdXAgYW5kIHVu
cmVnaXN0ZXIgdGhlIG90aGVyIG9uZS4KKyAgaWYgKGhvbGRpbmdzID09IDEpIHsKKyAgICBsZXQg
c3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5Mik7CisgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzIHx8
IGNhbGxlZCk7CisgIH0gZWxzZSB7CisgICAgYXNzZXJ0U2FtZShob2xkaW5ncywgMik7CisgICAg
bGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgIGFzc2VydFRydWUoc3VjY2Vz
cyB8fCBjYWxsZWQpOworICB9CisgIGNhbGxlZCA9IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkxID0geyJrIjogImZpcnN0IGtl
eSJ9OworbGV0IGtleTIgPSB7ImsiOiAic2Vjb25kIGtleSJ9OworLy8gQ3JlYXRlIHR3byBvYmpl
Y3RzIGFuZCByZWdpc3RlciB0aGVtIGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9i
amVjdHMKKy8vIG5lZWQgdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxp
YWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqZWN0MSA9IHt9OworICAgICAgICBmZy5yZWdp
c3RlcihvYmplY3QxLCAxLCBrZXkxKTsKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAg
ICAgZmcucmVnaXN0ZXIob2JqZWN0MiwgMiwga2V5Mik7CisgICAgfQorfSkoKTsKKworLy8gVGhp
cyBHQyB3aWxsIHJlY2xhaW0gdGFyZ2V0IG9iamVjdHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitn
YygpOworYXNzZXJ0RmFsc2UoY2FsbGVkKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAg
ZnVuY3Rpb24gd2FzIGNhbGxlZCBhbmQgY2xlYW5lZCB1cCBvbmUgaG9sZGluZ3MgKGJ1dCBub3Qg
dGhlIG90aGVyIG9uZSkuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0VHJ1ZShjYWxsZWQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItaW5zaWRlLWNsZWFudXAzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI3ZmFhN2I2ZTNjNDNiZjJiMTI4NjZmMjQwY2M2ZWFjMTg3ZDIxYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpA
QCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwX2hv
bGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAg
YXNzZXJ0RXF1YWxzKGhvbGRpbmdzLCAiaG9sZGluZ3MiKTsKKworICAvLyBUaGVyZSdzIG1vcmVz
IG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleSB0aGF0IHdlIGhhdmVuJ3QKKyAgLy8gY2xlYW5lZCB1
cCB5ZXQgc28gd2Ugc2hvdWxkIGJlIGFibGUgdG8gdW5yZWdpc3RlciB0aGUKKyAgLy8gY2FsbGJh
Y2sgZm9yIHRoYXQgb25lLgorICBsZXQgc3VjY2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKwor
ICBhc3NlcnRUcnVlKHN1Y2Nlc3MpOworCisgICsrY2xlYW51cF9ob2xkaW5nc19jb3VudDsKKyAg
KytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdp
c3RyeShjbGVhbnVwKTsKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRo
ZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcyB0byBiZSBpbnNpZGUKKy8v
IGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCitsZXQga2V5ID0g
eyJrIjogInRoaXMgaXMgdGhlIGtleSJ9OworCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAg
ICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5n
cyIsIGtleSk7CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5ncyIsIGtleSk7
CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIGRpc2NvdmVyIGRpcnR5IFdlYWtDZWxs
cyBhbmQgc2NoZWR1bGUgY2xlYW51cC4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9j
YWxsX2NvdW50KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2FzIGNh
bGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0RXF1YWxzKDEs
IGNsZWFudXBfY2FsbF9jb3VudCk7CisgIGFzc2VydEVxdWFscygxLCBjbGVhbnVwX2hvbGRpbmdz
X2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55LmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
dW5yZWdpc3Rlci1tYW55LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MzM5OWU2NWYwZDI3NDI2MDhiMTM4NDZk
NWE1ZDkxN2FiMzdlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJl
Z2lzdGVyLW1hbnkuanMKQEAgLTAsMCArMSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2Ut
Z2MgLS1ub2luY3JlbWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5p
dC5qcyIsICJjYWxsZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7
CitsZXQgY2xlYW51cF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9u
KGhvbGRpbmdzKSB7CisgIGFzc2VydEVxdWFscygiaG9sZGluZ3MyIiwgaG9sZGluZ3MpOworICAr
K2NsZWFudXBfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCits
ZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsi
ayI6ICJrZXkxIn07CitsZXQga2V5MiA9IHsiayI6ICJrZXkyIn07CisvLyBDcmVhdGUgdGhyZWUg
b2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRo
ZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4g
cmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDFhID0ge307CisgICAgICAgIGZn
LnJlZ2lzdGVyKG9iamVjdDFhLCAiaG9sZGluZ3MxYSIsIGtleTEpOworCisgICAgICAgIGxldCBv
YmplY3QxYiA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QxYiwgImhvbGRpbmdzMWIi
LCBrZXkxKTsKKworICAgICAgICBsZXQgb2JqZWN0MiA9IHt9OworICAgICAgICBmZy5yZWdpc3Rl
cihvYmplY3QyLCAiaG9sZGluZ3MyIiwga2V5Mik7CisKKyAgICAgICAgLy8gVW5yZWdpc3RlciBi
ZWZvcmUgdGhlIEdDIGhhcyBhIGNoYW5jZSB0byBkaXNjb3ZlciB0aGUgb2JqZWN0cy4KKyAgICAg
ICAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTEpOworICAgICAgICBhc3NlcnRUcnVl
KHN1Y2Nlc3MpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWltIHRoZSB0
YXJnZXQgb2JqZWN0cy4KK2djKCk7Cithc3NlcnRFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50
KTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQg
b25seSBmb3IgdGhlIHJlZmVyZW5jZSB3aGljaAorLy8gd2FzIG5vdCB1bnJlZ2lzdGVyZWQuCits
ZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVh
bnVwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9ob2xkaW5nc19j
b3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtd2Vhay11bnJlZ2lzdGVydG9rZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZTgwMGFhMmFjZTA5ZjZm
Mjk1MmU0ZTk3Y2I1Njk4MWVhMmUzZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHBy
b2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1y
ZWZzLXdpdGgtY2xlYW51cC1zb21lIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5n
CisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7
CisKK3ZhciBGUiA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSAoZnVuY3Rpb24gKGhvbGRpbmdz
KSB7IGdsb2JhbFRoaXMuRlJSYW4gPSB0cnVlOyB9KTsKK3sKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQgb2JqID0ge307CisgICAgICAgIC8vIG9iaiBp
cyBpdHMgb3duIHVucmVnaXN0ZXIgdG9rZW4gYW5kIGJlY29tZXMgdW5yZWFjaGFibGUgYWZ0ZXIg
dGhpcworICAgICAgICAvLyBibG9jay4gSWYgdGhlIHVucmVnaXN0ZXIgdG9rZW4gaXMgaGVsZCBz
dHJvbmdseSB0aGlzIHRlc3Qgd2lsbCBub3QKKyAgICAgICAgLy8gdGVybWluYXRlLgorICAgICAg
ICBGUi5yZWdpc3RlcihvYmosIDQyLCBvYmopOworICAgIH0KK30KKworbGV0IHRyeUFnYWluQ291
bnQgPSAxMDsKK2Z1bmN0aW9uIHRyeUFnYWluKCkgeworICAgIGdjKCk7CisgICAgaWYgKGdsb2Jh
bFRoaXMuRlJSYW4pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIS0tdHJ5QWdhaW5Db3VudCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgc2V0VGltZW91dCh0cnlBZ2FpbiwgMCk7
Cit9Cit0cnlBZ2FpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404748</attachid>
            <date>2020-07-20 13:10:46 -0700</date>
            <delta_ts>2020-07-20 14:03:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199888-20200720131045.patch</filename>
            <type>text/plain</type>
            <size>192396</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzRmOTg2OWEwOTc5MGJmNWM2ODM4ZGIyNTc4NDIxNjE4MzhlYmY3Li5jNzUxYTVkZDY0OTY1ZWJh
YThlOWJjMjU3ZDk3MzhjZGUzYjlkYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMuIFRoZXJlIGFyZSB0d28K
KyAgICAgICAgbWFpbiBwYXJ0cyB0byB0aGlzIHBhdGNoLCB0aGUgZmlyc3QgaXMgcmVmYWN0b3Jp
bmcgUHJvbWlzZVRpbWVyIGEKKyAgICAgICAgbW9yZSBnZW5lcmFsIGludG8gRGVmZXJyZWRXb3Jr
VGltZXIuIFRoaXMgYWxsb3dzIHVzIHRvIGZpbmFsbHkKKyAgICAgICAgaGF2ZSBhICJyZWFsIiBz
ZXRUaW1lb3V0IG9uIHRoZSBqc2MgY29tbWFuZCBsaW5lLiBUaGUgc2Vjb25kIHBhcnQKKyAgICAg
ICAgaXMgYWRkaW5nIGFsbCB0aGUgbmV3IGNsYXNzZXMgbmVlZGVkIGZvciBGaW5hbGl6YXRpb25S
ZWdpc3RyaWVzLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBpcyBtb3N0bHkgYSByZW5hbWUg
YnV0IGRvZXMgdHdvIG1haW4gbmV3CisgICAgICAgIHRoaW5ncy4gVGhlIGZpcnN0IGlzIHRoYXQg
aXQgbm93IG5vdGlmaWVzIHRoZSBWTSB3ZSBoYXZlIGZpbmlzaGVkCisgICAgICAgIGEgc3luY2hy
b251b3VzIEpTIGV4ZWN1dGlvbiwgc28gdGhhdCBXZWFrUmVmcyBjYW4gYmUKKyAgICAgICAgY29s
bGVjdGVkLiBUaGUgc2Vjb25kIGlzIHRoYXQgaXQgbm93IGNhdGNoZXMgYW55IGV4Y2VwdGlvbnMg
YW5kCisgICAgICAgIGZvcndhcmRzIHRoZSB0byBhIG5ldyBtZXRob2Qgb24gdGhlIGdsb2JhbCBv
YmplY3QgbWV0aG9kCisgICAgICAgIHRhYmxlLiBGb3IgV2ViQ29yZSwgdGhpcyByZXBvcnRzIHRo
ZSBleGNlcHRpb24gdG8gdGhlIGNvbnNvbGUuIEZvcgorICAgICAgICBBUEkgdXNlcnMsIHRoaXMg
Y2FsbHMgdGhlaXIgZXhjZXB0aW9uSGFuZGxlciBibG9jay4gRm9yIHRoZSBDTEksCisgICAgICAg
IGl0IGV4aXRzIHdpdGggZXhpdCBzdGF0dXMgMyAob3VyIGdlbmVyYWwgZXhjZXB0aW9uIGV4aXQK
KyAgICAgICAgc3RhdHVzKS4gVW5mb3J0dW5hdGVseSwgdGhlcmUncyBub3QgY3VycmVudGx5IGFu
IGVyZ29ub21pYyB3YXkgdG8KKyAgICAgICAgcGFzcyB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uIGZy
b20gdGhlIENMSSBhcmd1bWVudHMgdG8gdGhpcyBoYW5kbGVyCisgICAgICAgIHNvIHRoYXQncyBu
b3Qgc3VwcG9ydGVkIGhlcmUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBGaW5hbGl6
YXRpb25SZWdpc3RyeSB0aGlzIHBhdGNoIGFkZHMgYSAibmV3IgorICAgICAgICBjbGFzcyBKU0Rl
c3RydWN0aWJsZUludGVybmFsRmllbGRPYmplY3RJbXBsLCB3aGljaCBhbGxvd3MgdXMgdG8KKyAg
ICAgICAgaGF2ZSBhIGRlc3RydWN0aWJsZSBvYmplY3Qgd2l0aCBpbnRlcm5hbCBmaWVsZHMuIFNp
bmNlIHRoZSBvcmRlcgorICAgICAgICBvZiBjb2xsZWN0aW9uIGRvZXNuJ3QgbWF0dGVyIHdlIGN1
cnJlbnRseSB1c2UgQysrIEhhc2hUYWJsZXMgb24KKyAgICAgICAgdGhlIEZpbmFsaXphdGlvblJl
Z2lzdHJ5LiBTaW5jZSB1c2VycyBjYW4gdW5yZWdpc3RlciBvYmplY3RzIHdoaWxlCisgICAgICAg
IHRoZSBjYWxsYmFjayBpcyBwZW5kaW5nIHdlIGhhdmUgYSBoYXNoIHRhYmxlIGZvciB0aGUgbGl2
ZSBlbnRyaWVzCisgICAgICAgIGFuZCBhIHNlY29uZCBoYXNoIHRhYmxlIGZvciB0aGUgZGVhZCBv
bmVzLiBMYXN0bHksIGJlY2F1c2UgdXNlcnMKKyAgICAgICAgYXJlIG5vdCByZXF1cmVkIHRvIHBy
b3ZpZGUgYSB0b2tlbiBmb3IgdW5yZWdpc3RyYXRpb24gd2UgaGF2ZSB0d28KKyAgICAgICAgZXh0
cmEgVmVjdG9ycyBjb250YWluaW5nIHRoZSBsaXZlL2RlYWQgb2JqZWN0cyB0aGF0IGFyZSBub3QK
KyAgICAgICAgdW5yZWdpc3RlcmlibGUuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvblNldFRpbWVvdXQpOgorICAgICAgICAoZnVuY3Rpb25GaW5hbGl6YXRpb25S
ZWdpc3RyeUxpdmVDb3VudCk6CisgICAgICAgIChmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5
RGVhZENvdW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY2hlY2tVbmNhdWdodEV4Y2Vw
dGlvbik6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3ApOgorICAgICAgICAocnVuSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb21pc2VUaW1lci5jcHAuCisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsp
OgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVy
cmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6
OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRl
ZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKToKKyAgICAgICAgKiBydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9taXNlVGltZXIuaC4KKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpGaW5hbGl6
YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAqIHJ1bnRpbWUvRmlu
YWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OmdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jRmlu
YWxpemF0aW9uUmVnaXN0cnlSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OnByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeVByb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcC4KKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5OjpydW5GaW5hbGl6YXRpb25DbGVhbnVwKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6bGl2ZUNvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZGVhZENvdW50KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdGFja092ZXJmbG93RnJhbWVDYWxsZWUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjptYXBTZXRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnNldEFkZFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphcnJheUpvaW5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk6CisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg6CisgICAgICAgICogcnVudGltZS9KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCYXNlPjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2Vk
TnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZXNv
bHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6
OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRl
SUQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlN
b2R1bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKToKKyAgICAgICAgKiB3YXNtL2pz
L0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMC0wNy0xOSAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIG5vbi11bmlm
aWVkIHNvdXJjZSBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDY0MDNlODBhZGI4MTdmNjQwYTU5
NTE5N2RhZDFlMTI1ZGRjMjJiLi5lNTgxNDU5MGE2MDQ0OGRmN2YxYmQ5MDU4ZTc0MzM4NWIxNTRl
OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZp
bmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgUmVmYWN0b3IgdGhpbmdzIGZvciBjaGFuZ2luZyBQcm9taXNlRGVmZXJyZWRU
aW1lciB0byBEZWZlcnJlZFdvcmtUaW1lci4KKworICAgICAgICBBbHNvLCBhZGQgZ2xvYmFsT2Jq
ZWN0IGhvb2sgZm9yIHJlcG9ydGluZyB1bmNhdWdodCBleGNlcHRpb25zIGZyb20gSlNDJ3MKKyAg
ICAgICAgcnVubG9vcCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6cmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFt
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6aW5zdGFudGlhdGVTdHJl
YW1pbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6YWRkVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGlt
ZXJTZXROb3RpZmljYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6
CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorCiAyMDIw
LTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgY2FudmFzIGNhcHR1cmVTdHJlYW0sIHRlc3Rz
IGZhaWxpbmcgc2luY2UgdGhleSB3ZXJlIGFkZGVkIGluIHIyMTM1OTgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDc1YzU4ZDQ5OWFj
NDcyNTZlYzhkZTdkYTEyNjAxZDNjNjBhNjMzOC4uOWI0ZjMzOGZkOTAzMTIyNjk2Njc5YTg3OGIx
YzI4YmY2ZTA0OTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ0LDExICs0NCwxNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcwog
ICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBj
b21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKIH07
CiAKK3ZvaWQgSlNBUElHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb24p
Cit7CisgICAgQmFzZTo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChnbG9iYWxP
YmplY3QsIGV4Y2VwdGlvbik7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKaW5kZXggNzM5N2M2YjRhNjBjNjJjMzhmNDBj
NjgxMDc2MWM4NWM4ZmMzY2M3NC4uODE2N2M1Y2MwYmM0YWZkOTdjOTg1NjQ5NTNkZGVkNDMwYzcz
M2U1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3Qu
aApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworCiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9t
aXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxv
YWRlciosIEpTU3RyaW5nKiBtb2R1bGVOYW1lVmFsdWUsIEpTVmFsdWUgcGFyYW1ldGVycywgY29u
c3QgU291cmNlT3JpZ2luJik7CiAgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVz
b2x2ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXlWYWx1ZSwg
SlNWYWx1ZSByZWZlcnJlclZhbHVlLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNJbnRlcm5hbFBy
b21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIq
LCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4IGQ2MWFhYzdlNDVjNTM3MjA1YThhY2E3ZTA4
ZWZkNjk0Y2JlZGM0MjMuLmRkZTJiZDMyM2JjN2I2NWI0ZjA5MDIzYjg3YWVhMjdiMDQyMzYzOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3Qu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpA
QCAtNjIsMTMgKzYyLDIwIEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQVBJR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2Fk
ZXJSZXNvbHZlLCAvLyBtb2R1bGVMb2FkZXJSZXNvbHZlCiAgICAgJm1vZHVsZUxvYWRlckZldGNo
LCAvLyBtb2R1bGVMb2FkZXJGZXRjaAogICAgICZtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRh
UHJvcGVydGllcywgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKLSAg
ICBtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKKyAgICAmbW9k
dWxlTG9hZGVyRXZhbHVhdGUsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwg
Ly8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25B
dEV2ZW50TG9vcCwKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRy
LCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1p
bmcKIH07CiAKK3ZvaWQgSlNBUElHbG9iYWxPYmplY3Q6OnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9u
QXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNl
cHRpb24pCit7CisgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0
aEpTR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihnbG9iYWxPYmplY3QpXTsKKyAgICBbY29u
dGV4dCBub3RpZnlFeGNlcHRpb246dG9SZWYoZ2xvYmFsT2JqZWN0LT52bSgpLCBleGNlcHRpb24t
PnZhbHVlKCkpXTsKK30KKwogc3RhdGljIEV4cGVjdGVkPFVSTCwgU3RyaW5nPiBjb21wdXRlVmFs
aWRJbXBvcnRTcGVjaWZpZXIoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHNwZWNpZmll
cikKIHsKICAgICBVUkwgYWJzb2x1dGVVUkwoVVJMKCksIHNwZWNpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzZhMDgzMGZhNTFlOWIyMjlhNGVmMzE4YTkwYzll
NzUyMmMwYWJlNy4uMzY3NjU5Mzc0ZWIyZDNjYjMxNDY0YTVhOTE0ZWVlOThhMmFjOTljNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODMwLDYgKzgzMCw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9EYXRh
Vmlldy5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3Rh
bmNlQ2FjaGUuaAorICAgIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaAogICAgIHJ1bnRpbWUv
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKICAgICBydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xv
dC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaApAQCAtOTY4LDcgKzk2OSw2
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVu
dGltZS9QYXJzZUludC5oCiAgICAgcnVudGltZS9Qcml2YXRlTmFtZS5oCiAgICAgcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5oCi0gICAgcnVudGltZS9Qcm9taXNlVGltZXIuaAogICAgIHJ1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKICAgICBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmgKICAgICBydW50aW1lL1Byb3BlcnR5TmFtZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDRjZDc0YzI1MjJlYTJiZTlkMTI2Yzg4ZmRiMjA5ODM3ZDlhNTJiNWYuLmEyNmE5OTc1
MjUyZDA2NTQ2NmJmYTYxYTViNWMyZWYzMGYyNGY2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05MzEsMTYgKzkzMSwxOSBAQAogCQk1MzBGREU3NTIxRkFCMDA2MDAwNTlENjUg
LyogdGVzdEluY2x1ZGVzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzBGREU3MzIxRkFBRkM2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gKi87IH07
CiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENDkxRUE1ODFFNTAwNTI1
MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAv
KiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdhc21QbGFuLmggKi87IH07Ci0JCTUzMTgw
NDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8q
IEIzRXh0cmFjdFZhbHVlLmggKi87IH07Ci0JCTUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBE
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCAqLzsgfTsKKyAgICAgICAgICAgICAgICA1MzE4MDQ1QzIyRUFBQzRCMDA0
QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1
ZS5oICovOyB9OworICAgICAgICAgICAgICAgIDUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggKi87IH07CisgICAgICAgICAgICAgICAgNTMzM0JCREIy
MTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4
RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovOyB9OwogCQk1MzMzQkJEQzIxMTBG
N0Q5MDA3NjE4RUMgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R1NwZWN1bGF0aXZlSklULmNwcCAqLzsgfTsKIAkJNTMzM0JCREQyMTEwRjdFMTAwNzYxOEVDIC8q
IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUNjQuY3BwICovOyB9OwotCQk1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMzhFMkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNp
ZGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisgICAgICAgICAgICAgICAgNTMzOEUyQTcyMzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRP
U1JFeGl0U2lkZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzM4RTJBNjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MzM4RUJBMzIzQUIwNEI4MDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFQkEyMjNB
QjA0QTMwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oICovOyB9OwotCQk1MzQx
RkM3MjFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0MUZDNzExREFDMzQzQzAw
RTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLzsgfTsKKyAgICAgICAgICAgICAg
ICA1MzNEMDc0NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMz
RDA3NDMyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iu
aCAqLzsgfTsKKwkJNTMzRDA3NDcyMkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
M0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi87IH07
CisgICAgICAgICAgICAgICAgNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgg
Ki87IH07CiAJCTUzNDYzODcxMUU3MENGM0QwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0NjM4NzAxRTcw
Q0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIFBy
b21pc2VUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIFByb21pc2VUaW1lci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUzNDg2QkI3MUMxNzk1QzMw
MEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisgICAgICAg
ICAgICAgICAgNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFF
NzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworICAgICAgICAgICAgICAgIDUzNDg2QkI3MUMx
Nzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVk
QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTUzNDkwMjg1MUM3Mjc2QjcwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0OTAyODIxQzcyNDJDODAw
MTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi87IH07CiAJCTUzNEM0NTdDMUJDNzI0MTEw
MDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAv
KiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNTM0RTAzNEUxRTRENEIx
NjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNEUwMzREMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmgg
Ki87IH07CkBAIC0zNTk3LDYgKzM2MDAsNyBAQAogCQk1MkVFRDc5MzI0OTJCODY4MDA4RjRDOTMg
LyogRnVuY3Rpb25BbGxvd2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25BbGxvd2xpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNkMzNUIxRTcxRUIwODAwODFGNEND
IC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDsgcGF0aCA9IGpz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJGNkMzNUMxRTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzAwNzQwQzIyREQ2RjY2MDBCOUFDQjMgLyogSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDAxRkEz
RTMxQzAwMjZBNTQ1IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U291cmNlc0NvY29hLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYzNDEx
RkEzRTMxRDAwMjZBNTQ1IC8qIFNvdXJjZXMudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNv
dXJjZXMudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzBBNjZBRDFGQTNFNzc3
MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTQ0LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE0NC5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzYyMiwxNyArMzYyNiwyMiBA
QAogCQk1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNFeHRyYWN0VmFsdWUuaDsgcGF0aCA9IGIzL0IzRXh0cmFjdFZhbHVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTgwNDVEMjJFQUFGMEYwMDRBNzM0MiAvKiBC
M0V4dHJhY3RWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0V4dHJhY3RWYWx1ZS5jcHA7
IHBhdGggPSBiMy9CM0V4dHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUzMUQ0RTE5MUY1OUNERDIwMEVDODM2QyAvKiB0ZXN0YXBpLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IHRlc3RhcGkuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluYWxpemF0aW9uUmVn
aXN0cnlQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxRUU3QkMy
MkRFNkVDNjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMyNjMxQjMyMTg3NzdBNTAwN0I4MTkxIC8qIEphdmFT
Y3JpcHRDb3JlLm1vZHVsZW1hcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLm1vZHVsZS1tYXAiOyBw
YXRoID0gSmF2YVNjcmlwdENvcmUubW9kdWxlbWFwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MzM4RTJBNjIzOTZFRkVDMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2twb2ludE9TUkV4aXRT
aWRlU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMzOEVCQTIyM0FCMDRB
MzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5Lmg7IHBhdGggPSBmdGwvRlRM
U2VsZWN0UHJlZGljdGFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMz
QjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbU9wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzNE
MDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0QwNzQ1MjJDMkQ4N0YwMDREMkZFMiAvKiBGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MzNEMDc0NjIyQzJEOUQxMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzNDFGQzZGMURBQzMzRTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzV2Fz
bUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDFGQzcxMURBQzM0M0MwMEU3RTRE
NyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0NjM4NzAxRTcwQ0Yz
RDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUnVuTG9vcFRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NDYzODcyMUU3MEQwMTUwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1J1bkxvb3BUaW1lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGlt
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvbWlzZVRpbWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBQ
cm9taXNlVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJv
bWlzZVRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTM0ODZCQjYxQzE3
OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAgICAg
ICAgICAgICAgICA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8q
IERlZmVycmVkV29ya1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlZmVycmVkV29ya1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAg
ICAgICAgICAgICAgICA1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBl
ZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRB
cnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgyMUM3MjQyQzgw
MDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFy
cmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MzFDNzI0
MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFR5cGVkQXJyYXlDVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVkQXJyYXlD
VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEzNCw2ICs3MTQzLDggQEAK
IAkJCQkxNEExNTYzMDEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCAqLywK
IAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKKwkJCQk1
MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovLAorCQkJ
CTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovLAogCQkJ
CTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAq
LywKIAkJCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90Lmgg
Ki8sCiAJCQkJMEZFMDUwMEYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAg
Ki8sCkBAIC03MTg0LDExICs3MTk1LDE3IEBACiAJCQkJMTQ3MzQxRTkxREMyQ0YyNTAwQUEyOUJB
IC8qIEV4ZWN1dGFibGVCYXNlLmNwcCAqLywKIAkJCQkxNDczNDFDQjFEQzAyRDcyMDBBQTI5QkEg
LyogRXhlY3V0YWJsZUJhc2UuaCAqLywKIAkJCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyog
RXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggKi8sCi0JCQkJQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5
IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50
LmNwcCAqLywKIAkJCQlDRUNGQUQzMjIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVy
QWdlbnQuaCAqLywKIAkJCQlDRTIwQkQwNDIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6
emVyQWdlbnRCYXNlLmNwcCAqLywKIAkJCQlDRTIwQkQwMzIzN0QzQUQ0MDA0NkU1MjAgLyogRmls
ZUJhc2VkRnV6emVyQWdlbnRCYXNlLmggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUzM0QwNzQ1MjJDMkQ4N0YwMDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQk1MzNEMDc0MzIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovLAorCQkJCTUzMUVFN0JDMjJERTZFQzYwMDMwREE4
MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAgKi8sCisJCQkJNTMxRUU3Qjky
MkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggKi8sCiAJ
CQkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovLAorCQkJCUE3
QThBRjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYy
QTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkExN0FE
QjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUJDMjY4MEMwMEUxNkQ0RTkw
MEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzI2ODBDMTBFMTZE
NEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLApAQCAtNzM0NSw3ICs3MzYy
LDEzIEBACiAJCQkJMEY3REYxMzkxRTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmNwcCAqLywKIAkJCQkwRjdERjEzQTFFMjk3MTBFMDA5NTk1MUIgLyog
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlBN0I0QUNBRTE0ODRD
OUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLywKLQkJCQkwRjJCNjZDMTE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0
cnkuY3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzNEMDc0NjIyQzJE
OUQxMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFy
cmF5LmNwcCAqLywKKwkJCQk3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5
LmNwcCAqLywKKwkJCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5Lmgg
Ki8sCisJCQkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRjJCNjZDMTE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNGbG9hdDMyQXJyYXkuaCAqLywKIAkJCQkwRjJCNjZDMjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNG
dW5jdGlvbi5jcHAgKi8sCiAJCQkJRjY5MkE4NUYwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rp
b24uaCAqLywKQEAgLTc1NDQsOSArNzU2Nyw3IEBACiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0Iy
QjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8q
IFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEg
LyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKLQkJCQk1MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEg
LyogUHJvbWlzZVRpbWVyLmNwcCAqLywKLQkJCQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyog
UHJvbWlzZVRpbWVyLmggKi8sCi0JCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3Bl
cnR5RGVzY3JpcHRvci5jcHAgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3
RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAogCQkJ
CUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJ
CQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywK
IAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCkBAIC05
Mjg2LDYgKzkzMDcsNyBAQAogCQkJCTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1NCAvKiBEZWZlckdD
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MTJERjE3Q0Q4NzdDMDA4Q0M5M0MgLyogRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTUwNjg2NTFBRTI0
NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MzQ2Mzg3NTFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBE
ZWxldGVBbGxDb2RlRWZmb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MzExRkEzMjI0MERCMUQz
MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLApAQCAtOTUyNiw5
ICs5NTQ4LDExIEBACiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25S
YW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjdDRjgyMjQ5MzE2QjEwMDIyQkY2RCAv
KiBGYXN0SklUUGVybWlzc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzU3MUYzM0E0
NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFn
ZW50LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VD
RkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTIwQkQwNTIzN0QzRTIzMDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdl
bnRCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyog
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTMzRDA3NDQyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAv
KiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9h
dDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAv
KiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFC
QjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5MDBE
Qzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTk4NTcsNyArOTg4MSw4
IEBACiAJCQkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9z
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9h
dDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1MzNEMDc0NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBGMkI2NkVGMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEwMTQ3LDggKzEwMTcyLDcgQEAKIAkJCQlEQzYwNUI2MDFDRTI2
RUE3MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTEw
MURDQTkyOTQwMDE0RjlGRSAvKiBQcm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDczNDFENDFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBQcm9taXNlVGltZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGRDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNv
bmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDBGRDNFNDBFMUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3Bl
cnR5TWFwSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBC
NDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBjMDUwMmEzNGE2NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li4y
YTI4N2E3ZmRkYjA4MDRmM2I2MDEyMGRjYTBiZTc1Yjc1NWU3OTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CkBAIC03ODYsNiArNzg2LDggQEAgcnVudGltZS9FeGNlcHRpb25TY29wZS5j
cHAKIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuY3BwCiBydW50aW1lL0ZpbGVCYXNlZEZ1enplckFn
ZW50LmNwcAogcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCitydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCitydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcAogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUR1
bXAuY3BwCkBAIC04NTAsNiArODUyLDcgQEAgcnVudGltZS9KU0RhdGFWaWV3LmNwcAogcnVudGlt
ZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogcnVudGltZS9KU0RhdGVNYXRoLmNwcAogcnVudGlt
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKK3J1bnRpbWUvSlNGaW5hbGl6
YXRpb25SZWdpc3RyeS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNHZW5l
cmF0b3IuY3BwCiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCkBAIC05MzIsNyArOTM1
LDcgQEAgcnVudGltZS9PcGVyYXRpb25zLmNwcAogcnVudGltZS9PcHRpb25zLmNwcAogcnVudGlt
ZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcAotcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCitydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCiBydW50aW1lL1By
b3BlcnR5U2xvdC5jcHAKIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggMTg0YmI5NDQ0MWQzZmE0MzM0MmFmYmY5NjY1Y2MxYmU3Mzll
ZTAxMy4uZDgxYWRlZmY1Zjg0MjZhODUzMjQyYzRlN2ExN2I1N2E2NTIxYzZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJc29D
ZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVk
ZSAiSklUV29ya2xpc3QuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFw
LmgiCiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCkBAIC02MTEsNiArNjEyLDggQEAgdm9p
ZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICAgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtPYmplY3RSZWY+KCp2bSgpLm1f
d2Vha09iamVjdFJlZlNwYWNlKTsKICAgICBpZiAodm0oKS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkK
ICAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3Rh
bmNlPigqdm0oKS5tX2Vycm9ySW5zdGFuY2VTcGFjZSk7CisgICAgaWYgKHZtKCkubV9maW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCp2bSgpLm1fZmluYWxpemF0aW9uUmVn
aXN0cnlTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKHZtKCkubV93
ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyZTBkMGEz
MGRmNWY2NTMwOGU3YTlmY2ViOTY0MzRhMjk3ZjE4MzE5Li5jOWJlZWQ5ZmE4MjM0ZjFhMTA2MjFm
MzEzNjIwYmJjYWY1NjI5ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkNvbXBpbGVyVGltaW5nU2NvcGUuaCIKICNpbmNsdWRlICJDb21wbGV0aW9u
LmgiCiAjaW5jbHVkZSAiQ29uZmlnRmlsZS5oIgorI2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVy
LmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKKyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNM
b2NrLmgiCkBAIC01Niw3ICs1OCw2IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIK
LSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJSZWxlYXNlSGVhcEFjY2Vzc1Nj
b3BlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlz
aXRvci5oIgpAQCAtMTU1LDYgKzE1Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSB7CiAKKyNkZWZpbmUgRVhJVF9FWENFUFRJT04gMworCiBOT19SRVRVUk5fV0lUSF9WQUxV
RSBzdGF0aWMgdm9pZCBqc2NFeGl0KGludCBzdGF0dXMpCiB7CiAgICAgd2FpdEZvckFzeW5jaHJv
bm91c0Rpc2Fzc2VtYmx5KCk7CkBAIC0xODgsNyArMTkxLDcgQEAgY2xhc3MgV29ya2VyczsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmLCBi
b29sIGlzV29ya2VyLCBjb25zdCBGdW5jJik7Ci1zdGF0aWMgdm9pZCBjaGVja0V4Y2VwdGlvbihH
bG9iYWxPYmplY3QqLCBib29sIGlzTGFzdEZpbGUsIGJvb2wgaGFzRXhjZXB0aW9uLCBKU1ZhbHVl
LCBDb21tYW5kTGluZSYsIGJvb2wmIHN1Y2Nlc3MpOworc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRp
b24oR2xvYmFsT2JqZWN0KiwgYm9vbCBpc0xhc3RGaWxlLCBib29sIGhhc0V4Y2VwdGlvbiwgSlNW
YWx1ZSwgY29uc3QgQ29tbWFuZExpbmUmLCBib29sJiBzdWNjZXNzKTsKIAogY2xhc3MgTWVzc2Fn
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZXNzYWdlPiB7CiBwdWJsaWM6CkBAIC0z
MDIsNyArMzA1LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ2FsbE1hc3F1ZXJhZGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0N1c3RvbVByb3BlcnRpZXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWlu
TWljcm90YXNrcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRUaW1lb3V0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJlbGVhc2VXZWFrUmVmcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxp
dmVDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25JczMyQml0UGxhdGZvcm0oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tN
b2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJv
ZmlsZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKQEAgLTUzOCw4ICs1NDQsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkdW1wVHlwZXNGb3JBbGxWYXJpYWJs
ZXMiLCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyAsIDApOwogCiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZHJhaW5NaWNyb3Rhc2tzIiwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3Ms
IDApOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlbGVhc2VXZWFrUmVmcyIsIGZ1bmN0aW9u
UmVsZWFzZVdlYWtSZWZzLCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRUaW1lb3V0
IiwgZnVuY3Rpb25TZXRUaW1lb3V0LCAyKTsKIAorICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJl
bGVhc2VXZWFrUmVmcyIsIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzLCAwKTsKKyAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJmaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCIsIGZ1bmN0aW9uRmlu
YWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50IiwgZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdp
c3RyeURlYWRDb3VudCwgMCk7CisgICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImdl
dFJhbmRvbVNlZWQiLCBmdW5jdGlvbkdldFJhbmRvbVNlZWQsIDApOwogICAgICAgICBhZGRGdW5j
dGlvbih2bSwgInNldFJhbmRvbVNlZWQiLCBmdW5jdGlvblNldFJhbmRvbVNlZWQsIDEpOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgImlzUm9wZSIsIGZ1bmN0aW9uSXNSb3BlLCAxKTsKQEAgLTYz
OCw2ICs2NDgsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJZGVudGlmaWVyIG1vZHVsZUxvYWRl
clJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFs
dWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVy
RmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUs
IEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2xvYmFsT2JqZWN0LCBKU0ds
b2JhbE9iamVjdCk7CiAKQEAgLTY2MCw2ICs2NzIsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAg
Jm1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzLAogICAgIG51bGxwdHIsIC8v
IG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRy
YWNrZXIKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICBudWxs
cHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5n
CiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGluYXRlU3RyZWFtaW5nCkBAIC0yMTg3LDYgKzIyMDAs
MjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNr
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2V0VGltZW91dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gRklYTUU6IFRoaXMgbWVh
bnMgd2UgY2FuJ3QgcGFzcyBhbnkgaW50ZXJuYWwgZnVuY3Rpb24gYnV0IEkgZG9uJ3QgdGhpbmsg
dGhhdCdzIGNvbW1vbiBmb3IgdGVzdGluZy4KKyAgICBhdXRvIGNhbGxiYWNrID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICgh
Y2FsbGJhY2spCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGaXJzdCBhcmd1bWVudCBpcyBub3QgYSBKUyBmdW5jdGlvbiJfcyk7CisKKyAgICAv
LyBGSVhNRTogV2UgZG9uJ3QgbG9vayBhdCB0aGUgdGltZW91dCBwYXJhbWV0ZXIgYmVjYXVzZSB3
ZSBkb24ndCBoYXZlIGEgc2NoZWR1bGUgd29yayBsYXRlciBBUEkuCisgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBjYWxsYmFjaywgeyB9KTsKKyAgICB2bS5kZWZl
cnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihjYWxsYmFjaywgW2NhbGxiYWNrXSB7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsYmFjay0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgY2Fs
bGJhY2ssIGpzVW5kZWZpbmVkKCksIGFyZ3MsICJZb3Ugc2hvdWxkbid0IHNlZSB0aGlzLi4uIik7
CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayhjYWxsYmFj
ayk7CisgICAgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VXZWFrUmVm
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIxOTQsNiArMjIzMCwzMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZVdlYWtSZWZzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluYWxp
emF0aW9uUmVnaXN0cnlMaXZlQ291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGZp
bmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghZmluYWxpemF0aW9uUmVn
aXN0cnkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9j
aygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJl
Z2lzdHJ5LT5saXZlQ291bnQobG9ja2VyKSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lzdHJ5RGVhZENvdW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBmaW5hbGl6YXRpb25SZWdpc3RyeSA9IGpzRHluYW1p
Y0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3RyeSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKKyAgICBpZiAoIWZpbmFsaXphdGlvblJlZ2lzdHJ5KQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmlyc3QgYXJndW1lbnQgaXMgbm90IGEg
ZmluYWxpemF0aW9uUmVnaXN0cnkiX3MpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhm
aW5hbGl6YXRpb25SZWdpc3RyeS0+Y2VsbExvY2soKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihmaW5hbGl6YXRpb25SZWdpc3RyeS0+ZGVhZENvdW50KGxvY2tlcikpKTsK
K30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9y
bShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAg
LTI2MTcsMTAgKzI2NzksMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAg
ICAgLy8gV2UgY2FuJ3QgdXNlIGRlc3RydWN0b3JzIGluIHRoZSBmb2xsb3dpbmcgY29kZSBiZWNh
dXNlIGl0IHVzZXMgV2luZG93cwogICAgIC8vIFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsaW5n
Ci0gICAgaW50IHJlcyA9IDA7CisgICAgaW50IHJlcyA9IEVYSVRfU1VDQ0VTUzsKICAgICBUUlkK
ICAgICAgICAgcmVzID0ganNjbWFpbihhcmdjLCBhcmd2KTsKLSAgICBFWENFUFQocmVzID0gMykK
KyAgICBFWENFUFQocmVzID0gRVhJVF9FWENFUFRJT04pCiAgICAgZmluYWxpemVTdGF0c0F0RW5k
T2ZUZXN0aW5nKCk7CiAgICAgaWYgKGdldGVudigiSlNfU0hFTExfV0FJVF9GT1JfSU5QVVRfVE9f
RVhJVCIpKSB7CiAgICAgICAgIFdURjo6ZmFzdERpc2FibGVTY2F2ZW5nZXIoKTsKQEAgLTI2OTEs
NyArMjc1Myw3IEBAIHN0YXRpYyB2b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgZXhjZXB0aW9uKQogI3VuZGVmIENIRUNLX0VYQ0VQVElPTgogfQog
Ci1zdGF0aWMgYm9vbCBjaGVja1VuY2F1Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXhjZXB0aW9uLCBDb21tYW5kTGluZSYgb3B0aW9ucykK
K3N0YXRpYyBib29sIGNoZWNrVW5jYXVnaHRFeGNlcHRpb24oVk0mIHZtLCBHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24sIGNvbnN0IENvbW1hbmRMaW5lJiBvcHRp
b25zKQogewogICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRFeGNlcHRpb25OYW1lID0gb3B0aW9u
cy5tX3VuY2F1Z2h0RXhjZXB0aW9uTmFtZTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CkBAIC0yNzIzLDcgKzI3ODUsNyBAQCBzdGF0aWMgYm9vbCBjaGVja1VuY2F1
Z2h0RXhjZXB0aW9uKFZNJiB2bSwgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRp
b24sIEpTVmFsdWUgdmFsdWUsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQor
c3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJv
b2wgaXNMYXN0RmlsZSwgYm9vbCBoYXNFeGNlcHRpb24sIEpTVmFsdWUgdmFsdWUsIGNvbnN0IENv
bW1hbmRMaW5lJiBvcHRpb25zLCBib29sJiBzdWNjZXNzKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKIApAQCAtMjc0Miw2ICsyODA0LDE1IEBAIHN0YXRpYyB2b2lkIGNoZWNr
RXhjZXB0aW9uKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIGlzTGFzdEZpbGUsIGJv
b2wgaGFzCiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNoZWNrVW5jYXVnaHRFeGNlcHRp
b24odm0sIGdsb2JhbE9iamVjdCwgKGhhc0V4Y2VwdGlvbikgPyB2YWx1ZSA6IEpTVmFsdWUoKSwg
b3B0aW9ucyk7CiB9CiAKK3ZvaWQgR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhj
ZXB0aW9uKQoreworICAgIGF1dG8qIGdsb2JhbCA9IGpzQ2FzdDxHbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpOworICAgIGR1bXBFeGNlcHRpb24oZ2xvYmFsLCBleGNlcHRpb24tPnZhbHVlKCkp
OworICAgIGJvb2wgaGlkZU5vUmV0dXJuID0gdHJ1ZTsKKyAgICBpZiAoaGlkZU5vUmV0dXJuKQor
ICAgICAgICBqc2NFeGl0KEVYSVRfRVhDRVBUSU9OKTsKK30KKwogc3RhdGljIHZvaWQgcnVuV2l0
aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25z
LCBib29sJiBzdWNjZXNzKQogewogICAgIFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzID0gb3B0aW9u
cy5tX3NjcmlwdHM7CkBAIC0zMTc2LDcgKzMyNDcsNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1h
bmRMaW5lJiBvcHRpb25zLCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAg
ICBmdW5jKHZtLCBnbG9iYWxPYmplY3QsIHN1Y2Nlc3MpOwogICAgICAgICB2bS5kcmFpbk1pY3Jv
dGFza3MoKTsKICAgICB9Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5ydW5SdW5Mb29wKCk7CisgICAg
dm0uZGVmZXJyZWRXb3JrVGltZXItPnJ1blJ1bkxvb3AoKTsKICAgICB7CiAgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZlICYm
IHN1Y2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1MjYwNzVhZmRlYmFjOWFkYmEyNTI2NmJh
Li41MGQ2YmJhNTQ5OGMwMmI1MjI0YmIzN2M2NWQ3YWIyZDE4MmU4YjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsNiArMzYsNyBA
QAogICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBt
YWNybyhFdmFsRXJyb3IpIFwKKyAgICBtYWNybyhGaW5hbGl6YXRpb25SZWdpc3RyeSkgXAogICAg
IG1hY3JvKEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRs
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdv
cmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtU
aW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk1NmRhNDE0MDFiMTZhZmRlZDhlMWFkMzljMjQ2Y2QzNmJm
YjUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCisKKyNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNp
bmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIERlZmVycmVkV29ya1Rp
bWVySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitE
ZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRXb3JrVGltZXIoVk0mIHZtKQorICAgIDogQmFzZSh2
bSkKK3sKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkKK3sKKyAg
ICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgbV90YXNr
TG9jay5sb2NrKCk7CisgICAgY2FuY2VsVGltZXIoKTsKKyAgICBpZiAoIW1fcnVuVGFza3MpIHsK
KyAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBbdGlja2V0LCB0
YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVk
V29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVy
KHRpY2tldCkpOworCisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhl
c2UgcHJvbWlzZXMuCisgICAgICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tl
dCkpIHsKKyAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUg
d29yay4KKyAgICAgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVlOworICAgICAg
ICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3ZSBjYW4gcmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVy
ZS4KKyAgICAgICAgICAgIHZtLmZpbmFsaXplU3luY2hyb25vdXNKU0V4ZWN1dGlvbigpOworCisg
ICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAg
ICAgICB0YXNrKCk7CisgICAgICAgICAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24gPSBzY29w
ZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRp
Y2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKKyAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlKCktPnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBl
eGNlcHRpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFz
a3MoKTsKKyAgICAgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsK
KworICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRs
eVJ1bm5pbmdUYXNrID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9wZW5k
aW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRz
RmluaXNoKQorICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworCisgICAgbV90YXNr
TG9jay51bmxvY2soKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgp
Cit7CisgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX2FwaUxvY2st
PnZtKCktPnJ1bkxvb3AoKSk7CisgICAgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRz
RmluaXNoID0gdHJ1ZTsKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5zaXplKCkpCisgICAgICAg
IFJ1bkxvb3A6OnJ1bigpOworfQorCit2b2lkIERlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5n
V29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBl
bmRlbmNpZXMpCit7CisgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ry
b25nPEpTQ2VsbD4+KCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBk
YXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5l
dyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwg
IkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVu
Y2llcyk7CisgICAgfQorfQorCitib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29y
ayhUaWNrZXQgdGlja2V0KQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgcmV0dXJuIG1fcGVuZGluZ1RpY2tldHMuY29udGFp
bnModGlja2V0KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5jeUlu
UGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQoreworICAgIEFT
U0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAg
QVNTRVJUKG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZ2V0KHRpY2tldCk7CisgICAgcmV0dXJuIHJlc3VsdC5j
b250YWlucyhkZXBlbmRlbmN5KTsKK30KKworYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2Vs
UGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKK3sKKyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5k
aW5nVGlja2V0cy5yZW1vdmUodGlja2V0KTsKKworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGRh
dGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcg
dGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbihUaWNrZXQgdGlja2V0
LCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAg
ICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7
CisgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQorICAg
ICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjcxYThhYmM5ZWM0Mjg1NmU5ZGQzYTFjYzNiYzVjZTg2ZGI0ZjY5MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1Rp
bWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU1J1bkxvb3BUaW1l
ci5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUHJvbWlzZTsKK2NsYXNz
IFZNOworY2xhc3MgSlNDZWxsOworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWZlcnJlZFdv
cmtUaW1lciBmaW5hbCA6IHB1YmxpYyBKU1J1bkxvb3BUaW1lciB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEpTUnVuTG9vcFRpbWVyOworCisgICAgdm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsK
KworICAgIHVzaW5nIFRpY2tldCA9IEpTT2JqZWN0KjsKKyAgICB2b2lkIGFkZFBlbmRpbmdXb3Jr
KFZNJiwgVGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKTsKKyAg
ICBib29sIGhhc1BlbmRpbmdXb3JrKFRpY2tldCk7CisgICAgYm9vbCBoYXNEZXBlbmRhbmN5SW5Q
ZW5kaW5nV29yayhUaWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7CisgICAgYm9vbCBjYW5jZWxQ
ZW5kaW5nV29yayhUaWNrZXQpOworCisgICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47
CisgICAgdm9pZCBzY2hlZHVsZVdvcmtTb29uKFRpY2tldCwgVGFzayYmKTsKKworICAgIHZvaWQg
c3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9CisKKyAgICB2b2lkIHJ1
blJ1bkxvb3AoKTsKKworICAgIHN0YXRpYyBSZWY8RGVmZXJyZWRXb3JrVGltZXI+IGNyZWF0ZShW
TSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZlcnJlZFdvcmtU
aW1lcih2bSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEZWZlcnJlZFdvcmtUaW1lcihWTSYp
OworCisgICAgTG9jayBtX3Rhc2tMb2NrOworICAgIGJvb2wgbV9ydW5UYXNrcyB7IHRydWUgfTsK
KyAgICBib29sIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKKyAgICBEZXF1
ZTxzdGQ6OnR1cGxlPFRpY2tldCwgVGFzaz4+IG1fdGFza3M7CisgICAgSGFzaE1hcDxUaWNrZXQs
IFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1RpY2tldHM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Zp
bmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTA2OThmMGM5MTQ5ZWU5NzFjM2E5ZmNhZjE4ZDg3NjY2MmMzYzBkMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29u
c3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJdGVyYXRv
ck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGaW5h
bGl6YXRpb25SZWdpc3RyeS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNPYmplY3RJbmxpbmVzLmgiCisKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcikgfTsKKwordm9pZCBGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sICJGaW5hbGl6YXRpb25SZWdpc3RyeSJfcywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0
cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRmluYWxpemF0aW9uUmVnaXN0cnkoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisKK0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OkZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5LCBjb25zdHJ1Y3RGaW5hbGl6
YXRpb25SZWdpc3RyeSkKK3sKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IikpOworfQorCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdp
c3RyeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LmlzQ2FsbGFibGUodm0pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gRmluYWxpemF0aW9uUmVnaXN0cnkgc2hv
dWxkIGJlIGEgZnVuY3Rpb24iX3MpOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2Jq
ZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogZmluYWxpemF0aW9u
UmVnaXN0cnlTdHJ1Y3R1cmUgPSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkgPT0gbmV3VGFyZ2V0Cisg
ICAgICAgID8gZ2xvYmFsT2JqZWN0LT5maW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSgpCisg
ICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPmZpbmFs
aXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZSh2bSwgZmluYWxpemF0
aW9uUmVnaXN0cnlTdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuZ2V0
T2JqZWN0KCkpKSk7Cit9CisKK30KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWFlMTY4Y2NjY2E2ZTZiZGIxMDU1NzU2ZDEwNDE3YWRkNjkyNzc2YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZTsKKworY2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
ciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKworICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3Ry
eUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKKyAgICB7
CisgICAgICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rv
cj4odm0uaGVhcCkpIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvdG90eXBlKTsK
KyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZSopOworfTsKKworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTFmOWY4ZjY5
MzAxN2RkZjM5ZjhmYjQ3NDU4NDkzZGM5OTBiODgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpz
X2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdpc3RyeSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0Zp
bmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlv
blJlZ2lzdHJ5VW5yZWdpc3RlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit2b2lk
IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICAvLyBXZSBjYW4n
dCBtYWtlIHRoaXMgYSBwcm9wZXJ0eSBuYW1lIGJlY2F1c2UgaXQncyBhIHJlc2V2ZXJlZCB3b3Jk
IGluIEMrKy4uLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZWdpc3RlciIpLCBwcm90b0Z1bmNGaW5hbGl6YXRp
b25SZWdpc3RyeVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVnaXN0ZXIiKSwgcHJvdG9GdW5j
RmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkqIGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0
KCkpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxs
ZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9iamVjdCJfcyk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8qIGdyb3VwID0ganNEeW5hbWlj
Q2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGFzT2JqZWN0KHZhbHVlKSk7CisgICAg
aWYgKExJS0VMWShncm91cCkpCisgICAgICAgIHJldHVybiBncm91cDsKKworICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkg
ZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uUmVnaXN0cnkgb2JqZWN0Il9zKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1
bmNGaW5hbGl6YXRpb25SZWdpc3RyeVJlZ2lzdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBncm91cCA9IGdldEZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUg
dGFyZ2V0Il9zKTsKKworICAgIEpTVmFsdWUgaG9sZGluZ3MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpOworICAgIGlmIChzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGhvbGRpbmdzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJl
Z2lzdGVyIGV4cGVjdHMgdGhlIHRhcmdldCBvYmplY3QgYW5kIHRoZSBob2xkaW5ncyBwYXJhbWV0
ZXIgYXJlIG5vdCB0aGUgc2FtZS4gT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0IGNhbiBuZXZlciBiZSBj
b2xsZWN0ZWQiX3MpOworCisgICAgSlNWYWx1ZSB1bnJlZ2lzdGVyVG9rZW4gPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDIpOworICAgIGlmICghdW5yZWdpc3RlclRva2VuLmlzVW5kZWZpbmVkKCkgJiYg
IXVucmVnaXN0ZXJUb2tlbi5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFz
IHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7CisKKyAgICBncm91cC0+cmVnaXN0ZXJUYXJn
ZXQodm0sIHRhcmdldC5nZXRPYmplY3QoKSwgaG9sZGluZ3MsIHVucmVnaXN0ZXJUb2tlbik7Cisg
ICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogZ3JvdXAgPSBnZXRGaW5hbGl6YXRpb25SZWdpc3RyeSh2
bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGF1dG8qIHRva2VuID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkgeworICAgICAgICBi
b29sIHJlc3VsdCA9IGdyb3VwLT51bnJlZ2lzdGVyKHZtLCB0b2tlbik7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworICAgIH0KKworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bnJlZ2lzdGVyIHJlcXVp
cmVzIGFuIG9iamVjdCBpcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworfQorCit9CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1YTUzNTM2MWM5OGRmNjhmNTlm
ZTcxMzJjNWMzNzc5MGIwN2I4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25SZWdpc3RyeVBy
b3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90
eXBlPih2bS5oZWFwKSkgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsgfQorCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaAppbmRleCA5MzE3NTgzYTFiNjM5ZDNhNDdlMGQ1ZjA0NjQ2NTY5ZDc2NGVjNDVh
Li4xYTAwZjQ5NmJjN2M2NzgwMTNhZGZkNzQzYThiY2JjMTc2ZmNiMjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjgzZDYzZGYyNTA4ZDRmNTdlODRmYWVmMWIxZGQ2MTAz
NjdkMmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkRlZmVycmVk
V29ya1RpbWVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6c19pbmZvID0geyAiRmluYWxpemF0aW9u
UmVnaXN0cnkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpIH07CisKK1N0cnVjdHVyZSogSlNGaW5hbGl6
YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eT4odm0uaGVhcCkpIEpTRmluYWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7CisgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGluc3Rh
bmNlOworfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoY2FsbGJhY2stPmlzQ2FsbGFibGUodm0pKTsKKyAgICBhdXRvIHZhbHVl
cyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGlu
ZGV4KS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlc1tpbmRleF0pOworICAgIGludGVybmFs
RmllbGQoRmllbGQ6OkNhbGxiYWNrKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsK
K30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbGl6
YXRpb25SZWdpc3RyeSo+KGNlbGwpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlz
T2JqZWN0LT5jZWxsTG9jaygpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2Jq
ZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0
aW9uIDogaXRlci52YWx1ZSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHJlZ2lzdHJhdGlv
bi5ob2xkaW5ncyk7CisgICAgfQorICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogdGhpc09i
amVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQocmVn
aXN0cmF0aW9uLmhvbGRpbmdzKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXIgOiB0aGlzT2Jq
ZWN0LT5tX2RlYWRSZWdpc3RyYXRpb25zKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9sZGluZ3Mg
OiBpdGVyLnZhbHVlKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworICAg
IH0KKyAgICBmb3IgKGF1dG8mIGhvbGRpbmdzIDogdGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0
aW9uRGVhZCkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaG9sZGluZ3MpOworCisgICAgc2l6ZV90
IHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzID0gdGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9u
cy5jYXBhY2l0eSgpICogc2l6ZW9mKGRlY2x0eXBlKHRoaXNPYmplY3QtPm1fZGVhZFJlZ2lzdHJh
dGlvbnMpOjpLZXlWYWx1ZVBhaXJUeXBlKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5CeXRlcyAr
PSB0aGlzT2JqZWN0LT5tX2xpdmVSZWdpc3RyYXRpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YoZGVj
bHR5cGUodGhpc09iamVjdC0+bV9kZWFkUmVnaXN0cmF0aW9ucyk6OktleVZhbHVlUGFpclR5cGUp
OworICAgIHRvdGFsQnVmZmVyU2l6ZXNJbkJ5dGVzICs9IHRoaXNPYmplY3QtPm1fbm9VbnJlZ2lz
dHJhdGlvbkxpdmUuY2FwYWNpdHkoKSAqIHNpemVvZihkZWNsdHlwZSh0aGlzT2JqZWN0LT5tX25v
VW5yZWdpc3RyYXRpb25MaXZlLnRha2VMYXN0KCkpKTsKKyAgICB0b3RhbEJ1ZmZlclNpemVzSW5C
eXRlcyArPSB0aGlzT2JqZWN0LT5tX25vVW5yZWdpc3RyYXRpb25EZWFkLmNhcGFjaXR5KCkgKiBz
aXplb2YoZGVjbHR5cGUodGhpc09iamVjdC0+bV9ub1VucmVnaXN0cmF0aW9uTGl2ZS50YWtlTGFz
dCgpKSk7CisgICAgdmlzaXRvci52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRv
dGFsQnVmZmVyU2l6ZXNJbkJ5dGVzKTsKK30KKwordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
OjpkZXN0cm95KEpTQ2VsbCogdGFibGUpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNGaW5hbGl6YXRp
b25SZWdpc3RyeSo+KHRhYmxlKS0+fkpTRmluYWxpemF0aW9uUmVnaXN0cnkoKTsKK30KKwordm9p
ZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0p
Cit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKworICAgIGF1dG8g
cmVtb3ZlRnJvbVZlY3RvciA9IFtdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBwb3NpdGlvbikgewor
ICAgICAgICBzdGQ6OnN3YXAodmVjdG9yW3Bvc2l0aW9uXSwgdmVjdG9yLmxhc3QoKSk7CisgICAg
ICAgIHJldHVybiB2ZWN0b3IudGFrZUxhc3QoKTsKKyAgICB9OworCisgICAgYm9vbCByZWFkaWVk
Q2VsbCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vVW5yZWdpc3Ry
YXRpb25MaXZlLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCghbV9ub1VucmVnaXN0cmF0
aW9uTGl2ZVtpXS5ob2xkaW5ncy5nZXQoKS5pc0NlbGwoKSB8fCB2bS5oZWFwLmlzTWFya2VkKG1f
bm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0uaG9sZGluZ3MuZ2V0KCkuYXNDZWxsKCkpKTsKKyAgICAg
ICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fbm9VbnJlZ2lzdHJhdGlvbkxpdmVbaV0udGFyZ2V0
KSkgeworICAgICAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uRGVhZC5hcHBlbmQocmVtb3ZlRnJv
bVZlY3RvcihtX25vVW5yZWdpc3RyYXRpb25MaXZlLCBpKS5ob2xkaW5ncyk7CisgICAgICAgICAg
ICByZWFkaWVkQ2VsbCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xpdmVSZWdp
c3RyYXRpb25zLnJlbW92ZUlmKFsmXSAoYXV0byYgYnVja2V0KSAtPiBib29sIHsKKyAgICAgICAg
QVNTRVJUKGJ1Y2tldC52YWx1ZS5zaXplKCkpOworCisgICAgICAgIGJvb2wga2V5SXNEZWFkID0g
IXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LmtleSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBidWNrZXQudmFsdWUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
YnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmlzQ2VsbCgpIHx8IHZtLmhlYXAuaXNNYXJr
ZWQoYnVja2V0LnZhbHVlW2ldLmhvbGRpbmdzLmdldCgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAg
ICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoYnVja2V0LnZhbHVlW2ldLnRhcmdldCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoa2V5SXNEZWFkKQorICAgICAgICAgICAgICAgICAgICBtX25vVW5yZWdp
c3RyYXRpb25EZWFkLmFwcGVuZChyZW1vdmVGcm9tVmVjdG9yKGJ1Y2tldC52YWx1ZSwgaSkuaG9s
ZGluZ3MpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGRlYWRMaXN0ID0gbV9kZWFkUmVnaXN0cmF0aW9ucy5hZGQoYnVja2V0LmtleSwgRGVhZFJlZ2lz
dHJhdGlvbnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGRlYWRMaXN0Lml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpLmhvbGRpbmdzKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVhZGllZENlbGwgPSB0cnVlOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChrZXlJc0RlYWQpCisgICAgICAgICAgICAgICAgbV9ub1VucmVn
aXN0cmF0aW9uTGl2ZS5hcHBlbmQocmVtb3ZlRnJvbVZlY3RvcihidWNrZXQudmFsdWUsIGkpKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAhYnVja2V0LnZhbHVlLnNpemUoKTsKKyAgICB9
KTsKKworICAgIGlmICghdm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMp
ICYmIChyZWFkaWVkQ2VsbCB8fCBkZWFkQ291bnQobG9ja2VyKSkpIHsKKyAgICAgICAgdm0uZGVm
ZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCB0aGlzLCB7IH0pOworICAgICAgICBB
U1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1BlbmRpbmdXb3JrKHRoaXMpKTsKKyAgICAg
ICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24odGhpcywgW3RoaXNdIHsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAg
ICAgICAgIHRoaXMtPnJ1bkZpbmFsaXphdGlvbkNsZWFudXAoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKKyAg
ICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJ1bkZp
bmFsaXphdGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgd2hpbGUgKEpTVmFsdWUgdmFsdWUgPSB0YWtlRGVhZEhvbGRp
bmdzVmFsdWUoKSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAg
ICBhcmdzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsYmFj
aygpLCBhcmdzLCAiVGhpcyBzaG91bGQgbm90IGJlIHZpc2libGU6IHBsZWFzZSByZXBvcnQgYSBi
dWcgdG8gYnVncy53ZWJraXQub3JnIik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgfQorfQorCitKU1ZhbHVlIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6
OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhj
ZWxsTG9jaygpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAobV9ub1VucmVnaXN0cmF0
aW9uRGVhZC5zaXplKCkpCisgICAgICAgIHJlc3VsdCA9IG1fbm9VbnJlZ2lzdHJhdGlvbkRlYWQu
dGFrZUxhc3QoKS5nZXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9kZWFk
UmVnaXN0cmF0aW9ucy5iZWdpbigpOworICAgICAgICBpZiAoaXRlciA9PSBtX2RlYWRSZWdpc3Ry
YXRpb25zLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgQVNT
RVJUKGl0ZXItPnZhbHVlLnNpemUoKSk7CisgICAgICAgIHJlc3VsdCA9IGl0ZXItPnZhbHVlLnRh
a2VMYXN0KCkuZ2V0KCk7CisgICAgICAgIGlmICghaXRlci0+dmFsdWUuc2l6ZSgpKQorICAgICAg
ICAgICAgbV9kZWFkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgfQorCisgICAgaWYg
Y29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRl
ci52YWx1ZS5zaXplKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6cmVnaXN0ZXJUYXJnZXQoVk0mIHZtLCBKU09iamVjdCog
dGFyZ2V0LCBKU1ZhbHVlIGhvbGRpbmdzLCBKU1ZhbHVlIHRva2VuKQoreworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgUmVnaXN0cmF0aW9uIHJlZ2lzdHJhdGlv
bjsKKyAgICByZWdpc3RyYXRpb24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHJlZ2lzdHJhdGlvbi5o
b2xkaW5ncy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGhvbGRpbmdzKTsKKyAgICBpZiAodG9rZW4u
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5hcHBlbmQoV1RG
TW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBt
X2xpdmVSZWdpc3RyYXRpb25zLmFkZChqc1NlY3VyZUNhc3Q8SlNPYmplY3QqPih2bSwgdG9rZW4p
LCBMaXZlUmVnaXN0cmF0aW9ucygpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5h
cHBlbmQoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKKyAgICB9CisgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIodGhpcyk7Cit9CisKK2Jvb2wgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3Rl
cihWTSYsIEpTT2JqZWN0KiB0b2tlbikKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdyaXRl
IGJhcnJpZXIgb3Vyc2VsdmVzIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIG9ubHkgcG9pbnQgdG8gbGVz
cyB0aGluZ3MgYWZ0ZXIgdGhpcyBmaW5pc2hlcy4KKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGNlbGxMb2NrKCkpOworICAgIGJvb2wgcmVzdWx0ID0gbV9saXZlUmVnaXN0cmF0aW9ucy5yZW1v
dmUodG9rZW4pOworICAgIHJlc3VsdCB8PSBtX2RlYWRSZWdpc3RyYXRpb25zLnJlbW92ZSh0b2tl
bik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgSlNGaW5hbGl6YXRpb25SZWdp
c3RyeTo6bGl2ZUNvdW50KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpCit7CisgICAgc2l6ZV90
IGNvdW50ID0gbV9ub1VucmVnaXN0cmF0aW9uTGl2ZS5zaXplKCk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBpdGVyIDogbV9saXZlUmVnaXN0cmF0aW9ucykKKyAgICAgICAgY291bnQgKz0gaXRlci52
YWx1ZS5zaXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3NpemVfdCBKU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5OjpkZWFkQ291bnQoY29uc3QgTG9ja2VyPEpTQ2VsbExvY2s+JikKK3sKKyAg
ICBzaXplX3QgY291bnQgPSBtX25vVW5yZWdpc3RyYXRpb25EZWFkLnNpemUoKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0ZXIgOiBtX2RlYWRSZWdpc3RyYXRpb25zKQorICAgICAgICBjb3VudCAr
PSBpdGVyLnZhbHVlLnNpemUoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKworU3RyaW5nIEpT
RmluYWxpemF0aW9uUmVnaXN0cnk6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqKQoreworICAgIHJldHVybiAiT2JqZWN0Il9zOworfQorCit9CisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkNWNkMzhjZjBiYTdkODI5OTFjZGI1YzBhYWExZmY2NDQy
YWY2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGw8MT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPDE+OworCisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQ4X3QgeyAKKyAgICAg
ICAgQ2FsbGJhY2ssCisgICAgfTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
Q2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5lQ2FwYWNpdHkgPT0gMFUpOworICAgICAgICByZXR1
cm4gc2l6ZW9mKEpTRmluYWxpemF0aW9uUmVnaXN0cnkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmZp
bmFsaXphdGlvblJlZ2lzdHJ5U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3Rk
OjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAg
ICB9IH07CisgICAgfQorCisgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5h
bEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxk
KHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisKKyAgICBKU09iamVjdCogY2FsbGJh
Y2soKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxk
OjpDYWxsYmFjaykuZ2V0KCkpOyB9CisKKyAgICBzdGF0aWMgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGNhbGxiYWNrKTsKKyAgICBzdGF0
aWMgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHZvaWQgcnVuRmluYWxp
emF0aW9uQ2xlYW51cChKU0dsb2JhbE9iamVjdCopOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKKworICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CisKKyAgICBKU1ZhbHVlIHRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpOwor
CisgICAgYm9vbCB1bnJlZ2lzdGVyKFZNJiwgSlNPYmplY3QqIHRva2VuKTsKKyAgICAvLyB0b2tl
biBzaG91bGQgYmUgYSBKU09iamVjdCBvciB1bmRlZmluZWQuCisgICAgdm9pZCByZWdpc3RlclRh
cmdldChWTSYsIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG9sZGluZ3MsIEpTVmFsdWUgdG9r
ZW4pOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGxpdmVDb3VudChjb25zdCBMb2Nr
ZXI8SlNDZWxsTG9jaz4mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZGVhZENvdW50
KGNvbnN0IExvY2tlcjxKU0NlbGxMb2NrPiYpOworCitwcml2YXRlOgorICAgIEpTRmluYWxpemF0
aW9uUmVnaXN0cnkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCogY2FsbGJhY2spOworCisgICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwor
CisgICAgc3RydWN0IFJlZ2lzdHJhdGlvbiB7CisgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQ7Cisg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBob2xkaW5nczsKKyAgICB9OworCisgICAgdXNp
bmcgTGl2ZVJlZ2lzdHJhdGlvbnMgPSBWZWN0b3I8UmVnaXN0cmF0aW9uPjsKKyAgICAvLyBXZSBk
b24ndCBuZWVkIHRoZSB0YXJnZXQgYW55bW9yZSBzaW5jZSB3ZSBrbm93IGl0J3MgZGVhZC4KKyAg
ICB1c2luZyBEZWFkUmVnaXN0cmF0aW9ucyA9IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+
OworCisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IGJvdGhlciBwdXR0aW5nIGEgd3JpdGUgYmFy
cmllciBvbiB0aGUga2V5IG9yIHRhcmdldCBiZWNhdXNlIHRoZXkgYXJlIHdlYWtseSByZWZlcmVu
Y2VkLgorICAgIEhhc2hNYXA8SlNPYmplY3QqLCBMaXZlUmVnaXN0cmF0aW9ucz4gbV9saXZlUmVn
aXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPEpTT2JqZWN0KiwgRGVhZFJlZ2lzdHJhdGlvbnM+IG1f
ZGVhZFJlZ2lzdHJhdGlvbnM7CisgICAgLy8gV2UgdXNlIGEgc2VwYXJhdGUgbGlzdCBmb3Igbm8g
dW5yZWdpc3RlciB2YWx1ZXMgaW5zdGVhZCBvZiBhIHNwZWNpYWwga2V5IGluIHRoZSB0YWJsZXMg
YWJvdmUgYmVjYXVzZSB0aGUgSGFzaE1hcCBoYXMgYSB0ZW5kZW5jeSB0byByZWFsbG9jYXRlIHVu
ZGVyIHVzIHdoZW4gaXRlcmF0aW5nLi4uCisgICAgTGl2ZVJlZ2lzdHJhdGlvbnMgbV9ub1VucmVn
aXN0cmF0aW9uTGl2ZTsKKyAgICBEZWFkUmVnaXN0cmF0aW9ucyBtX25vVW5yZWdpc3RyYXRpb25E
ZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDNlYTMwZGI5ZTJlNGQ1Mzhk
YThmMjMyY2Y4OWI5ZTRjOTgyMzcwMDYuLjZkNzBlZmNlNTYyZTE2Y2VlZGY5OTE4Y2VmOTIyMTQ0
MzVmZjFjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTYxLDYgKzYxLDggQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlv
bkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCkBAIC05OSw2ICsxMDEsNyBAQAogI2lu
Y2x1ZGUgIkpTRGF0YVZpZXcuaCIKICNpbmNsdWRlICJKU0RhdGFWaWV3UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSlNEb2xsYXJWTS5oIgorI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnku
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0zODcsNiArMzkwLDcgQEAgY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0
YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51
bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCisgICAgJnJlcG9ydFVuY2F1Z2h0RXhj
ZXB0aW9uQXRFdmVudExvb3AsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAg
bnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRl
U3RyZWFtaW5nCkBAIC0yMTk5LDYgKzIyMDMsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVl
dWVNaWNyb3Rhc2soUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogICAgIHZtKCkucXVldWVNaWNyb3Rh
c2soKnRoaXMsIFdURk1vdmUodGFzaykpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXBv
cnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9u
KiBleGNlcHRpb24pCit7CisgICAgZGF0YUxvZ0xuKCJVbmNhdWdodCBFeGNlcHRpb24gYXQgcnVu
IGxvb3A6ICIsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnNldERlYnVnZ2VyKERlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBtX2RlYnVnZ2VyID0gZGVi
dWdnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi40NzRmZGU2
NGZmNmNhZTI4M2U5OWU0NmVlYzgwNTA4MWJjMGY5YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEzOCw2ICsxMzgsOCBAQCBjb25z
dGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9IHRydWU7CiAgICAgbWFjcm8oSlNQcm9t
aXNlLCBwcm9taXNlLCBwcm9taXNlLCBKU1Byb21pc2UsIFByb21pc2UsIG9iamVjdCwgdHlwZUV4
cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhCaWdJbnQsIGJpZ0ludCwgYmlnSW50T2JqZWN0
LCBCaWdJbnRPYmplY3QsIEJpZ0ludCwgb2JqZWN0LCBPcHRpb25zOjp1c2VCaWdJbnQoKSkgXAog
ICAgIG1hY3JvKFdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RSZWYsIHdlYWtPYmplY3RSZWYsIEpT
V2Vha09iamVjdFJlZiwgV2Vha1JlZiwgb2JqZWN0LCBPcHRpb25zOjp1c2VXZWFrUmVmcygpKSBc
CisgICAgbWFjcm8oRmluYWxpemF0aW9uUmVnaXN0cnksIGZpbmFsaXphdGlvblJlZ2lzdHJ5LCBm
aW5hbGl6YXRpb25SZWdpc3RyeSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSwgRmluYWxpemF0aW9u
UmVnaXN0cnksIG9iamVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXAorCiAKICNkZWZpbmUg
Rk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUobWFjcm8pIFwKICAgICBtYWNy
byhTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0ZXJhdG9yLCBKU1N0cmlu
Z0l0ZXJhdG9yLCBTdHJpbmdJdGVyYXRvciwgaXRlcmF0b3IsIHR5cGVFeHBvc2VkQnlEZWZhdWx0
KSBcCkBAIC0yMjcsNiArMjI5LDkgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIHZvaWQgKCpQcm9taXNlUmVqZWN0aW9uVHJhY2tlclB0cikoSlNHbG9iYWxP
YmplY3QqLCBKU1Byb21pc2UqLCBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24pOwogICAgIFBy
b21pc2VSZWplY3Rpb25UcmFja2VyUHRyIHByb21pc2VSZWplY3Rpb25UcmFja2VyOwogCisgICAg
dHlwZWRlZiB2b2lkICgqUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0cikoSlNH
bG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKyAgICBSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0
RXZlbnRMb29wUHRyIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3A7CisKICAgICB0
eXBlZGVmIFN0cmluZyAoKkRlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyKSgpOwogICAgIERlZmF1
bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRMYW5ndWFnZTsKIApAQCAtNDUzLDIxICs0NTgs
NiBAQCBwdWJsaWM6CiAgICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207CiAgICAgUmVnRXhwR2xv
YmFsRGF0YSBtX3JlZ0V4cEdsb2JhbERhdGE7CiAKLSAgICBKU0NhbGxlZSogc3RhY2tPdmVyZmxv
d0ZyYW1lQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUu
Z2V0KCk7IH0KLQotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5SXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7
IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dFNldCgpIHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0KLSAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBTZXRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9t
YXBTZXRXYXRjaHBvaW50U2V0OyB9Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0
Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0Y2hwb2ludFNldDsgfQotICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIGFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnRTZXQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBhcnJh
eUpvaW5XYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OyB9
Ci0gICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0KCkK
LSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKLSAgICAg
ICAgcmV0dXJuIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0OwotICAgIH0KICAgICAvLyBJ
ZiB0aGlzIGhhc24ndCBiZWVuIGludmFsaWRhdGVkLCBpdCBtZWFucyB0aGUgYXJyYXkgaXRlcmF0
b3IgcHJvdG9jb2wKICAgICAvLyBpcyBub3Qgb2JzZXJ2YWJsZSB0byB1c2VyIGNvZGUgeWV0Lgog
ICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
U2V0OwpAQCAtNDk0LDYgKzQ4NCwyMyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
PiBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBt
X251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludDsKIAorcHVibGljOgorICAgIEpTQ2Fs
bGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrT3Zl
cmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQorCisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcEl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIHN0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludFNldDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcFNldFdhdGNocG9pbnRT
ZXQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBv
aW50U2V0JiBzZXRBZGRXYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9zZXRBZGRXYXRjaHBvaW50
U2V0OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNl
dCgpIHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldDsgfQorICAgIElubGluZVdh
dGNocG9pbnRTZXQmIGFycmF5Sm9pbldhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5Sm9p
bldhdGNocG9pbnRTZXQ7IH0KKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmlu
Z1dhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6
dXNlSklUKCkpOworICAgICAgICByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7
CisgICAgfQorCiAgICAgYm9vbCBpc0FycmF5UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RB
bmROb25PYnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9j
b2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAgIGJvb2wgaXNTZXRQcm90b3R5cGVJdGVyYXRv
clByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKQEAgLTgyNCw2ICs4MzEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayhWTSYgdm0sIEpTT2Jq
ZWN0KiBmdW5jdGlvbikgeyBtX3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLnNldCh2bSwgZnVu
Y3Rpb24pOyB9CiAgICAgSlNPYmplY3QqIHVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKCkgY29u
c3QgeyByZXR1cm4gbV91bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjay5nZXQoKTsgfQogCisgICAg
c3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9i
amVjdCosIEV4Y2VwdGlvbiopOworCiAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRo
aXMpOyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJQcm90b3R5cGUoQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2UuY3BwCmluZGV4IDg4MzA4M2VjYjc2N2QwODgzZjlhNDkyMWYzOTlmNTkw
ODgxM2NmZGYuLjRmMzRiNmI0OWNhODllNjY4Y2I5YTI2NzEwMzIzY2FlMTc4NjRiNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcApAQCAtMjcsMTEgKzI3
LDExIEBACiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMu
aCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCi0jaW5j
bHVkZSAiUHJvbWlzZVRpbWVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjgsNyArMTY4
LDcgQEAgdm9pZCBKU1Byb21pc2U6OnJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGNhbGxGdW5jdGlvbihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywg
dmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAg
IH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNhbmNlbFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAg
IHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9p
ZCBKU1Byb21pc2U6OnJlamVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEpTUHJvbWlzZTo6cmVqZWN0
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICBjYWxsRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5yZWpl
Y3RQcm9taXNlRnVuY3Rpb24oKSwgdGhpcywgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIH0KLSAgICB2bS5wcm9taXNlVGltZXItPmNhbmNl
bFBlbmRpbmdQcm9taXNlKHRoaXMpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5jYW5jZWxQ
ZW5kaW5nV29yayh0aGlzKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnJlamVjdEFzSGFuZGxlZChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGFkZmI3OWZkZGE4
MTgzY2E5MTMxNWM1MjA2NDcwZDE0MjMxMjk0NTQuLjliZTgzY2U4YjE4NGE1ZGQwZmMzZjFkNTc4
N2Q1YWE0NmZkZWM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaApAQCAtNDg2LDYgKzQ4Niw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCB1c2VFYWdlcldlYkFzc2VtYmx5
TW9kdWxlSGFzaGluZywgZmFsc2UsIE5vcm1hbCwgIlVubmFtZWQgV2ViQXNzZW1ibHkgbW9kdWxl
cyBhcmUgaWRlbnRpZmllZCBpbiBiYWNrdHJhY2VzIHRocm91Z2ggdGhlaXIgaGFzaCwgaWYgYXZh
aWxhYmxlLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgZmFsc2Us
IE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVmZXJlbmNlcyBzcGVjLiIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFs
bG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAorICAgIC8qIEZJ
WE1FOiBXZSBzaG91bGQgbWFrZSBzdXJlIGZpbmFsaXplcnMgZG9uJ3QgcnVuIGZvciBkZXRhY2hl
ZCB3aW5kb3dzIGJlZm9yZSBlbmFibGluZyBXZWFrUmVmcyBieSBkZWZhdWx0LiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4ICovIFwKICAgICB2KEJvb2wsIHVz
ZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9y
LiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ug
d2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIg
bm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRp
b24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDhlZmQyYjAwODQzMDI2MjYxODU5ODE5NTg5Zjc4NGNiYmQzNjNk
MDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJvbWlzZVRpbWVyLmgi
Ci0KLSNpbmNsdWRlICJKU1Byb21pc2UuaCIKLSNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgSlND
IHsKLQotbmFtZXNwYWNlIFByb21pc2VUaW1lckludGVybmFsIHsKLXN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Ci19Ci0KLVByb21pc2VUaW1lcjo6UHJvbWlzZVRpbWVyKFZN
JiB2bSkKLSAgICA6IEJhc2Uodm0pCi17Ci19Ci0KLXZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmso
Vk0mIHZtKQotewotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKLSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAgICBjYW5jZWxUaW1lcigpOwotICAgIGlmICgh
bV9ydW5UYXNrcykgewotICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9n
TG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24gcHJvbWlz
ZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJl
YWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgotICAgICAgICBpZiAobV9wZW5kaW5nUHJvbWlz
ZXMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgcnVu
IG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKLQotICAgICAgICAg
ICAgdGFzaygpOwotICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICAgICAg
ICAgIG1fdGFza0xvY2subG9jaygpOwotICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFz
ayA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2Vz
LmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKQot
ICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwotCi0gICAgbV90YXNrTG9jay51bmxv
Y2soKTsKLX0KLQotdm9pZCBQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3AoKQotewotICAgIEFTU0VS
VCghbV9hcGlMb2NrLT52bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgpLT5ydW5Mb29w
KCkpOwotICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5pc2ggPSB0cnVl
OwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpCi0gICAgICAgIFJ1bkxvb3A6OnJ1
bigpOwotfQotCi12b2lkIFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UoVk0mIHZtLCBK
U1Byb21pc2UqIHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVuY2llcykK
LXsKLSAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwotCi0gICAgYXV0byBy
ZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2Vs
bD4+KCkpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5J
ZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICBkZXBlbmRlbmNpZXMuYXBwZW5k
KFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRh
TG9nTG5JZihQcm9taXNlVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5k
ZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMpOwotICAgIH0KLX0K
LQotYm9vbCBQcm9taXNlVGltZXI6Omhhc1BlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0
KQotewotICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7Ci0gICAgcmV0dXJuIG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCk7Ci19
Ci0KLWJvb2wgUHJvbWlzZVRpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nUHJvbWlzZShKU1By
b21pc2UqIHRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KQotewotICAgIEFTU0VSVCh0aWNrZXQt
PnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgQVNTRVJUKG1fcGVu
ZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX3Bl
bmRpbmdQcm9taXNlcy5nZXQodGlja2V0KTsKLSAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5zKGRl
cGVuZGVuY3kpOwotfQotCi1ib29sIFByb21pc2VUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2Uo
SlNQcm9taXNlKiB0aWNrZXQpCi17Ci0gICAgQVNTRVJUKHRpY2tldC0+dm0oKS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21p
c2VzLnJlbW92ZSh0aWNrZXQpOwotCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xu
SWYoUHJvbWlzZVRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwg
UmF3UG9pbnRlcih0aWNrZXQpKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgUHJv
bWlzZVRpbWVyOjpzY2hlZHVsZVdvcmtTb29uKEpTUHJvbWlzZSogdGlja2V0LCBUYXNrJiYgdGFz
aykKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKLSAgICBtX3Rhc2tzLmFw
cGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7Ci0gICAgaWYgKCFp
c1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQotICAgICAgICBzZXRUaW1l
VW50aWxGaXJlKDBfcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2E0ZDBmMjlhZTJkMjhjZjNlNDA0YmVmYjU0NmY1M2NkMGJiYWU5Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9taXNlVGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkpTUnVuTG9vcFRpbWVyLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNQcm9taXNlOwot
Y2xhc3MgVk07Ci1jbGFzcyBKU0NlbGw7Ci0KLWNsYXNzIFByb21pc2VUaW1lciBmaW5hbCA6IHB1
YmxpYyBKU1J1bkxvb3BUaW1lciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTUnVuTG9v
cFRpbWVyOwotCi0gICAgdm9pZCBkb1dvcmsoVk0mKSBmaW5hbDsKLQotICAgIHZvaWQgYWRkUGVu
ZGluZ1Byb21pc2UoVk0mLCBKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVw
ZW5kZW5jaWVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1BlbmRpbmdQcm9taXNl
KEpTUHJvbWlzZSogdGlja2V0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZSogdGlja2V0LCBKU0NlbGwqIGRlcGVuZGVu
Y3kpOwotICAgIC8vIEpTUHJvbWlzZSBzaG91bGQgaGFuZGxlIGNhbmNlbGluZyB3aGVuIHRoZSBw
cm9taXNlIGlzIHJlc29sdmVkIG9yIHJlamVjdGVkLgotICAgIGJvb2wgY2FuY2VsUGVuZGluZ1By
b21pc2UoSlNQcm9taXNlKik7Ci0KLSAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsK
LSAgICB2b2lkIHNjaGVkdWxlV29ya1Nvb24oSlNQcm9taXNlKiwgVGFzayYmKTsKLQotICAgIHZv
aWQgc3RvcFJ1bm5pbmdUYXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJ1blJ1bkxvb3AoKTsKLQotICAgIHN0YXRpYyBSZWY8UHJvbWlz
ZVRpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUHJvbWlzZVRpbWVyKHZtKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFByb21pc2VUaW1l
cihWTSYpOwotCi0gICAgSGFzaE1hcDxKU1Byb21pc2UqLCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+
PiBtX3BlbmRpbmdQcm9taXNlczsKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgYm9vbCBtX3J1
blRhc2tzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9t
aXNlc0ZpbmlzaCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsg
ZmFsc2UgfTsKLSAgICBWZWN0b3I8c3RkOjp0dXBsZTxKU1Byb21pc2UqLCBUYXNrPj4gbV90YXNr
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhY2IzNGM5ZDNkYjI2ZTU4YTYx
ZmZkYjMxNzE3YTUxZTY4MzFmYzVkLi5lMjExMzk3OGEzMjRlZDdiNGE1ZjEwZDFiM2QwNWJmOWU0
Y2ZiM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcApAQCAtMzIsNiArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQogCituYW1lc3BhY2UgU3RydWN0dXJlSURUYWJsZUludGVybmFsIHsKK3N0
YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKIFN0cnVjdHVyZUlEVGFi
bGU6OlN0cnVjdHVyZUlEVGFibGUoKQogICAgIDogbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3Ry
dWN0dXJlT3JPZmZzZXQ+KHNfaW5pdGlhbFNpemUpKQogICAgICwgbV9zaXplKDEpCkBAIC0xNjEs
MTEgKzE2NSwxNCBAQCBTdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRT
dHJ1Y3R1cmVCaXRzID0gZW5jb2RlKHN0cnVjdHVyZSwgcmVzdWx0KTsKICAgICBtX3NpemUrKzsK
ICAgICBBU1NFUlQoIWlzTnVrZWQocmVzdWx0KSk7CisKKyAgICBkYXRhTG9nTG5JZihTdHJ1Y3R1
cmVJRFRhYmxlSW50ZXJuYWw6OnZlcmJvc2UsICJBbGxvY2F0ZWQgU3RydWN0dXJlSUQgIiwgcmVz
dWx0LCAiIGZvciBTdHJ1Y3R1cmUgIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCiB7CisgICAgZGF0YUxv
Z0xuSWYoU3RydWN0dXJlSURUYWJsZUludGVybmFsOjp2ZXJib3NlLCAiRGVhbGxvY2F0ZWQgU3Ry
dWN0dXJlSUQgIiwgc3RydWN0dXJlSUQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmVJRCAhPSBzX3Vu
dXNlZElEKTsKICAgICB1aW50MzJfdCBzdHJ1Y3R1cmVJbmRleCA9IHN0cnVjdHVyZUlEID4+IHNf
bnVtYmVyT2ZFbnRyb3B5Qml0czsKICAgICBBU1NFUlQoc3RydWN0dXJlSW5kZXggJiYgc3RydWN0
dXJlSW5kZXggPCBzX21heGltdW1OdW1iZXJPZlN0cnVjdHVyZXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDhjYWE0OGMxYmUzMTFiNWQ4N2U4NjAzOGJhMGY0MDQxODM4
ODhjMmEuLmJjZjYwOWFkNDZmNDg0MjdlOTZlNmE0MmEwYWIxOGI0NzkxNGVmMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJE
T01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKICNp
bmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCisjaW5jbHVkZSAiRGVmZXJyZWRXb3JrVGltZXIuaCIK
ICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuaCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCkBAIC04OCw2ICs4OSw3IEBA
CiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIK
KyNpbmNsdWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKQEAgLTEzMyw3ICsxMzUsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVy
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJv
Z3JhbUV4ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQcm9taXNlVGltZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVk
ZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgpAQCAtMjgyLDYgKzI4Myw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBi
b29sKiBzdWNjZXNzKQogICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKICAg
ICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxEYXRl
SW5zdGFuY2U+KCkpCiAgICAgLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEVycm9ySW5zdGFuY2U+KCkpCisgICAgLCBmaW5hbGl6YXRpb25SZWdpc3Ry
eUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+
KCkpCiAgICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+KCkpCiAgICAgLCBnbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxPYmpl
Y3Q+KCkpCiAgICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0PigpKQpAQCAt
MzY1LDcgKzM2Nyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwg
V1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgICwgY2xpZW50RGF0YShu
dWxscHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRyKQogICAgICwgdG9wQ2FsbEZyYW1l
KENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKLSAgICAsIHByb21pc2VUaW1lcihQcm9taXNlVGltZXI6
OmNyZWF0ZSgqdGhpcykpCisgICAgLCBkZWZlcnJlZFdvcmtUaW1lcihEZWZlcnJlZFdvcmtUaW1l
cjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZh
dWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmlu
Z1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5l
dyBBcmdMaXN0KQpAQCAtNTc1LDcgKzU3Nyw3IEBAIFZNOjp+Vk0oKQogICAgIGF1dG8gZGVzdHJ1
Y3Rpb25Mb2NrZXIgPSBob2xkTG9jayhzX2Rlc3RydWN0aW9uTG9jay5yZWFkKCkpOwogICAgIAog
ICAgIEdpZ2FjYWdlOjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2ln
YWNhZ2VEaXNhYmxlZENhbGxiYWNrLCB0aGlzKTsKLSAgICBwcm9taXNlVGltZXItPnN0b3BSdW5u
aW5nVGFza3MoKTsKKyAgICBkZWZlcnJlZFdvcmtUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygpOwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAoV2FzbTo6V29ya2xpc3QqIHdvcmtsaXN0
ID0gV2FzbTo6ZXhpc3RpbmdXb3JrbGlzdE9yTnVsbCgpKQogICAgICAgICB3b3JrbGlzdC0+c3Rv
cEFsbFBsYW5zRm9yQ29udGV4dCh3YXNtQ29udGV4dCk7CkBAIC0xNDg3LDYgKzE0ODksNyBAQCBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCB3ZWFr
TWFwSGVhcENlbGxUeXBlLmdldCgpLAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYWtTZXRTcGFjZSwgd2Vha1NldEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0
KSAvLyBIYXNoOjB4NGM3ODFiMzAKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha09i
amVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2l0
aFNjb3BlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXph
dGlvblJlZ2lzdHJ5U3BhY2UsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUuZ2V0KCksIEpT
RmluYWxpemF0aW9uUmVnaXN0cnkpCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsIGFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyT2JqZWN0PikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhv
YmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlw
ZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNjBmNTk3MjlmZWMyZTAyZTY5NzZjMzFlZDUxYjE0
OGE1YzZlYWEwNS4uZjRmMmVmZTAzYmU2NjM5NjQ4NTliNjRiN2I3ODI4MDRkNGU2N2IyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgSlNX
ZWJBc3NlbWJseVRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTmF0
aXZlRXhlY3V0YWJsZTsKIGNsYXNzIE9iakNDYWxsYmFja0Z1bmN0aW9uOwotY2xhc3MgUHJvbWlz
ZVRpbWVyOworY2xhc3MgRGVmZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBSZWdFeHA7CiBjbGFzcyBS
ZWdFeHBDYWNoZTsKIGNsYXNzIFJlZ2lzdGVyOwpAQCAtMzc3LDYgKzM3Nyw3IEBAIHB1YmxpYzoK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja09iamVjdEhlYXBD
ZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBkYXRlSW5zdGFu
Y2VIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZXJy
b3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW5qZWN0ZWRTY3JpcHRI
b3N0U3BhY2VIZWFwQ2VsbFR5cGU7CkBAIC01NTAsNiArNTUxLDcgQEAgcHVibGljOgogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
a1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrU2V0U3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrTWFwU3BhY2UpCkBAIC03MDks
OCArNzExLDggQEAgcHVibGljOgogICAgIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4gbV9zbG93Qm91
bmRFeGVjdXRhYmxlOwogICAgIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4gbV9zbG93Q2FuQ29uc3Ry
dWN0Qm91bmRFeGVjdXRhYmxlOwogCi0gICAgUmVmPFByb21pc2VUaW1lcj4gcHJvbWlzZVRpbWVy
OwotICAgIAorICAgIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gZGVmZXJyZWRXb3JrVGltZXI7CisK
ICAgICBKU0NlbGwqIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3Q7CiAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZv
IHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHkuY3BwCmluZGV4IDVkYTY5NmQ2OTdkZDQ3NTA1ZDdkYzUyYjYwNmUzMTc3NGE0ZTI2
NWQuLmFmNDJkOGQ1NzA5ZjIwNmE3YTc4NzA4ZjY1ZDdlNTBiNTU4ZTYzNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkNhdGNoU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RJbmxpbmVzLmgiCkBAIC00MSw3ICs0Miw2IEBACiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
T3B0aW9ucy5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5oIgogI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVGhyb3dT
Y29wZS5oIgpAQCAtMTM0LDEwICsxMzQsMTAgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1
bGVWYWxpZGF0ZUFzeW5jSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMu
YXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKIAotICAgIHZtLnByb21p
c2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5j
aWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBwcm9t
aXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0
ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNr
PFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCAmdm1d
IChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2Us
IGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUg
eworICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNl
LCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAgICAgICAgICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6
OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1v
ZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewpAQCAtMjE0LDExICsyMTQsMTEgQEAgc3RhdGljIHZv
aWQgaW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1By
b21pc2UqIHByb21pc2UKICAgICAvLyBUaGUgaW5zdGFuY2Uga2VlcHMgdGhlIG1vZHVsZSBhbGl2
ZS4KICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbnN0YW5jZSkp
OwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVj
dCkpOwotICAgIHZtLnByb21pc2VUaW1lci0+YWRkUGVuZGluZ1Byb21pc2Uodm0sIHByb21pc2Us
IFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisgICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBl
bmRpbmdXb3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIC8vIE5v
dGU6IFRoaXMgY29tcGxldGlvbiB0YXNrIG1heSBvciBtYXkgbm90IGdldCBjYWxsZWQgaW1tZWRp
YXRlbHkuCiAgICAgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0
LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9j
azo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0
LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2NrPiYm
IHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CiAgICAgICAgIFJlZlB0cjxXYXNtOjpDb2RlQmxvY2s+
IGNvZGVCbG9jayA9IFdURk1vdmUocmVmQ29kZUJsb2NrKTsKLSAgICAgICAgdm0ucHJvbWlzZVRp
bWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxl
LCBpbXBvcnRPYmplY3QsIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bSwgY29kZUJsb2Nr
ID0gV1RGTW92ZShjb2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0uZGVmZXJyZWRX
b3JrVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtLCBjb2Rl
QmxvY2sgPSBXVEZNb3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgewogICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKICAg
ICAgICAgICAgIHJlc29sdmUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgaW5zdGFuY2UsIG1v
ZHVsZSwgaW1wb3J0T2JqZWN0LCBjb2RlQmxvY2sucmVsZWFzZU5vbk51bGwoKSwgcmVzb2x2ZUtp
bmQsIGNyZWF0aW9uTW9kZSk7CiAgICAgICAgIH0pOwpAQCAtMjMzLDEzICsyMzMsMTMgQEAgc3Rh
dGljIHZvaWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNQcm9taXMKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVu
Y2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRP
YmplY3QpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBtb2R1
bGVLZXlDZWxsKSk7Ci0gICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwg
cHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICB2bS5kZWZlcnJlZFdvcmtUaW1l
ci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVl
KHZtLCBnbG9iYWxPYmplY3QsIGJ1ZmZlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgcmVqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFdhc206Ok1v
ZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3Jl
YXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9y
dE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRp
b25Nb2RlLCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11
dGFibGUgewotICAgICAgICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlz
ZSwgW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCBy
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBjcmVhdGlvbk1vZGUsICZ2bV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2Jh
bE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCByZXNvbHZlS2luZCwgY3JlYXRpb25N
b2RlLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
ID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQpAQCAtMjY4LDEw
ICsyNjgsMTAgQEAgc3RhdGljIHZvaWQgd2ViQXNzZW1ibHlNb2R1bGVJbnN0YW50aW5hdGVBc3lu
Y0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBWZWN0b3I8U3Ryb25nPEpT
Q2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0Nl
bGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxK
U0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGltZXItPmFkZFBlbmRp
bmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOworICAgIHZtLmRl
ZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBl
bmRlbmNpZXMpKTsKIAogICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNv
bnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNh
bGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAmdm1dIChX
YXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICB2bS5wcm9taXNlVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGlt
cG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtT
b29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1dICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgSlNXZWJBc3NlbWJs
eU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKQpAQCAtMzM5LDcgKzMzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqCiAKICAgICBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBnbG9iYWxPYmplY3QpKTsKLSAgICB2bS5wcm9taXNlVGlt
ZXItPmFkZFBlbmRpbmdQcm9taXNlKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykp
OworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwg
V1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPmNvbXBpbGVTdHJlYW1pbmcpCiAgICAgICAgIGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y29tcGlsZVN0cmVhbWluZyhnbG9iYWxPYmpl
Y3QsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVh
bWluZ0ludGVybmFsKEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cm9uZzxK
U0NlbGw+PiBkZXBlbmRlbmNpZXM7CiAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVu
ZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgZGVw
ZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7Ci0gICAg
ICAgICAgICAgICAgdm0ucHJvbWlzZVRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZSh2bSwgcHJvbWlz
ZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKyAgICAgICAgICAgICAgICB2bS5kZWZlcnJlZFdv
cmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVz
KSk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTg0
ODg4PiBpZiB0aGVyZSdzIGFuIGltcG9ydE9iamVjdCBhbmQgaXQgY29udGFpbnMgYSBNZW1vcnks
IHRoZW4gd2UgY2FuIGNvbXBpbGUgdGhlIG1vZHVsZSB3aXRoIHRoZSByaWdodCBtZW1vcnkgdHlw
ZSAoZmFzdCBvciBub3QpIGJ5IGxvb2tpbmcgYXQgdGhlIG1lbW9yeSdzIHR5cGUuCiAgICAgICAg
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5pbnN0YW50
aWF0ZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIHByb21pc2UsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGltcG9ydE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKaW5kZXggNDg5NDliZjZlYzI4MGZlZjI3M2Yw
NDA2ZWQxY2QxMDdkOWM1NWNmMi4uMmU1NmI0ZDNiYWY3ZjAwZmVhZGQzMDA0YjRiZmUyYzk2NWQ1
MzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2suaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDggKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJEZWZlcnJlZFdv
cmtUaW1lci5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgotI2luY2x1ZGUgIlByb21pc2VUaW1lci5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNs
dWRlICJXYXNtRm9ybWF0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDI4ZTUwOWRiMDFjNzAxMGRkNzdlMmZlYmMzNWM3OTg5
YWRkN2EzMi4uMDM5ZWY4MjMwYTg2YjYxMzVjZWViZGU0M2MzYTEzNzA1ZGNmOTdkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
MjM0LDYgKzIzNCwxMSBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojpwcm9taXNlUmVqZWN0aW9u
VHJhY2tlcihKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsCiAgICAgfQogfQogCit2b2lk
IEpTRE9NR2xvYmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikK
K3sKKyAgICByZXBvcnRFeGNlcHRpb24oanNHbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7Cit9CisK
IEpTRE9NR2xvYmFsT2JqZWN0JiBjYWxsZXJHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewogICAgIGNsYXNzIEdl
dENhbGxlckdsb2JhbE9iamVjdEZ1bmN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggZDI5ODU4Y2ZhNGIwYmUwZDYyMTM5MGE4M2Q3
NmQ1YTg1MGI5ZDI4MC4uNzM4NjdkNmFiMmU1YjRkYmI3MGI3MGE5YTM2MDk0ODQ5ZjBjZWU2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBA
IC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25z
JiBidWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKSB7IHJldHVybiBtX2J1aWx0aW5JbnRlcm5hbEZ1
bmN0aW9uczsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2
ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKik7CiAKIHB1YmxpYzoKICAg
ICB+SlNET01HbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDg4MzIxM2U5MDYxZjM4YjhiYjQzMzU3OWIyOTg2MDk4
Nzc4NGU3ODIuLmFjZWE3NjZhZjFjN2Q1ZmVlYWUxN2E2OWY5ZTNiMzVjZGVlOWE4OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNDgs
MTAgKzQ4LDEwIEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTV2ViQXNzZW1ibHkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NaWNyb3Rhc2suaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTc4LDYgKzc4LDcgQEAgY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlID0gewogICAgICZtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcywKICAg
ICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAor
ICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAogICAgICZkZWZhdWx0TGFu
Z3VhZ2UsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICZjb21waWxlU3RyZWFtaW5nLApA
QCAtNDQzLDggKzQ0NCw4IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpjb21waWxlU3RyZWFtaW5n
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKCiAKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNQ
ZW5kaW5nUHJvbWlzZShwcm9taXNlKSk7Ci0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFz
RGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAg
QVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNQZW5kaW5nV29yayhwcm9taXNlKSk7Cisg
ICAgQVNTRVJUKHZtLmRlZmVycmVkV29ya1RpbWVyLT5oYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29y
ayhwcm9taXNlLCBnbG9iYWxPYmplY3QpKTsKIAogICAgIGlmIChhdXRvIGlucHV0UmVzcG9uc2Ug
PSBKU0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2bSwgc291cmNlKSkgewogICAgICAgICBoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKGdsb2JhbE9iamVjdCwgaW5wdXRSZXNwb25zZSwg
cHJvbWlzZSwgW3Byb21pc2VdIChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgYnl0ZVNpemUpIG11dGFibGUgewpAQCAtNDYx
LDkgKzQ2Miw5IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjppbnN0YW50aWF0ZVN0cmVhbWluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAKLSAgICBBU1NFUlQodm0ucHJvbWlzZVRpbWVyLT5oYXNQZW5kaW5n
UHJvbWlzZShwcm9taXNlKSk7Ci0gICAgQVNTRVJUKHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5k
YW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgZ2xvYmFsT2JqZWN0KSk7Ci0gICAgQVNTRVJU
KHZtLnByb21pc2VUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1Byb21pc2UocHJvbWlzZSwg
aW1wb3J0ZWRPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhhc1Bl
bmRpbmdXb3JrKHByb21pc2UpKTsKKyAgICBBU1NFUlQodm0uZGVmZXJyZWRXb3JrVGltZXItPmhh
c0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKHByb21pc2UsIGdsb2JhbE9iamVjdCkpOworICAgIEFT
U0VSVCh2bS5kZWZlcnJlZFdvcmtUaW1lci0+aGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsocHJv
bWlzZSwgaW1wb3J0ZWRPYmplY3QpKTsKIAogICAgIGlmIChhdXRvIGlucHV0UmVzcG9uc2UgPSBK
U0ZldGNoUmVzcG9uc2U6OnRvV3JhcHBlZCh2bSwgc291cmNlKSkgewogICAgICAgICBoYW5kbGVS
ZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKGdsb2JhbE9iamVjdCwgaW5wdXRSZXNwb25zZSwgcHJv
bWlzZSwgW3Byb21pc2UsIGltcG9ydGVkT2JqZWN0XSAoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGJ5dGVTaXplKSBtdXRh
YmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9N
V2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdp
bmRvd0Jhc2UuY3BwCmluZGV4IDQ5ZGY0MzkwNTdkZjU5ZDI5NGQ0ODRhOTRmMjliNTI0MGY4ODYx
ODEuLmRjZTczODIwYmJiZmQ5Yjk1YzU4NzlkMTNlZjY1ZWFiOThhOTA0MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcApA
QCAtNDcsNiArNDcsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1JlbW90ZURP
TVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPQogICAgIG51bGxwdHIsIC8v
IG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzCiAgICAgbnVsbHB0ciwgLy8g
bW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcgorICAgIG51bGxwdHIsIC8vIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AK
ICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxl
U3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAppbmRleCA1Mzc2ZTgwZDAwMDUzNzc2MjU4MmFhMjViZTkxZDEyYThmNTk3ZWM0Li5jNDRmMmZi
M2EwYjA1ZGFhYjFhOGE5ZTJmODliNTJkODUxZWI0MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC02NSw2
ICs2NSw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxl
TG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMKICAgICBudWxscHRyLCAvLyBtb2R1bGVM
b2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAgICAmZGVmYXVsdExhbmd1YWdlLAogICAg
IG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0
ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggMDk2NWE4NmM0MThiZTYxZTYyZTFmZmRhYzZj
ZmU4YmFmNmI0ZDZlZS4uYjE0YjgxNTQyZGI4ODllYzZkMjU5YmM1YjcwZWYyYTUwOTljOTZkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVqZWN0
aW9uVHJhY2tlciwKKyAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKICAg
ICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAg
ICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA5MzFjZWU3
Nzc5YmY5NjE0MzhlODIwMTUwYzdhN2Y4YWI0Njc1NTQ3Li43MTZiMWE2OWI4ZWVjMWRhNjQ3MjAx
YTQzMjY5MmIzMzg5N2ViNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW5j
bHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVy
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTgogCiAg
ICAgcHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSk7CiAgICAg
cHJvY2Vzc1RpbWVyKG1fdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSk7Ci0gICAgcHJv
Y2Vzc1RpbWVyKG1fdm0tPnByb21pc2VUaW1lci5wdHIoKSk7CisgICAgcHJvY2Vzc1RpbWVyKG1f
dm0tPmRlZmVycmVkV29ya1RpbWVyLnB0cigpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpyZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpU
aW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrKQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlND
OjpKU1J1bkxvb3BUaW1lcjo6VGltCiAKICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5mdWxs
QWN0aXZpdHlDYWxsYmFjaygpKTsKICAgICBwcm9jZXNzVGltZXIobV92bS0+aGVhcC5lZGVuQWN0
aXZpdHlDYWxsYmFjaygpKTsKLSAgICBwcm9jZXNzVGltZXIobV92bS0+cHJvbWlzZVRpbWVyLnB0
cigpKTsKKyAgICBwcm9jZXNzVGltZXIobV92bS0+ZGVmZXJyZWRXb3JrVGltZXIucHRyKCkpOwog
fQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVi
dWdnZXIqIGRlYnVnZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAK
aW5kZXggZWMwN2FjNDYzNTBkMmEzNDI5ZWEwOTg3NGUzZmRmMmRmZGE5ZTQ1MS4uNjZlY2Q1MzZm
ODEzZDAyOWM0OTdmMWFlYTdmMjE5ZWRmYzc1YjM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiV29ya2VyUnVu
TG9vcC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvbWlzZVRpbWVyLmg+CiAKICNp
ZiBVU0UoR0xJQikKICNpbmNsdWRlIDxnbGliLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNmE4OGNhYTE0NGFlMjdm
YzdjMWYyZDVmMzNiY2QxMDhjYzEyMGE5ZS4uMjBhNmY4NTYxODU4YWRmYmUyZTJiYzE4ZWJmNzE1
MGI5N2FkMTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzcsMTEgKzM3LDExIEBACiAjaW5jbHVkZSAiV29ya2xl
dENvbnNvbGVDbGllbnQuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24u
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5
Q2FsbGJhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9taXNlVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJvbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDUzYzJh
YzNiOWIzNmUzNGNjOThiNDdjMmJhNzliZTcyMGEwOTBmLi4xMzZiNmNmYjg2NThiZTA5ZGFlNTQ4
ZmM0OWJlZjJlZDUxMWYwYzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMTcgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3Vr
ZSBTdXp1a2kuCisKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvd2Vha3JlZi1maW5hbGl6YXRp
b25yZWdpc3RyeS5qczogQWRkZWQuCisgICAgICAgIChtYWtlV2Vha1JlZik6CisgICAgICAgICh0
dXJuRXZlbnRMb29wKToKKyAgICAgICAgKGFzeW5jIHRlc3QpOgorICAgICAgICAqIGpzL3dlYWty
ZWYtZmluYWxpemF0aW9ucmVnaXN0cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTA3LTIw
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0
cmVhbWVyXSBBZGQgc3VwcG9ydCBmb3IgY2FudmFzIGNhcHR1cmVTdHJlYW0sIHRlc3RzIGZhaWxp
bmcgc2luY2UgdGhleSB3ZXJlIGFkZGVkIGluIHIyMTM1OTgKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3dlYWtyZWYtZmluYWxpemF0aW9ucmVnaXN0cnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2IyMmRjMzlkZTgwYjRkZDlkMWRlNGZiZDA0ZDMxZDMzMTYxNGVlYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz10cnVlIikKKworYXN5bmNUZXN0U3RhcnQoMSk7Cit2YXIgb2JqZWN0cyA9
IFtdOwordmFyIHdlYWtSZWZzID0gW107Cit2YXIgZmluYWxpemVyQ2FsbGVkID0gZmFsc2U7Cit2
YXIgZmluYWxpemF0aW9uUmVnaXN0cnkgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4g
ZmluYWxpemVyQ2FsbGVkID0gdHJ1ZSk7CitmdW5jdGlvbiBtYWtlV2Vha1JlZigpIHsgcmV0dXJu
IG5ldyBXZWFrUmVmKHsgZm9vOiAxIH0pOyB9Citub0lubGluZShtYWtlV2Vha1JlZik7CisKKy8v
IEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcyB0ZXN0IHN0YW5kYWxvbmUtcHJlLmpzIHByaW50
cyBuZXdsaW5lcyBzbGlnaHRseSBkaWZmZXJlbnRseSBmcm9tIGpzLXRlc3QtcHJlLmpzIGZvciBh
c3luYyB0ZXN0cyBzbyB3ZSBkb24ndCB1c2UgdGhlIHNob3VsZEJlIGhlbHBlcnMuLi4KK2Z1bmN0
aW9uIGFzc2VydChjb25kaXRpb24sIG1zZyA9ICIiKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpOworfQorCitsZXQgbG9vcENvdW50ID0gMTAwMDsK
K2Z1bmN0aW9uIHR1cm5FdmVudExvb3AoKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmUpIHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBn
YygpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9LCAwKTsKKyAgICB9KTsKK30K
KwordmFyIGk7Cithc3luYyBmdW5jdGlvbiB0ZXN0KCkgeworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgbG9vcENvdW50OyBpKyspIHsKKyAgICAgICAgbGV0IHdlYWsgPSBtYWtlV2Vha1JlZigpOwor
ICAgICAgICB3ZWFrUmVmcy5wdXNoKHdlYWspOworICAgICAgICBvYmplY3RzLnB1c2god2Vhay5k
ZXJlZigpKTsKKyAgICAgICAgZmluYWxpemF0aW9uUmVnaXN0cnkucmVnaXN0ZXIod2Vhay5kZXJl
ZigpKTsKKyAgICB9CisKKyAgICBhd2FpdCB0dXJuRXZlbnRMb29wKCk7CisKKyAgICBhc3NlcnQo
ZmluYWxpemVyQ2FsbGVkID09PSBmYWxzZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxvb3BDb3Vu
dDsgaSsrKQorICAgICAgICBhc3NlcnQod2Vha1JlZnNbaV0uZGVyZWYoKSA9PT0gb2JqZWN0c1tp
XSwgImZhaWxlZCBvbiBpdGVyYXRpb246ICIgKyBpKTsKKworICAgIG9iamVjdHMubGVuZ3RoID0g
MDsKKyAgICBvYmplY3RzID0gbnVsbDsKKworICAgIGF3YWl0IHR1cm5FdmVudExvb3AoKTsKKyAg
ICAvLyBXZSBuZWVkIHRvIHR1cm4gdGhlIGV2ZW50IGxvb3AgYWdhaW4gc2luY2UgRlIgbWF5IG5v
dCBoYXZlIGNhbGxlZCB0aGUgY2FsbGJhY2sgaW4gdGhlIGxhc3QgdHVybi4KKyAgICBhd2FpdCB0
dXJuRXZlbnRMb29wKCk7CisKKyAgICBhc3NlcnQoZmluYWxpemVyQ2FsbGVkID09PSB0cnVlKTsK
KyAgICBhc3NlcnQod2Vha1JlZnMuc29tZSgod2Vha1JlZikgPT4gd2Vha1JlZi5kZXJlZigpID09
PSBudWxsKSA9PT0gdHJ1ZSk7CisKKyAgICBhc3luY1Rlc3RQYXNzZWQoKTsKK30KKwordGVzdCgp
LmNhdGNoKGUgPT4gZGVidWcoZSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvd2Vha3Jl
Zi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy93ZWFr
cmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2U1ZWVl
ZGJmMWI0MzVmOTZjM2EyMGJmODE0MDFhZWU0MzMxOTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3RyeS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25y
ZWdpc3RyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvd2Vha3JlZi1maW5hbGl6YXRpb25yZWdpc3Ry
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQxZDdjZjQ3ZDRhMzQxNjk4YmQwZDU1ZWQ2YTg4OTBiZmU0MTI3
NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy93ZWFrcmVmLWZpbmFsaXphdGlv
bnJlZ2lzdHJ5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNjT3B0aW9u
cz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWFrcmVmLWZpbmFsaXphdGlvbnJlZ2lzdHJ5Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTZjMDkyYTg1NzQwNmQyZmE3MmYzZTc3YTEyZTY4
YmU5MTM0ZDQ0ZS4uYmM5MDNjOTk0MDYyMzk5MWYzMDlhZTRmZWViZDE0NTZkZjFmNDU4YSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTggQEAKKzIwMjAtMDctMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTg4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgU2hhbWVsZXNz
bHkgY29weSB2OCdzIHRlc3RzIGFuZCByZWZhY3RvciB0aGVtIHRvIHdvcmsgd2l0aCBjb25zZXJ2
YXRpdmUgR0MuCisKKyAgICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanM6IEFk
ZGVkLgorICAgICAgICAoTWpzVW5pdEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgKE1qc1VuaXRB
c3NlcnRpb25FcnJvci5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoY2F0Y2gpOgorICAg
ICAgICAoY2xhc3NPZik6CisgICAgICAgIChWYWx1ZU9mKToKKyAgICAgICAgKHByZXR0eVByaW50
ZWQpOgorICAgICAgICAocHJldHR5UHJpbnRlZEFycmF5RWxlbWVudCk6CisgICAgICAgIChmYWls
V2l0aE1lc3NhZ2UpOgorICAgICAgICAoZm9ybWF0RmFpbHVyZVRleHQpOgorICAgICAgICAoZmFp
bCk6CisgICAgICAgIChkZWVwT2JqZWN0RXF1YWxzKToKKyAgICAgICAgKGRlZXBFcXVhbHMpOgor
ICAgICAgICAoYXNzZXJ0U2FtZSk6CisgICAgICAgIChhc3NlcnROb3RTYW1lKToKKyAgICAgICAg
KGFzc2VydEVxdWFscyk6CisgICAgICAgIChhc3NlcnROb3RFcXVhbHMpOgorICAgICAgICAoYXNz
ZXJ0RXF1YWxzRGVsdGEpOgorICAgICAgICAoYXNzZXJ0QXJyYXlFcXVhbHMpOgorICAgICAgICAo
YXNzZXJ0UHJvcGVydGllc0VxdWFsKToKKyAgICAgICAgKGFzc2VydFRvU3RyaW5nRXF1YWxzKToK
KyAgICAgICAgKGFzc2VydFRydWUpOgorICAgICAgICAoYXNzZXJ0RmFsc2UpOgorICAgICAgICAo
YXNzZXJ0TnVsbCk6CisgICAgICAgIChhc3NlcnROb3ROdWxsKToKKyAgICAgICAgKGV4ZWN1dGVD
b2RlKToKKyAgICAgICAgKGNoZWNrRXhjZXB0aW9uKToKKyAgICAgICAgKGFzc2VydFRocm93cyk6
CisgICAgICAgIChhc3NlcnRUaHJvd3NFcXVhbHMpOgorICAgICAgICAoYXNzZXJ0VGhyb3dzQXN5
bmMpOgorICAgICAgICAoYXNzZXJ0SW5zdGFuY2VvZik6CisgICAgICAgIChhc3NlcnREb2VzTm90
VGhyb3cpOgorICAgICAgICAoYXNzZXJ0VW5yZWFjaGFibGUpOgorICAgICAgICAoYXNzZXJ0Q29u
dGFpbnMpOgorICAgICAgICAoYXNzZXJ0TWF0Y2hlcyk6CisgICAgICAgIChjb25jYXRlbmF0ZUVy
cm9ycyk6CisgICAgICAgIChhc3NlcnRQcm9taXNlUmVzdWx0KToKKyAgICAgICAgKE9wdGltaXph
dGlvblN0YXR1cyk6CisgICAgICAgIChhc3NlcnRVbm9wdGltaXplZCk6CisgICAgICAgIChhc3Nl
cnRPcHRpbWl6ZWQpOgorICAgICAgICAoaXNOZXZlck9wdGltaXplTGl0ZU1vZGUpOgorICAgICAg
ICAoaXNOZXZlck9wdGltaXplKToKKyAgICAgICAgKGlzQWx3YXlzT3B0aW1pemUpOgorICAgICAg
ICAoaXNJbnRlcnByZXRlZCk6CisgICAgICAgIChpc09wdGltaXplZCk6CisgICAgICAgIChpc1R1
cmJvRmFubmVkKToKKyAgICAgICAgKE1qc1VuaXRBc3NlcnRpb25FcnJvci5wcmVwYXJlU3RhY2tU
cmFjZSk6CisgICAgICAgICogc3RyZXNzL3Y4LWNsZWFudXAtZnJvbS1kaWZmZXJlbnQtcmVhbG0u
anM6IEFkZGVkLgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNz
L3Y4LWNsZWFudXAtcHJveHktZnJvbS1kaWZmZXJlbnQtcmVhbG0uanM6IEFkZGVkLgorICAgICAg
ICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LWZpbmFsaXphdGlvbi1y
ZWdpc3RyeS1iYXNpY3MuanM6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXph
dGlvblJlZ2lzdHJ5KToKKyAgICAgICAgKFRlc3RGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVj
dG9yQ2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoVGVzdENvbnN0cnVjdEZpbmFsaXphdGlvblJl
Z2lzdHJ5Q2xlYW51cE5vdENhbGxhYmxlKToKKyAgICAgICAgKFRlc3RDb25zdHJ1Y3RGaW5hbGl6
YXRpb25SZWdpc3RyeVdpdGhOb25DYWxsYWJsZVByb3h5QXNDbGVhbnVwKToKKyAgICAgICAgKFRl
c3RSZWdpc3RlclRhcmdldEFuZEhvbGRpbmdzU2FtZVZhbHVlKToKKyAgICAgICAgKFRlc3RSZWdp
c3RlcldpdGhvdXRGaW5hbGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0VW5yZWdpc3Rl
cldpdGhOb25FeGlzdGVudEtleSk6CisgICAgICAgIChUZXN0VW5yZWdpc3RlcldpdGhOb25GaW5h
bGl6YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChUZXN0V2Vha1JlZkNvbnN0cnVjdG9yV2l0aE5v
bk9iamVjdCk6CisgICAgICAgIChUZXN0V2Vha1JlZldpdGhQcm94eSk6CisgICAgICAgICogc3Ry
ZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKHNldFRpbWVvdXQpOgorICAgICAgICAqIHN0cmVz
cy92OC1maW5hbGl6YXRpb25yZWdpc3RyeS1rZWVwcy1ob2xkaW5ncy1hbGl2ZS5qczogQWRkZWQu
CisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAg
ICAgICAgKiBzdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVh
bnVwLW11bHRpcGxlLXRpbWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwMCk6Cisg
ICAgICAgIChsZXQuY2xlYW51cDEpOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAg
ICAgICogc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0X2Z1
bmMpOgorICAgICAgICAqIHN0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1jbGVhbnVwLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxldC5yZWVudHJhbnRfZ2MpOgorICAgICAgICAoc2V0VGltZW91dCk6
CisgICAgICAgICogc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1l
bnF1ZXVlLmpzOiBBZGRlZC4KKyAgICAgICAgKGkucmVnaXN0cmllcy5wdXNoLm5ldy5GaW5hbGl6
YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChyZWdpc3RyaWVzLmZvckVhY2gpOgorICAgICAgICAq
IHN0cmVzcy92OC11bmRlZmluZWQtaG9sZGluZ3MuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNs
ZWFudXApOgorICAgICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4
LXVucmVnaXN0ZXItYWZ0ZXItY2xlYW51cC5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51
cCk6CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5y
ZWdpc3Rlci1iZWZvcmUtY2xlYW51cC5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6
CisgICAgICAgIChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdp
c3Rlci1jYWxsZWQtdHdpY2UuanM6IEFkZGVkLgorICAgICAgICAobGV0LmNsZWFudXApOgorICAg
ICAgICAobGV0LnRpbWVvdXRfZnVuYyk6CisgICAgICAgICogc3RyZXNzL3Y4LXVucmVnaXN0ZXIt
aW5zaWRlLWNsZWFudXAyLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAg
ICAgKGxldC50aW1lb3V0X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC11bnJlZ2lzdGVyLWlu
c2lkZS1jbGVhbnVwMy5qczogQWRkZWQuCisgICAgICAgIChsZXQuY2xlYW51cCk6CisgICAgICAg
IChsZXQudGltZW91dF9mdW5jKToKKyAgICAgICAgKiBzdHJlc3MvdjgtdW5yZWdpc3Rlci1tYW55
LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5jbGVhbnVwKToKKyAgICAgICAgKGxldC50aW1lb3V0
X2Z1bmMpOgorICAgICAgICAqIHN0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qczogQWRk
ZWQuCisgICAgICAgIChGUi5uZXcuRmluYWxpemF0aW9uUmVnaXN0cnkpOgorICAgICAgICAodHJ5
QWdhaW4pOgorCiAyMDIwLTA3LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXhlZCByZWdyZXNzaW9uIGR1ZSB0byByMjY0NTA3OiBNYXRoLnttaW58bWF4fSBp
bmVxdWFsaXR5IHRlc3Qgc2hvdWxkIHVzZSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkIGluc3Rl
YWQgRG91YmxlTm90RXF1YWxBbmRPcmRlcmVkLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvdjgtbWpz
dW5pdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNzc0NjFmNzRjOTAyMjMyMWZjNjBlNjg2Zjc5NWQ1MGUzOTI5
ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3Y4LW1qc3Vu
aXQuanMKQEAgLTAsMCArMSw4MDkgQEAKKy8vIENvcHlyaWdodCAyMDA4IHRoZSBWOCBwcm9qZWN0
IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVu
Y3Rpb24gTWpzVW5pdEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpIHsKKyAgdGhpcy5tZXNzYWdlID0g
bWVzc2FnZTsKKyAgLy8gVGVtcG9yYXJpbHkgaW5zdGFsbCBhIGN1c3RvbSBzdGFjayB0cmFjZSBm
b3JtYXR0ZXIgYW5kIHJlc3RvcmUgdGhlCisgIC8vIHByZXZpb3VzIHZhbHVlLgorICBsZXQgcHJl
dlByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7CisgIHRyeSB7Cisg
ICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBNanNVbml0QXNzZXJ0aW9uRXJyb3IucHJlcGFy
ZVN0YWNrVHJhY2U7CisgICAgLy8gVGhpcyBhbGxvd3MgZmV0Y2hpbmcgdGhlIHN0YWNrIHRyYWNl
IHVzaW5nIFRyeUNhdGNoOjpTdGFja1RyYWNlLgorICAgIHRoaXMuc3RhY2sgPSBuZXcgRXJyb3Io
Ik1qc1VuaXRBc3NlcnRpb25FcnJvciIpLnN0YWNrOworICB9IGZpbmFsbHkgeworICAgIEVycm9y
LnByZXBhcmVTdGFja1RyYWNlID0gcHJldlByZXBhcmVTdGFja1RyYWNlOworICB9Cit9CisKKy8q
CisgKiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgaW4gYWxsIG1pbmkganN1bml0IHRlc3QgY2FzZXMu
ICBUaGUgdGVzdAorICogZnJhbWV3b3JrIGV4cGVjdHMgbGluZXMgdGhhdCBzaWduYWwgZmFpbGVk
IHRlc3RzIHRvIHN0YXJ0IHdpdGgKKyAqIHRoZSBmLXdvcmQgYW5kIGlnbm9yZSBhbGwgb3RoZXIg
bGluZXMuCisgKi8KKworTWpzVW5pdEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubWVzc2FnZSArICJcblxuU3RhY2s6ICIgKyB0
aGlzLnN0YWNrOworfTsKKworCisvLyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIHRoZSBzYW1l
IG9iamVjdHMsIG9yIHRoZSBzYW1lIHByaW1pdGl2ZQorLy8gdmFsdWVzLgorLy8gRm9yIGtub3du
IHByaW1pdGl2ZSB2YWx1ZXMsIHBsZWFzZSB1c2UgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFNh
bWU7CisKKy8vIEludmVyc2Ugb2YgYXNzZXJ0U2FtZS4KK3ZhciBhc3NlcnROb3RTYW1lOworCisv
LyBFeHBlY3RlZCBhbmQgZm91bmQgdmFsdWVzIGFyZSBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVl
cyBvciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNr
aW5nIGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2Jq
ZWN0cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5v
bi1BcnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnRFcXVhbHM7CisKKy8vIERlZXAgZXF1YWxpdHkg
cHJlZGljYXRlIHVzZWQgYnkgYXNzZXJ0RXF1YWxzLgordmFyIGRlZXBFcXVhbHM7CisKKy8vIEV4
cGVjdGVkIGFuZCBmb3VuZCB2YWx1ZXMgYXJlIG5vdCBpZGVudGljYWwgcHJpbWl0aXZlIHZhbHVl
cyBvciBmdW5jdGlvbnMKKy8vIG9yIHNpbWlsYXJseSBzdHJ1Y3R1cmVkIG9iamVjdHMgKGNoZWNr
aW5nIGludGVybmFsIHByb3BlcnRpZXMKKy8vIG9mLCBlLmcuLCBOdW1iZXIgYW5kIERhdGUgb2Jq
ZWN0cywgdGhlIGVsZW1lbnRzIG9mIGFycmF5cworLy8gYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIG5v
bi1BcnJheSBvYmplY3RzKS4KK3ZhciBhc3NlcnROb3RFcXVhbHM7CisKKy8vIFRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gZXhwZWN0ZWQgYW5kIGZvdW5kIHZhbHVlIGlzIHdpdGhpbiBjZXJ0YWluIHRv
bGVyYW5jZS4KK3ZhciBhc3NlcnRFcXVhbHNEZWx0YTsKKworLy8gVGhlIGZvdW5kIG9iamVjdCBp
cyBhbiBBcnJheSB3aXRoIHRoZSBzYW1lIGxlbmd0aCBhbmQgZWxlbWVudHMKKy8vIGFzIHRoZSBl
eHBlY3RlZCBvYmplY3QuIFRoZSBleHBlY3RlZCBvYmplY3QgZG9lc24ndCBuZWVkIHRvIGJlIGFu
IEFycmF5LAorLy8gYXMgbG9uZyBhcyBpdCdzICJhcnJheS1pc2giLgordmFyIGFzc2VydEFycmF5
RXF1YWxzOworCisvLyBUaGUgZm91bmQgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc2FtZSBlbnVtZXJh
YmxlIHByb3BlcnRpZXMgYXMgdGhlCisvLyBleHBlY3RlZCBvYmplY3QuIFRoZSB0eXBlIG9mIG9i
amVjdCBpc24ndCBjaGVja2VkLgordmFyIGFzc2VydFByb3BlcnRpZXNFcXVhbDsKKworLy8gQXNz
ZXJ0IHRoYXQgdGhlIHN0cmluZyBjb252ZXJzaW9uIG9mIHRoZSBmb3VuZCB2YWx1ZSBpcyBlcXVh
bCB0bworLy8gdGhlIGV4cGVjdGVkIHN0cmluZy4gT25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29t
cGF0aWJpbGl0eSwgcGxlYXNlCisvLyBjaGVjayB0aGUgcmVhbCBzdHJ1Y3R1cmUgb2YgdGhlIGZv
dW5kIHZhbHVlLgordmFyIGFzc2VydFRvU3RyaW5nRXF1YWxzOworCisvLyBDaGVja3MgdGhhdCB0
aGUgZm91bmQgdmFsdWUgaXMgdHJ1ZS4gVXNlIHdpdGggYm9vbGVhbiBleHByZXNzaW9ucworLy8g
Zm9yIHRlc3RzIHRoYXQgZG9lc24ndCBoYXZlIHRoZWlyIG93biBhc3NlcnRYWFggZnVuY3Rpb24u
Cit2YXIgYXNzZXJ0VHJ1ZTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzIGZh
bHNlLgordmFyIGFzc2VydEZhbHNlOworCisvLyBDaGVja3MgdGhhdCB0aGUgZm91bmQgdmFsdWUg
aXMgbnVsbC4gS2VwdCBmb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LAorLy8gcGxlYXNlIGp1
c3QgdXNlIGFzc2VydEVxdWFscyhudWxsLCBleHBlY3RlZCkuCit2YXIgYXNzZXJ0TnVsbDsKKwor
Ly8gQ2hlY2tzIHRoYXQgdGhlIGZvdW5kIHZhbHVlIGlzICpub3QqIG51bGwuCit2YXIgYXNzZXJ0
Tm90TnVsbDsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBmdW5jdGlvbiBvciBldmFsIGNv
ZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQg
aXMgYW4gZXhjZXB0aW9uIGNvbnN0cnVjdG9yIHRoYXQgdGhlCisvLyB0aHJvd24gZXhjZXB0aW9u
IGlzIGNoZWNrZWQgYWdhaW5zdCB3aXRoICJpbnN0YW5jZW9mIi4KKy8vIFRoZSBvcHRpb25hbCB0
aGlyZCBhcmd1bWVudCBpcyBhIG1lc3NhZ2UgdHlwZSBzdHJpbmcgb3IgUmVnRXhwIG9iamVjdCB0
aGF0IGlzCisvLyBjb21wYXJlZCB0byB0aGUgbWVzc2FnZSBvZiB0aGUgdGhyb3duIGV4Y2VwdGlv
bi4KK3ZhciBhc3NlcnRUaHJvd3M7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rp
b24gdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKy8vIFRoZSBleGNlcHRpb24gaXMgY2hlY2tlZCBhZ2Fp
bnN0IHRoZSBzZWNvbmQgYXJndW1lbnQgdXNpbmcgYXNzZXJ0RXF1YWxzLgordmFyIGFzc2VydFRo
cm93c0VxdWFsczsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBwcm9taXNlIGRvZXMgbm90
IHJlc29sdmUsIGJ1dCBldmVudHVhbGx5IHRocm93cyBhbgorLy8gZXhjZXB0aW9uLiBUaGUgb3B0
aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlvbiBjb25zdHJ1Y3RvciB0aGF0IHRo
ZQorLy8gdGhyb3duIGV4Y2VwdGlvbiBpcyBjaGVja2VkIGFnYWluc3Qgd2l0aCAiaW5zdGFuY2Vv
ZiIuCisvLyBUaGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBtZXNzYWdlIHR5cGUgc3Ry
aW5nIG9yIFJlZ0V4cCBvYmplY3QgdGhhdCBpcworLy8gY29tcGFyZWQgdG8gdGhlIG1lc3NhZ2Ug
b2YgdGhlIHRocm93biBleGNlcHRpb24uCit2YXIgYXNzZXJ0VGhyb3dzQXN5bmM7CisKKy8vIEFz
c2VydCB0aGF0IHRoZSBwYXNzZWQgZnVuY3Rpb24gb3IgZXZhbCBjb2RlIGRvZXMgbm90IHRocm93
IGFuIGV4Y2VwdGlvbi4KK3ZhciBhc3NlcnREb2VzTm90VGhyb3c7CisKKy8vIEFzc2VydHMgdGhh
dCB0aGUgZm91bmQgdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvbnN0cnVjdG9yIHBhc3Nl
ZAorLy8gYXMgdGhlIHNlY29uZCBhcmd1bWVudC4KK3ZhciBhc3NlcnRJbnN0YW5jZW9mOworCisv
LyBBc3NlcnQgdGhhdCB0aGlzIGNvZGUgaXMgbmV2ZXIgZXhlY3V0ZWQgKGkuZS4sIGFsd2F5cyBm
YWlscyBpZiBleGVjdXRlZCkuCit2YXIgYXNzZXJ0VW5yZWFjaGFibGU7CisKKy8vIEFzc2VydCB0
aGF0IHRoZSBmdW5jdGlvbiBjb2RlIGlzIChub3QpIG9wdGltaXplZC4gIElmICJubyBzeW5jIiBp
cyBwYXNzZWQKKy8vIGFzIHNlY29uZCBhcmd1bWVudCwgd2UgZG8gbm90IHdhaXQgZm9yIHRoZSBj
b25jdXJyZW50IG9wdGltaXphdGlvbiB0aHJlYWQgdG8KKy8vIGZpbmlzaCB3aGVuIHBvbGxpbmcg
Zm9yIG9wdGltaXphdGlvbiBzdGF0dXMuCisvLyBPbmx5IHdvcmtzIHdpdGggLS1hbGxvdy1uYXRp
dmVzLXN5bnRheC4KK3ZhciBhc3NlcnRPcHRpbWl6ZWQ7Cit2YXIgYXNzZXJ0VW5vcHRpbWl6ZWQ7
CisKKy8vIEFzc2VydCB0aGF0IGEgc3RyaW5nIGNvbnRhaW5zIGFub3RoZXIgZXhwZWN0ZWQgc3Vi
c3RyaW5nLgordmFyIGFzc2VydENvbnRhaW5zOworCisvLyBBc3NlcnQgdGhhdCBhIHN0cmluZyBt
YXRjaGVzIGEgZ2l2ZW4gcmVnZXguCit2YXIgYXNzZXJ0TWF0Y2hlczsKKworLy8gQXNzZXJ0IHRo
YXQgYSBwcm9taXNlIHJlc29sdmVzIG9yIHJlamVjdHMuCisvLyBQYXJhbWV0ZXJzOgorLy8ge3By
b21pc2V9IC0gdGhlIHByb21pc2UKKy8vIHtzdWNjZXNzfSAtIG9wdGlvbmFsIC0gYSBjYWxsYmFj
ayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZQorLy8gICAgICAgICAgICAg
cmVzb2x2aW5nIHByb21pc2UuCisvLyAge2ZhaWx9IC0gICBvcHRpb25hbCAtIGEgY2FsbGJhY2sg
d2hpY2ggaXMgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUKKy8vICAgICAgICAgICAgIHJl
amVjdGluZyBwcm9taXNlLiBJZiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCBidXQgbm8ge2ZhaWx9
CisvLyAgICAgICAgICAgICBjYWxsYmFjayBpcyBzZXQsIHRoZSBlcnJvciBpcyBwcm9wYWdhdGVk
IG91dCBvZiB0aGUgcHJvbWlzZQorLy8gICAgICAgICAgICAgY2hhaW4uCit2YXIgYXNzZXJ0UHJv
bWlzZVJlc3VsdDsKKwordmFyIHByb21pc2VUZXN0Q2hhaW47Cit2YXIgcHJvbWlzZVRlc3RDb3Vu
dCA9IDA7CisKKy8vIFRoZXNlIGJpdHMgbXVzdCBiZSBpbiBzeW5jIHdpdGggYml0cyBkZWZpbmVk
IGluIFJ1bnRpbWVfR2V0T3B0aW1pemF0aW9uU3RhdHVzCit2YXIgVjhPcHRpbWl6YXRpb25TdGF0
dXMgPSB7CisgIGtJc0Z1bmN0aW9uOiAxIDw8IDAsCisgIGtOZXZlck9wdGltaXplOiAxIDw8IDEs
CisgIGtBbHdheXNPcHRpbWl6ZTogMSA8PCAyLAorICBrTWF5YmVEZW9wdGVkOiAxIDw8IDMsCisg
IGtPcHRpbWl6ZWQ6IDEgPDwgNCwKKyAga1R1cmJvRmFubmVkOiAxIDw8IDUsCisgIGtJbnRlcnBy
ZXRlZDogMSA8PCA2LAorICBrTWFya2VkRm9yT3B0aW1pemF0aW9uOiAxIDw8IDcsCisgIGtNYXJr
ZWRGb3JDb25jdXJyZW50T3B0aW1pemF0aW9uOiAxIDw8IDgsCisgIGtPcHRpbWl6aW5nQ29uY3Vy
cmVudGx5OiAxIDw8IDksCisgIGtJc0V4ZWN1dGluZzogMSA8PCAxMCwKKyAga1RvcG1vc3RGcmFt
ZUlzVHVyYm9GYW5uZWQ6IDEgPDwgMTEsCisgIGtMaXRlTW9kZTogMSA8PCAxMiwKKyAga01hcmtl
ZEZvckRlb3B0aW1pemF0aW9uOiAxIDw8IDEzLAorfTsKKworLy8gUmV0dXJucyB0cnVlIGlmIC0t
bGl0ZS1tb2RlIGlzIG9uIGFuZCB3ZSBjYW4ndCBldmVyIHR1cm4gb24gb3B0aW1pemF0aW9uLgor
dmFyIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlOworCisvLyBSZXR1cm5zIHRydWUgaWYgLS1uby1v
cHQgbW9kZSBpcyBvbi4KK3ZhciBpc05ldmVyT3B0aW1pemU7CisKKy8vIFJldHVybnMgdHJ1ZSBp
ZiAtLWFsd2F5cy1vcHQgbW9kZSBpcyBvbi4KK3ZhciBpc0Fsd2F5c09wdGltaXplOworCisvLyBS
ZXR1cm5zIHRydWUgaWYgZ2l2ZW4gZnVuY3Rpb24gaW4gaW50ZXJwcmV0ZWQuCit2YXIgaXNJbnRl
cnByZXRlZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9uIGlzIG9wdGltaXpl
ZC4KK3ZhciBpc09wdGltaXplZDsKKworLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIGZ1bmN0aW9u
IGlzIGNvbXBpbGVkIGJ5IFR1cmJvRmFuLgordmFyIGlzVHVyYm9GYW5uZWQ7CisKKy8vIE1vbmtl
eS1wYXRjaGFibGUgYWxsLXB1cnBvc2UgZmFpbHVyZSBoYW5kbGVyLgordmFyIGZhaWxXaXRoTWVz
c2FnZTsKKworLy8gUmV0dXJucyB0aGUgZm9ybWF0dGVkIGZhaWx1cmUgdGV4dC4gIFVzZWQgYnkg
dGVzdC1hc3luYy5qcy4KK3ZhciBmb3JtYXRGYWlsdXJlVGV4dDsKKworLy8gUmV0dXJucyBhIHBy
ZXR0eS1wcmludGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGFzc2VkIHZhbHVlLgor
dmFyIHByZXR0eVByaW50ZWQ7CisKKyhmdW5jdGlvbiAoKSB7ICAvLyBTY29wZSBmb3IgdXRpbGl0
eSBmdW5jdGlvbnMuCisKKyAgdmFyIE9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnBy
b3RvdHlwZS50b1N0cmluZzsKKyAgdmFyIE51bWJlclByb3RvdHlwZVZhbHVlT2YgPSBOdW1iZXIu
cHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBCb29sZWFuUHJvdG90eXBlVmFsdWVPZiA9IEJvb2xl
YW4ucHJvdG90eXBlLnZhbHVlT2Y7CisgIHZhciBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mID0gU3Ry
aW5nLnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgRGF0ZVByb3RvdHlwZVZhbHVlT2YgPSBEYXRl
LnByb3RvdHlwZS52YWx1ZU9mOworICB2YXIgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcgPSBSZWdF
eHAucHJvdG90eXBlLnRvU3RyaW5nOworICB2YXIgQXJyYXlQcm90b3R5cGVGb3JFYWNoID0gQXJy
YXkucHJvdG90eXBlLmZvckVhY2g7CisgIHZhciBBcnJheVByb3RvdHlwZUpvaW4gPSBBcnJheS5w
cm90b3R5cGUuam9pbjsKKyAgdmFyIEFycmF5UHJvdG90eXBlTWFwID0gQXJyYXkucHJvdG90eXBl
Lm1hcDsKKyAgdmFyIEFycmF5UHJvdG90eXBlUHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOwor
CisgIHZhciBCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOworICAvLyBUT0RPKG5laXMpOiBSZW1vdmUg
dHJ5LWNhdGNoIG9uY2UgQmlnSW50cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICB0cnkgewor
ICAgIEJpZ0ludFByb3RvdHlwZVZhbHVlT2YgPSBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2Y7Cisg
IH0gY2F0Y2ggKGUpIHt9CisKKyAgZnVuY3Rpb24gY2xhc3NPZihvYmplY3QpIHsKKyAgICAvLyBB
cmd1bWVudCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4KKyAgICB2YXIgc3RyaW5nID0g
T2JqZWN0UHJvdG90eXBlVG9TdHJpbmcuY2FsbChvYmplY3QpOworICAgIC8vIFN0cmluZyBoYXMg
Zm9ybWF0IFtvYmplY3QgPENsYXNzTmFtZT5dLgorICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5n
KDgsIHN0cmluZy5sZW5ndGggLSAxKTsKKyAgfQorCisKKyAgZnVuY3Rpb24gVmFsdWVPZih2YWx1
ZSkgeworICAgIHN3aXRjaCAoY2xhc3NPZih2YWx1ZSkpIHsKKyAgICAgIGNhc2UgIk51bWJlciI6
CisgICAgICAgIHJldHVybiBOdW1iZXJQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFsdWUpOworICAg
ICAgY2FzZSAiQmlnSW50IjoKKyAgICAgICAgcmV0dXJuIEJpZ0ludFByb3RvdHlwZVZhbHVlT2Yu
Y2FsbCh2YWx1ZSk7CisgICAgICBjYXNlICJTdHJpbmciOgorICAgICAgICByZXR1cm4gU3RyaW5n
UHJvdG90eXBlVmFsdWVPZi5jYWxsKHZhbHVlKTsKKyAgICAgIGNhc2UgIkJvb2xlYW4iOgorICAg
ICAgICByZXR1cm4gQm9vbGVhblByb3RvdHlwZVZhbHVlT2YuY2FsbCh2YWx1ZSk7CisgICAgICBj
YXNlICJEYXRlIjoKKyAgICAgICAgcmV0dXJuIERhdGVQcm90b3R5cGVWYWx1ZU9mLmNhbGwodmFs
dWUpOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgfQor
CisKKyAgcHJldHR5UHJpbnRlZCA9IGZ1bmN0aW9uIHByZXR0eVByaW50ZWQodmFsdWUpIHsKKyAg
ICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkgeworICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAg
cmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKKyAgICAgIGNhc2UgImJpZ2ludCI6CisgICAg
ICAgIHJldHVybiBTdHJpbmcodmFsdWUpICsgIm4iOworICAgICAgY2FzZSAibnVtYmVyIjoKKyAg
ICAgICAgaWYgKHZhbHVlID09PSAwICYmICgxIC8gdmFsdWUpIDwgMCkgcmV0dXJuICItMCI7Cisg
ICAgICAgIC8vIEZBTExUSFJPVUdILgorICAgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgICBjYXNl
ICJ1bmRlZmluZWQiOgorICAgICAgY2FzZSAiZnVuY3Rpb24iOgorICAgICAgY2FzZSAic3ltYm9s
IjoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7CisgICAgICBjYXNlICJvYmplY3QiOgor
ICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAibnVsbCI7CisgICAgICAgIHZhciBv
YmplY3RDbGFzcyA9IGNsYXNzT2YodmFsdWUpOworICAgICAgICBzd2l0Y2ggKG9iamVjdENsYXNz
KSB7CisgICAgICAgICAgY2FzZSAiTnVtYmVyIjoKKyAgICAgICAgICBjYXNlICJCaWdJbnQiOgor
ICAgICAgICAgIGNhc2UgIlN0cmluZyI6CisgICAgICAgICAgY2FzZSAiQm9vbGVhbiI6CisgICAg
ICAgICAgY2FzZSAiRGF0ZSI6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Q2xhc3MgKyAiKCIg
KyBwcmV0dHlQcmludGVkKFZhbHVlT2YodmFsdWUpKSArICIpIjsKKyAgICAgICAgICBjYXNlICJS
ZWdFeHAiOgorICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nLmNhbGwo
dmFsdWUpOworICAgICAgICAgIGNhc2UgIkFycmF5IjoKKyAgICAgICAgICAgIHZhciBtYXBwZWQg
PSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKAorICAgICAgICAgICAgICAgIHZhbHVlLCBwcmV0dHlQ
cmludGVkQXJyYXlFbGVtZW50KTsKKyAgICAgICAgICAgIHZhciBqb2luZWQgPSBBcnJheVByb3Rv
dHlwZUpvaW4uY2FsbChtYXBwZWQsICIsIik7CisgICAgICAgICAgICByZXR1cm4gIlsiICsgam9p
bmVkICsgIl0iOworICAgICAgICAgIGNhc2UgIlVpbnQ4QXJyYXkiOgorICAgICAgICAgIGNhc2Ug
IkludDhBcnJheSI6CisgICAgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CisgICAgICAgICAgY2Fz
ZSAiVWludDE2QXJyYXkiOgorICAgICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKKyAgICAgICAg
ICBjYXNlICJJbnQzMkFycmF5IjoKKyAgICAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgorICAg
ICAgICAgIGNhc2UgIkZsb2F0NjRBcnJheSI6CisgICAgICAgICAgICB2YXIgam9pbmVkID0gQXJy
YXlQcm90b3R5cGVKb2luLmNhbGwodmFsdWUsICIsIik7CisgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0Q2xhc3MgKyAiKFsiICsgam9pbmVkICsgIl0pIjsKKyAgICAgICAgICBjYXNlICJPYmplY3Qi
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBvYmplY3RDbGFzcyArICIoIiArIFN0cmluZyh2YWx1ZSkgKyAiKSI7CisgICAgICAgIH0K
KyAgICAgICAgLy8gY2xhc3NPZigpIHJldHVybmVkICJPYmplY3QiLgorICAgICAgICB2YXIgbmFt
ZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7CisgICAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFt
ZSArICIoKSI7CisgICAgICAgIHJldHVybiAiT2JqZWN0KCkiOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuICItLSB1bmtub3duIHZhbHVlIC0tIjsKKyAgICB9CisgIH0KKworCisgIGZ1
bmN0aW9uIHByZXR0eVByaW50ZWRBcnJheUVsZW1lbnQodmFsdWUsIGluZGV4LCBhcnJheSkgewor
ICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoaW5kZXggaW4gYXJyYXkpKSByZXR1cm4g
IiI7CisgICAgcmV0dXJuIHByZXR0eVByaW50ZWQodmFsdWUpOworICB9CisKKworICBmYWlsV2l0
aE1lc3NhZ2UgPSBmdW5jdGlvbiBmYWlsV2l0aE1lc3NhZ2UobWVzc2FnZSkgeworICAgIHRocm93
IG5ldyBNanNVbml0QXNzZXJ0aW9uRXJyb3IobWVzc2FnZSk7CisgIH0KKworICBmb3JtYXRGYWls
dXJlVGV4dCA9IGZ1bmN0aW9uKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVfb3B0KSB7CisgICAg
dmFyIG1lc3NhZ2UgPSAiRmFpbCIgKyAidXJlIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAgICAg
IC8vIEZpeCB0aGlzIHdoZW4gd2UgZGl0Y2ggdGhlIG9sZCB0ZXN0IHJ1bm5lci4KKyAgICAgIG1l
c3NhZ2UgKz0gIiAoIiArIG5hbWVfb3B0ICsgIikiOworICAgIH0KKworICAgIHZhciBmb3VuZFRl
eHQgPSBwcmV0dHlQcmludGVkKGZvdW5kKTsKKyAgICBpZiAoZXhwZWN0ZWRUZXh0Lmxlbmd0aCA8
PSA0MCAmJiBmb3VuZFRleHQubGVuZ3RoIDw9IDQwKSB7CisgICAgICBtZXNzYWdlICs9ICI6IGV4
cGVjdGVkIDwiICsgZXhwZWN0ZWRUZXh0ICsgIj4gZm91bmQgPCIgKyBmb3VuZFRleHQgKyAiPiI7
CisgICAgfSBlbHNlIHsKKyAgICAgIG1lc3NhZ2UgKz0gIjpcbmV4cGVjdGVkOlxuIiArIGV4cGVj
dGVkVGV4dCArICJcbmZvdW5kOlxuIiArIGZvdW5kVGV4dDsKKyAgICB9CisgICAgcmV0dXJuIG1l
c3NhZ2U7CisgIH0KKworICBmdW5jdGlvbiBmYWlsKGV4cGVjdGVkVGV4dCwgZm91bmQsIG5hbWVf
b3B0KSB7CisgICAgcmV0dXJuIGZhaWxXaXRoTWVzc2FnZShmb3JtYXRGYWlsdXJlVGV4dChleHBl
Y3RlZFRleHQsIGZvdW5kLCBuYW1lX29wdCkpOworICB9CisKKworICBmdW5jdGlvbiBkZWVwT2Jq
ZWN0RXF1YWxzKGEsIGIpIHsKKyAgICB2YXIgYVByb3BzID0gT2JqZWN0LmtleXMoYSk7CisgICAg
YVByb3BzLnNvcnQoKTsKKyAgICB2YXIgYlByb3BzID0gT2JqZWN0LmtleXMoYik7CisgICAgYlBy
b3BzLnNvcnQoKTsKKyAgICBpZiAoIWRlZXBFcXVhbHMoYVByb3BzLCBiUHJvcHMpKSB7CisgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYVByb3BzLmxl
bmd0aDsgaSsrKSB7CisgICAgICBpZiAoIWRlZXBFcXVhbHMoYVthUHJvcHNbaV1dLCBiW2FQcm9w
c1tpXV0pKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHRydWU7CisgIH0KKworCisgIGRlZXBFcXVhbHMgPSBmdW5jdGlvbiBkZWVwRXF1YWxzKGEs
IGIpIHsKKyAgICBpZiAoYSA9PT0gYikgeworICAgICAgLy8gQ2hlY2sgZm9yIC0wLgorICAgICAg
aWYgKGEgPT09IDApIHJldHVybiAoMSAvIGEpID09PSAoMSAvIGIpOworICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHJldHVybiBmYWxzZTsK
KyAgICBpZiAodHlwZW9mIGEgPT09ICJudW1iZXIiKSByZXR1cm4gaXNOYU4oYSkgJiYgaXNOYU4o
Yik7CisgICAgaWYgKHR5cGVvZiBhICE9PSAib2JqZWN0IiAmJiB0eXBlb2YgYSAhPT0gImZ1bmN0
aW9uIikgcmV0dXJuIGZhbHNlOworICAgIC8vIE5laXRoZXIgYSBub3IgYiBpcyBwcmltaXRpdmUu
CisgICAgdmFyIG9iamVjdENsYXNzID0gY2xhc3NPZihhKTsKKyAgICBpZiAob2JqZWN0Q2xhc3Mg
IT09IGNsYXNzT2YoYikpIHJldHVybiBmYWxzZTsKKyAgICBpZiAob2JqZWN0Q2xhc3MgPT09ICJS
ZWdFeHAiKSB7CisgICAgICAvLyBGb3IgUmVnRXhwLCBqdXN0IGNvbXBhcmUgcGF0dGVybiBhbmQg
ZmxhZ3MgdXNpbmcgaXRzIHRvU3RyaW5nLgorICAgICAgcmV0dXJuIFJlZ0V4cFByb3RvdHlwZVRv
U3RyaW5nLmNhbGwoYSkgPT09CisgICAgICAgICAgICAgUmVnRXhwUHJvdG90eXBlVG9TdHJpbmcu
Y2FsbChiKTsKKyAgICB9CisgICAgLy8gRnVuY3Rpb25zIGFyZSBvbmx5IGlkZW50aWNhbCB0byB0
aGVtc2VsdmVzLgorICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkZ1bmN0aW9uIikgcmV0dXJuIGZh
bHNlOworICAgIGlmIChvYmplY3RDbGFzcyA9PT0gIkFycmF5IikgeworICAgICAgdmFyIGVsZW1l
bnRDb3VudCA9IDA7CisgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5n
dGg7IGkrKykgeworICAgICAgICBpZiAoIWRlZXBFcXVhbHMoYVtpXSwgYltpXSkpIHJldHVybiBm
YWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAob2JqZWN0
Q2xhc3MgPT09ICJTdHJpbmciIHx8IG9iamVjdENsYXNzID09PSAiTnVtYmVyIiB8fAorICAgICAg
b2JqZWN0Q2xhc3MgPT09ICJCaWdJbnQiIHx8IG9iamVjdENsYXNzID09PSAiQm9vbGVhbiIgfHwK
KyAgICAgIG9iamVjdENsYXNzID09PSAiRGF0ZSIpIHsKKyAgICAgIGlmIChWYWx1ZU9mKGEpICE9
PSBWYWx1ZU9mKGIpKSByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBkZWVwT2JqZWN0
RXF1YWxzKGEsIGIpOworICB9CisKKyAgYXNzZXJ0U2FtZSA9IGZ1bmN0aW9uIGFzc2VydFNhbWUo
ZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmIChPYmplY3QuaXMoZXhwZWN0ZWQs
IGZvdW5kKSkgcmV0dXJuOworICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCksIGZvdW5k
LCBuYW1lX29wdCk7CisgIH07CisKKyAgYXNzZXJ0Tm90U2FtZSA9IGZ1bmN0aW9uIGFzc2VydE5v
dFNhbWUoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgeworICAgIGlmICghT2JqZWN0LmlzKGV4
cGVjdGVkLCBmb3VuZCkpIHJldHVybjsKKyAgICBmYWlsKCJub3Qgc2FtZSBhcyAiICsgcHJldHR5
UHJpbnRlZChleHBlY3RlZCksIGZvdW5kLCBuYW1lX29wdCk7CisgIH0KKworICBhc3NlcnRFcXVh
bHMgPSBmdW5jdGlvbiBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kLCBuYW1lX29wdCkgewor
ICAgIGlmICghZGVlcEVxdWFscyhmb3VuZCwgZXhwZWN0ZWQpKSB7CisgICAgICBmYWlsKHByZXR0
eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3VuZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworICBh
c3NlcnROb3RFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5k
LCBuYW1lX29wdCkgeworICAgIGlmIChkZWVwRXF1YWxzKGZvdW5kLCBleHBlY3RlZCkpIHsKKyAg
ICAgIGZhaWwoIm5vdCBlcXVhbHMgdG8gIiArIHByZXR0eVByaW50ZWQoZXhwZWN0ZWQpLCBmb3Vu
ZCwgbmFtZV9vcHQpOworICAgIH0KKyAgfTsKKworCisgIGFzc2VydEVxdWFsc0RlbHRhID0KKyAg
ICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsc0RlbHRhKGV4cGVjdGVkLCBmb3VuZCwgZGVsdGEsIG5h
bWVfb3B0KSB7CisgICAgaWYgKE1hdGguYWJzKGV4cGVjdGVkIC0gZm91bmQpID4gZGVsdGEpIHsK
KyAgICAgIGZhaWwocHJldHR5UHJpbnRlZChleHBlY3RlZCkgKyAiICstICIgKyBwcmV0dHlQcmlu
dGVkKGRlbHRhKSwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3NlcnRB
cnJheUVxdWFscyA9IGZ1bmN0aW9uIGFzc2VydEFycmF5RXF1YWxzKGV4cGVjdGVkLCBmb3VuZCwg
bmFtZV9vcHQpIHsKKyAgICB2YXIgc3RhcnQgPSAiIjsKKyAgICBpZiAobmFtZV9vcHQpIHsKKyAg
ICAgIHN0YXJ0ID0gbmFtZV9vcHQgKyAiIC0gIjsKKyAgICB9CisgICAgYXNzZXJ0RXF1YWxzKGV4
cGVjdGVkLmxlbmd0aCwgZm91bmQubGVuZ3RoLCBzdGFydCArICJhcnJheSBsZW5ndGgiKTsKKyAg
ICBpZiAoZXhwZWN0ZWQubGVuZ3RoID09PSBmb3VuZC5sZW5ndGgpIHsKKyAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxz
KGV4cGVjdGVkW2ldLCBmb3VuZFtpXSwKKyAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgImFy
cmF5IGVsZW1lbnQgYXQgaW5kZXggIiArIGkpOworICAgICAgfQorICAgIH0KKyAgfTsKKworCisg
IGFzc2VydFByb3BlcnRpZXNFcXVhbCA9IGZ1bmN0aW9uIGFzc2VydFByb3BlcnRpZXNFcXVhbChl
eHBlY3RlZCwgZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lX29wdCkgeworICAgIC8vIENoZWNrIHByb3BlcnRpZXMgb25s
eS4KKyAgICBpZiAoIWRlZXBPYmplY3RFcXVhbHMoZXhwZWN0ZWQsIGZvdW5kKSkgeworICAgICAg
ZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKworICBhc3Nl
cnRUb1N0cmluZ0VxdWFscyA9IGZ1bmN0aW9uIGFzc2VydFRvU3RyaW5nRXF1YWxzKGV4cGVjdGVk
LCBmb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lX29wdCkgeworICAgIGlmIChleHBlY3RlZCAhPT0gU3RyaW5nKGZvdW5kKSkg
eworICAgICAgZmFpbChleHBlY3RlZCwgZm91bmQsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisK
KworICBhc3NlcnRUcnVlID0gZnVuY3Rpb24gYXNzZXJ0VHJ1ZSh2YWx1ZSwgbmFtZV9vcHQpIHsK
KyAgICBhc3NlcnRFcXVhbHModHJ1ZSwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgfTsKKworCisgIGFz
c2VydEZhbHNlID0gZnVuY3Rpb24gYXNzZXJ0RmFsc2UodmFsdWUsIG5hbWVfb3B0KSB7CisgICAg
YXNzZXJ0RXF1YWxzKGZhbHNlLCB2YWx1ZSwgbmFtZV9vcHQpOworICB9OworCisKKyAgYXNzZXJ0
TnVsbCA9IGZ1bmN0aW9uIGFzc2VydE51bGwodmFsdWUsIG5hbWVfb3B0KSB7CisgICAgaWYgKHZh
bHVlICE9PSBudWxsKSB7CisgICAgICBmYWlsKCJudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAg
ICB9CisgIH07CisKKworICBhc3NlcnROb3ROdWxsID0gZnVuY3Rpb24gYXNzZXJ0Tm90TnVsbCh2
YWx1ZSwgbmFtZV9vcHQpIHsKKyAgICBpZiAodmFsdWUgPT09IG51bGwpIHsKKyAgICAgIGZhaWwo
Im5vdCBudWxsIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24g
ZXhlY3V0ZUNvZGUoY29kZSkgeworICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ2Z1bmN0aW9uJykg
IHJldHVybiBjb2RlKCk7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJykgcmV0dXJu
IGV2YWwoY29kZSk7CisgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAnR2l2ZW4gY29kZSBp
cyBuZWl0aGVyIGZ1bmN0aW9uIG5vciBzdHJpbmcsIGJ1dCAnICsgKHR5cGVvZiBjb2RlKSArCisg
ICAgICAgICc6IDwnICsgcHJldHR5UHJpbnRlZChjb2RlKSArICc+Jyk7CisgIH0KKworICBmdW5j
dGlvbiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vfb3B0KSB7CisgICAgaWYgKHR5
cGVfb3B0ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIGFzc2VydEVxdWFscygnZnVuY3Rpb24nLCB0
eXBlb2YgdHlwZV9vcHQpOworICAgICAgYXNzZXJ0SW5zdGFuY2VvZihlLCB0eXBlX29wdCk7Cisg
ICAgfQorICAgIC8vIGlnbm9yZSBjYXVzZV9vcHQgYmVjYXVzZSBvdXIgZXJyb3IgbWVzc2FnZXMg
YXJlIG5vdCB0aGUgc2FtZSBhcyBWOCdzCisgICAgcmV0dXJuOworICAgIGlmIChSZWdFeHAgIT09
IHVuZGVmaW5lZCAmJiBjYXVzZV9vcHQgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgIGFzc2Vy
dE1hdGNoZXMoY2F1c2Vfb3B0LCBlLm1lc3NhZ2UsICdFcnJvciBtZXNzYWdlJyk7CisgICAgfSBl
bHNlIGlmIChjYXVzZV9vcHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgYXNzZXJ0RXF1YWxzKGNh
dXNlX29wdCwgZS5tZXNzYWdlLCAnRXJyb3IgbWVzc2FnZScpOworICAgIH0KKyAgfQorCisgIGFz
c2VydFRocm93cyA9IGZ1bmN0aW9uIGFzc2VydFRocm93cyhjb2RlLCB0eXBlX29wdCwgY2F1c2Vf
b3B0KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVfb3B0ID09PSB1bmRl
ZmluZWQpIHsKKyAgICAgIGZhaWxXaXRoTWVzc2FnZSgnaW52YWxpZCB1c2Ugb2YgYXNzZXJ0VGhy
b3dzLCB1bmtub3duIHR5cGVfb3B0IGdpdmVuJyk7CisgICAgfQorICAgIGlmICh0eXBlX29wdCAh
PT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0eXBlX29wdCAhPT0gJ2Z1bmN0aW9uJykgeworICAgICAg
ZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAgICdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3Ms
IG1heWJlIHlvdSB3YW50IGFzc2VydFRocm93c0VxdWFscycpOworICAgIH0KKyAgICB0cnkgewor
ICAgICAgZXhlY3V0ZUNvZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgY2hlY2tF
eGNlcHRpb24oZSwgdHlwZV9vcHQsIGNhdXNlX29wdCk7CisgICAgICByZXR1cm47CisgICAgfQor
ICAgIGxldCBtc2cgPSAnRGlkIG5vdCB0aHJvdyBleGNlcHRpb24nOworICAgIGlmICh0eXBlX29w
dCAhPT0gdW5kZWZpbmVkICYmIHR5cGVfb3B0Lm5hbWUgIT09IHVuZGVmaW5lZCkKKyAgICAgIG1z
ZyArPSAnLCBleHBlY3RlZCAnICsgdHlwZV9vcHQubmFtZTsKKyAgICBmYWlsV2l0aE1lc3NhZ2Uo
bXNnKTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NFcXVhbHMgPSBmdW5jdGlvbiBhc3NlcnRUaHJv
d3NFcXVhbHMoZnVuLCB2YWwpIHsKKyAgICB0cnkgeworICAgICAgZnVuKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgYXNzZXJ0U2FtZSh2YWwsIGUpOworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBmYWlsV2l0aE1lc3NhZ2UoJ0RpZCBub3QgdGhyb3cgZXhjZXB0aW9uLCBleHBlY3RlZCAn
ICsgcHJldHR5UHJpbnRlZCh2YWwpKTsKKyAgfTsKKworICBhc3NlcnRUaHJvd3NBc3luYyA9IGZ1
bmN0aW9uIGFzc2VydFRocm93c0FzeW5jKHByb21pc2UsIHR5cGVfb3B0LCBjYXVzZV9vcHQpIHsK
KyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZV9vcHQgPT09IHVuZGVmaW5lZCkg
eworICAgICAgZmFpbFdpdGhNZXNzYWdlKCdpbnZhbGlkIHVzZSBvZiBhc3NlcnRUaHJvd3MsIHVu
a25vd24gdHlwZV9vcHQgZ2l2ZW4nKTsKKyAgICB9CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRl
ZmluZWQgJiYgdHlwZW9mIHR5cGVfb3B0ICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBmYWlsV2l0
aE1lc3NhZ2UoCisgICAgICAgICAgJ2ludmFsaWQgdXNlIG9mIGFzc2VydFRocm93cywgbWF5YmUg
eW91IHdhbnQgYXNzZXJ0VGhyb3dzRXF1YWxzJyk7CisgICAgfQorICAgIGxldCBtc2cgPSAnUHJv
bWlzZSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbic7CisgICAgaWYgKHR5cGVfb3B0ICE9PSB1bmRl
ZmluZWQgJiYgdHlwZV9vcHQubmFtZSAhPT0gdW5kZWZpbmVkKQorICAgICAgbXNnICs9ICcsIGV4
cGVjdGVkICcgKyB0eXBlX29wdC5uYW1lOworICAgIHJldHVybiBhc3NlcnRQcm9taXNlUmVzdWx0
KAorICAgICAgICBwcm9taXNlLAorICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byB0aHJvdyB0
aGUgZXJyb3IgYWdhaW4gdG8gZ2V0IG91dCBvZiB0aGUgcHJvbWlzZQorICAgICAgICAvLyBjaGFp
bi4KKyAgICAgICAgcmVzID0+IHNldFRpbWVvdXQoXyA9PiBmYWlsKCc8dGhyb3c+JywgcmVzLCBt
c2cpLCAwKSwKKyAgICAgICAgZSA9PiBjaGVja0V4Y2VwdGlvbihlLCB0eXBlX29wdCwgY2F1c2Vf
b3B0KSk7CisgIH07CisKKyAgYXNzZXJ0SW5zdGFuY2VvZiA9IGZ1bmN0aW9uIGFzc2VydEluc3Rh
bmNlb2Yob2JqLCB0eXBlKSB7CisgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgdHlwZSkpIHsKKyAg
ICAgIHZhciBhY3R1YWxUeXBlTmFtZSA9IG51bGw7CisgICAgICB2YXIgYWN0dWFsQ29uc3RydWN0
b3IgPSBvYmogJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikuY29uc3RydWN0b3I7CisgICAg
ICBpZiAodHlwZW9mIGFjdHVhbENvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAg
IGFjdHVhbFR5cGVOYW1lID0gYWN0dWFsQ29uc3RydWN0b3IubmFtZSB8fCBTdHJpbmcoYWN0dWFs
Q29uc3RydWN0b3IpOworICAgICAgfQorICAgICAgZmFpbFdpdGhNZXNzYWdlKAorICAgICAgICAg
ICdPYmplY3QgPCcgKyBwcmV0dHlQcmludGVkKG9iaikgKyAnPiBpcyBub3QgYW4gaW5zdGFuY2Ug
b2YgPCcgKworICAgICAgICAgICh0eXBlLm5hbWUgfHwgdHlwZSkgKyAnPicgKworICAgICAgICAg
IChhY3R1YWxUeXBlTmFtZSA/ICcgYnV0IG9mIDwnICsgYWN0dWFsVHlwZU5hbWUgKyAnPicgOiAn
JykpOworICAgIH0KKyAgfTsKKworICBhc3NlcnREb2VzTm90VGhyb3cgPSBmdW5jdGlvbiBhc3Nl
cnREb2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAgICB0cnkgeworICAgICAgZXhlY3V0
ZUNvZGUoY29kZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgaWYgKGUgaW5zdGFuY2VvZiBN
anNVbml0QXNzZXJ0aW9uRXJyb3IpIHRocm93IGU7CisgICAgICBmYWlsV2l0aE1lc3NhZ2UoInRo
cmV3IGFuIGV4Y2VwdGlvbjogIiArIChlLm1lc3NhZ2UgfHwgZSkpOworICAgIH0KKyAgfTsKKwor
ICBhc3NlcnRVbnJlYWNoYWJsZSA9IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKG5hbWVfb3B0
KSB7CisgICAgLy8gRml4IHRoaXMgd2hlbiB3ZSBkaXRjaCB0aGUgb2xkIHRlc3QgcnVubmVyLgor
ICAgIHZhciBtZXNzYWdlID0gIkZhaWwiICsgInVyZTogdW5yZWFjaGFibGUiOworICAgIGlmIChu
YW1lX29wdCkgeworICAgICAgbWVzc2FnZSArPSAiIC0gIiArIG5hbWVfb3B0OworICAgIH0KKyAg
ICBmYWlsV2l0aE1lc3NhZ2UobWVzc2FnZSk7CisgIH07CisKKyAgYXNzZXJ0Q29udGFpbnMgPSBm
dW5jdGlvbihzdWIsIHZhbHVlLCBuYW1lX29wdCkgeworICAgIGlmICh2YWx1ZSA9PSBudWxsID8g
KHN1YiAhPSBudWxsKSA6IHZhbHVlLmluZGV4T2Yoc3ViKSA9PSAtMSkgeworICAgICAgZmFpbCgi
Y29udGFpbnMgJyIgKyBTdHJpbmcoc3ViKSArICInIiwgdmFsdWUsIG5hbWVfb3B0KTsKKyAgICB9
CisgIH07CisKKyAgYXNzZXJ0TWF0Y2hlcyA9IGZ1bmN0aW9uKHJlZ2V4cCwgc3RyLCBuYW1lX29w
dCkgeworICAgIGlmICghKHJlZ2V4cCBpbnN0YW5jZW9mIFJlZ0V4cCkpIHsKKyAgICAgIHJlZ2V4
cCA9IG5ldyBSZWdFeHAocmVnZXhwKTsKKyAgICB9CisgICAgaWYgKCFzdHIubWF0Y2gocmVnZXhw
KSkgeworICAgICAgZmFpbCgic2hvdWxkIG1hdGNoICciICsgcmVnZXhwICsgIiciLCBzdHIsIG5h
bWVfb3B0KTsKKyAgICB9CisgIH07CisKKyAgZnVuY3Rpb24gY29uY2F0ZW5hdGVFcnJvcnMoc3Rh
Y2ssIGV4Y2VwdGlvbikgeworICAgIC8vIElmIHRoZSBleGNlcHRpb24gZG9lcyBub3QgY29udGFp
biBhIHN0YWNrIHRyYWNlLCB3cmFwIGl0IGluIGEgbmV3IEVycm9yLgorICAgIGlmICghZXhjZXB0
aW9uLnN0YWNrKSBleGNlcHRpb24gPSBuZXcgRXJyb3IoZXhjZXB0aW9uKTsKKworICAgIC8vIElm
IHRoZSBleGNlcHRpb24gYWxyZWFkeSBwcm92aWRlcyBhIHNwZWNpYWwgc3RhY2sgdHJhY2UsIHdl
IGRvIG5vdCBtb2RpZnkKKyAgICAvLyBpdC4KKyAgICBpZiAodHlwZW9mIGV4Y2VwdGlvbi5zdGFj
ayAhPT0gJ3N0cmluZycpIHsKKyAgICAgIHJldHVybiBleGNlcHRpb247CisgICAgfQorICAgIGV4
Y2VwdGlvbi5zdGFjayA9IHN0YWNrICsgJ1xuXG4nICsgZXhjZXB0aW9uLnN0YWNrOworICAgIHJl
dHVybiBleGNlcHRpb247CisgIH0KKworICBhc3NlcnRQcm9taXNlUmVzdWx0ID0gZnVuY3Rpb24o
cHJvbWlzZSwgc3VjY2VzcywgZmFpbCkgeworICAgIGlmIChzdWNjZXNzICE9PSB1bmRlZmluZWQp
IGFzc2VydEVxdWFscygnZnVuY3Rpb24nLCB0eXBlb2Ygc3VjY2Vzcyk7CisgICAgaWYgKGZhaWwg
IT09IHVuZGVmaW5lZCkgYXNzZXJ0RXF1YWxzKCdmdW5jdGlvbicsIHR5cGVvZiBmYWlsKTsKKyAg
ICBhc3NlcnRJbnN0YW5jZW9mKHByb21pc2UsIFByb21pc2UpOworICAgIGNvbnN0IHN0YWNrID0g
KG5ldyBFcnJvcigpKS5zdGFjazsKKworICAgIHZhciB0ZXN0X3Byb21pc2UgPSBwcm9taXNlLnRo
ZW4oCisgICAgICAgIHJlc3VsdCA9PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlm
ICgtLXByb21pc2VUZXN0Q291bnQgPT0gMCkgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICBpZiAoc3VjY2VzcyAhPT0gdW5kZWZpbmVkKSBzdWNjZXNzKHJlc3VsdCk7CisgICAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gdGhy
b3cgdGhlIGVycm9yIGFnYWluIHRvIGdldCBvdXQgb2YgdGhlIHByb21pc2UKKyAgICAgICAgICAg
IC8vIGNoYWluLgorICAgICAgICAgICAgc2V0VGltZW91dChfID0+IHsKKyAgICAgICAgICAgICAg
dGhyb3cgY29uY2F0ZW5hdGVFcnJvcnMoc3RhY2ssIGUpOworICAgICAgICAgICAgfSwgMCk7Cisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICByZXN1bHQgPT4geworICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBpZiAoLS1wcm9taXNlVGVzdENvdW50ID09IDApIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKGZhaWwgPT09IHVuZGVmaW5lZCkgdGhyb3cg
cmVzdWx0OworICAgICAgICAgICAgZmFpbChyZXN1bHQpOworICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHRocm93IHRoZSBlcnJvciBhZ2Fp
biB0byBnZXQgb3V0IG9mIHRoZSBwcm9taXNlCisgICAgICAgICAgICAvLyBjaGFpbi4KKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoXyA9PiB7CisgICAgICAgICAgICAgIHRocm93IGNvbmNhdGVuYXRl
RXJyb3JzKHN0YWNrLCBlKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisKKyAgICBpZiAoIXByb21pc2VUZXN0Q2hhaW4pIHByb21pc2VUZXN0Q2hhaW4gPSBQ
cm9taXNlLnJlc29sdmUoKTsKKyAgICAvLyB3YWl0VW50aWxEb25lIGlzIGlkZW1wb3RlbnQuCisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgKytwcm9taXNlVGVzdENvdW50Owor
ICAgIHJldHVybiBwcm9taXNlVGVzdENoYWluLnRoZW4odGVzdF9wcm9taXNlKTsKKyAgfTsKKwor
ICB2YXIgT3B0aW1pemF0aW9uU3RhdHVzSW1wbCA9IHVuZGVmaW5lZDsKKworICB2YXIgT3B0aW1p
emF0aW9uU3RhdHVzID0gZnVuY3Rpb24oZnVuLCBzeW5jX29wdCkgeworICAgIGlmIChPcHRpbWl6
YXRpb25TdGF0dXNJbXBsID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIE9w
dGltaXphdGlvblN0YXR1c0ltcGwgPSBuZXcgRnVuY3Rpb24oCisgICAgICAgICAgICAiZnVuIiwg
InN5bmMiLCAicmV0dXJuICVHZXRPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCBzeW5jKTsiKTsKKyAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJuYXRpdmVzIHN5bnRh
eCBub3QgYWxsb3dlZCIpOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gT3B0aW1pemF0aW9u
U3RhdHVzSW1wbChmdW4sIHN5bmNfb3B0KTsKKyAgfQorCisgIGFzc2VydFVub3B0aW1pemVkID0g
ZnVuY3Rpb24gYXNzZXJ0VW5vcHRpbWl6ZWQoCisgICAgICBmdW4sIHN5bmNfb3B0LCBuYW1lX29w
dCwgc2tpcF9pZl9tYXliZV9kZW9wdGVkID0gdHJ1ZSkgeworICAgIGlmIChzeW5jX29wdCA9PT0g
dW5kZWZpbmVkKSBzeW5jX29wdCA9ICIiOworICAgIHZhciBvcHRfc3RhdHVzID0gT3B0aW1pemF0
aW9uU3RhdHVzKGZ1biwgc3luY19vcHQpOworICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydFVu
b3B0aW1pemVkKCkgZG8gbm90IG1ha2Ugc2Vuc2UgaWYgLS1hbHdheXMtb3B0CisgICAgLy8gb3B0
aW9uIGlzIHByb3ZpZGVkLiBTdWNoIHRlc3RzIG11c3QgYWRkIC0tbm8tYWx3YXlzLW9wdCB0byBm
bGFncyBjb21tZW50LgorICAgIGFzc2VydEZhbHNlKChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRp
b25TdGF0dXMua0Fsd2F5c09wdGltaXplKSAhPT0gMCwKKyAgICAgICAgICAgICAgICAidGVzdCBk
b2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggLS1hbHdheXMtb3B0Iik7CisgICAgYXNzZXJ0VHJ1ZSgo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9uKSAhPT0gMCwgbmFt
ZV9vcHQpOworICAgIGlmIChza2lwX2lmX21heWJlX2Rlb3B0ZWQgJiYKKyAgICAgICAgKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTWF5YmVEZW9wdGVkKSAhPT0gMCkgeworICAg
ICAgLy8gV2hlbiAtLWRlb3B0LWV2ZXJ5LW4tdGltZXMgZmxhZyBpcyBzcGVjaWZpZWQgaXQncyBu
byBsb25nZXIgZ3VhcmFudGVlZAorICAgICAgLy8gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlz
IHN0aWxsIGRlb3B0aW1pemVkLCBzbyBrZWVwIHJ1bm5pbmcgdGhlIHRlc3QKKyAgICAgIC8vIHRv
IHN0cmVzcyB0ZXN0IHRoZSBkZW9wdGltaXplci4KKyAgICAgIHJldHVybjsKKyAgICB9CisgICAg
YXNzZXJ0RmFsc2UoKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rT3B0aW1pemVk
KSAhPT0gMCwgbmFtZV9vcHQpOworICB9CisKKyAgYXNzZXJ0T3B0aW1pemVkID0gZnVuY3Rpb24g
YXNzZXJ0T3B0aW1pemVkKAorICAgICAgZnVuLCBzeW5jX29wdCwgbmFtZV9vcHQsIHNraXBfaWZf
bWF5YmVfZGVvcHRlZCA9IHRydWUpIHsKKyAgICBpZiAoc3luY19vcHQgPT09IHVuZGVmaW5lZCkg
c3luY19vcHQgPSAiIjsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyhm
dW4sIHN5bmNfb3B0KTsKKyAgICAvLyBUZXN0cyB0aGF0IHVzZSBhc3NlcnRPcHRpbWl6ZWQoKSBk
byBub3QgbWFrZSBzZW5zZSBmb3IgTGl0ZSBtb2RlIHdoZXJlCisgICAgLy8gb3B0aW1pemF0aW9u
IGlzIGFsd2F5cyBkaXNhYmxlZCwgZXhwbGljaXRseSBleGl0IHRoZSB0ZXN0IHdpdGggYSB3YXJu
aW5nLgorICAgIGlmIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0xpdGVNb2Rl
KSB7CisgICAgICBwcmludCgiV2FybmluZzogVGVzdCB1c2VzIGFzc2VydE9wdGltaXplZCBpbiBM
aXRlIG1vZGUsIHNraXBwaW5nIHRlc3QuIik7CisgICAgICB0ZXN0UnVubmVyLnF1aXQoMCk7Cisg
ICAgfQorICAgIC8vIFRlc3RzIHRoYXQgdXNlIGFzc2VydE9wdGltaXplZCgpIGRvIG5vdCBtYWtl
IHNlbnNlIGlmIC0tbm8tb3B0CisgICAgLy8gb3B0aW9uIGlzIHByb3ZpZGVkLiBTdWNoIHRlc3Rz
IG11c3QgYWRkIC0tb3B0IHRvIGZsYWdzIGNvbW1lbnQuCisgICAgYXNzZXJ0RmFsc2UoKG9wdF9z
dGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDAsCisgICAg
ICAgICAgICAgICAgInRlc3QgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIC0tbm8tb3B0Iik7Cisg
ICAgYXNzZXJ0VHJ1ZSgKKyAgICAgICAgKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1
cy5rSXNGdW5jdGlvbikgIT09IDAsCisgICAgICAgICdzaG91bGQgYmUgYSBmdW5jdGlvbjogJyAr
IG5hbWVfb3B0KTsKKyAgICBpZiAoc2tpcF9pZl9tYXliZV9kZW9wdGVkICYmCisgICAgICAgIChv
cHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua01heWJlRGVvcHRlZCkgIT09IDApIHsK
KyAgICAgIC8vIFdoZW4gLS1kZW9wdC1ldmVyeS1uLXRpbWVzIGZsYWcgaXMgc3BlY2lmaWVkIGl0
J3Mgbm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICAgIC8vIHRoYXQgcGFydGljdWxhciBmdW5jdGlv
biBpcyBzdGlsbCBvcHRpbWl6ZWQsIHNvIGtlZXAgcnVubmluZyB0aGUgdGVzdAorICAgICAgLy8g
dG8gc3RyZXNzIHRlc3QgdGhlIGRlb3B0aW1pemVyLgorICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBhc3NlcnRUcnVlKAorICAgICAgICAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVz
LmtPcHRpbWl6ZWQpICE9PSAwLAorICAgICAgICAnc2hvdWxkIGJlIG9wdGltaXplZDogJyArIG5h
bWVfb3B0KTsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6ZUxpdGVNb2RlID0gZnVuY3Rpb24gaXNO
ZXZlck9wdGltaXplTGl0ZU1vZGUoKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRp
b25TdGF0dXModW5kZWZpbmVkLCAiIik7CisgICAgcmV0dXJuIChvcHRfc3RhdHVzICYgVjhPcHRp
bWl6YXRpb25TdGF0dXMua0xpdGVNb2RlKSAhPT0gMDsKKyAgfQorCisgIGlzTmV2ZXJPcHRpbWl6
ZSA9IGZ1bmN0aW9uIGlzTmV2ZXJPcHRpbWl6ZSgpIHsKKyAgICB2YXIgb3B0X3N0YXR1cyA9IE9w
dGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1cm4gKG9wdF9zdGF0dXMg
JiBWOE9wdGltaXphdGlvblN0YXR1cy5rTmV2ZXJPcHRpbWl6ZSkgIT09IDA7CisgIH0KKworICBp
c0Fsd2F5c09wdGltaXplID0gZnVuY3Rpb24gaXNBbHdheXNPcHRpbWl6ZSgpIHsKKyAgICB2YXIg
b3B0X3N0YXR1cyA9IE9wdGltaXphdGlvblN0YXR1cyh1bmRlZmluZWQsICIiKTsKKyAgICByZXR1
cm4gKG9wdF9zdGF0dXMgJiBWOE9wdGltaXphdGlvblN0YXR1cy5rQWx3YXlzT3B0aW1pemUpICE9
PSAwOworICB9CisKKyAgaXNJbnRlcnByZXRlZCA9IGZ1bmN0aW9uIGlzSW50ZXJwcmV0ZWQoZnVu
KSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7Cisg
ICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0
aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVy
biAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpID09PSAwICYm
CisgICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua0ludGVycHJl
dGVkKSAhPT0gMDsKKyAgfQorCisgIGlzT3B0aW1pemVkID0gZnVuY3Rpb24gaXNPcHRpbWl6ZWQo
ZnVuKSB7CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7
CisgICAgYXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1
bmN0aW9uKSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJl
dHVybiAob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAw
OworICB9CisKKyAgaXNUdXJib0Zhbm5lZCA9IGZ1bmN0aW9uIGlzVHVyYm9GYW5uZWQoZnVuKSB7
CisgICAgdmFyIG9wdF9zdGF0dXMgPSBPcHRpbWl6YXRpb25TdGF0dXMoZnVuLCAiIik7CisgICAg
YXNzZXJ0VHJ1ZSgob3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtJc0Z1bmN0aW9u
KSAhPT0gMCwKKyAgICAgICAgICAgICAgICJub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiAo
b3B0X3N0YXR1cyAmIFY4T3B0aW1pemF0aW9uU3RhdHVzLmtPcHRpbWl6ZWQpICE9PSAwICYmCisg
ICAgICAgICAgIChvcHRfc3RhdHVzICYgVjhPcHRpbWl6YXRpb25TdGF0dXMua1R1cmJvRmFubmVk
KSAhPT0gMDsKKyAgfQorCisgIC8vIEN1c3RvbSBWOC1zcGVjaWZpYyBzdGFjayB0cmFjZSBmb3Jt
YXR0ZXIgdGhhdCBpcyB0ZW1wb3JhcmlseSBpbnN0YWxsZWQgb24KKyAgLy8gdGhlIEVycm9yIG9i
amVjdC4KKyAgTWpzVW5pdEFzc2VydGlvbkVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnVuY3Rp
b24oZXJyb3IsIHN0YWNrKSB7CisgICAgLy8gVHJpZ2dlciBkZWZhdWx0IGZvcm1hdHRpbmcgd2l0
aCByZWN1cnNpb24uCisgICAgdHJ5IHsKKyAgICAgIC8vIEZpbHRlci1vdXQgYWxsIGJ1dCB0aGUg
Zmlyc3QgbWpzdW5pdCBmcmFtZS4KKyAgICAgIGxldCBmaWx0ZXJlZFN0YWNrID0gW107CisgICAg
ICBsZXQgaW5NanN1bml0ID0gdHJ1ZTsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhY2su
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IGZyYW1lID0gc3RhY2tbaV07CisgICAgICAgIGlm
IChpbk1qc3VuaXQpIHsKKyAgICAgICAgICBsZXQgZmlsZSA9IGZyYW1lLmdldEZpbGVOYW1lKCk7
CisgICAgICAgICAgaWYgKCFmaWxlIHx8ICFmaWxlLmVuZHNXaXRoKCJtanN1bml0LmpzIikpIHsK
KyAgICAgICAgICAgIGluTWpzdW5pdCA9IGZhbHNlOworICAgICAgICAgICAgLy8gUHVzaCB0aGUg
bGFzdCBtanN1bml0IGZyYW1lLCB0eXBpY2FsbHkgY29udGFpbmluZyB0aGUgYXNzZXJ0aW9uCisg
ICAgICAgICAgICAvLyBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmIChpID4gMCkgQXJyYXlQcm90
b3R5cGVQdXNoLmNhbGwoZmlsdGVyZWRTdGFjaywgc3RhY2tbaS0xXSk7CisgICAgICAgICAgICBB
cnJheVByb3RvdHlwZVB1c2guY2FsbChmaWx0ZXJlZFN0YWNrLCBzdGFja1tpXSk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEFycmF5UHJvdG90
eXBlUHVzaC5jYWxsKGZpbHRlcmVkU3RhY2ssIGZyYW1lKTsKKyAgICAgIH0KKyAgICAgIHN0YWNr
ID0gZmlsdGVyZWRTdGFjazsKKworICAgICAgLy8gSW5mZXIgZnVuY3Rpb24gbmFtZXMgYW5kIGNh
bGN1bGF0ZSB7bWF4X25hbWVfbGVuZ3RofQorICAgICAgbGV0IG1heF9uYW1lX2xlbmd0aCA9IDA7
CisgICAgICBBcnJheVByb3RvdHlwZUZvckVhY2guY2FsbChzdGFjaywgZWFjaCA9PiB7CisgICAg
ICAgIGxldCBuYW1lID0gZWFjaC5nZXRGdW5jdGlvbk5hbWUoKTsKKyAgICAgICAgaWYgKG5hbWUg
PT0gbnVsbCkgbmFtZSA9ICIiOworICAgICAgICBpZiAoZWFjaC5pc0V2YWwoKSkgeworICAgICAg
ICAgIG5hbWUgPSBuYW1lOworICAgICAgICB9IGVsc2UgaWYgKGVhY2guaXNDb25zdHJ1Y3Rvcigp
KSB7CisgICAgICAgICAgbmFtZSA9ICJuZXcgIiArIG5hbWU7CisgICAgICAgIH0gZWxzZSBpZiAo
ZWFjaC5pc05hdGl2ZSgpKSB7CisgICAgICAgICAgbmFtZSA9ICJuYXRpdmUgIiArIG5hbWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIWVhY2guaXNUb3BsZXZlbCgpKSB7CisgICAgICAgICAgbmFtZSA9
IGVhY2guZ2V0VHlwZU5hbWUoKSArICIuIiArIG5hbWU7CisgICAgICAgIH0KKyAgICAgICAgZWFj
aC5uYW1lID0gbmFtZTsKKyAgICAgICAgbWF4X25hbWVfbGVuZ3RoID0gTWF0aC5tYXgobmFtZS5s
ZW5ndGgsIG1heF9uYW1lX2xlbmd0aCkKKyAgICAgIH0pOworCisgICAgICAvLyBGb3JtYXQgc3Rh
Y2sgZnJhbWVzLgorICAgICAgc3RhY2sgPSBBcnJheVByb3RvdHlwZU1hcC5jYWxsKHN0YWNrLCBl
YWNoID0+IHsKKyAgICAgICAgbGV0IGZyYW1lID0gIiAgICBhdCAiICsgZWFjaC5uYW1lLnBhZEVu
ZChtYXhfbmFtZV9sZW5ndGgpOworICAgICAgICBsZXQgZmlsZU5hbWUgPSBlYWNoLmdldEZpbGVO
YW1lKCk7CisgICAgICAgIGlmIChlYWNoLmlzRXZhbCgpKSByZXR1cm4gZnJhbWUgKyAiICIgKyBl
YWNoLmdldEV2YWxPcmlnaW4oKTsKKyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGZpbGVOYW1lID8g
ZmlsZU5hbWUgOiAiIik7CisgICAgICAgIGxldCBsaW5lPSBlYWNoLmdldExpbmVOdW1iZXIoKTsK
KyAgICAgICAgZnJhbWUgKz0gIiAiICsgKGxpbmUgPyBsaW5lIDogIiIpOworICAgICAgICBsZXQg
Y29sdW1uID0gZWFjaC5nZXRDb2x1bW5OdW1iZXIoKTsKKyAgICAgICAgZnJhbWUgKz0gKGNvbHVt
biA/ICI6IiArIGNvbHVtbiA6ICIiKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgfSk7
CisgICAgICByZXR1cm4gIiIgKyBlcnJvci5tZXNzYWdlICsgIlxuIiArIEFycmF5UHJvdG90eXBl
Sm9pbi5jYWxsKHN0YWNrLCAiXG4iKTsKKyAgICB9IGNhdGNoIChlKSB7fTsKKyAgICByZXR1cm4g
ZXJyb3Iuc3RhY2s7CisgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1j
bGVhbnVwLWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51
cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODc1MDAxODU3NTljNzJlNmFj
YjMyZGIyNjZjNjc1ZWEzNDVlNTQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
djgtY2xlYW51cC1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpAQCAtMCwwICsxLDM4IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRo
ZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255
LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIu
L3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworbGV0IFJlYWxt
ID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChyLCBzKSA9PiAkLmV2YWxTY3JpcHQu
Y2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVhdGUoKTsKKworbGV0IGNsZWFudXAg
PSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsgZnVuY3Rpb24gY2xlYW51cCgpIHsg
c3RvcmVkX2dsb2JhbCA9IGdsb2JhbFRoaXM7IH0gY2xlYW51cDsiKTsKK2xldCByZWFsbV9nbG9i
YWxfdGhpcyA9IFJlYWxtLmV2YWwociwgImdsb2JhbFRoaXMiKTsKKworbGV0IGZnID0gbmV3IEZp
bmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCBh
IHJlZ2lzdGVyIGl0IGluIHRoZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVk
cworLy8gdG8gYmUgaW5zaWRlIGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxs
IHRoZW0hCisKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsr
aSkgeworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVj
dCk7CisgICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAg
ZnVuY3Rpb24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVu
Y3Rpb24oKSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2ds
b2JhbDsiKTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOwor
ICBhc3NlcnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitz
ZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92
OC1jbGVhbnVwLXByb3h5LWZyb20tZGlmZmVyZW50LXJlYWxtLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
djgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRk
MDI0N2UyNzEwZGE0ODVjOTI1NzJhYmE5YzI3NmNkZWYzNWFkCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvdjgtY2xlYW51cC1wcm94eS1mcm9tLWRpZmZlcmVudC1yZWFsbS5qcwpA
QCAtMCwwICsxLDM4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisK
Ky8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50
YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworbGV0IFJlYWxtID0geyBjcmVhdGU6ICQuY3JlYXRlUmVhbG0sIGV2YWw6IChy
LCBzKSA9PiAkLmV2YWxTY3JpcHQuY2FsbChyLCBzKSAgfTsKKworbGV0IHIgPSBSZWFsbS5jcmVh
dGUoKTsKKworbGV0IGNsZWFudXAgPSBSZWFsbS5ldmFsKHIsICJ2YXIgc3RvcmVkX2dsb2JhbDsg
bGV0IGNsZWFudXAgPSBuZXcgUHJveHkoZnVuY3Rpb24oKSB7IHN0b3JlZF9nbG9iYWwgPSBnbG9i
YWxUaGlzO30sIHt9KTsgY2xlYW51cCIpOworbGV0IHJlYWxtX2dsb2JhbF90aGlzID0gUmVhbG0u
ZXZhbChyLCAiZ2xvYmFsVGhpcyIpOworCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0
cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSBhbiBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IGluIHRo
ZSBGaW5hbGl6YXRpb25SZWdpc3RyeS4gVGhlIG9iamVjdCBuZWVkcworLy8gdG8gYmUgaW5zaWRl
IGEgY2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0hCisKKyhmdW5jdGlv
bigpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBsZXQg
b2JqZWN0ID0ge307CisgICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdCwgImhvbGRpbmdzIik7Cisg
ICAgfQorfSkoKTsKKworZ2MoKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVuY3Rp
b24gd2FzIGNhbGxlZCBpbiBpdHMgUmVhbG0uCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24o
KSB7CisgIGxldCBzdG9yZWRfZ2xvYmFsID0gUmVhbG0uZXZhbChyLCAic3RvcmVkX2dsb2JhbDsi
KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKHN0b3JlZF9nbG9iYWwsIGdsb2JhbFRoaXMpOworICBhc3Nl
cnRFcXVhbHMoc3RvcmVkX2dsb2JhbCwgcmVhbG1fZ2xvYmFsX3RoaXMpOworfQorCitzZXRUaW1l
b3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1maW5h
bGl6YXRpb24tcmVnaXN0cnktYmFzaWNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0
aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTYxNmE1MDIxYWNhNzU1MWM4MTE5
ZWI2MWVmZTk0N2I1MTJjM2MxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
ZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWJhc2ljcy5qcwpAQCAtMCwwICsxLDE1MiBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUg
VjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13
ZWFrLXJlZnMKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIgcmVs
YXRpdmUiKTsKKworKGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSgp
IHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KTsKKyAgYXNz
ZXJ0RXF1YWxzKGZnLnRvU3RyaW5nKCksICJbb2JqZWN0IEZpbmFsaXphdGlvblJlZ2lzdHJ5XSIp
OworICBhc3NlcnROb3RTYW1lKGZnLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7CisgIGFz
c2VydFNhbWUoZmcuX19wcm90b19fLl9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlwZSk7Cit9KSgp
OworCisoZnVuY3Rpb24gVGVzdEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3JDYWxsQXNG
dW5jdGlvbigpIHsKKyAgbGV0IGNhdWdodCA9IGZhbHNlOworICBsZXQgbWVzc2FnZSA9ICIiOwor
ICB0cnkgeworICAgIGxldCBmID0gRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICB9
IGNhdGNoIChlKSB7CisgICAgbWVzc2FnZSA9IGUubWVzc2FnZTsKKyAgICBjYXVnaHQgPSB0cnVl
OworICB9IGZpbmFsbHkgeworICAgIGFzc2VydFRydWUoY2F1Z2h0KTsKKyAgfQorfSkoKTsKKwor
KGZ1bmN0aW9uIFRlc3RDb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeUNsZWFudXBOb3RDYWxs
YWJsZSgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAg
bXVzdCBiZSBjYWxsYWJsZSI7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeSgpOyB9LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRU
aHJvd3MoKCkgPT4geyBsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoMSk7IH0sIFR5
cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiB7IGxldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShudWxsKTsgfSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK30pKCk7
CisKKyhmdW5jdGlvbiBUZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoQ2FsbGFi
bGVQcm94eUFzQ2xlYW51cCgpIHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9ICgp
ID0+IHt9OworICBsZXQgcHJveHkgPSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IGZn
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KHByb3h5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBU
ZXN0Q29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnlXaXRoTm9uQ2FsbGFibGVQcm94eUFzQ2xl
YW51cCgpIHsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnk6IGNsZWFudXAg
bXVzdCBiZSBjYWxsYWJsZSI7CisgIGxldCBoYW5kbGVyID0ge307CisgIGxldCBvYmogPSB7fTsK
KyAgbGV0IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgaGFuZGxlcik7CisgIGFzc2VydFRocm93cygo
KSA9PiB7IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShwcm94eSk7IH0sIFR5cGVF
cnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyV2l0aE5vbk9i
amVjdFRhcmdldCgpIHsKKyAgbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+
IHt9KTsKKyAgbGV0IG1lc3NhZ2UgPSAiRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJl
Z2lzdGVyOiB0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiOworICBhc3NlcnRUaHJvd3MoKCkgPT4g
ZmcucmVnaXN0ZXIoMSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2Vy
dFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihmYWxzZSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwg
bWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdpc3RlcigiZm9vIiwgImhvbGRp
bmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy5yZWdp
c3RlcihTeW1ib2woKSwgImhvbGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2Vy
dFRocm93cygoKSA9PiBmZy5yZWdpc3RlcihudWxsLCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yLCBt
ZXNzYWdlKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKHVuZGVmaW5lZCwgImhv
bGRpbmdzIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFJl
Z2lzdGVyV2l0aFByb3h5KCkgeworICBsZXQgaGFuZGxlciA9IHt9OworICBsZXQgb2JqID0ge307
CisgIGxldCBwcm94eSA9IG5ldyBQcm94eShvYmosIGhhbmRsZXIpOworICBsZXQgZmcgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4ge30pOworICBmZy5yZWdpc3Rlcihwcm94eSk7Cit9
KSgpOworCisoZnVuY3Rpb24gVGVzdFJlZ2lzdGVyVGFyZ2V0QW5kSG9sZGluZ3NTYW1lVmFsdWUo
KSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxl
dCBvYmogPSB7YTogMX07CisgIC8vIFNhbWVWYWx1ZSh0YXJnZXQsIGhvbGRpbmdzKSBub3Qgb2sK
KyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnJlZ2lzdGVyKG9iaiwgb2JqKSwgVHlwZUVycm9yLAor
ICAgICAgICAgICAgICAgIkZpbmFsaXphdGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlcjog
dGFyZ2V0IGFuZCBob2xkaW5ncyBtdXN0IG5vdCBiZSBzYW1lIik7CisgIGxldCBob2xkaW5ncyA9
IHthOiAxfTsKKyAgZmcucmVnaXN0ZXIob2JqLCBob2xkaW5ncyk7Cit9KSgpOworCisoZnVuY3Rp
b24gVGVzdFJlZ2lzdGVyV2l0aG91dEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRU
aHJvd3MoKCkgPT4gRmluYWxpemF0aW9uUmVnaXN0cnkucHJvdG90eXBlLnJlZ2lzdGVyLmNhbGwo
e30sIHt9LCAiaG9sZGluZ3MiKSwgVHlwZUVycm9yKTsKKyAgLy8gRG9lcyBub3QgdGhyb3c6Cisg
IGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIEZpbmFsaXph
dGlvblJlZ2lzdHJ5LnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKGZnLCB7fSwgImhvbGRpbmdzIik7
Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFVucmVnaXN0ZXJXaXRoTm9uRXhpc3RlbnRLZXkoKSB7
CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7fSk7CisgIGxldCBz
dWNjZXNzID0gZmcudW5yZWdpc3Rlcih7ImsiOiAid2hhdGV2ZXIifSk7CisgIGFzc2VydEZhbHNl
KHN1Y2Nlc3MpOworfSkoKTsKKworKGZ1bmN0aW9uIFRlc3RVbnJlZ2lzdGVyV2l0aE5vbkZpbmFs
aXphdGlvblJlZ2lzdHJ5KCkgeworICBhc3NlcnRUaHJvd3MoKCkgPT4gRmluYWxpemF0aW9uUmVn
aXN0cnkucHJvdG90eXBlLnVucmVnaXN0ZXIuY2FsbCh7fSwge30pLAorICAgICAgICAgICAgICAg
VHlwZUVycm9yKTsKK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0VW5yZWdpc3RlcldpdGhOb25PYmpl
Y3RVbnJlZ2lzdGVyVG9rZW4oKSB7CisgIGxldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3Ry
eSgoKSA9PiB7fSk7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKDEpLCBUeXBl
RXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3RlcihCaWdJbnQoMSkpLCBU
eXBlRXJyb3IpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gZmcudW5yZWdpc3Rlcignb25lJyksIFR5
cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKFN5bWJvbCgpKSwg
VHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodHJ1ZSksIFR5
cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBmZy51bnJlZ2lzdGVyKGZhbHNlKSwgVHlw
ZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIodW5kZWZpbmVkKSwg
VHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGZnLnVucmVnaXN0ZXIobnVsbCksIFR5
cGVFcnJvcik7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvcigpIHsK
KyAgbGV0IHdyID0gbmV3IFdlYWtSZWYoe30pOworICBhc3NlcnRFcXVhbHMod3IudG9TdHJpbmco
KSwgIltvYmplY3QgV2Vha1JlZl0iKTsKKyAgYXNzZXJ0Tm90U2FtZSh3ci5fX3Byb3RvX18sIE9i
amVjdC5wcm90b3R5cGUpOworCisgIGxldCBkZXJlZl9kZXNjID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3ci5fX3Byb3RvX18sICJkZXJlZiIpOworICBhc3NlcnRFcXVhbHModHJ1
ZSwgZGVyZWZfZGVzYy5jb25maWd1cmFibGUpOworICBhc3NlcnRFcXVhbHMoZmFsc2UsIGRlcmVm
X2Rlc2MuZW51bWVyYWJsZSk7CisgIGFzc2VydEVxdWFscygiZnVuY3Rpb24iLCB0eXBlb2YgZGVy
ZWZfZGVzYy52YWx1ZSk7Cit9KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3Rv
cldpdGhOb25PYmplY3QoKSB7CisgIGxldCBtZXNzYWdlID0gIldlYWtSZWY6IHRhcmdldCBtdXN0
IGJlIGFuIG9iamVjdCI7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZigpLCBUeXBl
RXJyb3IsIG1lc3NhZ2UpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gbmV3IFdlYWtSZWYoMSksIFR5
cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1JlZihmYWxz
ZSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcgV2Vha1Jl
ZigiZm9vIiksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygoKSA9PiBuZXcg
V2Vha1JlZihTeW1ib2woKSksIFR5cGVFcnJvciwgbWVzc2FnZSk7CisgIGFzc2VydFRocm93cygo
KSA9PiBuZXcgV2Vha1JlZihudWxsKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgYXNzZXJ0VGhy
b3dzKCgpID0+IG5ldyBXZWFrUmVmKHVuZGVmaW5lZCksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cit9
KSgpOworCisoZnVuY3Rpb24gVGVzdFdlYWtSZWZDb25zdHJ1Y3RvckNhbGxBc0Z1bmN0aW9uKCkg
eworICBsZXQgY2F1Z2h0ID0gZmFsc2U7CisgIGxldCBtZXNzYWdlID0gIiI7CisgIHRyeSB7Cisg
ICAgbGV0IGYgPSBXZWFrUmVmKHt9KTsKKyAgfSBjYXRjaCAoZSkgeworICAgIG1lc3NhZ2UgPSBl
Lm1lc3NhZ2U7CisgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgfSBmaW5hbGx5IHsKKyAgICBhc3NlcnRU
cnVlKGNhdWdodCk7CisgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBUZXN0V2Vha1JlZldpdGhQcm94
eSgpIHsKKyAgbGV0IGhhbmRsZXIgPSB7fTsKKyAgbGV0IG9iaiA9IHt9OworICBsZXQgcHJveHkg
PSBuZXcgUHJveHkob2JqLCBoYW5kbGVyKTsKKyAgbGV0IHdyID0gbmV3IFdlYWtSZWYocHJveHkp
OworfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lz
dHJ5LWFuZC13ZWFrcmVmLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0
cnktYW5kLXdlYWtyZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhkYThhMGM5ZmVmYzlkMWRlMjY5NWIyM2Q1
MjAxNDI4ZmIyNmIyMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWFuZC13ZWFrcmVmLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTggdGhlIFY4
IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vh
ay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVz
b3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVw
X2NhbGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICBs
ZXQgaG9sZGluZ3NfbGlzdCA9IFtdOworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOwor
ICBhc3NlcnRFcXVhbHMoMSwgaG9sZGluZ3NfbGlzdC5sZW5ndGgpOworICBhc3NlcnRFcXVhbHMo
ImhvbGRpbmdzIiwgaG9sZGluZ3NfbGlzdFswXSk7CisgIGNsZWFudXBfY2FsbGVkID0gdHJ1ZTsK
K30KKworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IHdl
YWtfcmVmcyA9IFtdOworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7CisgICAgICAgIGxldCBvID0ge307CisgICAgICAgIHdlYWtfcmVmcy5wdXNoKG5l
dyBXZWFrUmVmKG8pKTsKKyAgICAgICAgZmcucmVnaXN0ZXIobywgImhvbGRpbmdzIik7CisgICAg
fQorfSkoKTsKKworLy8gU2luY2UgdGhlIFdlYWtSZWYgd2FzIGNyZWF0ZWQgZHVyaW5nIHRoaXMg
dHVybiwgaXQgaXMgbm90IGNsZWFyZWQgYnkgR0MuIFRoZQorLy8gcG9pbnRlciBpbnNpZGUgdGhl
IEZpbmFsaXphdGlvblJlZ2lzdHJ5IGlzIG5vdCBjbGVhcmVkIGVpdGhlciwgc2luY2UgdGhlIFdl
YWtSZWYKKy8vIGtlZXBzIHRoZSB0YXJnZXQgb2JqZWN0IGFsaXZlLgorZ2MoKTsKKyhmdW5jdGlv
bigpIHsKKyAgICB3ZWFrX3JlZnMuZm9yRWFjaCgod2Vha19yZWYpID0+IGFzc2VydEVxdWFscygi
b2JqZWN0IiwgdHlwZW9mKHdlYWtfcmVmLmRlcmVmKCkpKSk7Cit9KSgpOworCisvLyBUcmlnZ2Vy
IGdjIGluIG5leHQgdGFzaworc2V0VGltZW91dCgoKSA9PiB7CisgICAgZ2MoKTsKKworICAgIC8v
IENoZWNrIHRoYXQgY2xlYW51cCBjYWxsYmFjayB3YXMgY2FsbGVkIGluIGEgZm9sbG93IHVwIHRh
c2sKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2Nh
bGxlZCk7CisgICAgICAgIGFzc2VydFRydWUod2Vha19yZWZzLnNvbWUoKHdlYWtfcmVmKSA9PiB3
ZWFrX3JlZi5kZXJlZigpID09PSBudWxsKSk7CisgICAgfSwgMCk7Cit9LCAwKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdz
LWFsaXZlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnkta2VlcHMt
aG9sZGluZ3MtYWxpdmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAyYzRiYjhlZTg0ZTAxMGI3NGQ2ZGViMzVh
MGNmYWNmMTZkNDkzZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LWZpbmFs
aXphdGlvbnJlZ2lzdHJ5LWtlZXBzLWhvbGRpbmdzLWFsaXZlLmpzCkBAIC0wLDAgKzEsNDcgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIw
MTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhh
cm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xv
YWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xl
dCBjbGVhbnVwX2NhbGxlZCA9IGZhbHNlOworbGV0IGhvbGRpbmdzX2xpc3QgPSBbXTsKK2xldCBj
bGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RmFsc2UoY2xlYW51cF9jYWxs
ZWQpOworICBob2xkaW5nc19saXN0LnB1c2goaG9sZGluZ3MpOworICBjbGVhbnVwX2NhbGxlZCA9
IHRydWU7Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsK
K2xldCBvMSA9IHt9OworbGV0IGhvbGRpbmdzID0geydhJzogJ3RoaXMgaXMgdGhlIGhvbGRpbmdz
IG9iamVjdCd9OworCisvLyBJZ25pdGlvbiBob2xkcyByZWZlcmVuY2VzIHRvIG9iamVjdHMgaW4g
dGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlc2Ugd2lsbCBiZQorLy8gcmVsZWFzZWQgd2hlbiB0aGUg
ZnVuY3Rpb24gZXhpdHMuIFNvIG9ubHkgYWNjZXNzIG8gaW5zaWRlIGEgZnVuY3Rpb24gdG8KKy8v
IHByZXZlbnQgYW55IHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbiB0ZW1wb3JhcnkgcmVnaXN0ZXJz
IHdoZW4gYSBnYyBpcworLy8gdHJpZ2dlcmVkLgorKCgpID0+IHtmZy5yZWdpc3RlcihvMSwgaG9s
ZGluZ3MpO30pKCkKKworZ2MoKTsKK2Fzc2VydEZhbHNlKGNsZWFudXBfY2FsbGVkKTsKKworLy8g
RHJvcCB0aGUgbGFzdCByZWZlcmVuY2VzIHRvIG8xLgorKCgpID0+IHtvMSA9IG51bGw7fSkoKQor
CisvLyBEcm9wIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgaG9sZGluZ3MuIFRoZSBGaW5hbGl6
YXRpb25SZWdpc3RyeSBrZWVwcyBpdAorLy8gYWxpdmUsIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9u
IHdpbGwgYmUgY2FsbGVkIGFzIG5vcm1hbC4KK2hvbGRpbmdzID0gbnVsbDsKK2djKCk7Cithc3Nl
cnRGYWxzZShjbGVhbnVwX2NhbGxlZCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigp
IHsKKyAgYXNzZXJ0VHJ1ZShjbGVhbnVwX2NhbGxlZCk7CisgIGFzc2VydEVxdWFscyhob2xkaW5n
c19saXN0Lmxlbmd0aCwgMSk7CisgIGFzc2VydEVxdWFscyhob2xkaW5nc19saXN0WzBdLmEsICJ0
aGlzIGlzIHRoZSBob2xkaW5ncyBvYmplY3QiKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1
bmMsIDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtZmluYWxpemF0aW9ucmVnaXN0
cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxlLXRpbWVzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvdjgtZmluYWxpemF0aW9ucmVnaXN0cnktc2NoZWR1bGVkLWZvci1jbGVhbnVwLW11bHRpcGxl
LXRpbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkOGM5NjM5NzVkMmVjZmI4Nzc2NTkyY2RiNTVmZTg1Mzcy
NzljMjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC1maW5hbGl6YXRpb25y
ZWdpc3RyeS1zY2hlZHVsZWQtZm9yLWNsZWFudXAtbXVsdGlwbGUtdGltZXMuanMKQEAgLTAsMCAr
MSw4NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQorCisvLyBDb3B5
cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxh
Z3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVudGFsLW1hcmtp
bmcKKy8vIEZsYWdzOiAtLW5vLXN0cmVzcy1mbHVzaC1ieXRlY29kZQorCitsb2FkKCIuL3Jlc291
cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cDBf
Y2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51cDBfMF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQg
Y2xlYW51cDBfMV9ob2xkaW5nc19jb3VudCA9IDA7CisKK2xldCBjbGVhbnVwMV9jYWxsX2NvdW50
ID0gMDsKK2xldCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwMV8x
X2hvbGRpbmdzX2NvdW50ID0gMDsKKworbGV0IGNsZWFudXAwID0gZnVuY3Rpb24oaG9sZGluZ3Mp
IHsKKyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFdID09ICIwIikKKyAgICArK2Ns
ZWFudXAwXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICArK2NsZWFudXAwXzFfaG9sZGlu
Z3NfY291bnQ7CisgICsrY2xlYW51cDBfY2FsbF9jb3VudDsKK30KKworbGV0IGNsZWFudXAxID0g
ZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgaWYgKGhvbGRpbmdzW2hvbGRpbmdzLmxlbmd0aCAtIDFd
ID09ICIwIikKKyAgICArK2NsZWFudXAxXzBfaG9sZGluZ3NfY291bnQ7CisgIGVsc2UKKyAgICAr
K2NsZWFudXAxXzFfaG9sZGluZ3NfY291bnQ7CisgICsrY2xlYW51cDFfY2FsbF9jb3VudDsKK30K
KworbGV0IGZnMCA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwMCk7CitsZXQgZmcx
ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXAxKTsKKworLy8gUmVnaXN0ZXIgMSB3
ZWFrIHJlZmVyZW5jZSBmb3IgZWFjaCBGaW5hbGl6YXRpb25SZWdpc3RyeSBhbmQga2lsbCB0aGUg
b2JqZWN0cyB0aGV5IHBvaW50IHRvLgorKGZ1bmN0aW9uKCkgeworICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7ICsraSkgeworICAgIC8vIFRoZSBvYmplY3RzIG5lZWQgdG8gYmUgaW5zaWRlIGEg
Y2xvc3VyZSBzbyB0aGF0IHdlIGNhbiByZWxpYWJseSBraWxsIHRoZW0uCisgICAgbGV0IG9iamVj
dHMgPSBbXTsKKyAgICBvYmplY3RzWzBdID0ge307CisgICAgb2JqZWN0c1sxXSA9IHt9OworCisg
ICAgZmcwLnJlZ2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMCIpOworICAgIGZnMS5yZWdp
c3RlcihvYmplY3RzWzFdLCAiaG9sZGluZ3MxLTAiKTsKKworICAgIC8vIERyb3AgdGhlIHJlZmVy
ZW5jZXMgdG8gdGhlIG9iamVjdHMuCisgICAgb2JqZWN0cyA9IFtdOworICB9Cit9KSgpOworCisv
LyBXaWxsIHNjaGVkdWxlIGJvdGggZmcwIGFuZCBmZzEgZm9yIGNsZWFudXAuCitnYygpOworCisv
LyBCZWZvcmUgdGhlIGNsZWFudXAgdGFzayBoYXMgYSBjaGFuY2UgdG8gcnVuLCBkbyB0aGUgc2Ft
ZSB0aGluZyBhZ2Fpbiwgc28gYm90aAorLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBhcmUgKGFn
YWluKSBzY2hlZHVsZWQgZm9yIGNsZWFudXAuIFRoaXMgaGFzIHRvIGJlIGEgSUlGRSBmdW5jdGlv
bgorLy8gKHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5IGtpbGwgdGhlIG9iamVjdHMpIHNvIHdlIGNh
bm5vdCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24KKy8vIGFzIGJlZm9yZS4KKyhmdW5jdGlvbigpIHsK
KyAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBsZXQgb2JqZWN0cyA9IFtd
OworICAgIG9iamVjdHNbMF0gPSB7fTsKKyAgICBvYmplY3RzWzFdID0ge307CisgICAgZmcwLnJl
Z2lzdGVyKG9iamVjdHNbMF0sICJob2xkaW5nczAtMSIpOworICAgIGZnMS5yZWdpc3RlcihvYmpl
Y3RzWzFdLCAiaG9sZGluZ3MxLTEiKTsKKyAgICBvYmplY3RzID0gW107CisgIH0KK30pKCk7CisK
K2djKCk7CisKK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgYXNzZXJ0Tm90RXF1
YWxzKDAsIGNsZWFudXAwX2NhbGxfY291bnQpOworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51
cDBfMF9ob2xkaW5nc19jb3VudCk7CisgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwMF8xX2hv
bGRpbmdzX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXAxX2NhbGxfY291bnQp
OworICBhc3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cDFfMF9ob2xkaW5nc19jb3VudCk7CisgIGFz
c2VydE5vdEVxdWFscygwLCBjbGVhbnVwMV8wX2hvbGRpbmdzX2NvdW50KTsKK30KKworLy8gR2l2
ZSB0aGUgY2xlYW51cCB0YXNrIGEgY2hhbmNlIHRvIHJ1bi4KK3NldFRpbWVvdXQodGltZW91dF9m
dW5jLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZp
bmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtbXVsdGlwbGUtZGly
dHktZmluYWxpemF0aW9uLXJlZ2lzdHJpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwNzNhMDMxZGIwNmNj
ZDMwMjZkOGYyNGYxMjdmYWRkYjg5OGFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LW11bHRpcGxlLWRpcnR5LWZpbmFsaXphdGlvbi1yZWdpc3RyaWVzLmpzCkBAIC0wLDAg
KzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29w
eXJpZ2h0IDIwMTggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZs
YWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhwb3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJr
aW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1qc3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZl
Iik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQxID0gMDsKK2xldCBjbGVhbnVwX2NhbGxfY291
bnQyID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBpZiAoaG9s
ZGluZ3MgPT09ICJob2xkaW5nczEiKQorICAgICAgICArK2NsZWFudXBfY2FsbF9jb3VudDE7Cisg
ICAgZWxzZSBpZiAoaG9sZGluZ3MgPT09ICJob2xkaW5nczIiKQorICAgICAgICArK2NsZWFudXBf
Y2FsbF9jb3VudDI7CisgICAgZWxzZQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KKwor
bGV0IGZnMSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBmZzIgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CisKKy8vIENyZWF0ZSB0d28gb2JqZWN0
cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiBGaW5hbGl6YXRpb25SZWdpc3RyaWVzLiBUaGUgb2JqZWN0
cyBuZWVkCisvLyB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2UgY2FuIHJlbGlhYmx5
IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QxID0ge307CisgICAgICAgIGZnMS5yZWdpc3Rl
cihvYmplY3QxLCAiaG9sZGluZ3MxIik7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAg
ICAgICAgZmcyLnJlZ2lzdGVyKG9iamVjdDIsICJob2xkaW5nczIiKTsKKyAgICB9CisgICAgLy8g
b2JqZWN0MSBhbmQgb2JqZWN0MiBnbyBvdXQgb2Ygc2NvcGUuCit9KSgpOworCisvLyBUaGlzIEdD
IHdpbGwgZGlzY292ZXIgZGlydHkgV2Vha0NlbGxzIGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2Mo
KTsKK2Fzc2VydEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQxKTsKK2Fzc2VydEVxdWFscygw
LCBjbGVhbnVwX2NhbGxfY291bnQyKTsKKworLy8gQXNzZXJ0IHRoYXQgdGhlIGNsZWFudXAgZnVu
Y3Rpb24gd2FzIGNhbGxlZC4KK2xldCB0aW1lb3V0X2Z1bmMgPSBmdW5jdGlvbigpIHsKKyAgICBh
c3NlcnROb3RFcXVhbHMoMCwgY2xlYW51cF9jYWxsX2NvdW50MSk7CisgICAgYXNzZXJ0Tm90RXF1
YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudDIpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVu
YywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC1yZWVudHJhbnQtZ2MtZnJvbS1j
bGVhbnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xlYW51cC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYTk3ZGFhNGQxZDI2NTI0ODIyMDJkMTFiNWIyY2JjNDVjYjI3MjEwCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtcmVlbnRyYW50LWdjLWZyb20tY2xl
YW51cC5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1Jl
ZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDIwIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5v
aW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwg
ImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2FsbGVkID0gZmFsc2U7CitsZXQgcmVlbnRyYW50
X2djID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgICBnYygpOworICAgIGNhbGxlZCA9IHRydWU7
Cit9CisKK2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShyZWVudHJhbnRfZ2MpOwor
CisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAg
ICBmZy5yZWdpc3Rlcih7fSwgNDIpOworfSkoKTsKKworZ2MoKTsKKworc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICBhc3NlcnRUcnVlKGNhbGxlZCk7Cit9LCAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5hbGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVl
LmpzIGIvSlNUZXN0cy9zdHJlc3Mvdjgtc3RyZXNzLWZpbmFsaXphdGlvbnJlZ2lzdHJ5LWRpcnR5
LWVucXVldWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUyNGUyY2QzZWM3NmQ1Yzg5NTFjZDJmYTBhNTFhODVm
ZDA4MDk4MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXN0cmVzcy1maW5h
bGl6YXRpb25yZWdpc3RyeS1kaXJ0eS1lbnF1ZXVlLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMjAgdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLXN0cmVzcy1j
b21wYWN0aW9uIC0tZXhwb3NlLWdjCisKKy8vIFRlc3QgdGhhdCB0aGUgZGlydHkgRmluYWxpemF0
aW9uUmVnaXN0cmllcyB0aGF0IGFyZSBlbnF1ZXVlZCBkdXJpbmcgR0MgaGF2ZQorLy8gdGhlaXIg
c2xvdHMgY29ycmVjdGx5IHJlY29yZGVkIGJ5IHRoZSBHQy4KKworLy8gMSkgQ3JlYXRlIG1hbnkg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3RzIHNvIHRoYXQgdGhleSBzcGFuIHNldmVyYWwg
cGFnZXMKKy8vIChwYWdlIHNpemUgaXMgMjU2a2IpLgorbGV0IHJlZ2lzdHJpZXMgPSBbXTsKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAyNCAqIDg7IGkrKykgeworICByZWdpc3RyaWVzLnB1c2gobmV3
IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHt9KSk7Cit9CisKKy8vIDIpIEZvcmNlIHR3byBH
Q3MgdG8gZW5zdXJlIHRoYXQgSlNGaW5hbGl6YXRvblJlZ2lzdHJ5IG9iamVjdHMgYXJlIHRlbnVy
ZWQuCitnYygpOworZ2MoKTsKKworLy8gMykgSW4gYSBmdW5jdGlvbjogY3JlYXRlIGEgZHVtbXkg
dGFyZ2V0IGFuZCByZWdpc3RlciBpdCBpbiBhbGwKKy8vIEpTRmluYWxpemF0b25SZWdpc3RyeSBv
YmplY3RzLgorKGZ1bmN0aW9uKCkgeworICBsZXQgZ2FyYmFnZSA9IHt9OworICByZWdpc3RyaWVz
LmZvckVhY2goKGZyKSA9PiB7CisgICAgZnIucmVnaXN0ZXIoZ2FyYmFnZSwgNDIpOworICB9KTsK
KyAgZ2FyYmFnZSA9IG51bGw7Cit9KSgpOworCisvLyA0KSBPdXRzaWRlIHRoZSBmdW5jdGlvbiB3
aGVyZSB0aGUgdGFyZ2V0IGlzIHVucmVhY2hhYmxlOiBmb3JjZSBHQyB0byBjb2xsZWN0CisvLyB0
aGUgb2JqZWN0LgorZ2MoKTsKKworLy8gNSkgRm9yY2UgYW5vdGhlciBHQyB0byB0ZXN0IHRoYXQg
dGhlIHNsb3Qgd2FzIGNvcnJlY3RseSB1cGRhdGVkLgorZ2MoKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3Y4LXVuZGVmaW5lZC1ob2xkaW5ncy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVu
ZGVmaW5lZC1ob2xkaW5ncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM2MGNmZGE3N2YwYWZjYTFiNWNiOWZk
ZGFmZWFjMGQ5MDc1MGJiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5k
ZWZpbmVkLWhvbGRpbmdzLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1q
c3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQg
PSAwOworbGV0IGNsZWFudXAgPSBmdW5jdGlvbihob2xkaW5ncykgeworICAgIGFzc2VydEVxdWFs
cyhob2xkaW5ncywgdW5kZWZpbmVkKTsKKyAgICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30KKwor
bGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworCisvLyBDcmVhdGUg
YW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRo
ZSBvYmplY3QgbmVlZHMgdG8gYmUgaW5zaWRlCisvLyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4g
cmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5y
ZWdpc3RlcihvYmplY3QpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCByZWNsYWlt
IHRoZSB0YXJnZXQgb2JqZWN0IGFuZCBzY2hlZHVsZSBjbGVhbnVwLgorZ2MoKTsKK2Fzc2VydEVx
dWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworCisvLyBBc3NlcnQgdGhhdCB0aGUgY2xlYW51
cCBmdW5jdGlvbiB3YXMgY2FsbGVkLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgewor
ICAgIGFzc2VydE5vdEVxdWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1l
b3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJl
Z2lzdGVyLWFmdGVyLWNsZWFudXAuanMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWFm
dGVyLWNsZWFudXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ3MmIwZjhiM2JiOGViYTY5MGExNjBkMTYzOGQz
OWU0M2Y0NzJkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0
ZXItYWZ0ZXItY2xlYW51cC5qcwpAQCAtMCwwICsxLDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4
cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1t
anN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50
ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgYXNzZXJ0RXF1YWxz
KCJob2xkaW5ncyIsIGhvbGRpbmdzKTsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xl
dCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7Imsi
OiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBp
dCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJl
IGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCiso
ZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAg
ICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QsICJob2xkaW5n
cyIsIGtleSk7CisgICAgfQorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRh
cmdldCBvYmplY3QgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAs
IGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0
aW9uIHdhcyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisgICAgbGV0IG9sZF9jbGVhbnVw
X2NhbGxfY291bnQgPSBjbGVhbnVwX2NhbGxfY291bnQ7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFu
IGFscmVhZHkgY2xlYW5lZC11cCB3ZWFrIHJlZmVyZW5jZS4KKyAgICBsZXQgc3VjY2VzcyA9IGZn
LnVucmVnaXN0ZXIoa2V5KTsKKyAgICAvLyBTaW5jZSB3ZSBtYXkgbm90IGNvbGxlY3QgZXZlcnl0
aGluZyB3ZSBkb24ndCBrbm93IHdoYXQgc3VjY2VzcyB3aWxsIGJlIHVubGlrZSB2OC4KKyAgICAv
LyBhc3NlcnRGYWxzZShzdWNjZXNzKTsKKworICAgIC8vIEFzc2VydCB0aGF0IGl0IGRpZG4ndCBk
byBhbnl0aGluZy4KKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgYXNzZXJ0RXF1YWxzKG9sZF9jbGVh
bnVwX2NhbGxfY291bnQsIGNsZWFudXBfY2FsbF9jb3VudCk7IH0sIDApOworfQorCitzZXRUaW1l
b3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJl
Z2lzdGVyLWJlZm9yZS1jbGVhbnVwLmpzIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1i
ZWZvcmUtY2xlYW51cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2QxZTNlYzZhM2FlYmZjNzg3NmM3ZGRhZjdk
N2RiOGMxNTNmZWFkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdp
c3Rlci1iZWZvcmUtY2xlYW51cC5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0
IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAt
LWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFya2luZyAtLW5vaW5jcmVtZW50YWwtbWFya2lu
ZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2ZSIp
OworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVwID0gZnVuY3Rpb24o
aG9sZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xldCBmZyA9IG5ldyBG
aW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7ImsiOiAidGhpcyBpcyB0
aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBpbiB0aGUgRmlu
YWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJlIGluc2lkZSBhIGNs
b3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7
CisgIGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAibXkgaG9sZGluZ3Mi
LCBrZXkpOworCisgIC8vIENsZWFyIHRoZSBXZWFrQ2VsbCBiZWZvcmUgdGhlIEdDIGhhcyBhIGNo
YW5jZSB0byBkaXNjb3ZlciBpdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7
CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3Bl
LgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJlY2xhaW0gdGhlIHRhcmdldCBvYmplY3QuCitn
YygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0
aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgc2luY2Ugd2UgY2FsbGVk
IHVucmVnaXN0ZXIuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVx
dWFscygwLCBjbGVhbnVwX2NhbGxfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVu
YywgMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10
d2ljZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItY2FsbGVkLXR3aWNlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM4ZWZlODI0YjZjNzRhMDU4Y2IxZDFlYjM4NzFlY2U1YmFmOGJhNzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWNhbGxlZC10d2ljZS5q
cwpAQCAtMCwwICsxLDQ2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIp
CisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorCisvLyBGbGFnczogLS1oYXJtb255LXdlYWstcmVmcyAtLWV4cG9zZS1nYyAtLW5vaW5jcmVt
ZW50YWwtbWFya2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxl
ciByZWxhdGl2ZSIpOworCitsZXQgY2xlYW51cF9jYWxsX2NvdW50ID0gMDsKK2xldCBjbGVhbnVw
ID0gZnVuY3Rpb24oaG9sZGluZ3MpIHsKKyAgKytjbGVhbnVwX2NhbGxfY291bnQ7Cit9CisKK2xl
dCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwKTsKK2xldCBrZXkgPSB7Imsi
OiAidGhpcyBpcyB0aGUga2V5In07CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBp
dCBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMKKy8vIHRvIGJl
IGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorCiso
ZnVuY3Rpb24oKSB7CisgIGxldCBvYmplY3QgPSB7fTsKKyAgZmcucmVnaXN0ZXIob2JqZWN0LCAi
aG9sZGluZ3MiLCBrZXkpOworCisgIC8vIFVucmVnaXN0ZXIgYmVmb3JlIHRoZSBHQyBoYXMgYSBj
aGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdC4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lz
dGVyKGtleSk7CisgIGFzc2VydFRydWUoc3VjY2Vzcyk7CisKKyAgLy8gQ2FsbCB1bnJlZ2lzdGVy
IGFnYWluIChqdXN0IHRvIGFzc2VydCB3ZSBoYW5kbGUgdGhpcyBncmFjZWZ1bGx5KS4KKyAgc3Vj
Y2VzcyA9IGZnLnVucmVnaXN0ZXIoa2V5KTsKKyAgYXNzZXJ0RmFsc2Uoc3VjY2Vzcyk7CisKKyAg
Ly8gb2JqZWN0IGdvZXMgb3V0IG9mIHNjb3BlLgorfSkoKTsKKworLy8gVGhpcyBHQyB3aWxsIHJl
Y2xhaW0gdGhlIHRhcmdldCBvYmplY3QuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBf
Y2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdvbid0
IGJlIGNhbGxlZCwgc2luY2UgdGhlIHdlYWsgcmVmZXJlbmNlCisvLyB3YXMgdW5yZWdpc3RlcmVk
LgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnRFcXVhbHMoMCwgY2xl
YW51cF9jYWxsX2NvdW50KTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMg
Yi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjIxMjI4NjYzYWQyY2VkNTk2OTVhNTNjNWIzYjBlNWY3Y2IwMGJjCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDIuanMK
QEAgLTAsMCArMSw0OSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEiKQor
CisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3JlbWVu
dGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxsZXIg
cmVsYXRpdmUiKTsKKworbGV0IGNhbGxlZCA9IGZhbHNlOworbGV0IGNsZWFudXAgPSBmdW5jdGlv
bihob2xkaW5ncykgeworICAvLyBTZWUgd2hpY2ggdGFyZ2V0IHdlJ3JlIGNsZWFuaW5nIHVwIGFu
ZCB1bnJlZ2lzdGVyIHRoZSBvdGhlciBvbmUuCisgIGlmIChob2xkaW5ncyA9PSAxKSB7CisgICAg
bGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleTIpOworICAgIGFzc2VydFRydWUoc3VjY2Vz
cyB8fCBjYWxsZWQpOworICB9IGVsc2UgeworICAgIGFzc2VydFNhbWUoaG9sZGluZ3MsIDIpOwor
ICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICBhc3NlcnRUcnVlKHN1
Y2Nlc3MgfHwgY2FsbGVkKTsKKyAgfQorICBjYWxsZWQgPSB0cnVlOworfQorCitsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoY2xlYW51cCk7CitsZXQga2V5MSA9IHsiayI6ICJmaXJz
dCBrZXkifTsKK2xldCBrZXkyID0geyJrIjogInNlY29uZCBrZXkifTsKKy8vIENyZWF0ZSB0d28g
b2JqZWN0cyBhbmQgcmVnaXN0ZXIgdGhlbSBpbiB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRo
ZSBvYmplY3RzCisvLyBuZWVkIHRvIGJlIGluc2lkZSBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4g
cmVsaWFibHkga2lsbCB0aGVtIQorCisoZnVuY3Rpb24oKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iamVjdDEgPSB7fTsKKyAgICAgICAgZmcu
cmVnaXN0ZXIob2JqZWN0MSwgMSwga2V5MSk7CisgICAgICAgIGxldCBvYmplY3QyID0ge307Cisg
ICAgICAgIGZnLnJlZ2lzdGVyKG9iamVjdDIsIDIsIGtleTIpOworICAgIH0KK30pKCk7CisKKy8v
IFRoaXMgR0Mgd2lsbCByZWNsYWltIHRhcmdldCBvYmplY3RzIGFuZCBzY2hlZHVsZSBjbGVhbnVw
LgorZ2MoKTsKK2Fzc2VydEZhbHNlKGNhbGxlZCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVh
bnVwIGZ1bmN0aW9uIHdhcyBjYWxsZWQgYW5kIGNsZWFuZWQgdXAgb25lIGhvbGRpbmdzIChidXQg
bm90IHRoZSBvdGhlciBvbmUpLgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydFRydWUoY2FsbGVkKTsKK30KKworc2V0VGltZW91dCh0aW1lb3V0X2Z1bmMsIDApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMu
anMgYi9KU1Rlc3RzL3N0cmVzcy92OC11bnJlZ2lzdGVyLWluc2lkZS1jbGVhbnVwMy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iN2ZhYTdiNmUzYzQzYmYyYjEyODY2ZjI0MGNjNmVhYzE4N2QyMWI5Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdjgtdW5yZWdpc3Rlci1pbnNpZGUtY2xlYW51cDMu
anMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVdlYWtSZWZzPTEi
KQorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworLy8gRmxhZ3M6IC0taGFybW9ueS13ZWFrLXJlZnMgLS1leHBvc2UtZ2MgLS1ub2luY3Jl
bWVudGFsLW1hcmtpbmcKKworbG9hZCgiLi9yZXNvdXJjZXMvdjgtbWpzdW5pdC5qcyIsICJjYWxs
ZXIgcmVsYXRpdmUiKTsKKworbGV0IGNsZWFudXBfY2FsbF9jb3VudCA9IDA7CitsZXQgY2xlYW51
cF9ob2xkaW5nc19jb3VudCA9IDA7CitsZXQgY2xlYW51cCA9IGZ1bmN0aW9uKGhvbGRpbmdzKSB7
CisgIGFzc2VydEVxdWFscyhob2xkaW5ncywgImhvbGRpbmdzIik7CisKKyAgLy8gVGhlcmUncyBt
b3JlcyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXkgdGhhdCB3ZSBoYXZlbid0CisgIC8vIGNsZWFu
ZWQgdXAgeWV0IHNvIHdlIHNob3VsZCBiZSBhYmxlIHRvIHVucmVnaXN0ZXIgdGhlCisgIC8vIGNh
bGxiYWNrIGZvciB0aGF0IG9uZS4KKyAgbGV0IHN1Y2Nlc3MgPSBmZy51bnJlZ2lzdGVyKGtleSk7
CisKKyAgYXNzZXJ0VHJ1ZShzdWNjZXNzKTsKKworICArK2NsZWFudXBfaG9sZGluZ3NfY291bnQ7
CisgICsrY2xlYW51cF9jYWxsX2NvdW50OworfQorCitsZXQgZmcgPSBuZXcgRmluYWxpemF0aW9u
UmVnaXN0cnkoY2xlYW51cCk7CisvLyBDcmVhdGUgYW4gb2JqZWN0IGFuZCByZWdpc3RlciBpdCBp
biB0aGUgRmluYWxpemF0aW9uUmVnaXN0cnkuIFRoZSBvYmplY3QgbmVlZHMgdG8gYmUgaW5zaWRl
CisvLyBhIGNsb3N1cmUgc28gdGhhdCB3ZSBjYW4gcmVsaWFibHkga2lsbCB0aGVtIQorbGV0IGtl
eSA9IHsiayI6ICJ0aGlzIGlzIHRoZSBrZXkifTsKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAg
ICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0LCAiaG9s
ZGluZ3MiLCBrZXkpOworICAgICAgICBmZy5yZWdpc3RlcihvYmplY3QyLCAiaG9sZGluZ3MiLCBr
ZXkpOworICAgIH0KK30pKCk7CisKKy8vIFRoaXMgR0Mgd2lsbCBkaXNjb3ZlciBkaXJ0eSBXZWFr
Q2VsbHMgYW5kIHNjaGVkdWxlIGNsZWFudXAuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFu
dXBfY2FsbF9jb3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdh
cyBjYWxsZWQuCitsZXQgdGltZW91dF9mdW5jID0gZnVuY3Rpb24oKSB7CisgIGFzc2VydEVxdWFs
cygxLCBjbGVhbnVwX2NhbGxfY291bnQpOworICBhc3NlcnRFcXVhbHMoMSwgY2xlYW51cF9ob2xk
aW5nc19jb3VudCk7Cit9CisKK3NldFRpbWVvdXQodGltZW91dF9mdW5jLCAwKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Y4LXVucmVnaXN0ZXItbWFueS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Y4LXVucmVnaXN0ZXItbWFueS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODMzOTllNjVmMGQyNzQyNjA4YjEz
ODQ2ZDVhNWQ5MTdhYjM3ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvdjgt
dW5yZWdpc3Rlci1tYW55LmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VXZWFrUmVmcz0xIikKKworLy8gQ29weXJpZ2h0IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIEZsYWdzOiAtLWhhcm1vbnktd2Vhay1yZWZzIC0tZXhw
b3NlLWdjIC0tbm9pbmNyZW1lbnRhbC1tYXJraW5nCisKK2xvYWQoIi4vcmVzb3VyY2VzL3Y4LW1q
c3VuaXQuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CisKK2xldCBjbGVhbnVwX2NhbGxfY291bnQg
PSAwOworbGV0IGNsZWFudXBfaG9sZGluZ3NfY291bnQgPSAwOworbGV0IGNsZWFudXAgPSBmdW5j
dGlvbihob2xkaW5ncykgeworICBhc3NlcnRFcXVhbHMoImhvbGRpbmdzMiIsIGhvbGRpbmdzKTsK
KyAgKytjbGVhbnVwX2hvbGRpbmdzX2NvdW50OworICArK2NsZWFudXBfY2FsbF9jb3VudDsKK30K
KworbGV0IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGNsZWFudXApOworbGV0IGtleTEg
PSB7ImsiOiAia2V5MSJ9OworbGV0IGtleTIgPSB7ImsiOiAia2V5MiJ9OworLy8gQ3JlYXRlIHRo
cmVlIG9iamVjdHMgYW5kIHJlZ2lzdGVyIHRoZW0gaW4gdGhlIEZpbmFsaXphdGlvblJlZ2lzdHJ5
LiBUaGUgb2JqZWN0cworLy8gbmVlZCB0byBiZSBpbnNpZGUgYSBjbG9zdXJlIHNvIHRoYXQgd2Ug
Y2FuIHJlbGlhYmx5IGtpbGwgdGhlbSEKKworKGZ1bmN0aW9uKCkgeworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGxldCBvYmplY3QxYSA9IHt9OworICAgICAg
ICBmZy5yZWdpc3RlcihvYmplY3QxYSwgImhvbGRpbmdzMWEiLCBrZXkxKTsKKworICAgICAgICBs
ZXQgb2JqZWN0MWIgPSB7fTsKKyAgICAgICAgZmcucmVnaXN0ZXIob2JqZWN0MWIsICJob2xkaW5n
czFiIiwga2V5MSk7CisKKyAgICAgICAgbGV0IG9iamVjdDIgPSB7fTsKKyAgICAgICAgZmcucmVn
aXN0ZXIob2JqZWN0MiwgImhvbGRpbmdzMiIsIGtleTIpOworCisgICAgICAgIC8vIFVucmVnaXN0
ZXIgYmVmb3JlIHRoZSBHQyBoYXMgYSBjaGFuY2UgdG8gZGlzY292ZXIgdGhlIG9iamVjdHMuCisg
ICAgICAgIGxldCBzdWNjZXNzID0gZmcudW5yZWdpc3RlcihrZXkxKTsKKyAgICAgICAgYXNzZXJ0
VHJ1ZShzdWNjZXNzKTsKKyAgICB9Cit9KSgpOworCisvLyBUaGlzIEdDIHdpbGwgcmVjbGFpbSB0
aGUgdGFyZ2V0IG9iamVjdHMuCitnYygpOworYXNzZXJ0RXF1YWxzKDAsIGNsZWFudXBfY2FsbF9j
b3VudCk7CisKKy8vIEFzc2VydCB0aGF0IHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgYmUgY2Fs
bGVkIG9ubHkgZm9yIHRoZSByZWZlcmVuY2Ugd2hpY2gKKy8vIHdhcyBub3QgdW5yZWdpc3RlcmVk
LgorbGV0IHRpbWVvdXRfZnVuYyA9IGZ1bmN0aW9uKCkgeworICBhc3NlcnROb3RFcXVhbHMoMCwg
Y2xlYW51cF9jYWxsX2NvdW50KTsKKyAgYXNzZXJ0Tm90RXF1YWxzKDAsIGNsZWFudXBfaG9sZGlu
Z3NfY291bnQpOworfQorCitzZXRUaW1lb3V0KHRpbWVvdXRfZnVuYywgMCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3Y4LXdlYWstdW5yZWdpc3RlcnRva2VuLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWU4MDBhYTJhY2Uw
OWY2ZjI5NTJlNGU5N2NiNTY5ODFlYTJlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy92OC13ZWFrLXVucmVnaXN0ZXJ0b2tlbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlV2Vha1JlZnM9MSIpCisKKy8vIENvcHlyaWdodCAyMDE5IHRoZSBW
OCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFnczogLS1oYXJtb255LXdl
YWstcmVmcy13aXRoLWNsZWFudXAtc29tZSAtLWV4cG9zZS1nYyAtLW5vaW5jcmVtZW50YWwtbWFy
a2luZworCitsb2FkKCIuL3Jlc291cmNlcy92OC1tanN1bml0LmpzIiwgImNhbGxlciByZWxhdGl2
ZSIpOworCit2YXIgRlIgPSBuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkgKGZ1bmN0aW9uIChob2xk
aW5ncykgeyBnbG9iYWxUaGlzLkZSUmFuID0gdHJ1ZTsgfSk7Cit7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9OworICAgICAgICAvLyBv
YmogaXMgaXRzIG93biB1bnJlZ2lzdGVyIHRva2VuIGFuZCBiZWNvbWVzIHVucmVhY2hhYmxlIGFm
dGVyIHRoaXMKKyAgICAgICAgLy8gYmxvY2suIElmIHRoZSB1bnJlZ2lzdGVyIHRva2VuIGlzIGhl
bGQgc3Ryb25nbHkgdGhpcyB0ZXN0IHdpbGwgbm90CisgICAgICAgIC8vIHRlcm1pbmF0ZS4KKyAg
ICAgICAgRlIucmVnaXN0ZXIob2JqLCA0Miwgb2JqKTsKKyAgICB9Cit9CisKK2xldCB0cnlBZ2Fp
bkNvdW50ID0gMTA7CitmdW5jdGlvbiB0cnlBZ2FpbigpIHsKKyAgICBnYygpOworICAgIGlmIChn
bG9iYWxUaGlzLkZSUmFuKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCEtLXRyeUFnYWluQ291
bnQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIHNldFRpbWVvdXQodHJ5QWdhaW4s
IDApOworfQordHJ5QWdhaW4oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>